Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Webster2014-05-16 19:20:27 +0000
committerPaul Webster2014-05-21 18:18:26 +0000
commit488f221b82f7f1298a1a6aea62416785f464ffe7 (patch)
treef6e1009a3b4e31e5b0366c7e8a64700d6fba7080
parentd09eb7036e58a3e889764dad669cbf2af5ebde8c (diff)
downloadeclipse.platform.ui-488f221b82f7f1298a1a6aea62416785f464ffe7.tar.gz
eclipse.platform.ui-488f221b82f7f1298a1a6aea62416785f464ffe7.tar.xz
eclipse.platform.ui-488f221b82f7f1298a1a6aea62416785f464ffe7.zip
Bug 433979 - Prevent to hide view and window toolbar
Save the fact that quick access was hidden in the window tags, so it can be re-applied on startup Change-Id: Ide04f6b5a587534d7f8f5a1e73404e9f57c8e6c1
-rw-r--r--bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolControlRenderer.java37
-rw-r--r--bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java43
2 files changed, 76 insertions, 4 deletions
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolControlRenderer.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolControlRenderer.java
index 9495189e314..c2dc23971bf 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolControlRenderer.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolControlRenderer.java
@@ -49,6 +49,15 @@ import org.osgi.service.event.Event;
*/
public class ToolControlRenderer extends SWTPartRenderer {
+ /**
+ * Will be published or removed in 4.5.
+ */
+ private static final String HIDEABLE = "HIDEABLE"; //$NON-NLS-1$
+ /**
+ * Will be published or removed in 4.5.
+ */
+ private static final String SHOW_RESTORE_MENU = "SHOW_RESTORE_MENU"; //$NON-NLS-1$
+
@Inject
private MApplication application;
/**
@@ -128,9 +137,8 @@ public class ToolControlRenderer extends SWTPartRenderer {
CSSRenderingUtils cssUtils = parentContext.get(CSSRenderingUtils.class);
newCtrl = cssUtils.frameMeIfPossible(newCtrl, null, vertical, true);
- boolean hideable = toolControl.getTags().contains("HIDEABLE"); //$NON-NLS-1$
- boolean showRestoreMenu = toolControl.getTags().contains(
- "SHOW_RESTORE_MENU"); //$NON-NLS-1$
+ boolean hideable = isHideable(toolControl);
+ boolean showRestoreMenu = isRestoreMenuShowable(toolControl);
if (showRestoreMenu || hideable) {
createToolControlMenu(toolControl, newCtrl, hideable);
}
@@ -138,6 +146,14 @@ public class ToolControlRenderer extends SWTPartRenderer {
return newCtrl;
}
+ private boolean isRestoreMenuShowable(MToolControl toolControl) {
+ return toolControl.getTags().contains(SHOW_RESTORE_MENU);
+ }
+
+ private boolean isHideable(MToolControl toolControl) {
+ return toolControl.getTags().contains(HIDEABLE);
+ }
+
@Inject
@Optional
private void subscribeTopicTagsChanged(
@@ -148,12 +164,25 @@ public class ToolControlRenderer extends SWTPartRenderer {
if (!(changedObj instanceof MToolControl))
return;
- final MUIElement changedElement = (MUIElement) changedObj;
+ final MToolControl changedElement = (MToolControl) changedObj;
if (UIEvents.isADD(event)) {
if (UIEvents.contains(event, UIEvents.EventTags.NEW_VALUE,
IPresentationEngine.HIDDEN_EXPLICITLY)) {
changedElement.setVisible(false);
+ } else {
+ boolean hideable = UIEvents.contains(event,
+ UIEvents.EventTags.NEW_VALUE, HIDEABLE);
+ if (UIEvents.contains(event, UIEvents.EventTags.NEW_VALUE,
+ SHOW_RESTORE_MENU) || hideable) {
+ Object obj = changedElement.getWidget();
+ if (obj instanceof Control) {
+ if (((Control) obj).getMenu() == null) {
+ createToolControlMenu(changedElement,
+ (Control) obj, hideable);
+ }
+ }
+ }
}
} else if (UIEvents.isREMOVE(event)) {
if (UIEvents.contains(event, UIEvents.EventTags.OLD_VALUE,
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java
index 62ab5b5f2d4..8fa9d42916a 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java
@@ -52,6 +52,7 @@ import org.eclipse.e4.core.di.InjectionException;
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.e4.core.services.log.Logger;
+import org.eclipse.e4.ui.di.UIEventTopic;
import org.eclipse.e4.ui.internal.workbench.E4Workbench;
import org.eclipse.e4.ui.internal.workbench.OpaqueElementUtil;
import org.eclipse.e4.ui.internal.workbench.PartServiceSaveHandler;
@@ -918,11 +919,53 @@ public class WorkbenchWindow implements IWorkbenchWindow {
quickAccessElementId, model);
if (quickAccessElement != null) {
moveControl(quickAccessElement.getParent(), quickAccessElement);
+
+ // target the quick access field specifically
+ if (QUICK_ACCESS_ID.equals(quickAccessElement.getElementId())) {
+ if (model.getTags().contains(QUICK_ACCESS_HIDDEN)) {
+ if (!quickAccessElement.getTags().contains(
+ IPresentationEngine.HIDDEN_EXPLICITLY)) {
+ quickAccessElement.getTags().add(IPresentationEngine.HIDDEN_EXPLICITLY);
+ }
+ }
+ }
}
}
}
+ private static final String QUICK_ACCESS_ID = "SearchField"; //$NON-NLS-1$
+ private static final String QUICK_ACCESS_HIDDEN = "QUICK_ACCESS_HIDDEN"; //$NON-NLS-1$
+
+ @Inject
+ private void hideQuickAccess(
+ @Optional @UIEventTopic(UIEvents.ApplicationElement.TOPIC_TAGS) Event event) {
+ if (event == null) {
+ return;
+ }
+ Object origin = event.getProperty(UIEvents.EventTags.ELEMENT);
+ if (!(origin instanceof MToolControl)) {
+ return;
+ }
+ MToolControl control = (MToolControl) origin;
+ if (!QUICK_ACCESS_ID.equals(control.getElementId())) {
+ return;
+ }
+ if (UIEvents.isADD(event)) {
+ if (UIEvents.contains(event, UIEvents.EventTags.NEW_VALUE,
+ IPresentationEngine.HIDDEN_EXPLICITLY)) {
+ if (!model.getTags().contains(QUICK_ACCESS_HIDDEN)) {
+ model.getTags().add(QUICK_ACCESS_HIDDEN);
+ }
+ }
+ } else if (UIEvents.isREMOVE(event)) {
+ if (UIEvents.contains(event, UIEvents.EventTags.OLD_VALUE,
+ IPresentationEngine.HIDDEN_EXPLICITLY)) {
+ model.getTags().remove(QUICK_ACCESS_HIDDEN);
+ }
+ }
+ }
+
/**
* Moves the given element from its current position to the position
* mentioned in one of its tags.

Back to the top