Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWim Jongman2013-02-20 16:28:40 +0000
committerWim Jongman2013-02-20 16:28:40 +0000
commit723fc41604b6ae4804e554d6d791fcaec6b78a90 (patch)
tree392cb208a2cf6b8f8a4a77ccb2ad85b14501e63c
parent51f489d9ffc933a38e36b3cb762b1d738d8ef18c (diff)
downloadorg.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
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ModelFragmentsEditor.java78
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/StringModelFragment.java175
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VMenuEditor.java72
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VModelImportsEditor.java88
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowControlEditor.java142
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VWindowSharedElementsEditor.java85
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/uistructure/ViewerElement.java170
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);
}
}

Back to the top