From ec7df84133ffe8408a0ad729edc61ca07a20fd28 Mon Sep 17 00:00:00 2001 From: Bruno Medeiros Date: Tue, 27 Oct 2015 11:44:25 +0000 Subject: [PATCH] LANG: start debug plugin only when editor loaded. --- .../melnorme/lang/ide/core/utils/EclipseUtils.java | 6 +++++- .../src-lang/melnorme/lang/ide/ui/LangUIPlugin.java | 11 ++++++++--- .../lang/ide/ui/editor/AbstractLangEditor.java | 4 ++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/plugin_ide.core/src-lang/melnorme/lang/ide/core/utils/EclipseUtils.java b/plugin_ide.core/src-lang/melnorme/lang/ide/core/utils/EclipseUtils.java index b990d985e..fa6bc8713 100644 --- a/plugin_ide.core/src-lang/melnorme/lang/ide/core/utils/EclipseUtils.java +++ b/plugin_ide.core/src-lang/melnorme/lang/ide/core/utils/EclipseUtils.java @@ -48,7 +48,11 @@ public static IWorkspace getWorkspace() { public static void startOtherPlugin(String pluginId) { try { Bundle debugPlugin = Platform.getBundle(pluginId); - if(debugPlugin != null && debugPlugin.getState() != Bundle.STARTING) { + if(debugPlugin == null) { + LangCore.logError("Error trying to start plugin `" + pluginId + "`: plugin not found."); + return; + } + if(debugPlugin.getState() != Bundle.STARTING) { debugPlugin.start(Bundle.START_TRANSIENT); } } catch (BundleException e) { diff --git a/plugin_ide.ui/src-lang/melnorme/lang/ide/ui/LangUIPlugin.java b/plugin_ide.ui/src-lang/melnorme/lang/ide/ui/LangUIPlugin.java index 3747daf82..0198ced87 100644 --- a/plugin_ide.ui/src-lang/melnorme/lang/ide/ui/LangUIPlugin.java +++ b/plugin_ide.ui/src-lang/melnorme/lang/ide/ui/LangUIPlugin.java @@ -81,9 +81,14 @@ protected void doCustomStart_initialStage(BundleContext context) { /** Start twined plugins after initial stage. */ protected void doCustomStart_startTwinPlugins() { - // Force start of debug plugin, if present, so that UI contributions will be fully active. - // ATM, some UI contributions that dynamically manipulate enablement and state don't work correctly - // unless underlying plugin is started. + // Commented out, editor is now the one that starting the debug plugin +// startDebugPlugin(); + } + + // Force start of debug plugin, if present, so that UI contributions will be fully active. + // ATM, some UI contributions that dynamically manipulate enablement and state don't work correctly + // unless underlying plugin is started. + public static void startDebugPlugin() { EclipseUtils.startOtherPlugin(LangUIPlugin_Actual.DEBUG_PLUGIN_ID); } diff --git a/plugin_ide.ui/src-lang/melnorme/lang/ide/ui/editor/AbstractLangEditor.java b/plugin_ide.ui/src-lang/melnorme/lang/ide/ui/editor/AbstractLangEditor.java index 7d3168d0c..0143b91fe 100644 --- a/plugin_ide.ui/src-lang/melnorme/lang/ide/ui/editor/AbstractLangEditor.java +++ b/plugin_ide.ui/src-lang/melnorme/lang/ide/ui/editor/AbstractLangEditor.java @@ -52,6 +52,10 @@ public abstract class AbstractLangEditor extends TextEditorExt { public AbstractLangEditor() { super(); + + // Force start debug plugin to ensure action contributions are propagated. + // XXX: Definitely there should be a better way to achieve the above, but it's tricky. + LangUIPlugin.startDebugPlugin(); } @Override