Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarContributionEditor.java')
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarContributionEditor.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarContributionEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarContributionEditor.java
index 87980782..2c16a0a9 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarContributionEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ToolBarContributionEditor.java
@@ -7,10 +7,13 @@
*
* Contributors:
* Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ * Marco Descher <marco@descher.at> - https://bugs.eclipse.org/397650
******************************************************************************/
package org.eclipse.e4.tools.emf.ui.internal.common.component;
+import java.util.ArrayList;
import java.util.List;
+import javax.annotation.PostConstruct;
import javax.inject.Inject;
import org.eclipse.core.databinding.observable.list.IObservableList;
import org.eclipse.core.databinding.observable.value.WritableValue;
@@ -40,6 +43,7 @@ import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.edit.command.AddCommand;
import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.jface.action.Action;
import org.eclipse.jface.databinding.swt.IWidgetValueProperty;
import org.eclipse.jface.databinding.swt.WidgetProperties;
import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
@@ -70,6 +74,7 @@ public class ToolBarContributionEditor extends AbstractComponentEditor {
private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
private EStackLayout stackLayout;
+ private List<Action> actions = new ArrayList<Action>();
@Inject
@Optional
@@ -92,6 +97,34 @@ public class ToolBarContributionEditor extends AbstractComponentEditor {
super();
}
+ @PostConstruct
+ void init() {
+ actions.add(new Action(Messages.ToolBarEditor_AddHandledToolItem, createImageDescriptor(ResourceProvider.IMG_HandledToolItem)) {
+ @Override
+ public void run() {
+ handleAddChild(MenuPackageImpl.Literals.HANDLED_TOOL_ITEM, false);
+ }
+ });
+ actions.add(new Action(Messages.ToolBarEditor_AddDirectToolItem, createImageDescriptor(ResourceProvider.IMG_DirectToolItem)) {
+ @Override
+ public void run() {
+ handleAddChild(MenuPackageImpl.Literals.DIRECT_TOOL_ITEM, false);
+ }
+ });
+ actions.add(new Action(Messages.ToolBarEditor_AddToolControl, createImageDescriptor(ResourceProvider.IMG_ToolControl)) {
+ @Override
+ public void run() {
+ handleAddChild(MenuPackageImpl.Literals.TOOL_CONTROL, false);
+ }
+ });
+ actions.add(new Action(Messages.ToolBarEditor_AddToolBarSeparator, createImageDescriptor(ResourceProvider.IMG_ToolBarSeparator)) {
+ @Override
+ public void run() {
+ handleAddChild(MenuPackageImpl.Literals.TOOL_BAR_SEPARATOR, true);
+ }
+ });
+ }
+
@Override
public Image getImage(Object element, Display display) {
if (element instanceof MUIElement) {
@@ -353,4 +386,25 @@ public class ToolBarContributionEditor extends AbstractComponentEditor {
public FeaturePath[] getLabelProperties() {
return new FeaturePath[] { FeaturePath.fromList(UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED) };
}
+
+ @Override
+ public List<Action> getActions(Object element) {
+ ArrayList<Action> l = new ArrayList<Action>(super.getActions(element));
+ l.addAll(actions);
+ return l;
+ }
+
+ protected void handleAddChild(EClass eClass, boolean separator) {
+ MToolBarElement eObject = (MToolBarElement) EcoreUtil.create(eClass);
+ setElementId(eObject);
+
+ Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);
+
+ if (cmd.canExecute()) {
+ getEditingDomain().getCommandStack().execute(cmd);
+ if (!separator) {
+ getEditor().setSelection(eObject);
+ }
+ }
+ }
}

Back to the top