diff options
author | Wim Jongman | 2013-02-20 16:28:40 +0000 |
---|---|---|
committer | Wim Jongman | 2013-02-20 16:28:40 +0000 |
commit | 723fc41604b6ae4804e554d6d791fcaec6b78a90 (patch) | |
tree | 392cb208a2cf6b8f8a4a77ccb2ad85b14501e63c | |
parent | 51f489d9ffc933a38e36b3cb762b1d738d8ef18c (diff) | |
download | org.eclipse.e4.tools-723fc41604b6ae4804e554d6d791fcaec6b78a90.tar.gz org.eclipse.e4.tools-723fc41604b6ae4804e554d6d791fcaec6b78a90.tar.xz org.eclipse.e4.tools-723fc41604b6ae4804e554d6d791fcaec6b78a90.zip |
bug 400804: Implemented various table layouts.I20130220-1200
7 files changed, 419 insertions, 391 deletions
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelFragmentsEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelFragmentsEditor.java index 9984e587..43227f5e 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelFragmentsEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelFragmentsEditor.java @@ -35,7 +35,9 @@ import org.eclipse.emf.databinding.EMFProperties; import org.eclipse.emf.databinding.IEMFListProperty; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.command.MoveCommand; import org.eclipse.emf.edit.command.RemoveCommand; @@ -250,7 +252,7 @@ public class ModelFragmentsEditor extends AbstractComponentEditor { ControlFactory.createXMIId(parent, this); } - ViewerElement tableElement = ViewerElement.create(context, parent, FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, this); + final ViewerElement tableElement = ViewerElement.create(context, parent, this); tableElement.getViewer().setContentProvider(new ObservableListContentProvider()); tableElement.getViewer().setLabelProvider(new ComponentLabelProvider(getEditor(), Messages)); @@ -271,6 +273,80 @@ public class ModelFragmentsEditor extends AbstractComponentEditor { } }); + tableElement.getButtonAdd().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + EClass eClass = ((FeatureClass) ((IStructuredSelection) tableElement.getDropDown().getSelection()).getFirstElement()).eClass; + EObject eObject = EcoreUtil.create(eClass); + + Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, eObject); + + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + getEditor().setSelection(eObject); + } + } + }); + + tableElement.getButtonRemove().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!tableElement.getViewer().getSelection().isEmpty()) { + List<?> elements = ((IStructuredSelection) tableElement.getViewer().getSelection()).toList(); + + Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, elements); + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + } + } + } + }); + + tableElement.getButtonDown().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!tableElement.getViewer().getSelection().isEmpty()) { + IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection(); + if (s.size() == 1) { + Object obj = s.getFirstElement(); + MModelFragments container = (MModelFragments) getMaster().getValue(); + int idx = container.getImports().indexOf(obj) + 1; + if (idx < container.getImports().size()) { + Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, obj, idx); + + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + tableElement.getViewer().setSelection(new StructuredSelection(obj)); + } + } + + } + } + } + }); + + tableElement.getButtonUp().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!tableElement.getViewer().getSelection().isEmpty()) { + IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection(); + if (s.size() == 1) { + Object obj = s.getFirstElement(); + MModelFragments container = (MModelFragments) getMaster().getValue(); + int idx = container.getImports().indexOf(obj) - 1; + if (idx >= 0) { + Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, obj, idx); + + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + tableElement.getViewer().setSelection(new StructuredSelection(obj)); + } + } + } + } + } + }); + List<FeatureClass> list = new ArrayList<FeatureClass>(); Util.addClasses(ApplicationPackageImpl.eINSTANCE, list); list.addAll(getEditor().getFeatureClasses(FragmentPackageImpl.Literals.MODEL_FRAGMENT, FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS)); diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/StringModelFragment.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/StringModelFragment.java index 7215a536..0ec25be9 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/StringModelFragment.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/StringModelFragment.java @@ -15,6 +15,7 @@ import java.util.List; import javax.inject.Inject; import org.eclipse.core.databinding.observable.list.IObservableList; import org.eclipse.core.databinding.property.list.IListProperty; +import org.eclipse.e4.core.contexts.IEclipseContext; 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; @@ -23,6 +24,7 @@ import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider; import org.eclipse.e4.tools.emf.ui.internal.common.component.ControlFactory.TextPasteHandler; import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.FeatureSelectionDialog; import org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.FindParentReferenceElementDialog; +import org.eclipse.e4.tools.emf.ui.internal.common.uistructure.ViewerElement; import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl; import org.eclipse.e4.ui.model.fragment.MModelFragment; import org.eclipse.e4.ui.model.fragment.MStringModelFragment; @@ -42,11 +44,9 @@ import org.eclipse.jface.databinding.swt.IWidgetValueProperty; import org.eclipse.jface.databinding.swt.WidgetProperties; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.viewers.ArrayContentProvider; -import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.swt.SWT; @@ -70,6 +70,9 @@ public class StringModelFragment extends AbstractComponentEditor { private IListProperty MODEL_FRAGMENT__ELEMENTS = EMFProperties.list(FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS); @Inject + IEclipseContext eclipseContext; + + @Inject public StringModelFragment() { super(); } @@ -188,94 +191,40 @@ public class StringModelFragment extends AbstractComponentEditor { // ------------------------------------------------------------ { - Label l = new Label(parent, SWT.NONE); - l.setText(Messages.StringModelFragment_Elements); - l.setLayoutData(new GridData(GridData.END, GridData.BEGINNING, false, false)); - final TableViewer viewer = new TableViewer(parent); - viewer.setContentProvider(new ObservableListContentProvider()); - viewer.setLabelProvider(new ComponentLabelProvider(getEditor(), Messages)); - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.heightHint = 300; - viewer.getControl().setLayoutData(gd); + final ViewerElement tableElement = ViewerElement.create(eclipseContext, parent, this); - IEMFListProperty prop = EMFProperties.list(FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS); - viewer.setInput(prop.observeDetail(getMaster())); + tableElement.getViewer().setContentProvider(new ObservableListContentProvider()); + tableElement.getViewer().setLabelProvider(new ComponentLabelProvider(getEditor(), Messages)); - Composite buttonComp = new Composite(parent, SWT.NONE); - buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false)); - GridLayout gl = new GridLayout(2, false); - gl.marginLeft = 0; - gl.marginRight = 0; - gl.marginWidth = 0; - gl.marginHeight = 0; - buttonComp.setLayout(gl); - - Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Up); - b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_up)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getDropDown().setContentProvider(new ArrayContentProvider()); + tableElement.getDropDown().setLabelProvider(new LabelProvider() { @Override - public void widgetSelected(SelectionEvent e) { - if (!viewer.getSelection().isEmpty()) { - IStructuredSelection s = (IStructuredSelection) viewer.getSelection(); - if (s.size() == 1) { - Object obj = s.getFirstElement(); - MModelFragment container = (MModelFragment) getMaster().getValue(); - int idx = container.getElements().indexOf(obj) - 1; - if (idx >= 0) { - Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS, obj, idx); - - if (cmd.canExecute()) { - getEditingDomain().getCommandStack().execute(cmd); - viewer.setSelection(new StructuredSelection(obj)); - } - } - - } - } + public String getText(Object element) { + FeatureClass eclass = (FeatureClass) element; + return eclass.label; } }); - b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Down); - b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_down)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getDropDown().setComparator(new ViewerComparator() { @Override - public void widgetSelected(SelectionEvent e) { - if (!viewer.getSelection().isEmpty()) { - IStructuredSelection s = (IStructuredSelection) viewer.getSelection(); - if (s.size() == 1) { - Object obj = s.getFirstElement(); - MModelFragment container = (MModelFragment) getMaster().getValue(); - int idx = container.getElements().indexOf(obj) + 1; - if (idx < container.getElements().size()) { - Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS, obj, idx); - - if (cmd.canExecute()) { - getEditingDomain().getCommandStack().execute(cmd); - viewer.setSelection(new StructuredSelection(obj)); - } - } - - } - } + public int compare(Viewer viewer, Object e1, Object e2) { + FeatureClass eClass1 = (FeatureClass) e1; + FeatureClass eClass2 = (FeatureClass) e2; + return eClass1.label.compareTo(eClass2.label); } }); - final ComboViewer childrenDropDown = new ComboViewer(buttonComp); - childrenDropDown.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); - childrenDropDown.setContentProvider(new ArrayContentProvider()); - childrenDropDown.setLabelProvider(new LabelProvider() { + tableElement.getDropDown().setContentProvider(new ArrayContentProvider()); + tableElement.getDropDown().setLabelProvider(new LabelProvider() { @Override public String getText(Object element) { FeatureClass eclass = (FeatureClass) element; return eclass.label; } }); - childrenDropDown.setComparator(new ViewerComparator() { + + tableElement.getDropDown().setComparator(new ViewerComparator() { @Override public int compare(Viewer viewer, Object e1, Object e2) { FeatureClass eClass1 = (FeatureClass) e1; @@ -284,21 +233,10 @@ public class StringModelFragment extends AbstractComponentEditor { } }); - List<FeatureClass> list = new ArrayList<FeatureClass>(); - Util.addClasses(ApplicationPackageImpl.eINSTANCE, list); - list.addAll(getEditor().getFeatureClasses(FragmentPackageImpl.Literals.MODEL_FRAGMENT, FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS)); - - childrenDropDown.setInput(list); - childrenDropDown.getCombo().select(0); - - b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setImage(createImage(ResourceProvider.IMG_Obj16_table_add)); - b.setText(Messages.ModelTooling_Common_AddEllipsis); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getButtonAdd().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - EClass eClass = ((FeatureClass) ((IStructuredSelection) childrenDropDown.getSelection()).getFirstElement()).eClass; + EClass eClass = ((FeatureClass) ((IStructuredSelection) tableElement.getDropDown().getSelection()).getFirstElement()).eClass; EObject eObject = EcoreUtil.create(eClass); setElementId(eObject); Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS, eObject); @@ -310,15 +248,11 @@ public class StringModelFragment extends AbstractComponentEditor { } }); - b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Remove); - b.setImage(createImage(ResourceProvider.IMG_Obj16_table_delete)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getButtonRemove().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - if (!viewer.getSelection().isEmpty()) { - List<?> elements = ((IStructuredSelection) viewer.getSelection()).toList(); + if (!tableElement.getViewer().getSelection().isEmpty()) { + List<?> elements = ((IStructuredSelection) tableElement.getViewer().getSelection()).toList(); Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS, elements); if (cmd.canExecute()) { @@ -327,6 +261,61 @@ public class StringModelFragment extends AbstractComponentEditor { } } }); + + tableElement.getButtonDown().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!tableElement.getViewer().getSelection().isEmpty()) { + IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection(); + if (s.size() == 1) { + Object obj = s.getFirstElement(); + MModelFragment container = (MModelFragment) getMaster().getValue(); + int idx = container.getElements().indexOf(obj) + 1; + if (idx < container.getElements().size()) { + Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS, obj, idx); + + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + tableElement.getViewer().setSelection(new StructuredSelection(obj)); + } + } + } + } + } + }); + + tableElement.getButtonUp().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!tableElement.getViewer().getSelection().isEmpty()) { + IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection(); + if (s.size() == 1) { + Object obj = s.getFirstElement(); + MModelFragment container = (MModelFragment) getMaster().getValue(); + int idx = container.getElements().indexOf(obj) - 1; + if (idx >= 0) { + Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS, obj, idx); + + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + tableElement.getViewer().setSelection(new StructuredSelection(obj)); + } + } + } + } + } + }); + + List<FeatureClass> list = new ArrayList<FeatureClass>(); + Util.addClasses(ApplicationPackageImpl.eINSTANCE, list); + list.addAll(getEditor().getFeatureClasses(FragmentPackageImpl.Literals.MODEL_FRAGMENT, FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS)); + + tableElement.getDropDown().setInput(list); + tableElement.getDropDown().getCombo().select(0); + + IEMFListProperty prop = EMFProperties.list(FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS); + tableElement.getViewer().setInput(prop.observeDetail(getMaster())); + } folder.setSelection(0); diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuEditor.java index 77ee666c..2f4fc4d4 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuEditor.java @@ -13,13 +13,15 @@ package org.eclipse.e4.tools.emf.ui.internal.common.component.virtual; 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; +import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor; import org.eclipse.e4.tools.emf.ui.internal.ResourceProvider; import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider; import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry; -import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl; +import org.eclipse.e4.tools.emf.ui.internal.common.uistructure.ViewerElement; import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl; import org.eclipse.e4.ui.model.application.ui.menu.MMenu; import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl; @@ -36,30 +38,29 @@ import org.eclipse.emf.edit.command.RemoveCommand; import org.eclipse.jface.action.Action; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.viewers.ArrayContentProvider; -import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; public class VMenuEditor extends AbstractComponentEditor { private Composite composite; private EMFDataBindingContext context; - private TableViewer viewer; + private StructuredViewer viewer; private List<Action> actions = new ArrayList<Action>(); private EStructuralFeature feature; + @Inject + IEclipseContext eclipseContext; + public static final String VIEW_MENU_TAG = "ViewMenu"; //$NON-NLS-1$ enum Types { @@ -134,27 +135,12 @@ public class VMenuEditor extends AbstractComponentEditor { parent = createScrollableContainer(folder); item.setControl(parent.getParent()); - viewer = new TableViewer(parent); - ObservableListContentProvider cp = new ObservableListContentProvider(); - viewer.setContentProvider(cp); - GridData gd = new GridData(GridData.FILL_BOTH); - viewer.getControl().setLayoutData(gd); + final ViewerElement tableElement = ViewerElement.create(eclipseContext, parent, this); + viewer = tableElement.getViewer(); + viewer.setContentProvider(new ObservableListContentProvider()); viewer.setLabelProvider(new ComponentLabelProvider(getEditor(), Messages)); - Composite buttonComp = new Composite(parent, SWT.NONE); - buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false)); - GridLayout gl = new GridLayout(2, false); - gl.marginLeft = 0; - gl.marginRight = 0; - gl.marginWidth = 0; - gl.marginHeight = 0; - buttonComp.setLayout(gl); - - Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Up); - b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_up)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getButtonUp().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (!viewer.getSelection().isEmpty()) { @@ -177,11 +163,7 @@ public class VMenuEditor extends AbstractComponentEditor { } }); - b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Down); - b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_down)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getButtonDown().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (!viewer.getSelection().isEmpty()) { @@ -192,7 +174,7 @@ public class VMenuEditor extends AbstractComponentEditor { List<?> list = (List<?>) container.eGet(feature); int idx = list.indexOf(obj) + 1; if (idx < list.size()) { - Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS, obj, idx); + Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), feature, obj, idx); if (cmd.canExecute()) { getEditingDomain().getCommandStack().execute(cmd); @@ -205,10 +187,8 @@ public class VMenuEditor extends AbstractComponentEditor { } }); - final ComboViewer childrenDropDown = new ComboViewer(buttonComp); - childrenDropDown.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); - childrenDropDown.setContentProvider(new ArrayContentProvider()); - childrenDropDown.setLabelProvider(new LabelProvider() { + tableElement.getDropDown().setContentProvider(new ArrayContentProvider()); + tableElement.getDropDown().setLabelProvider(new LabelProvider() { @Override public String getText(Object element) { if (element == Types.MENU) { @@ -219,17 +199,13 @@ public class VMenuEditor extends AbstractComponentEditor { return Messages.MenuEditor_Label_ViewMenu; } }); - childrenDropDown.setInput(Types.values()); - childrenDropDown.setSelection(new StructuredSelection(Types.MENU)); - - b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setImage(createImage(ResourceProvider.IMG_Obj16_table_add)); - b.setText(Messages.ModelTooling_Common_AddEllipsis); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getDropDown().setInput(Types.values()); + tableElement.getDropDown().setSelection(new StructuredSelection(Types.MENU)); + + tableElement.getButtonAdd().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - Types t = (Types) ((IStructuredSelection) childrenDropDown.getSelection()).getFirstElement(); + Types t = (Types) ((IStructuredSelection) tableElement.getDropDown().getSelection()).getFirstElement(); if (t == Types.MENU) { handleAdd(MenuPackageImpl.Literals.MENU); } else if (t == Types.POPUP_MENU) { @@ -240,11 +216,7 @@ public class VMenuEditor extends AbstractComponentEditor { } }); - b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Remove); - b.setImage(createImage(ResourceProvider.IMG_Obj16_table_delete)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getButtonRemove().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (!viewer.getSelection().isEmpty()) { diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VModelImportsEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VModelImportsEditor.java index 16863519..482c9e14 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VModelImportsEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VModelImportsEditor.java @@ -23,16 +23,28 @@ import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider; import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry; import org.eclipse.e4.tools.emf.ui.internal.common.uistructure.ViewerElement; import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl; +import org.eclipse.e4.ui.model.fragment.MModelFragments; import org.eclipse.e4.ui.model.fragment.impl.FragmentPackageImpl; +import org.eclipse.emf.common.command.Command; import org.eclipse.emf.databinding.EMFDataBindingContext; +import org.eclipse.emf.ecore.EClass; +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.MoveCommand; +import org.eclipse.emf.edit.command.RemoveCommand; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; @@ -92,7 +104,7 @@ public class VModelImportsEditor extends AbstractComponentEditor { parent = createScrollableContainer(folder); item.setControl(parent.getParent()); - tableElement = ViewerElement.create(eclipseContext, parent, FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, this); + tableElement = ViewerElement.create(eclipseContext, parent, this); tableElement.getViewer().setContentProvider(new ObservableListContentProvider()); tableElement.getViewer().setLabelProvider(new ComponentLabelProvider(getEditor(), Messages)); @@ -113,6 +125,80 @@ public class VModelImportsEditor extends AbstractComponentEditor { } }); + tableElement.getButtonAdd().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + EClass eClass = ((FeatureClass) ((IStructuredSelection) tableElement.getDropDown().getSelection()).getFirstElement()).eClass; + EObject eObject = EcoreUtil.create(eClass); + + Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, eObject); + + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + getEditor().setSelection(eObject); + } + } + }); + + tableElement.getButtonRemove().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!tableElement.getViewer().getSelection().isEmpty()) { + List<?> elements = ((IStructuredSelection) tableElement.getViewer().getSelection()).toList(); + + Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, elements); + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + } + } + } + }); + + tableElement.getButtonDown().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!tableElement.getViewer().getSelection().isEmpty()) { + IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection(); + if (s.size() == 1) { + Object obj = s.getFirstElement(); + MModelFragments container = (MModelFragments) getMaster().getValue(); + int idx = container.getImports().indexOf(obj) + 1; + if (idx < container.getImports().size()) { + Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, obj, idx); + + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + tableElement.getViewer().setSelection(new StructuredSelection(obj)); + } + } + + } + } + } + }); + + tableElement.getButtonUp().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!tableElement.getViewer().getSelection().isEmpty()) { + IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection(); + if (s.size() == 1) { + Object obj = s.getFirstElement(); + MModelFragments container = (MModelFragments) getMaster().getValue(); + int idx = container.getImports().indexOf(obj) - 1; + if (idx >= 0) { + Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, obj, idx); + + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); + tableElement.getViewer().setSelection(new StructuredSelection(obj)); + } + } + } + } + } + }); + List<FeatureClass> list = new ArrayList<FeatureClass>(); Util.addClasses(ApplicationPackageImpl.eINSTANCE, list); list.addAll(getEditor().getFeatureClasses(FragmentPackageImpl.Literals.MODEL_FRAGMENT, FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS)); diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowControlEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowControlEditor.java index cd6e97a2..de2ff8d4 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowControlEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowControlEditor.java @@ -16,11 +16,13 @@ import javax.annotation.PostConstruct; import javax.inject.Inject; import org.eclipse.core.databinding.observable.list.IObservableList; import org.eclipse.core.databinding.observable.value.WritableValue; +import org.eclipse.e4.core.contexts.IEclipseContext; 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; import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider; import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry; +import org.eclipse.e4.tools.emf.ui.internal.common.uistructure.ViewerElement; import org.eclipse.e4.ui.model.application.ui.MElementContainer; import org.eclipse.e4.ui.model.application.ui.MUIElement; import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl; @@ -36,28 +38,26 @@ import org.eclipse.emf.edit.command.RemoveCommand; import org.eclipse.jface.action.Action; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.viewers.ArrayContentProvider; -import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; public class VWindowControlEditor extends AbstractComponentEditor { private Composite composite; private EMFDataBindingContext context; - private TableViewer viewer; private List<Action> actions = new ArrayList<Action>(); + private ViewerElement tableElement; + + @Inject + IEclipseContext eclipseContext; @Inject public VWindowControlEditor() { @@ -136,7 +136,7 @@ public class VWindowControlEditor extends AbstractComponentEditor { composite = createForm(parent, context, getMaster()); } VirtualEntry<?> o = (VirtualEntry<?>) object; - viewer.setInput(o.getList()); + tableElement.getViewer().setInput(o.getList()); getMaster().setValue(o.getOriginalParent()); return composite; } @@ -151,62 +151,57 @@ public class VWindowControlEditor extends AbstractComponentEditor { item.setControl(parent.getParent()); { - viewer = new TableViewer(parent); - ObservableListContentProvider cp = new ObservableListContentProvider(); - viewer.setContentProvider(cp); - viewer.setLabelProvider(new ComponentLabelProvider(getEditor(), Messages)); - GridData gd = new GridData(GridData.FILL_BOTH); - viewer.getControl().setLayoutData(gd); - - Composite buttonComp = new Composite(parent, SWT.NONE); - buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false)); - GridLayout gl = new GridLayout(2, false); - gl.marginLeft = 0; - gl.marginRight = 0; - gl.marginWidth = 0; - gl.marginHeight = 0; - buttonComp.setLayout(gl); - - Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Up); - b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_up)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); - b.addSelectionListener(new SelectionAdapter() { + + tableElement = ViewerElement.create(eclipseContext, parent, this); + tableElement.getViewer().setContentProvider(new ObservableListContentProvider()); + tableElement.getViewer().setLabelProvider(new ComponentLabelProvider(getEditor(), Messages)); + + tableElement.getDropDown().setContentProvider(new ArrayContentProvider()); + + tableElement.getDropDown().setLabelProvider(new LabelProvider() { + @Override + public String getText(Object element) { + EClass eclass = (EClass) element; + return eclass.getName(); + } + }); + + tableElement.getButtonAdd().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - if (!viewer.getSelection().isEmpty()) { - IStructuredSelection s = (IStructuredSelection) viewer.getSelection(); - if (s.size() == 1) { - Object obj = s.getFirstElement(); - MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue(); - int idx = container.getChildren().indexOf(obj) - 1; - if (idx >= 0) { - if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj, getEditor().isLiveModel(), idx)) { - viewer.setSelection(new StructuredSelection(obj)); - } - } + if (!tableElement.getDropDown().getSelection().isEmpty()) { + EClass eClass = (EClass) ((IStructuredSelection) tableElement.getDropDown().getSelection()).getFirstElement(); + handleAdd(eClass); + } + } + }); + tableElement.getButtonRemove().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (!tableElement.getViewer().getSelection().isEmpty()) { + List<?> elements = ((IStructuredSelection) tableElement.getViewer().getSelection()).toList(); + + Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, elements); + if (cmd.canExecute()) { + getEditingDomain().getCommandStack().execute(cmd); } } } }); - b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Down); - b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_down)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getButtonDown().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - if (!viewer.getSelection().isEmpty()) { - IStructuredSelection s = (IStructuredSelection) viewer.getSelection(); + if (!tableElement.getViewer().getSelection().isEmpty()) { + IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection(); if (s.size() == 1) { Object obj = s.getFirstElement(); MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue(); int idx = container.getChildren().indexOf(obj) + 1; if (idx < container.getChildren().size()) { if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj, getEditor().isLiveModel(), idx)) { - viewer.setSelection(new StructuredSelection(obj)); + tableElement.getViewer().setSelection(new StructuredSelection(obj)); } } } @@ -214,50 +209,29 @@ public class VWindowControlEditor extends AbstractComponentEditor { } }); - final ComboViewer childrenDropDown = new ComboViewer(buttonComp); - childrenDropDown.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); - childrenDropDown.setContentProvider(new ArrayContentProvider()); - childrenDropDown.setLabelProvider(new LabelProvider() { - @Override - public String getText(Object element) { - EClass eclass = (EClass) element; - return eclass.getName(); - } - }); - childrenDropDown.setInput(new EClass[] { AdvancedPackageImpl.Literals.PERSPECTIVE_STACK, BasicPackageImpl.Literals.PART_SASH_CONTAINER, BasicPackageImpl.Literals.PART_STACK, BasicPackageImpl.Literals.PART, BasicPackageImpl.Literals.INPUT_PART, AdvancedPackageImpl.Literals.AREA }); - childrenDropDown.setSelection(new StructuredSelection(AdvancedPackageImpl.Literals.PERSPECTIVE_STACK)); - - b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_AddEllipsis); - b.setImage(createImage(ResourceProvider.IMG_Obj16_table_add)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false)); - b.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (!childrenDropDown.getSelection().isEmpty()) { - EClass eClass = (EClass) ((IStructuredSelection) childrenDropDown.getSelection()).getFirstElement(); - handleAdd(eClass); - } - } - }); - - b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Remove); - b.setImage(createImage(ResourceProvider.IMG_Obj16_table_delete)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getButtonUp().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - if (!viewer.getSelection().isEmpty()) { - List<?> elements = ((IStructuredSelection) viewer.getSelection()).toList(); + if (!tableElement.getViewer().getSelection().isEmpty()) { + IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection(); + if (s.size() == 1) { + Object obj = s.getFirstElement(); + MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue(); + int idx = container.getChildren().indexOf(obj) - 1; + if (idx >= 0) { + if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj, getEditor().isLiveModel(), idx)) { + tableElement.getViewer().setSelection(new StructuredSelection(obj)); + } + } - Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, elements); - if (cmd.canExecute()) { - getEditingDomain().getCommandStack().execute(cmd); } } } }); + + tableElement.getDropDown().setInput(new EClass[] { AdvancedPackageImpl.Literals.PERSPECTIVE_STACK, BasicPackageImpl.Literals.PART_SASH_CONTAINER, BasicPackageImpl.Literals.PART_STACK, BasicPackageImpl.Literals.PART, BasicPackageImpl.Literals.INPUT_PART, AdvancedPackageImpl.Literals.AREA }); + tableElement.getDropDown().setSelection(new StructuredSelection(AdvancedPackageImpl.Literals.PERSPECTIVE_STACK)); + } folder.setSelection(0); diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowSharedElementsEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowSharedElementsEditor.java index bc378373..0681befa 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowSharedElementsEditor.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowSharedElementsEditor.java @@ -7,6 +7,7 @@ * * Contributors: * Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation + * Wim Jongman <wim.jongman@remainsoftware.com> - bug 400804 ******************************************************************************/ package org.eclipse.e4.tools.emf.ui.internal.common.component.virtual; @@ -16,11 +17,12 @@ import javax.annotation.PostConstruct; import javax.inject.Inject; import org.eclipse.core.databinding.observable.list.IObservableList; import org.eclipse.core.databinding.observable.value.WritableValue; +import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor; import org.eclipse.e4.tools.emf.ui.internal.ResourceProvider; import org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider; import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry; -import org.eclipse.e4.ui.model.application.ui.MElementContainer; +import org.eclipse.e4.tools.emf.ui.internal.common.uistructure.ViewerElement; import org.eclipse.e4.ui.model.application.ui.advanced.impl.AdvancedPackageImpl; import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl; import org.eclipse.emf.common.command.Command; @@ -36,30 +38,29 @@ import org.eclipse.emf.edit.command.RemoveCommand; import org.eclipse.jface.action.Action; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.viewers.ArrayContentProvider; -import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; public class VWindowSharedElementsEditor extends AbstractComponentEditor { private Composite composite; private EMFDataBindingContext context; - private TableViewer viewer; + private StructuredViewer viewer; private List<Action> actions = new ArrayList<Action>(); @Inject + IEclipseContext eclipseContext; + + @Inject public VWindowSharedElementsEditor() { super(); } @@ -144,39 +145,25 @@ public class VWindowSharedElementsEditor extends AbstractComponentEditor { item.setControl(parent.getParent()); { - viewer = new TableViewer(parent); - ObservableListContentProvider cp = new ObservableListContentProvider(); - viewer.setContentProvider(cp); - viewer.setLabelProvider(new ComponentLabelProvider(getEditor(), Messages)); - GridData gd = new GridData(GridData.FILL_BOTH); - viewer.getControl().setLayoutData(gd); + final ViewerElement tableElement = ViewerElement.create(eclipseContext, parent, this); + viewer = tableElement.getViewer(); + viewer.setContentProvider(new ObservableListContentProvider()); + viewer.setLabelProvider(new ComponentLabelProvider(getEditor(), Messages)); IEMFEditListProperty prop = EMFEditProperties.list(getEditingDomain(), BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS); viewer.setInput(prop.observeDetail(getMaster())); - Composite buttonComp = new Composite(parent, SWT.NONE); - buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false)); - GridLayout gl = new GridLayout(2, false); - gl.marginLeft = 0; - gl.marginRight = 0; - gl.marginWidth = 0; - gl.marginHeight = 0; - buttonComp.setLayout(gl); - - Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Up); - b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_up)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getButtonUp().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { + if (!viewer.getSelection().isEmpty()) { IStructuredSelection s = (IStructuredSelection) viewer.getSelection(); if (s.size() == 1) { Object obj = s.getFirstElement(); - MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue(); - int idx = container.getChildren().indexOf(obj) - 1; + EObject container = (EObject) getMaster().getValue(); + int idx = ((List<?>) container.eGet(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS)).indexOf(obj) - 1; if (idx >= 0) { Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS, obj, idx); @@ -185,26 +172,22 @@ public class VWindowSharedElementsEditor extends AbstractComponentEditor { viewer.setSelection(new StructuredSelection(obj)); } } - } } } }); - b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Down); - b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_down)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getButtonDown().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (!viewer.getSelection().isEmpty()) { IStructuredSelection s = (IStructuredSelection) viewer.getSelection(); if (s.size() == 1) { Object obj = s.getFirstElement(); - MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue(); - int idx = container.getChildren().indexOf(obj) + 1; - if (idx < container.getChildren().size()) { + EObject container = (EObject) getMaster().getValue(); + List<?> list = (List<?>) container.eGet(BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS); + int idx = list.indexOf(obj) + 1; + if (idx < list.size()) { Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), BasicPackageImpl.Literals.WINDOW__SHARED_ELEMENTS, obj, idx); if (cmd.canExecute()) { @@ -212,43 +195,33 @@ public class VWindowSharedElementsEditor extends AbstractComponentEditor { viewer.setSelection(new StructuredSelection(obj)); } } - } } } }); - final ComboViewer childrenDropDown = new ComboViewer(buttonComp); - childrenDropDown.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); - childrenDropDown.setContentProvider(new ArrayContentProvider()); - childrenDropDown.setLabelProvider(new LabelProvider() { + tableElement.getDropDown().setContentProvider(new ArrayContentProvider()); + tableElement.getDropDown().setLabelProvider(new LabelProvider() { @Override public String getText(Object element) { EClass eclass = (EClass) element; return eclass.getName(); } }); - childrenDropDown.setInput(new EClass[] { BasicPackageImpl.Literals.PART_SASH_CONTAINER, BasicPackageImpl.Literals.PART, BasicPackageImpl.Literals.INPUT_PART, BasicPackageImpl.Literals.PART_STACK, AdvancedPackageImpl.Literals.AREA }); - childrenDropDown.setSelection(new StructuredSelection(BasicPackageImpl.Literals.PART)); + tableElement.getDropDown().setInput(new EClass[] { BasicPackageImpl.Literals.PART_SASH_CONTAINER, BasicPackageImpl.Literals.PART, BasicPackageImpl.Literals.INPUT_PART, BasicPackageImpl.Literals.PART_STACK, AdvancedPackageImpl.Literals.AREA }); + tableElement.getDropDown().setSelection(new StructuredSelection(BasicPackageImpl.Literals.PART)); - b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setImage(createImage(ResourceProvider.IMG_Obj16_table_add)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getButtonAdd().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - if (!childrenDropDown.getSelection().isEmpty()) { - EClass eClass = (EClass) ((IStructuredSelection) childrenDropDown.getSelection()).getFirstElement(); + if (!tableElement.getDropDown().getSelection().isEmpty()) { + EClass eClass = (EClass) ((IStructuredSelection) tableElement.getDropDown().getSelection()).getFirstElement(); handleAdd(eClass); } } }); - b = new Button(buttonComp, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Remove); - b.setImage(createImage(ResourceProvider.IMG_Obj16_table_delete)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1)); - b.addSelectionListener(new SelectionAdapter() { + tableElement.getButtonRemove().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (!viewer.getSelection().isEmpty()) { diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/uistructure/ViewerElement.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/uistructure/ViewerElement.java index 46f9c641..5b5a547f 100644 --- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/uistructure/ViewerElement.java +++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/uistructure/ViewerElement.java @@ -10,33 +10,18 @@ ******************************************************************************/ package org.eclipse.e4.tools.emf.ui.internal.common.uistructure; -import java.util.List; import javax.inject.Inject; import org.eclipse.e4.core.contexts.ContextInjectionFactory; import org.eclipse.e4.core.contexts.IEclipseContext; -import org.eclipse.e4.tools.emf.ui.common.IEditorFeature.FeatureClass; import org.eclipse.e4.tools.emf.ui.common.component.AbstractComponentEditor; import org.eclipse.e4.tools.emf.ui.internal.Messages; import org.eclipse.e4.tools.emf.ui.internal.ResourceProvider; import org.eclipse.e4.tools.services.Translation; -import org.eclipse.e4.ui.model.fragment.MModelFragments; -import org.eclipse.e4.ui.model.fragment.impl.FragmentPackageImpl; -import org.eclipse.emf.common.command.Command; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EReference; -import org.eclipse.emf.ecore.util.EcoreUtil; -import org.eclipse.emf.edit.command.AddCommand; -import org.eclipse.emf.edit.command.MoveCommand; -import org.eclipse.emf.edit.command.RemoveCommand; import org.eclipse.jface.viewers.ComboViewer; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; @@ -57,7 +42,12 @@ public class ViewerElement { private ComboViewer dropDown; private Button addButton; private Composite parent; - private EReference reference; + + private Button removeButton; + + private Button downButton; + + private Button upButton; /** * @param parent @@ -65,9 +55,8 @@ public class ViewerElement { * @param editor */ @Inject - public ViewerElement(@Translation Messages Messages, Composite parent, EReference reference, AbstractComponentEditor editor) { + public ViewerElement(@Translation Messages Messages, Composite parent, AbstractComponentEditor editor) { this.parent = parent; - this.reference = reference; this.editor = editor; this.Messages = Messages; createControl(); @@ -101,77 +90,61 @@ public class ViewerElement { gl.marginHeight = 0; buttonCompBot.setLayout(gl); - Button b = new Button(buttonCompBot, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Up); - b.setImage(editor.createImage(ResourceProvider.IMG_Obj16_arrow_up)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1)); - b.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (!viewer.getSelection().isEmpty()) { - IStructuredSelection s = (IStructuredSelection) viewer.getSelection(); - if (s.size() == 1) { - Object obj = s.getFirstElement(); - MModelFragments container = (MModelFragments) editor.getMaster().getValue(); - int idx = container.getImports().indexOf(obj) - 1; - if (idx >= 0) { - Command cmd = MoveCommand.create(editor.getEditingDomain(), editor.getMaster().getValue(), reference, obj, idx); - - if (cmd.canExecute()) { - editor.getEditingDomain().getCommandStack().execute(cmd); - viewer.setSelection(new StructuredSelection(obj)); - } - } - - } - } - } - }); - - b = new Button(buttonCompBot, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Down); - b.setImage(editor.createImage(ResourceProvider.IMG_Obj16_arrow_down)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1)); - b.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (!viewer.getSelection().isEmpty()) { - IStructuredSelection s = (IStructuredSelection) viewer.getSelection(); - if (s.size() == 1) { - Object obj = s.getFirstElement(); - MModelFragments container = (MModelFragments) editor.getMaster().getValue(); - int idx = container.getImports().indexOf(obj) + 1; - if (idx < container.getImports().size()) { - Command cmd = MoveCommand.create(editor.getEditingDomain(), editor.getMaster().getValue(), reference, obj, idx); - - if (cmd.canExecute()) { - editor.getEditingDomain().getCommandStack().execute(cmd); - viewer.setSelection(new StructuredSelection(obj)); - } - } - - } - } - } - }); - - b = new Button(buttonCompBot, SWT.PUSH | SWT.FLAT); - b.setText(Messages.ModelTooling_Common_Remove); - b.setImage(editor.createImage(ResourceProvider.IMG_Obj16_table_delete)); - b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1)); - b.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (!viewer.getSelection().isEmpty()) { - List<?> elements = ((IStructuredSelection) viewer.getSelection()).toList(); - - Command cmd = RemoveCommand.create(editor.getEditingDomain(), editor.getMaster().getValue(), reference, elements); - if (cmd.canExecute()) { - editor.getEditingDomain().getCommandStack().execute(cmd); - } - } - } - }); + upButton = new Button(buttonCompBot, SWT.PUSH | SWT.FLAT); + upButton.setText(Messages.ModelTooling_Common_Up); + upButton.setImage(editor.createImage(ResourceProvider.IMG_Obj16_arrow_up)); + upButton.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1)); + + downButton = new Button(buttonCompBot, SWT.PUSH | SWT.FLAT); + downButton.setText(Messages.ModelTooling_Common_Down); + downButton.setImage(editor.createImage(ResourceProvider.IMG_Obj16_arrow_down)); + downButton.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1)); + + removeButton = new Button(buttonCompBot, SWT.PUSH | SWT.FLAT); + removeButton.setText(Messages.ModelTooling_Common_Remove); + removeButton.setImage(editor.createImage(ResourceProvider.IMG_Obj16_table_delete)); + removeButton.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1)); + + } + + /** + * Returns the button that removes an element from the list. Use it to add + * your {@link SelectionListener} to it. + * + * @return + */ + public Button getButtonRemove() { + return removeButton; + } + + /** + * Returns the button that adds an element to the list. Use it to add your + * {@link SelectionListener} to it. + * + * @return + */ + public Button getButtonAdd() { + return addButton; + } + + /** + * Returns the button that moves an element down in the list. Use it to add + * your {@link SelectionListener} to it. + * + * @return + */ + public Button getButtonDown() { + return downButton; + } + + /** + * Returns the button that moves an element up in the list. Use it to add + * your {@link SelectionListener} to it. + * + * @return + */ + public Button getButtonUp() { + return upButton; } private void createTopButtons() { @@ -191,20 +164,6 @@ public class ViewerElement { addButton.setImage(editor.createImage(ResourceProvider.IMG_Obj16_table_add)); addButton.setText(Messages.ModelTooling_Common_AddEllipsis); addButton.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false)); - addButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - EClass eClass = ((FeatureClass) ((IStructuredSelection) dropDown.getSelection()).getFirstElement()).eClass; - EObject eObject = EcoreUtil.create(eClass); - - Command cmd = AddCommand.create(editor.getEditingDomain(), editor.getMaster().getValue(), reference, eObject); - - if (cmd.canExecute()) { - editor.getEditingDomain().getCommandStack().execute(cmd); - editor.getEditor().setSelection(eObject); - } - } - }); } @@ -222,11 +181,10 @@ public class ViewerElement { * @param editor * @return a new {@link ViewerElement} */ - public static ViewerElement create(IEclipseContext parentContext, Composite parent, EReference reference, AbstractComponentEditor editor) { + public static ViewerElement create(IEclipseContext parentContext, Composite parent, AbstractComponentEditor editor) { IEclipseContext mycontext = parentContext.createChild(); mycontext.set(Composite.class, parent); mycontext.set(AbstractComponentEditor.class, editor); - mycontext.set(EReference.class, FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS); return ContextInjectionFactory.make(ViewerElement.class, mycontext); } } |