Work for Bug 340695 - Can't reposition trim elements (Initial
Toolbar work)
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/IBFDragAgent.java b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/IBFDragAgent.java
index 27f4ef8..f903170 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/IBFDragAgent.java
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/IBFDragAgent.java
@@ -12,6 +12,7 @@
package org.eclipse.e4.ui.workbench.addons.dndaddon;
import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MTrimElement;
import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
import org.eclipse.e4.ui.widgets.ImageBasedFrame;
import org.eclipse.e4.ui.workbench.addons.minmax.TrimStack;
@@ -46,7 +47,7 @@
if (!(info.curCtrl instanceof ImageBasedFrame))
return null;
- if (!(info.curElement instanceof MToolControl))
+ if (!(info.curElement instanceof MTrimElement))
return null;
ImageBasedFrame frame = (ImageBasedFrame) info.curCtrl;
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolBarManagerRenderer.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolBarManagerRenderer.java
index 49a1120..04b4641 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolBarManagerRenderer.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ToolBarManagerRenderer.java
@@ -25,6 +25,7 @@
import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.e4.ui.internal.workbench.ContributionsAnalyzer;
import org.eclipse.e4.ui.internal.workbench.swt.AbstractPartRenderer;
+import org.eclipse.e4.ui.internal.workbench.swt.CSSRenderingUtils;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.MApplicationElement;
import org.eclipse.e4.ui.model.application.ui.MElementContainer;
@@ -262,6 +263,24 @@
createToolbar(toolbarModel, intermediate);
bindWidget(element, intermediate);
processContribution(toolbarModel);
+
+ MUIElement parentElement = element.getParent();
+ if (parentElement instanceof MTrimBar) {
+ element.getTags().add("Draggable"); //$NON-NLS-1$
+
+ setCSSInfo(element, intermediate);
+
+ boolean vertical = false;
+ MTrimBar bar = (MTrimBar) parentElement;
+ vertical = bar.getSide() == SideValue.LEFT
+ || bar.getSide() == SideValue.RIGHT;
+ IEclipseContext parentContext = getContextForParent(element);
+ CSSRenderingUtils cssUtils = parentContext
+ .get(CSSRenderingUtils.class);
+ intermediate = (Composite) cssUtils.frameMeIfPossible(intermediate,
+ null, vertical, true);
+ }
+
return intermediate;
}
@@ -393,9 +412,9 @@
linkModelToManager((MToolBar) element, manager);
}
ToolBar bar = manager.createControl(parent);
- if (bar.getParent() != parent) {
- Thread.dumpStack();
- }
+ // if (bar.getParent() != parent) {
+ // Thread.dumpStack();
+ // }
bar.setData(manager);
bar.setData(AbstractPartRenderer.OWNING_ME, element);
bar.getShell().layout(new Control[] { bar }, SWT.DEFER);