diff options
author | Remi Schnekenburger | 2015-05-06 10:42:10 +0000 |
---|---|---|
committer | Remi Schnekenburger | 2015-05-06 12:52:32 +0000 |
commit | 39d7aa757396e5288eccf33c6661ffa4fcae0add (patch) | |
tree | 224fd2e0023848f3ee2639cdfd4c41e676611f74 /plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src | |
parent | df2cb98a440a93cdd0a19a2a49412f3f49e2a60b (diff) | |
download | org.eclipse.papyrus-39d7aa757396e5288eccf33c6661ffa4fcae0add.tar.gz org.eclipse.papyrus-39d7aa757396e5288eccf33c6661ffa4fcae0add.tar.xz org.eclipse.papyrus-39d7aa757396e5288eccf33c6661ffa4fcae0add.zip |
Bug 463564 - [Performances] Opening a menu in the ModelExplorer takes
several seconds (Mars M6)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=463564
- define a cache registry for type and advices
- update the profile research for Stereotype dependent advice
Diffstat (limited to 'plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src')
-rw-r--r-- | plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/DefaultEditHelper.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/DefaultEditHelper.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/DefaultEditHelper.java index baf4c3d6f2c..d1d47838967 100644 --- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/DefaultEditHelper.java +++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/DefaultEditHelper.java @@ -40,6 +40,7 @@ import org.eclipse.papyrus.commands.DestroyElementPapyrusCommand; import org.eclipse.papyrus.infra.emf.commands.UnsetValueCommand; import org.eclipse.papyrus.infra.emf.requests.UnsetRequest; import org.eclipse.papyrus.infra.gmfdiag.common.commands.CreateEditBasedElementCommand; +import org.eclipse.papyrus.infra.services.edit.utils.CacheRegistry; import org.eclipse.papyrus.infra.services.edit.utils.IRequestCacheEntries; /** @@ -317,6 +318,10 @@ public class DefaultEditHelper extends AbstractEditHelper { protected IEditHelperAdvice[] getEditHelperAdvice(IEditCommandRequest req) { IEditHelperAdvice[] advices = null; Object editHelperContext = req.getEditHelperContext(); + if (editHelperContext == null) { + return null; + } + Map cacheMaps = (Map) req.getParameter(Cache_Maps); if (cacheMaps != null) { if (editHelperContext instanceof IEditHelperContext) { @@ -348,11 +353,20 @@ public class DefaultEditHelper extends AbstractEditHelper { if (advices == null) { if (editHelperContext instanceof EObject) { - advices = ElementTypeRegistry.getInstance().getEditHelperAdvice((EObject) editHelperContext, req.getClientContext()); + IElementType type = ElementTypeRegistry.getInstance().getElementType((EObject) editHelperContext, req.getClientContext()); + advices = CacheRegistry.getInstance().getEditHelperAdvice(req.getClientContext(), type); + // advices = ElementTypeRegistry.getInstance().getEditHelperAdvice((EObject) editHelperContext, req.getClientContext()); } else if (editHelperContext instanceof IElementType) { - advices = ElementTypeRegistry.getInstance().getEditHelperAdvice((IElementType) editHelperContext, req.getClientContext()); + advices = CacheRegistry.getInstance().getEditHelperAdvice(req.getClientContext(), ((IElementType) editHelperContext)); + } else if (editHelperContext instanceof IEditHelperContext) { + IElementType type = ((IEditHelperContext) editHelperContext).getElementType(); + if (type != null) { + advices = CacheRegistry.getInstance().getEditHelperAdvice(req.getClientContext(), type); + } else { + advices = ElementTypeRegistry.getInstance().getEditHelperAdvice(editHelperContext); + } } else { advices = ElementTypeRegistry.getInstance().getEditHelperAdvice(editHelperContext); } |