|
@@ -28,7 +28,7 @@ import org.yakindu.sct.ui.navigator.utils.ComposedAdapterFactoryUtil;
|
|
|
/**
|
|
/**
|
|
|
*
|
|
*
|
|
|
* @author markus.muehlbrandt
|
|
* @author markus.muehlbrandt
|
|
|
- *
|
|
|
|
|
|
|
+ *
|
|
|
*/
|
|
*/
|
|
|
public class StatechartNavigatorContentProvider implements
|
|
public class StatechartNavigatorContentProvider implements
|
|
|
ICommonContentProvider {
|
|
ICommonContentProvider {
|
|
@@ -44,32 +44,32 @@ public class StatechartNavigatorContentProvider implements
|
|
|
private WorkspaceSynchronizer myWorkspaceSynchronizer;
|
|
private WorkspaceSynchronizer myWorkspaceSynchronizer;
|
|
|
|
|
|
|
|
private Runnable myViewerRefreshRunnable;
|
|
private Runnable myViewerRefreshRunnable;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
private ECrossReferenceAdapter myCrossReferenceAdapter;
|
|
private ECrossReferenceAdapter myCrossReferenceAdapter;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
private ViewerFilter viewerFilter;
|
|
private ViewerFilter viewerFilter;
|
|
|
|
|
|
|
|
public StatechartNavigatorContentProvider() {
|
|
public StatechartNavigatorContentProvider() {
|
|
|
myAdapterFctoryContentProvier = new AdapterFactoryContentProvider(
|
|
myAdapterFctoryContentProvier = new AdapterFactoryContentProvider(
|
|
|
ComposedAdapterFactoryUtil.FACTORY);
|
|
ComposedAdapterFactoryUtil.FACTORY);
|
|
|
-
|
|
|
|
|
|
|
|
|
|
TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE
|
|
TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE
|
|
|
.createEditingDomain();
|
|
.createEditingDomain();
|
|
|
myEditingDomain = (AdapterFactoryEditingDomain) editingDomain;
|
|
myEditingDomain = (AdapterFactoryEditingDomain) editingDomain;
|
|
|
- myEditingDomain.setResourceToReadOnlyMap(new HashMap<Resource, Boolean>() {
|
|
|
|
|
- /**
|
|
|
|
|
|
|
+ myEditingDomain
|
|
|
|
|
+ .setResourceToReadOnlyMap(new HashMap<Resource, Boolean>() {
|
|
|
|
|
+ /**
|
|
|
*
|
|
*
|
|
|
*/
|
|
*/
|
|
|
- private static final long serialVersionUID = -7623655803631543084L;
|
|
|
|
|
|
|
+ private static final long serialVersionUID = -7623655803631543084L;
|
|
|
|
|
|
|
|
- public Boolean get(Object key) {
|
|
|
|
|
- if (!containsKey(key)) {
|
|
|
|
|
- put((Resource) key, Boolean.TRUE);
|
|
|
|
|
- }
|
|
|
|
|
- return super.get(key);
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ public Boolean get(Object key) {
|
|
|
|
|
+ if (!containsKey(key)) {
|
|
|
|
|
+ put((Resource) key, Boolean.TRUE);
|
|
|
|
|
+ }
|
|
|
|
|
+ return super.get(key);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
myViewerRefreshRunnable = new Runnable() {
|
|
myViewerRefreshRunnable = new Runnable() {
|
|
|
public void run() {
|
|
public void run() {
|
|
|
if (myViewer != null && !myViewer.getControl().isDisposed()) {
|
|
if (myViewer != null && !myViewer.getControl().isDisposed()) {
|
|
@@ -83,8 +83,9 @@ public class StatechartNavigatorContentProvider implements
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public boolean handleResourceChanged(final Resource resource) {
|
|
public boolean handleResourceChanged(final Resource resource) {
|
|
|
- for (Iterator<Resource> it = myEditingDomain.getResourceSet()
|
|
|
|
|
- .getResources().iterator(); it.hasNext();) {
|
|
|
|
|
|
|
+ for (Iterator<Resource> it = myEditingDomain
|
|
|
|
|
+ .getResourceSet().getResources().iterator(); it
|
|
|
|
|
+ .hasNext();) {
|
|
|
Resource nextResource = (Resource) it.next();
|
|
Resource nextResource = (Resource) it.next();
|
|
|
nextResource.unload();
|
|
nextResource.unload();
|
|
|
}
|
|
}
|
|
@@ -96,8 +97,9 @@ public class StatechartNavigatorContentProvider implements
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public boolean handleResourceDeleted(Resource resource) {
|
|
public boolean handleResourceDeleted(Resource resource) {
|
|
|
- for (Iterator<Resource> it = myEditingDomain.getResourceSet()
|
|
|
|
|
- .getResources().iterator(); it.hasNext();) {
|
|
|
|
|
|
|
+ for (Iterator<Resource> it = myEditingDomain
|
|
|
|
|
+ .getResourceSet().getResources().iterator(); it
|
|
|
|
|
+ .hasNext();) {
|
|
|
Resource nextResource = (Resource) it.next();
|
|
Resource nextResource = (Resource) it.next();
|
|
|
nextResource.unload();
|
|
nextResource.unload();
|
|
|
}
|
|
}
|
|
@@ -110,8 +112,9 @@ public class StatechartNavigatorContentProvider implements
|
|
|
|
|
|
|
|
public boolean handleResourceMoved(Resource resource,
|
|
public boolean handleResourceMoved(Resource resource,
|
|
|
final URI newURI) {
|
|
final URI newURI) {
|
|
|
- for (Iterator<Resource> it = myEditingDomain.getResourceSet()
|
|
|
|
|
- .getResources().iterator(); it.hasNext();) {
|
|
|
|
|
|
|
+ for (Iterator<Resource> it = myEditingDomain
|
|
|
|
|
+ .getResourceSet().getResources().iterator(); it
|
|
|
|
|
+ .hasNext();) {
|
|
|
Resource nextResource = (Resource) it.next();
|
|
Resource nextResource = (Resource) it.next();
|
|
|
nextResource.unload();
|
|
nextResource.unload();
|
|
|
}
|
|
}
|
|
@@ -122,21 +125,23 @@ public class StatechartNavigatorContentProvider implements
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
myCrossReferenceAdapter = new ECrossReferenceAdapter();
|
|
myCrossReferenceAdapter = new ECrossReferenceAdapter();
|
|
|
- myEditingDomain.getResourceSet().eAdapters().add(myCrossReferenceAdapter);
|
|
|
|
|
|
|
+ myEditingDomain.getResourceSet().eAdapters()
|
|
|
|
|
+ .add(myCrossReferenceAdapter);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public void dispose() {
|
|
public void dispose() {
|
|
|
myWorkspaceSynchronizer.dispose();
|
|
myWorkspaceSynchronizer.dispose();
|
|
|
myWorkspaceSynchronizer = null;
|
|
myWorkspaceSynchronizer = null;
|
|
|
myViewerRefreshRunnable = null;
|
|
myViewerRefreshRunnable = null;
|
|
|
- for (Iterator<Resource> it = myEditingDomain.getResourceSet().getResources()
|
|
|
|
|
- .iterator(); it.hasNext();) {
|
|
|
|
|
|
|
+ for (Iterator<Resource> it = myEditingDomain.getResourceSet()
|
|
|
|
|
+ .getResources().iterator(); it.hasNext();) {
|
|
|
Resource resource = (Resource) it.next();
|
|
Resource resource = (Resource) it.next();
|
|
|
resource.unload();
|
|
resource.unload();
|
|
|
}
|
|
}
|
|
|
- myEditingDomain.getResourceSet().eAdapters().remove(myCrossReferenceAdapter);
|
|
|
|
|
|
|
+ myEditingDomain.getResourceSet().eAdapters()
|
|
|
|
|
+ .remove(myCrossReferenceAdapter);
|
|
|
((TransactionalEditingDomain) myEditingDomain).dispose();
|
|
((TransactionalEditingDomain) myEditingDomain).dispose();
|
|
|
myEditingDomain = null;
|
|
myEditingDomain = null;
|
|
|
}
|
|
}
|
|
@@ -159,7 +164,7 @@ public class StatechartNavigatorContentProvider implements
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public Object[] getChildren(Object parentElement) {
|
|
public Object[] getChildren(Object parentElement) {
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (parentElement instanceof IFile) {
|
|
if (parentElement instanceof IFile) {
|
|
|
IFile file = (IFile) parentElement;
|
|
IFile file = (IFile) parentElement;
|
|
|
URI fileURI = URI.createPlatformResourceURI(file.getFullPath()
|
|
URI fileURI = URI.createPlatformResourceURI(file.getFullPath()
|
|
@@ -196,13 +201,13 @@ public class StatechartNavigatorContentProvider implements
|
|
|
}
|
|
}
|
|
|
return result.toArray();
|
|
return result.toArray();
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
private View getReferencigView(EObject eObject) {
|
|
private View getReferencigView(EObject eObject) {
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
Collection<Setting> inverseReferences = myCrossReferenceAdapter
|
|
Collection<Setting> inverseReferences = myCrossReferenceAdapter
|
|
|
.getInverseReferences(eObject, true);
|
|
.getInverseReferences(eObject, true);
|
|
|
-
|
|
|
|
|
- for (Setting setting:inverseReferences) {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ for (Setting setting : inverseReferences) {
|
|
|
if (setting.getEObject() instanceof View
|
|
if (setting.getEObject() instanceof View
|
|
|
&& setting.getEStructuralFeature() == NotationPackage.eINSTANCE
|
|
&& setting.getEStructuralFeature() == NotationPackage.eINSTANCE
|
|
|
.getView_Element()) {
|
|
.getView_Element()) {
|
|
@@ -227,19 +232,17 @@ public class StatechartNavigatorContentProvider implements
|
|
|
public boolean hasChildren(Object element) {
|
|
public boolean hasChildren(Object element) {
|
|
|
return element instanceof IFile || hasVisibleChildren(element);
|
|
return element instanceof IFile || hasVisibleChildren(element);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
protected boolean hasVisibleChildren(Object parent) {
|
|
protected boolean hasVisibleChildren(Object parent) {
|
|
|
Object[] children = getChildren(parent);
|
|
Object[] children = getChildren(parent);
|
|
|
- if (children.length > 0) {
|
|
|
|
|
- for (Object obj : children) {
|
|
|
|
|
- if (getViewerFilter().select(null, parent, obj)) {
|
|
|
|
|
- return true;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ for (Object obj : children) {
|
|
|
|
|
+ if (getViewerFilter().select(null, parent, obj)) {
|
|
|
|
|
+ return true;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
protected ViewerFilter getViewerFilter() {
|
|
protected ViewerFilter getViewerFilter() {
|
|
|
if (viewerFilter == null) {
|
|
if (viewerFilter == null) {
|
|
|
viewerFilter = new StatechartObjectViewerFilter();
|
|
viewerFilter = new StatechartObjectViewerFilter();
|