diff options
author | Camille Letavernier | 2020-05-19 10:14:26 +0000 |
---|---|---|
committer | vincent lorenzo | 2020-05-28 13:38:04 +0000 |
commit | bab1f4e0257fafa569ffe6a5bed760649a087d94 (patch) | |
tree | a39ae7b8abec5d7a87a2c5b87d87a859a908e35c /plugins | |
parent | 49341edaa57ea8afb84b3a5e831bbe5c6efb5e5c (diff) | |
download | org.eclipse.papyrus-bab1f4e0257fafa569ffe6a5bed760649a087d94.tar.gz org.eclipse.papyrus-bab1f4e0257fafa569ffe6a5bed760649a087d94.tar.xz org.eclipse.papyrus-bab1f4e0257fafa569ffe6a5bed760649a087d94.zip |
Bug 563330: [Performances] Retrieving the Label Icon for a Part is very
expensive
https://bugs.eclipse.org/bugs/show_bug.cgi?id=563330
Change-Id: Ib2a1632c2e8d750e25bde753f9c26f994b142272
Signed-off-by: Camille Letavernier <cletavernier@eclipsesource.com>
Diffstat (limited to 'plugins')
6 files changed, 42 insertions, 14 deletions
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/META-INF/MANIFEST.MF b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/META-INF/MANIFEST.MF index 4578699152d..392c15e4cfe 100755 --- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/META-INF/MANIFEST.MF +++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/META-INF/MANIFEST.MF @@ -82,7 +82,7 @@ Bundle-Activator: org.eclipse.papyrus.infra.gmfdiag.common.Activator Bundle-Vendor: %providerName Bundle-ActivationPolicy: lazy Bundle-ClassPath: . -Bundle-Version: 3.104.0.qualifier +Bundle-Version: 3.104.100.qualifier Bundle-Localization: plugin Bundle-Name: %pluginName Bundle-ManifestVersion: 2 diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/pom.xml b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/pom.xml index 311079f3810..73f0e7976f9 100644 --- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/pom.xml +++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/pom.xml @@ -9,6 +9,6 @@ <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>org.eclipse.papyrus.infra.gmfdiag.common</artifactId> - <version>3.104.0-SNAPSHOT</version> + <version>3.104.100-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> </project> diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/META-INF/MANIFEST.MF b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/META-INF/MANIFEST.MF index 7765c7927d5..37e74a00c9f 100644 --- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/META-INF/MANIFEST.MF +++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/META-INF/MANIFEST.MF @@ -92,7 +92,7 @@ Require-Bundle: org.eclipse.papyrus.infra.gmfdiag.extensionpoints.editors;bundle org.eclipse.papyrus.infra.gmfdiag.style;bundle-version="[2.0.0,3.0.0)", org.eclipse.papyrus.infra.gmfdiag.representation;bundle-version="[2.0.0,3.0.0)" Bundle-Vendor: %providerName -Bundle-Version: 3.4.100.qualifier +Bundle-Version: 3.4.200.qualifier Eclipse-BuddyPolicy: dependent Bundle-Activator: org.eclipse.papyrus.uml.diagram.common.Activator Bundle-ManifestVersion: 2 diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/pom.xml b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/pom.xml index bec906d8670..8599ee6d62f 100644 --- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/pom.xml +++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/pom.xml @@ -9,6 +9,6 @@ <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>org.eclipse.papyrus.uml.diagram.common</artifactId> - <version>3.4.100-SNAPSHOT</version> + <version>3.4.200-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> </project> diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/BorderItemNameEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/BorderItemNameEditPart.java index be5b5153da2..e0a6294a81e 100644 --- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/BorderItemNameEditPart.java +++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/BorderItemNameEditPart.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2015, 2018 CEA LIST. + * Copyright (c) 2015, 2020 CEA LIST, EclipseSource. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -10,6 +10,7 @@ * * Contributors: * CEA LIST - Initial API and implementation + * Camille Letavernier (EclipseSource) - Bug 563330 */ package org.eclipse.papyrus.uml.diagram.common.editparts; @@ -26,6 +27,7 @@ import org.eclipse.emf.transaction.RecordingCommand; import org.eclipse.emf.transaction.RunnableWithResult; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.gef.AccessibleEditPart; +import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.Request; import org.eclipse.gef.requests.DirectEditRequest; @@ -37,6 +39,7 @@ import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IPrimaryEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; import org.eclipse.gmf.runtime.diagram.ui.figures.IBorderItemLocator; @@ -54,12 +57,13 @@ import org.eclipse.jface.text.contentassist.IContentAssistProcessor; import org.eclipse.jface.viewers.ICellEditorValidator; import org.eclipse.jface.window.Window; import org.eclipse.papyrus.infra.emf.appearance.helper.AppearanceHelper; +import org.eclipse.papyrus.infra.emf.utils.EMFHelper; import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.ExternalLabelPrimaryDragRoleEditPolicy; import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.IMaskManagedLabelEditPolicy; import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.IndirectMaskLabelEditPolicy; import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.LabelAlignmentEditPolicy; import org.eclipse.papyrus.infra.gmfdiag.common.figure.node.PapyrusWrappingLabel; -import org.eclipse.papyrus.infra.gmfdiag.common.utils.DiagramEditPartsUtil; +import org.eclipse.papyrus.infra.gmfdiag.common.helper.NotationHelper; import org.eclipse.papyrus.infra.gmfdiag.extensionpoints.editors.Activator; import org.eclipse.papyrus.infra.gmfdiag.extensionpoints.editors.configuration.IAdvancedEditorConfiguration; import org.eclipse.papyrus.infra.gmfdiag.extensionpoints.editors.configuration.ICustomDirectEditorConfiguration; @@ -225,11 +229,21 @@ public class BorderItemNameEditPart extends FloatingLabelEditPart implements ITe if (parserElement == null) { return null; } - List<View> views = DiagramEditPartsUtil.findViews(parserElement, getViewer()); - for (View view : views) { - if (AppearanceHelper.showElementIcon(view)) { + + EditPart current = this; + while (current != null) { + EObject element = EMFHelper.getEObject(current); + if (element != parserElement) { + break; + } + View view = NotationHelper.findView(current); + if (view != null && AppearanceHelper.showElementIcon(view)) { return org.eclipse.papyrus.uml.diagram.common.Activator.getDefault().getImage(parserElement.eClass()); } + if (current instanceof IPrimaryEditPart) { + break; + } + current = current.getParent(); } return null; } diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/EditableLabelForNodeEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/EditableLabelForNodeEditPart.java index 907b8223a73..331ae93d7e5 100644 --- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/EditableLabelForNodeEditPart.java +++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/EditableLabelForNodeEditPart.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2015 CEA LIST. + * Copyright (c) 2015, 2020 CEA LIST, EclipseSource. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -10,6 +10,7 @@ * * Contributors: * CEA LIST - Initial API and implementation + * Camille Letavernier (EclipseSource) - Bug 563330 */ package org.eclipse.papyrus.uml.diagram.common.editparts; @@ -26,6 +27,7 @@ import org.eclipse.emf.transaction.RecordingCommand; import org.eclipse.emf.transaction.RunnableWithResult; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.gef.AccessibleEditPart; +import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.Request; import org.eclipse.gef.requests.DirectEditRequest; @@ -36,6 +38,7 @@ import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IPrimaryEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; @@ -53,12 +56,13 @@ import org.eclipse.jface.viewers.ICellEditorValidator; import org.eclipse.jface.window.Window; import org.eclipse.papyrus.infra.emf.appearance.helper.AppearanceHelper; import org.eclipse.papyrus.infra.emf.appearance.helper.VisualInformationPapyrusConstants; +import org.eclipse.papyrus.infra.emf.utils.EMFHelper; import org.eclipse.papyrus.infra.gmfdiag.common.editpart.IControlParserForDirectEdit; import org.eclipse.papyrus.infra.gmfdiag.common.editpart.PapyrusCompartmentEditPart; import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.IMaskManagedLabelEditPolicy; import org.eclipse.papyrus.infra.gmfdiag.common.editpolicies.IndirectMaskLabelEditPolicy; import org.eclipse.papyrus.infra.gmfdiag.common.figure.node.PapyrusWrappingLabel; -import org.eclipse.papyrus.infra.gmfdiag.common.utils.DiagramEditPartsUtil; +import org.eclipse.papyrus.infra.gmfdiag.common.helper.NotationHelper; import org.eclipse.papyrus.infra.gmfdiag.extensionpoints.editors.Activator; import org.eclipse.papyrus.infra.gmfdiag.extensionpoints.editors.configuration.IAdvancedEditorConfiguration; import org.eclipse.papyrus.infra.gmfdiag.extensionpoints.editors.configuration.ICustomDirectEditorConfiguration; @@ -192,11 +196,21 @@ public class EditableLabelForNodeEditPart extends PapyrusCompartmentEditPart imp if (parserElement == null) { return null; } - List<View> views = DiagramEditPartsUtil.findViews(parserElement, getViewer()); - for (View view : views) { - if (AppearanceHelper.showElementIcon(view)) { + + EditPart current = this; + while (current != null) { + EObject element = EMFHelper.getEObject(current); + if (element != parserElement) { + break; + } + View view = NotationHelper.findView(current); + if (view != null && AppearanceHelper.showElementIcon(view)) { return org.eclipse.papyrus.uml.diagram.common.Activator.getDefault().getImage(parserElement.eClass()); } + if (current instanceof IPrimaryEditPart) { + break; + } + current = current.getParent(); } return null; } |