diff options
author | Ansgar Radermacher | 2016-04-04 19:00:29 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2016-04-06 09:03:19 +0000 |
commit | fc112c9fb906ae449d600cc6c4883c33e1a8c86d (patch) | |
tree | ca53293be59fb67719df295426bc95045ab3190a /plugins/infra/gmfdiag | |
parent | 35902dc73fab05cebd1c4570597dfe3998a6f95a (diff) | |
download | org.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
Change-Id: I4b6deb1ac7a4728a7ba30eee998e61af720fcf37
Diffstat (limited to 'plugins/infra/gmfdiag')
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; } } } |