Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian de Alwis2016-11-03 14:53:14 +0000
committerBrian de Alwis2016-11-03 14:53:14 +0000
commit5bf6a6d33bac1e234a0d3b153d59d3c0d6229a42 (patch)
treef858bb474d99d29abf62663ed6f71584e8dbf2e2
parentcdc9dc237aef775123e84584e5616acebc83a7ad (diff)
downloadeclipse.platform.ua-5bf6a6d33bac1e234a0d3b153d59d3c0d6229a42.tar.gz
eclipse.platform.ua-5bf6a6d33bac1e234a0d3b153d59d3c0d6229a42.tar.xz
eclipse.platform.ua-5bf6a6d33bac1e234a0d3b153d59d3c0d6229a42.zip
-rw-r--r--org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/IntroPlugin.java1
-rw-r--r--org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/presentations/IntroLaunchBar.java26
2 files changed, 26 insertions, 1 deletions
diff --git a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/IntroPlugin.java b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/IntroPlugin.java
index 1c3bf9733..e4970bcf4 100644
--- a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/IntroPlugin.java
+++ b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/IntroPlugin.java
@@ -91,6 +91,7 @@ public class IntroPlugin extends AbstractUIPlugin {
launchBar.close();
launchBar = null;
}
+ IntroLaunchBar.destroyAll(getWorkbench());
}
public void setLaunchBar(IntroLaunchBar launchBar) {
diff --git a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/presentations/IntroLaunchBar.java b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/presentations/IntroLaunchBar.java
index 3ceaa8733..29891fdb1 100644
--- a/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/presentations/IntroLaunchBar.java
+++ b/org.eclipse.ui.intro/src/org/eclipse/ui/internal/intro/impl/presentations/IntroLaunchBar.java
@@ -9,6 +9,7 @@
**************************************************************************************************/
package org.eclipse.ui.internal.intro.impl.presentations;
+import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
@@ -16,6 +17,7 @@ import javax.annotation.PreDestroy;
import javax.inject.Inject;
import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.MElementContainer;
import org.eclipse.e4.ui.model.application.ui.SideValue;
import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
@@ -45,6 +47,7 @@ import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.AnimationEngine;
@@ -188,7 +191,7 @@ public class IntroLaunchBar {
IntroLaunchBarElement element) {
EModelService modelService = (EModelService) window.getService(EModelService.class);
MTrimmedWindow trimmedWindow = (MTrimmedWindow) window.getService(MTrimmedWindow.class);
-
+
MToolControl trimControl = modelService.createModelElement(MToolControl.class);
trimControl.setElementId(LAUNCHBAR_ID);
trimControl.setContributionURI(BUNDLECLASS_URI);
@@ -205,6 +208,27 @@ public class IntroLaunchBar {
return (IntroLaunchBar) trimControl.getObject();
}
+ /**
+ * Remove all traces of any launch bars found in the model. Required on startup as the
+ * {@linkplain IntroLaunchBar} instances may not be have been rendered yet and so are
+ * disconnected from the {@link IntroPlugin}'s state.
+ *
+ * @param workbench
+ * the workbench to process
+ */
+ public static void destroyAll(IWorkbench workbench) {
+ EModelService modelService = workbench.getService(EModelService.class);
+ MApplication application = workbench.getService(MApplication.class);
+ List<MToolControl> candidates = modelService.findElements(application, MToolControl.class,
+ EModelService.IN_TRIM, toolControl -> LAUNCHBAR_ID.equals(toolControl.getElementId())
+ && BUNDLECLASS_URI.equals(((MToolControl) toolControl).getContributionURI()));
+ for (MToolControl trimControl : candidates) {
+ if (trimControl.getParent() != null) {
+ trimControl.getParent().getChildren().remove(trimControl);
+ }
+ }
+ }
+
private static SideValue determineLocation(IntroLaunchBarElement element) {
// Try restoring to the same location if moved previously
IDialogSettings settings = IntroPlugin.getDefault().getDialogSettings();

Back to the top