Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnsgar Radermacher2016-04-04 19:00:29 +0000
committerGerrit Code Review @ Eclipse.org2016-04-06 09:03:19 +0000
commitfc112c9fb906ae449d600cc6c4883c33e1a8c86d (patch)
treeca53293be59fb67719df295426bc95045ab3190a /plugins/infra/gmfdiag
parent35902dc73fab05cebd1c4570597dfe3998a6f95a (diff)
downloadorg.eclipse.papyrus-fc112c9fb906ae449d600cc6c4883c33e1a8c86d.tar.gz
org.eclipse.papyrus-fc112c9fb906ae449d600cc6c4883c33e1a8c86d.tar.xz
org.eclipse.papyrus-fc112c9fb906ae449d600cc6c4883c33e1a8c86d.zip
Bug 435352 - [Property view] Attribute selection takes way too long
Diffstat (limited to 'plugins/infra/gmfdiag')
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/model/NotationUtils.java25
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.modelexplorer/src/org/eclipse/papyrus/infra/gmfdiag/modelexplorer/queries/GetContainedDiagrams.java11
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.modelexplorer/src/org/eclipse/papyrus/infra/gmfdiag/modelexplorer/queries/IsDiagramContainer.java11
3 files changed, 33 insertions, 14 deletions
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/model/NotationUtils.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/model/NotationUtils.java
index fca433cae04..6d66607296a 100644
--- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/model/NotationUtils.java
+++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/model/NotationUtils.java
@@ -43,6 +43,7 @@ import org.eclipse.papyrus.infra.emf.utils.BusinessModelResolver;
import org.eclipse.papyrus.infra.gmfdiag.common.Activator;
import org.eclipse.papyrus.infra.gmfdiag.common.utils.DiagramUtils;
import org.eclipse.papyrus.infra.ui.util.ServiceUtilsForActionHandlers;
+import org.eclipse.papyrus.infra.viewpoints.style.PapyrusViewStyle;
/**
* Utilities method to manage notation models. Should be moved in a more
@@ -178,6 +179,30 @@ public class NotationUtils {
}
/**
+ * @param diagOrViewStyle
+ * a diagram or its view-style
+ * @param owner
+ * a semantic owner of a diagram
+ * @return the diagram owned by the 'semantic owner' if it actually is owned by it, null otherwise
+ */
+ public static Diagram getOwnedDiagram(EObject diagOrViewStyle, EObject owner) {
+ if (diagOrViewStyle instanceof Diagram) {
+ Diagram diagram = (Diagram) diagOrViewStyle;
+ if (DiagramUtils.getOwner(diagram) == owner) {
+ return diagram;
+ }
+ } else if (diagOrViewStyle instanceof PapyrusViewStyle) {
+ PapyrusViewStyle viewStyle = (PapyrusViewStyle) diagOrViewStyle;
+ if (viewStyle.getOwner() == owner) {
+ if (viewStyle.eContainer() instanceof Diagram) {
+ return (Diagram) viewStyle.eContainer();
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
* Gets the all the diagrams contained in the specified ancestor eObject
*
* @param notationResource
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.modelexplorer/src/org/eclipse/papyrus/infra/gmfdiag/modelexplorer/queries/GetContainedDiagrams.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.modelexplorer/src/org/eclipse/papyrus/infra/gmfdiag/modelexplorer/queries/GetContainedDiagrams.java
index 748eec6c106..234102aa68a 100644
--- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.modelexplorer/src/org/eclipse/papyrus/infra/gmfdiag/modelexplorer/queries/GetContainedDiagrams.java
+++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.modelexplorer/src/org/eclipse/papyrus/infra/gmfdiag/modelexplorer/queries/GetContainedDiagrams.java
@@ -25,7 +25,7 @@ import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementEx
import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
-import org.eclipse.papyrus.infra.gmfdiag.common.utils.DiagramUtils;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationUtils;
/** Get the collection of all contained diagrams */
public class GetContainedDiagrams implements IJavaQuery2<EObject, Collection<org.eclipse.gmf.runtime.notation.Diagram>> {
@@ -37,12 +37,9 @@ public class GetContainedDiagrams implements IJavaQuery2<EObject, Collection<org
Collection<Setting> settings = EMFHelper.getUsages(source);
if (settings != null) {
for (Setting setting : settings) {
- EObject usingElement = setting.getEObject();
- if (usingElement instanceof Diagram) {
- Diagram diagram = (Diagram) usingElement;
- if (DiagramUtils.getOwner(diagram) == source) {
- result.add(diagram);
- }
+ Diagram diagram = NotationUtils.getOwnedDiagram(setting.getEObject(), source);
+ if (diagram != null) {
+ result.add(diagram);
}
}
}
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.modelexplorer/src/org/eclipse/papyrus/infra/gmfdiag/modelexplorer/queries/IsDiagramContainer.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.modelexplorer/src/org/eclipse/papyrus/infra/gmfdiag/modelexplorer/queries/IsDiagramContainer.java
index 55f18923f98..95bc893d559 100644
--- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.modelexplorer/src/org/eclipse/papyrus/infra/gmfdiag/modelexplorer/queries/IsDiagramContainer.java
+++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.modelexplorer/src/org/eclipse/papyrus/infra/gmfdiag/modelexplorer/queries/IsDiagramContainer.java
@@ -23,7 +23,7 @@ import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementEx
import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
-import org.eclipse.papyrus.infra.gmfdiag.common.utils.DiagramUtils;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationUtils;
public class IsDiagramContainer implements IJavaQuery2<EObject, Boolean> {
@@ -34,12 +34,9 @@ public class IsDiagramContainer implements IJavaQuery2<EObject, Boolean> {
Collection<Setting> settings = EMFHelper.getUsages(source);
if (settings != null) {
for (Setting setting : settings) {
- EObject usingElement = setting.getEObject();
- if (usingElement instanceof Diagram) {
- Diagram diagram = (Diagram) usingElement;
- if (DiagramUtils.getOwner(diagram) == source) {
- return true;
- }
+ Diagram diagram = NotationUtils.getOwnedDiagram(setting.getEObject(), source);
+ if (diagram != null) {
+ return true;
}
}
}

Back to the top