diff options
Diffstat (limited to 'plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org')
2 files changed, 31 insertions, 10 deletions
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/GMFDiagramViewTypeHelper.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/GMFDiagramViewTypeHelper.java index 3b34937389d..21abab70070 100755 --- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/GMFDiagramViewTypeHelper.java +++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/helper/GMFDiagramViewTypeHelper.java @@ -13,6 +13,8 @@ *****************************************************************************/ package org.eclipse.papyrus.infra.gmfdiag.common.helper; +import org.eclipse.core.runtime.Platform; +import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.gmf.runtime.notation.Diagram; import org.eclipse.papyrus.infra.gmfdiag.common.AbstractPapyrusGmfCreateDiagramCommandHandler; @@ -22,6 +24,7 @@ import org.eclipse.papyrus.infra.gmfdiag.representation.PapyrusDiagram; import org.eclipse.papyrus.infra.viewpoints.policy.AbstractViewTypeHelper; import org.eclipse.papyrus.infra.viewpoints.policy.PolicyChecker; import org.eclipse.papyrus.infra.viewpoints.policy.ViewPrototype; +import org.osgi.framework.Bundle; /** * Represents the dynamic contribution of a policy to menus @@ -49,16 +52,35 @@ public class GMFDiagramViewTypeHelper extends AbstractViewTypeHelper<PapyrusDiag */ @Override protected ViewPrototype doGetPrototypeFor(PapyrusDiagram diagramKind) { - String language = diagramKind.getLanguage().getId(); - AbstractPapyrusGmfCreateDiagramCommandHandler command; - try { - Class<?> creationCommandClass = diagramKind.getCreationCommandClass(); - command = (AbstractPapyrusGmfCreateDiagramCommandHandler) creationCommandClass.newInstance(); - } catch (Exception e) { - Activator.log.error(e); - return null; + String commandClassName = diagramKind.getCreationCommandClass(); + if (commandClassName != null) { + Class<?> creationCommandClass = null; + + URI uri = diagramKind.eResource().getURI(); + if (uri.isPlatformPlugin()) { + String bundleName = uri.segment(1); + Bundle bundle = Platform.getBundle(bundleName); + try { + creationCommandClass = bundle.loadClass(diagramKind.getCreationCommandClass()); + } catch (ClassNotFoundException e) { + Activator.log.error(e); + } + } + + if (creationCommandClass != null) { + AbstractPapyrusGmfCreateDiagramCommandHandler command; + try { + command = (AbstractPapyrusGmfCreateDiagramCommandHandler) creationCommandClass.newInstance(); + } catch (Exception e) { + Activator.log.error(e); + return null; + } + + String language = diagramKind.getLanguage().getId(); + return new DiagramPrototype(diagramKind, language, command); + } } - return new DiagramPrototype(diagramKind, language, command); + return null; } /** diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/service/palette/PapyrusPaletteService.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/service/palette/PapyrusPaletteService.java index 5444bbf2403..f42a5607efe 100644 --- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/service/palette/PapyrusPaletteService.java +++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.common/src/org/eclipse/papyrus/infra/gmfdiag/common/service/palette/PapyrusPaletteService.java @@ -46,7 +46,6 @@ import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.domain.IEditingDomainProvider; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.gef.palette.PaletteContainer; -import org.eclipse.gef.palette.PaletteDrawer; import org.eclipse.gef.palette.PaletteEntry; import org.eclipse.gef.palette.PaletteRoot; import org.eclipse.gef.palette.PaletteSeparator; |