diff options
author | Marco Descher | 2013-02-14 10:08:02 +0000 |
---|---|---|
committer | Sopot Cela | 2013-02-14 10:08:02 +0000 |
commit | 51f489d9ffc933a38e36b3cb762b1d738d8ef18c (patch) | |
tree | 826d6817414dd8615bce4d19c5a3764be7f50fbd | |
parent | 0da26e682be49fad818a9bddd0cc5b8b065cd91c (diff) | |
download | org.eclipse.e4.tools-I20130215-0900.tar.gz org.eclipse.e4.tools-I20130215-0900.tar.xz org.eclipse.e4.tools-I20130215-0900.zip |
Bug 397650 - [Menu|Toolbar|Trim] Contributions to not feature "AddI20130220-1100I20130219-2200I20130215-1230I20130215-0900I20130214-2200
child" action
3 files changed, 147 insertions, 0 deletions
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuContributionEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuContributionEditor.java index e0e8e86f..d14fca00 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuContributionEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/MenuContributionEditor.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; @@ -37,6 +40,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; @@ -66,6 +70,7 @@ public class MenuContributionEditor extends AbstractComponentEditor { private IListProperty ELEMENT_CONTAINER__CHILDREN = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN); private EStackLayout stackLayout; + private List<Action> actions = new ArrayList<Action>(); private static class Struct { private final String label; @@ -84,6 +89,34 @@ public class MenuContributionEditor extends AbstractComponentEditor { super(); } + @PostConstruct + void init() { + actions.add(new Action(Messages.MenuEditor_AddHandledMenuItem, createImageDescriptor(ResourceProvider.IMG_HandledMenuItem)) { + @Override + public void run() { + handleAdd(MenuPackageImpl.Literals.HANDLED_MENU_ITEM, false); + } + }); + actions.add(new Action(Messages.MenuEditor_AddMenu, createImageDescriptor(ResourceProvider.IMG_Menu)) { + @Override + public void run() { + handleAdd(MenuPackageImpl.Literals.MENU, false); + } + }); + actions.add(new Action(Messages.MenuEditor_AddDirectMenuItem, createImageDescriptor(ResourceProvider.IMG_DirectMenuItem)) { + @Override + public void run() { + handleAdd(MenuPackageImpl.Literals.DIRECT_MENU_ITEM, false); + } + }); + actions.add(new Action(Messages.MenuEditor_AddSeparator, createImageDescriptor(ResourceProvider.IMG_MenuSeparator)) { + @Override + public void run() { + handleAdd(MenuPackageImpl.Literals.MENU_SEPARATOR, true); + } + }); + } + @Override public Image getImage(Object element, Display display) { if (element instanceof MUIElement) { @@ -327,4 +360,24 @@ public class MenuContributionEditor extends AbstractComponentEditor { public FeaturePath[] getLabelProperties() { return new FeaturePath[] { FeaturePath.fromList(UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED) }; } + + protected void handleAdd(EClass eClass, boolean separator) { + MMenuElement eObject = (MMenuElement) 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); + } + } + } + + @Override + public List<Action> getActions(Object element) { + ArrayList<Action> l = new ArrayList<Action>(super.getActions(element)); + l.addAll(actions); + return l; + } } 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); + } + } + } } diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/TrimContributionEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/TrimContributionEditor.java index ab9254ff..5c56b500 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/TrimContributionEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/TrimContributionEditor.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; @@ -39,6 +42,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; @@ -69,6 +73,7 @@ public class TrimContributionEditor 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 @@ -79,6 +84,22 @@ public class TrimContributionEditor extends AbstractComponentEditor { super(); } + @PostConstruct + void init() { + actions.add(new Action(Messages.TrimBarEditor_AddToolBar, createImageDescriptor(ResourceProvider.IMG_ToolBar)) { + @Override + public void run() { + handleAddChild(MenuPackageImpl.Literals.TOOL_BAR); + } + }); + actions.add(new Action(Messages.TrimBarEditor_AddToolControl, createImageDescriptor(ResourceProvider.IMG_ToolControl)) { + @Override + public void run() { + handleAddChild(MenuPackageImpl.Literals.TOOL_CONTROL); + } + }); + } + @Override public Image getImage(Object element, Display display) { if (element instanceof MUIElement) { @@ -329,4 +350,23 @@ public class TrimContributionEditor extends AbstractComponentEditor { public FeaturePath[] getLabelProperties() { return new FeaturePath[] { FeaturePath.fromList(UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED) }; } + + protected void handleAddChild(EClass eClass) { + EObject toolbar = EcoreUtil.create(eClass); + setElementId(toolbar); + + Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, toolbar); + + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + getEditor().setSelection(toolbar); + } + } + + @Override + public List<Action> getActions(Object element) { + ArrayList<Action> l = new ArrayList<Action>(super.getActions(element)); + l.addAll(actions); + return l; + } } |