diff options
author | Tom Schindl | 2014-02-06 12:50:26 +0000 |
---|---|---|
committer | Tom Schindl | 2014-02-06 12:50:26 +0000 |
commit | ceeb9dfaaf7711800ae34768f2f7dadcebd9790d (patch) | |
tree | 53f87cc7d164f50855e9f66f869c75b9b735b57d /bundles | |
parent | 697b66f24aac90375360caef3c244b52c767d506 (diff) | |
download | org.eclipse.e4.tools-ceeb9dfaaf7711800ae34768f2f7dadcebd9790d.tar.gz org.eclipse.e4.tools-ceeb9dfaaf7711800ae34768f2f7dadcebd9790d.tar.xz org.eclipse.e4.tools-ceeb9dfaaf7711800ae34768f2f7dadcebd9790d.zip |
Bug 427558 - [e4xmi] Children DropDown of MPartStack &
MPartSashContainer should consult IEditorFeature contributions
Diffstat (limited to 'bundles')
5 files changed, 61 insertions, 11 deletions
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/IEditorFeature.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/IEditorFeature.java index fdcf4cb0..21a8f120 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/IEditorFeature.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/IEditorFeature.java @@ -21,10 +21,18 @@ import org.eclipse.emf.ecore.EStructuralFeature; public interface IEditorFeature { public class FeatureClass { public final String label; + public final String iconId; public final EClass eClass; public FeatureClass(String label, EClass eClass) { this.label = label; + this.iconId = null; + this.eClass = eClass; + } + + public FeatureClass(String label, String iconId, EClass eClass) { + this.label = label; + this.iconId = iconId; this.eClass = eClass; } } @@ -33,7 +41,7 @@ public interface IEditorFeature { * Return a list of {@link FeatureClass} elements, where * {@link FeatureClass#eClass} must be castable to <b>eClass</b> and will be * stored in <b>feature</b>. - * + * * @param eClass * your contribution must be castable to * @param feature diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/component/AbstractComponentEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/component/AbstractComponentEditor.java index 718c5a74..32868cf8 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/component/AbstractComponentEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/common/component/AbstractComponentEditor.java @@ -101,6 +101,9 @@ public abstract class AbstractComponentEditor { } public ImageDescriptor createImageDescriptor(String key) { + if (key == null) { + return null; + } return ImageDescriptor.createFromImage(createImage(key)); } @@ -132,7 +135,7 @@ public abstract class AbstractComponentEditor { * Translates an input <code>String</code> using the current * {@link ResourceBundleTranslationProvider} and <code>locale</code> from * the {@link TranslationService}. - * + * * @param string * the string to translate, may not be null. * @return the translated string or the input string if it could not be diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java index c9ecf03b..d0285fe9 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java @@ -376,12 +376,12 @@ public class ModelEditor { context.set(IProject.class, project); } + loadEditorFeatures(); registerDefaultEditors(); registerVirtualEditors(); registerContributedEditors(); registerContributedVirtualEditors(); - loadEditorFeatures(); loadContributionCreators(); fragment = modelProvider.getRoot().get(0) instanceof MModelFragments; @@ -719,6 +719,7 @@ public class ModelEditor { if (noSelected > 0) { if ((!isModelFragment()) && modelExtractor != null) manager.add(new Action(messages.ModelEditor_ExtractFragment, ImageDescriptor.createFromImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_ModelFragments))) { + @Override public void run() { ArrayList<MApplicationElement> maes = new ArrayList<MApplicationElement>(); for (Object objSelect : listOfSelections) { diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartSashContainerEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartSashContainerEditor.java index 71f27ab6..384e67d1 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartSashContainerEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartSashContainerEditor.java @@ -20,6 +20,7 @@ import org.eclipse.core.databinding.property.list.IListProperty; import org.eclipse.core.resources.IProject; import org.eclipse.e4.core.di.annotations.Optional; import org.eclipse.e4.tools.emf.ui.common.EStackLayout; +import org.eclipse.e4.tools.emf.ui.common.IEditorFeature.FeatureClass; import org.eclipse.e4.tools.emf.ui.common.Util; import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor; import org.eclipse.e4.tools.emf.ui.internal.ResourceProvider; @@ -137,6 +138,15 @@ public class PartSashContainerEditor extends AbstractComponentEditor { handleAddChild(AdvancedPackageImpl.Literals.PLACEHOLDER); } }); + for (FeatureClass c : getEditor().getFeatureClasses(BasicPackageImpl.Literals.PART_STACK, UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN)) { + final EClass ec = c.eClass; + actions.add(new Action(c.label, createImageDescriptor(c.iconId)) { + @Override + public void run() { + handleAddChild(ec); + } + }); + } // --- Import Actions --- actionsImport.add(new Action("Views", createImageDescriptor(ResourceProvider.IMG_Part)) { @@ -296,8 +306,16 @@ public class PartSashContainerEditor extends AbstractComponentEditor { return eclass.getName(); } }); - childrenDropDown.setInput(new EClass[] { BasicPackageImpl.Literals.PART_SASH_CONTAINER, BasicPackageImpl.Literals.PART_STACK, BasicPackageImpl.Literals.PART, BasicPackageImpl.Literals.INPUT_PART, AdvancedPackageImpl.Literals.AREA, AdvancedPackageImpl.Literals.PLACEHOLDER }); - childrenDropDown.setSelection(new StructuredSelection(BasicPackageImpl.Literals.PART_SASH_CONTAINER)); + List<FeatureClass> eClassList = new ArrayList<FeatureClass>(); + eClassList.add(new FeatureClass("PartSashContainer", BasicPackageImpl.Literals.PART_SASH_CONTAINER)); + eClassList.add(new FeatureClass("PartStack", BasicPackageImpl.Literals.PART_STACK)); + eClassList.add(new FeatureClass("Part", BasicPackageImpl.Literals.PART)); + eClassList.add(new FeatureClass("InputPart", BasicPackageImpl.Literals.INPUT_PART)); + eClassList.add(new FeatureClass("Area", AdvancedPackageImpl.Literals.AREA)); + eClassList.add(new FeatureClass("Placeholder", AdvancedPackageImpl.Literals.PLACEHOLDER)); + eClassList.addAll(getEditor().getFeatureClasses(BasicPackageImpl.Literals.PART_SASH_CONTAINER, UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN)); + + childrenDropDown.setSelection(new StructuredSelection(eClassList.get(0))); Button b = new Button(buttonCompTop, SWT.PUSH | SWT.FLAT); b.setText(Messages.ModelTooling_Common_AddEllipsis); @@ -307,7 +325,7 @@ public class PartSashContainerEditor extends AbstractComponentEditor { @Override public void widgetSelected(SelectionEvent e) { if (!childrenDropDown.getSelection().isEmpty()) { - EClass eClass = (EClass) ((IStructuredSelection) childrenDropDown.getSelection()).getFirstElement(); + EClass eClass = ((FeatureClass) ((IStructuredSelection) childrenDropDown.getSelection()).getFirstElement()).eClass; handleAddChild(eClass); } } diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartStackEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartStackEditor.java index e36cddf6..6d2fa6cb 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartStackEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/PartStackEditor.java @@ -20,6 +20,7 @@ import org.eclipse.core.databinding.property.list.IListProperty; import org.eclipse.core.resources.IProject; import org.eclipse.e4.core.di.annotations.Optional; import org.eclipse.e4.tools.emf.ui.common.EStackLayout; +import org.eclipse.e4.tools.emf.ui.common.IEditorFeature.FeatureClass; import org.eclipse.e4.tools.emf.ui.common.Util; import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor; import org.eclipse.e4.tools.emf.ui.internal.ResourceProvider; @@ -115,6 +116,20 @@ public class PartStackEditor extends AbstractComponentEditor { } }); + List<FeatureClass> list = getEditor().getFeatureClasses(BasicPackageImpl.Literals.PART_STACK, UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN); + + if (!list.isEmpty()) { + for (FeatureClass c : list) { + final EClass ec = c.eClass; + actions.add(new Action(c.label, createImageDescriptor(c.iconId)) { + @Override + public void run() { + handleAddChild(ec); + } + }); + } + } + // --- Import Actions --- actionsImport.add(new Action("Views", createImageDescriptor(ResourceProvider.IMG_Part)) { @Override @@ -236,12 +251,17 @@ public class PartStackEditor extends AbstractComponentEditor { childrenDropDown.setLabelProvider(new LabelProvider() { @Override public String getText(Object element) { - EClass eclass = (EClass) element; - return eclass.getName(); + FeatureClass eclass = (FeatureClass) element; + return eclass.label; } }); - childrenDropDown.setInput(new EClass[] { BasicPackageImpl.Literals.PART, BasicPackageImpl.Literals.INPUT_PART, AdvancedPackageImpl.Literals.PLACEHOLDER }); - childrenDropDown.setSelection(new StructuredSelection(BasicPackageImpl.Literals.PART)); + List<FeatureClass> eClassList = new ArrayList<FeatureClass>(); + eClassList.add(new FeatureClass("Part", BasicPackageImpl.Literals.PART)); + eClassList.add(new FeatureClass("Input Part", BasicPackageImpl.Literals.INPUT_PART)); + eClassList.add(new FeatureClass("Placeholder", AdvancedPackageImpl.Literals.PLACEHOLDER)); + eClassList.addAll(getEditor().getFeatureClasses(BasicPackageImpl.Literals.PART_STACK, UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN)); + childrenDropDown.setInput(eClassList); + childrenDropDown.setSelection(new StructuredSelection(eClassList.get(0))); Button b = new Button(buttonCompTop, SWT.PUSH | SWT.FLAT); b.setText(Messages.ModelTooling_Common_AddEllipsis); @@ -250,7 +270,7 @@ public class PartStackEditor extends AbstractComponentEditor { b.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - EClass eClass = (EClass) ((IStructuredSelection) childrenDropDown.getSelection()).getFirstElement(); + EClass eClass = ((FeatureClass) ((IStructuredSelection) childrenDropDown.getSelection()).getFirstElement()).eClass; handleAddChild(eClass); } }); |