Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCamille Letavernier2013-08-07 09:13:16 +0000
committerCamille Letavernier2013-08-07 09:13:16 +0000
commit94d83dd0050c20d5b6ecd4fa62dc4af52ce9a305 (patch)
tree103987946a3af0e46d5e00a3f1fd37188df28a06 /plugins
parente25da987e64b32322b4f4465193d2872f950a1dc (diff)
downloadorg.eclipse.papyrus-94d83dd0050c20d5b6ecd4fa62dc4af52ce9a305.tar.gz
org.eclipse.papyrus-94d83dd0050c20d5b6ecd4fa62dc4af52ce9a305.tar.xz
org.eclipse.papyrus-94d83dd0050c20d5b6ecd4fa62dc4af52ce9a305.zip
363835: [Model Explorer] General Performance problems
https://bugs.eclipse.org/bugs/show_bug.cgi?id=363835 Use a lightweight content provider for the ModelExplorer. Reduce the number of encapsulations.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf/src/org/eclipse/papyrus/infra/emf/providers/strategy/SemanticEMFContentProvider.java4
-rw-r--r--plugins/uml/modelexplorer/org.eclipse.papyrus.uml.modelexplorer/plugin.xml2
-rw-r--r--plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/SemanticUMLContentProvider.java61
-rw-r--r--plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/UMLContentProvider.java2
4 files changed, 51 insertions, 18 deletions
diff --git a/plugins/infra/emf/org.eclipse.papyrus.infra.emf/src/org/eclipse/papyrus/infra/emf/providers/strategy/SemanticEMFContentProvider.java b/plugins/infra/emf/org.eclipse.papyrus.infra.emf/src/org/eclipse/papyrus/infra/emf/providers/strategy/SemanticEMFContentProvider.java
index 3dad19455c9..948eba885eb 100644
--- a/plugins/infra/emf/org.eclipse.papyrus.infra.emf/src/org/eclipse/papyrus/infra/emf/providers/strategy/SemanticEMFContentProvider.java
+++ b/plugins/infra/emf/org.eclipse.papyrus.infra.emf/src/org/eclipse/papyrus/infra/emf/providers/strategy/SemanticEMFContentProvider.java
@@ -46,6 +46,10 @@ public class SemanticEMFContentProvider extends CustomizableModelContentProvider
protected AdapterFactory factory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+ protected SemanticEMFContentProvider() {
+ super(Activator.getDefault().getCustomizationManager());
+ }
+
public SemanticEMFContentProvider(EObject editedEObject, EStructuralFeature feature, EObject[] roots, CustomizationManager customizationManager) {
super(customizationManager);
this.roots = roots;
diff --git a/plugins/uml/modelexplorer/org.eclipse.papyrus.uml.modelexplorer/plugin.xml b/plugins/uml/modelexplorer/org.eclipse.papyrus.uml.modelexplorer/plugin.xml
index d476cc0b853..360813989a4 100644
--- a/plugins/uml/modelexplorer/org.eclipse.papyrus.uml.modelexplorer/plugin.xml
+++ b/plugins/uml/modelexplorer/org.eclipse.papyrus.uml.modelexplorer/plugin.xml
@@ -12,7 +12,7 @@
<extension point="org.eclipse.ui.navigator.navigatorContent">
<navigatorContent
activeByDefault="true"
- contentProvider="org.eclipse.papyrus.uml.tools.providers.UMLContentProvider"
+ contentProvider="org.eclipse.papyrus.uml.tools.providers.SemanticUMLContentProvider"
icon="platform:/plugin/org.eclipse.uml2.uml.edit/icons/full/obj16/Model.gif"
id="org.eclipse.papyrus.views.modelexplorer.UMLnavigatorContent"
labelProvider="org.eclipse.jface.viewers.LabelProvider"
diff --git a/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/SemanticUMLContentProvider.java b/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/SemanticUMLContentProvider.java
index 4667cb97b21..d498196c794 100644
--- a/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/SemanticUMLContentProvider.java
+++ b/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/SemanticUMLContentProvider.java
@@ -20,8 +20,11 @@ import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jface.viewers.Viewer;
import org.eclipse.papyrus.infra.core.resource.ModelSet;
import org.eclipse.papyrus.infra.core.resource.NotFoundException;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.core.utils.ServiceUtils;
import org.eclipse.papyrus.infra.emf.providers.strategy.SemanticEMFContentProvider;
import org.eclipse.papyrus.infra.widgets.Activator;
import org.eclipse.papyrus.uml.tools.model.UmlUtils;
@@ -36,6 +39,11 @@ import org.eclipse.uml2.uml.Stereotype;
*/
public class SemanticUMLContentProvider extends SemanticEMFContentProvider {
+
+ public SemanticUMLContentProvider() {
+ //Empty (@see #inputChanged(Viewer, Object, Object))
+ }
+
public SemanticUMLContentProvider(EObject editedEObject, EStructuralFeature feature, EObject[] roots) {
super(editedEObject, feature, roots);
}
@@ -72,26 +80,26 @@ public class SemanticUMLContentProvider extends SemanticEMFContentProvider {
//This is related to the ModelSet evolution
try {
EObject rootElement = UmlUtils.getUmlModel(modelSet).lookupRoot();
- if (rootElement == null){
+ if(rootElement == null) {
return new EObject[0];
}
-
+
Resource rootResource = rootElement.eResource();
- if (rootResource == null){
- return new EObject[]{rootElement};
+ if(rootResource == null) {
+ return new EObject[]{ rootElement };
}
-
+
List<EObject> rootObjects = new LinkedList<EObject>();
- for (EObject rootObject : rootResource.getContents()){
- if (rootObject instanceof Element){
+ for(EObject rootObject : rootResource.getContents()) {
+ if(rootObject instanceof Element) {
rootObjects.add(rootObject);
}
}
-
- if (rootObjects.isEmpty()){
- return new EObject[]{rootElement};
+
+ if(rootObjects.isEmpty()) {
+ return new EObject[]{ rootElement };
}
-
+
return rootObjects.toArray(new EObject[0]);
} catch (NotFoundException ex) {
Activator.log.error(ex);
@@ -112,13 +120,13 @@ public class SemanticUMLContentProvider extends SemanticEMFContentProvider {
if(metaclass instanceof Stereotype) {
Stereotype stereotype = (Stereotype)metaclass;
boolean res = semanticElement.getAppliedStereotype(stereotype.getQualifiedName()) != null;
- if (!res) {
+ if(!res) {
EClass definition = stereotype.getDefinition();
- for (EObject e : semanticElement.getStereotypeApplications()){
+ for(EObject e : semanticElement.getStereotypeApplications()) {
EClass c = e.eClass();
- if (definition != null && definition.isSuperTypeOf(c)){
- res = true ;
- break ;
+ if(definition != null && definition.isSuperTypeOf(c)) {
+ res = true;
+ break;
}
}
}
@@ -177,4 +185,25 @@ public class SemanticUMLContentProvider extends SemanticEMFContentProvider {
//If no stereotype application is found, return the UML Element
return semanticElement;
}
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ ResourceSet root = null;
+
+ if(newInput instanceof ResourceSet) {
+ root = (ResourceSet)newInput;
+ }
+
+ if(newInput instanceof ServicesRegistry) {
+ try {
+ root = ServiceUtils.getInstance().getModelSet((ServicesRegistry)newInput);
+ } catch (Exception ex) {
+ Activator.log.error(ex);
+ }
+ }
+
+ this.roots = getRoots(root);
+
+ super.inputChanged(viewer, oldInput, newInput);
+ }
}
diff --git a/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/UMLContentProvider.java b/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/UMLContentProvider.java
index c50adafd18f..b17f4788620 100644
--- a/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/UMLContentProvider.java
+++ b/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/UMLContentProvider.java
@@ -53,7 +53,7 @@ public class UMLContentProvider extends EncapsulatedContentProvider {
protected ResourceSet root;
public UMLContentProvider() {
- //Empty (@see #setInput())
+ //Empty (@see #inputChanged(Viewer, Object, Object))
}
@Override

Back to the top