diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/navigator/AcoreDomainNavigatorContentProvider.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/navigator/AcoreDomainNavigatorContentProvider.java | 530 |
1 files changed, 265 insertions, 265 deletions
diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/navigator/AcoreDomainNavigatorContentProvider.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/navigator/AcoreDomainNavigatorContentProvider.java index 3a735ba6b7..5fb1a08d9e 100644 --- a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/navigator/AcoreDomainNavigatorContentProvider.java +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/navigator/AcoreDomainNavigatorContentProvider.java @@ -1,265 +1,265 @@ -/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Martin Fluegge - initial API and implementation
- *
- */
-package org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator;
-
-import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorPlugin;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
-import org.eclipse.emf.transaction.TransactionalEditingDomain;
-import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.navigator.ICommonContentExtensionSite;
-import org.eclipse.ui.navigator.ICommonContentProvider;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-
-/**
- * @generated
- */
-public class AcoreDomainNavigatorContentProvider implements ICommonContentProvider
-{
-
- /**
- * @generated
- */
- private AdapterFactoryContentProvider myAdapterFctoryContentProvier;
-
- /**
- * @generated
- */
- private static final Object[] EMPTY_ARRAY = new Object[0];
-
- /**
- * @generated
- */
- private Viewer myViewer;
-
- /**
- * @generated
- */
- private AdapterFactoryEditingDomain myEditingDomain;
-
- /**
- * @generated
- */
- private WorkspaceSynchronizer myWorkspaceSynchronizer;
-
- /**
- * @generated
- */
- private Runnable myViewerRefreshRunnable;
-
- /**
- * @generated
- */
- public AcoreDomainNavigatorContentProvider()
- {
- myAdapterFctoryContentProvier = new AdapterFactoryContentProvider(AcoreDiagramEditorPlugin.getInstance()
- .getItemProvidersAdapterFactory());
- TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain();
- myEditingDomain = (AdapterFactoryEditingDomain)editingDomain;
- myEditingDomain.setResourceToReadOnlyMap(new HashMap()
- {
- public Object get(Object key)
- {
- if (!containsKey(key))
- {
- put(key, Boolean.TRUE);
- }
- return super.get(key);
- }
- });
- myViewerRefreshRunnable = new Runnable()
- {
- public void run()
- {
- if (myViewer != null)
- {
- myViewer.refresh();
- }
- }
- };
- myWorkspaceSynchronizer = new WorkspaceSynchronizer(editingDomain, new WorkspaceSynchronizer.Delegate()
- {
- public void dispose()
- {
- }
-
- public boolean handleResourceChanged(final Resource resource)
- {
- for (Iterator it = myEditingDomain.getResourceSet().getResources().iterator(); it.hasNext();)
- {
- Resource nextResource = (Resource)it.next();
- nextResource.unload();
- }
- if (myViewer != null)
- {
- myViewer.getControl().getDisplay().asyncExec(myViewerRefreshRunnable);
- }
- return true;
- }
-
- public boolean handleResourceDeleted(Resource resource)
- {
- for (Iterator it = myEditingDomain.getResourceSet().getResources().iterator(); it.hasNext();)
- {
- Resource nextResource = (Resource)it.next();
- nextResource.unload();
- }
- if (myViewer != null)
- {
- myViewer.getControl().getDisplay().asyncExec(myViewerRefreshRunnable);
- }
- return true;
- }
-
- public boolean handleResourceMoved(Resource resource, final URI newURI)
- {
- for (Iterator it = myEditingDomain.getResourceSet().getResources().iterator(); it.hasNext();)
- {
- Resource nextResource = (Resource)it.next();
- nextResource.unload();
- }
- if (myViewer != null)
- {
- myViewer.getControl().getDisplay().asyncExec(myViewerRefreshRunnable);
- }
- return true;
- }
- });
- }
-
- /**
- * @generated
- */
- public void dispose()
- {
- myWorkspaceSynchronizer.dispose();
- myWorkspaceSynchronizer = null;
- myViewerRefreshRunnable = null;
- for (Iterator it = myEditingDomain.getResourceSet().getResources().iterator(); it.hasNext();)
- {
- Resource resource = (Resource)it.next();
- resource.unload();
- }
- ((TransactionalEditingDomain)myEditingDomain).dispose();
- myEditingDomain = null;
- }
-
- /**
- * @generated
- */
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
- {
- myViewer = viewer;
- }
-
- /**
- * @generated
- */
- public Object[] getElements(Object inputElement)
- {
- return getChildren(inputElement);
- }
-
- /**
- * @generated
- */
- public void restoreState(IMemento aMemento)
- {
- }
-
- /**
- * @generated
- */
- public void saveState(IMemento aMemento)
- {
- }
-
- /**
- * @generated
- */
- public void init(ICommonContentExtensionSite aConfig)
- {
- }
-
- /**
- * @generated
- */
- public Object[] getChildren(Object parentElement)
- {
- if (parentElement instanceof IFile)
- {
- IFile file = (IFile)parentElement;
- URI fileURI = URI.createPlatformResourceURI(file.getFullPath().toString(), true);
- Resource resource = myEditingDomain.getResourceSet().getResource(fileURI, true);
- return wrapEObjects(myAdapterFctoryContentProvier.getChildren(resource), parentElement);
- }
-
- if (parentElement instanceof AcoreDomainNavigatorItem)
- {
- return wrapEObjects(
- myAdapterFctoryContentProvier.getChildren(((AcoreDomainNavigatorItem)parentElement).getEObject()),
- parentElement);
- }
- return EMPTY_ARRAY;
- }
-
- /**
- * @generated
- */
- public Object[] wrapEObjects(Object[] objects, Object parentElement)
- {
- Collection result = new ArrayList();
- for (int i = 0; i < objects.length; i++)
- {
- if (objects[i] instanceof EObject)
- {
- result.add(new AcoreDomainNavigatorItem((EObject)objects[i], parentElement, myAdapterFctoryContentProvier));
- }
- }
- return result.toArray();
- }
-
- /**
- * @generated
- */
- public Object getParent(Object element)
- {
- if (element instanceof AcoreAbstractNavigatorItem)
- {
- AcoreAbstractNavigatorItem abstractNavigatorItem = (AcoreAbstractNavigatorItem)element;
- return abstractNavigatorItem.getParent();
- }
- return null;
- }
-
- /**
- * @generated
- */
- public boolean hasChildren(Object element)
- {
- return element instanceof IFile || getChildren(element).length > 0;
- }
-
-}
+/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorPlugin; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.transaction.TransactionalEditingDomain; +import org.eclipse.emf.workspace.util.WorkspaceSynchronizer; + +import org.eclipse.core.resources.IFile; +import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.ui.IMemento; +import org.eclipse.ui.navigator.ICommonContentExtensionSite; +import org.eclipse.ui.navigator.ICommonContentProvider; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; + +/** + * @generated + */ +public class AcoreDomainNavigatorContentProvider implements ICommonContentProvider +{ + + /** + * @generated + */ + private AdapterFactoryContentProvider myAdapterFctoryContentProvier; + + /** + * @generated + */ + private static final Object[] EMPTY_ARRAY = new Object[0]; + + /** + * @generated + */ + private Viewer myViewer; + + /** + * @generated + */ + private AdapterFactoryEditingDomain myEditingDomain; + + /** + * @generated + */ + private WorkspaceSynchronizer myWorkspaceSynchronizer; + + /** + * @generated + */ + private Runnable myViewerRefreshRunnable; + + /** + * @generated + */ + public AcoreDomainNavigatorContentProvider() + { + myAdapterFctoryContentProvier = new AdapterFactoryContentProvider(AcoreDiagramEditorPlugin.getInstance() + .getItemProvidersAdapterFactory()); + TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain(); + myEditingDomain = (AdapterFactoryEditingDomain)editingDomain; + myEditingDomain.setResourceToReadOnlyMap(new HashMap() + { + public Object get(Object key) + { + if (!containsKey(key)) + { + put(key, Boolean.TRUE); + } + return super.get(key); + } + }); + myViewerRefreshRunnable = new Runnable() + { + public void run() + { + if (myViewer != null) + { + myViewer.refresh(); + } + } + }; + myWorkspaceSynchronizer = new WorkspaceSynchronizer(editingDomain, new WorkspaceSynchronizer.Delegate() + { + public void dispose() + { + } + + public boolean handleResourceChanged(final Resource resource) + { + for (Iterator it = myEditingDomain.getResourceSet().getResources().iterator(); it.hasNext();) + { + Resource nextResource = (Resource)it.next(); + nextResource.unload(); + } + if (myViewer != null) + { + myViewer.getControl().getDisplay().asyncExec(myViewerRefreshRunnable); + } + return true; + } + + public boolean handleResourceDeleted(Resource resource) + { + for (Iterator it = myEditingDomain.getResourceSet().getResources().iterator(); it.hasNext();) + { + Resource nextResource = (Resource)it.next(); + nextResource.unload(); + } + if (myViewer != null) + { + myViewer.getControl().getDisplay().asyncExec(myViewerRefreshRunnable); + } + return true; + } + + public boolean handleResourceMoved(Resource resource, final URI newURI) + { + for (Iterator it = myEditingDomain.getResourceSet().getResources().iterator(); it.hasNext();) + { + Resource nextResource = (Resource)it.next(); + nextResource.unload(); + } + if (myViewer != null) + { + myViewer.getControl().getDisplay().asyncExec(myViewerRefreshRunnable); + } + return true; + } + }); + } + + /** + * @generated + */ + public void dispose() + { + myWorkspaceSynchronizer.dispose(); + myWorkspaceSynchronizer = null; + myViewerRefreshRunnable = null; + for (Iterator it = myEditingDomain.getResourceSet().getResources().iterator(); it.hasNext();) + { + Resource resource = (Resource)it.next(); + resource.unload(); + } + ((TransactionalEditingDomain)myEditingDomain).dispose(); + myEditingDomain = null; + } + + /** + * @generated + */ + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) + { + myViewer = viewer; + } + + /** + * @generated + */ + public Object[] getElements(Object inputElement) + { + return getChildren(inputElement); + } + + /** + * @generated + */ + public void restoreState(IMemento aMemento) + { + } + + /** + * @generated + */ + public void saveState(IMemento aMemento) + { + } + + /** + * @generated + */ + public void init(ICommonContentExtensionSite aConfig) + { + } + + /** + * @generated + */ + public Object[] getChildren(Object parentElement) + { + if (parentElement instanceof IFile) + { + IFile file = (IFile)parentElement; + URI fileURI = URI.createPlatformResourceURI(file.getFullPath().toString(), true); + Resource resource = myEditingDomain.getResourceSet().getResource(fileURI, true); + return wrapEObjects(myAdapterFctoryContentProvier.getChildren(resource), parentElement); + } + + if (parentElement instanceof AcoreDomainNavigatorItem) + { + return wrapEObjects( + myAdapterFctoryContentProvier.getChildren(((AcoreDomainNavigatorItem)parentElement).getEObject()), + parentElement); + } + return EMPTY_ARRAY; + } + + /** + * @generated + */ + public Object[] wrapEObjects(Object[] objects, Object parentElement) + { + Collection result = new ArrayList(); + for (int i = 0; i < objects.length; i++) + { + if (objects[i] instanceof EObject) + { + result.add(new AcoreDomainNavigatorItem((EObject)objects[i], parentElement, myAdapterFctoryContentProvier)); + } + } + return result.toArray(); + } + + /** + * @generated + */ + public Object getParent(Object element) + { + if (element instanceof AcoreAbstractNavigatorItem) + { + AcoreAbstractNavigatorItem abstractNavigatorItem = (AcoreAbstractNavigatorItem)element; + return abstractNavigatorItem.getParent(); + } + return null; + } + + /** + * @generated + */ + public boolean hasChildren(Object element) + { + return element instanceof IFile || getChildren(element).length > 0; + } + +} |