Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Schindl2010-12-11 15:46:32 +0000
committerThomas Schindl2010-12-11 15:46:32 +0000
commit951a1e4c56b61c411887855f692a2329d84c6402 (patch)
tree6ee0677361e32b9cf66778177503d470a9780295
parentbee29b129179cfb9942d58734144133bcafa725c (diff)
downloadorg.eclipse.e4.tools-951a1e4c56b61c411887855f692a2329d84c6402.tar.gz
org.eclipse.e4.tools-951a1e4c56b61c411887855f692a2329d84c6402.tar.xz
org.eclipse.e4.tools-951a1e4c56b61c411887855f692a2329d84c6402.zip
Bug 332362 - [ModelTooling] Update model to use multiple root contextsv20101213-1100
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java8
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties9
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java3
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ApplicationEditor.java118
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VRootBindingContexts.java236
5 files changed, 292 insertions, 82 deletions
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java
index 58f47fc1..1c41e70b 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.java
@@ -13,6 +13,7 @@ package org.eclipse.e4.tools.emf.ui.internal;
import org.eclipse.osgi.util.NLS;
public class Messages extends NLS {
+
public static String ModelTooling_Common_Up;
public static String ModelTooling_Common_Down;
public static String ModelTooling_Common_AddEllipsis;
@@ -45,7 +46,7 @@ public class Messages extends NLS {
public static String ApplicationEditor_MenuContributions;
public static String ApplicationEditor_ToolBarContributions;
public static String ApplicationEditor_TrimContributions;
- public static String ApplicationEditor_RootContext;
+ public static String ApplicationEditor_RootContexts;
public static String ApplicationEditor_BindingContexts;
public static String ApplicationEditor_Categories;
@@ -509,6 +510,11 @@ public class Messages extends NLS {
public static String CommandToStringConverter_None;
+ public static String VRootBindingContexts_AddContext;
+ public static String VRootBindingContexts_TreeLabel;
+ public static String VRootBindingContexts_TreeLabelDescription;
+ public static String VRootBindingContexts_Contexts;
+
static {
NLS.initializeMessages(Messages.class.getName(), Messages.class);
}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties
index 0ce26469..26e7868f 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/Messages.properties
@@ -41,7 +41,7 @@ ApplicationEditor_Addons=Addons
ApplicationEditor_MenuContributions=Menu Contributions
ApplicationEditor_ToolBarContributions=Toolbar Contributions
ApplicationEditor_TrimContributions=Trim Contributions
-ApplicationEditor_RootContext=Root Context
+ApplicationEditor_RootContexts=Binding Contexts
ApplicationEditor_BindingContexts=Binding Contexts
ApplicationEditor_Categories=Command Categories
@@ -502,4 +502,9 @@ ExpressionIdDialog_ShellTitle=Find Expression Id
ExpressionIdDialog_DialogTitle=Find Expression Id
ExpressionIdDialog_DialogMessage=Find the expression id defined through the 'org.eclipse.core.expressions.definitions' extension point
ExpressionIdDialog_Id=Id
-CommandToStringConverter_None=<None> \ No newline at end of file
+CommandToStringConverter_None=<None>
+
+VRootBindingContexts_AddContext=Add Binding Context
+VRootBindingContexts_TreeLabel=Binding Context
+VRootBindingContexts_TreeLabelDescription=Binding Context Bla Bla Bla
+VRootBindingContexts_Contexts=Binding Contexts \ No newline at end of file
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
index 91103d16..efe9305e 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
@@ -104,6 +104,7 @@ import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VMenuElemen
import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VModelFragmentsEditor;
import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VModelImportsEditor;
import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VPartDescriptor;
+import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VRootBindingContexts;
import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VToolBarContributionsEditor;
import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VTrimContributionsEditor;
import org.eclipse.e4.tools.emf.ui.internal.common.component.virtual.VWindowControlEditor;
@@ -194,6 +195,7 @@ public class ModelEditor {
public static final String VIRTUAL_CATEGORIES = ModelEditor.class.getName() + ".VIRTUAL_CATEGORIES"; //$NON-NLS-1$
public static final String VIRTUAL_PARAMETERS = ModelEditor.class.getName() + ".VIRTUAL_PARAMETERS"; //$NON-NLS-1$
public static final String VIRTUAL_MENUELEMENTS = ModelEditor.class.getName() + ".VIRTUAL_MENUELEMENTS"; //$NON-NLS-1$
+ public static final String VIRTUAL_ROOT_CONTEXTS = ModelEditor.class.getName() + ".VIRTUAL_ROOT_CONTEXTS"; //$NON-NLS-1$
private Map<EClass, AbstractComponentEditor> editorMap = new HashMap<EClass, AbstractComponentEditor>();
private Map<String, AbstractComponentEditor> virtualEditors = new HashMap<String, AbstractComponentEditor>();
@@ -582,6 +584,7 @@ public class ModelEditor {
registerVirtualEditor(VIRTUAL_CATEGORIES, new VApplicationCategoriesEditor(modelProvider.getEditingDomain(), this));
registerVirtualEditor(VIRTUAL_PARAMETERS, new VItemParametersEditor(modelProvider.getEditingDomain(), this));
registerVirtualEditor(VIRTUAL_MENUELEMENTS, new VMenuElementsEditor(modelProvider.getEditingDomain(), this));
+ registerVirtualEditor(VIRTUAL_ROOT_CONTEXTS, new VRootBindingContexts(modelProvider.getEditingDomain(), this));
}
private void registerVirtualEditor(String id, AbstractComponentEditor editor) {
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ApplicationEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ApplicationEditor.java
index c6067d22..5b4730b7 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ApplicationEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/ApplicationEditor.java
@@ -14,39 +14,28 @@ import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.databinding.observable.list.IObservableList;
import org.eclipse.core.databinding.observable.list.WritableList;
-import org.eclipse.core.databinding.observable.value.IValueChangeListener;
-import org.eclipse.core.databinding.observable.value.ValueChangeEvent;
import org.eclipse.core.databinding.property.list.IListProperty;
-import org.eclipse.core.databinding.property.value.IValueProperty;
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.common.ModelEditor;
import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
-import org.eclipse.e4.ui.model.application.MApplication;
-import org.eclipse.e4.ui.model.application.commands.MBindingContext;
-import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
import org.eclipse.e4.ui.model.application.descriptor.basic.impl.BasicPackageImpl;
import org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl;
import org.eclipse.e4.ui.model.application.ui.MUIElement;
import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuPackageImpl;
-import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.databinding.EMFDataBindingContext;
import org.eclipse.emf.databinding.EMFProperties;
import org.eclipse.emf.databinding.FeaturePath;
import org.eclipse.emf.databinding.edit.EMFEditProperties;
-import org.eclipse.emf.edit.command.SetCommand;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.databinding.swt.IWidgetValueProperty;
import org.eclipse.jface.databinding.swt.WidgetProperties;
import org.eclipse.swt.SWT;
-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;
import org.eclipse.swt.widgets.Label;
@@ -58,7 +47,7 @@ public class ApplicationEditor extends AbstractComponentEditor {
private Image image;
private Image tbrImage;
private EMFDataBindingContext context;
- private Button createRemoveRootContext;
+ // private Button createRemoveRootContext;
private IListProperty HANDLER_CONTAINER__HANDLERS = EMFProperties.list(CommandsPackageImpl.Literals.HANDLER_CONTAINER__HANDLERS);
private IListProperty BINDING_CONTAINER__BINDINGS = EMFProperties.list(CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__BINDING_TABLES);
@@ -71,7 +60,7 @@ public class ApplicationEditor extends AbstractComponentEditor {
private IListProperty TRIM_CONTRIBUTIONS = EMFProperties.list(MenuPackageImpl.Literals.TRIM_CONTRIBUTIONS__TRIM_CONTRIBUTIONS);
private IListProperty APPLICATION__CATEGORIES = EMFProperties.list(ApplicationPackageImpl.Literals.APPLICATION__CATEGORIES);
- private IValueProperty BINDING_TABLE_CONTAINER__ROOT_CONTEXT = EMFProperties.value(CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT);
+ private IListProperty BINDING_TABLE_CONTAINER__ROOT_CONTEXT = EMFProperties.list(CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT);
public ApplicationEditor(EditingDomain editingDomain, ModelEditor editor) {
super(editingDomain, editor);
@@ -123,10 +112,6 @@ public class ApplicationEditor extends AbstractComponentEditor {
}
getMaster().setValue(object);
- if (createRemoveRootContext != null) {
- createRemoveRootContext.setSelection(((MApplication) object).getRootContext() != null);
- }
-
return composite;
}
@@ -154,26 +139,6 @@ public class ApplicationEditor extends AbstractComponentEditor {
context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties.value(getEditingDomain(), ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID).observeDetail(getMaster()));
}
- {
- Label l = new Label(parent, SWT.NONE);
- l.setText(Messages.ApplicationEditor_RootContext);
- l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-
- createRemoveRootContext = new Button(parent, SWT.CHECK);
- createRemoveRootContext.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- MApplication app = (MApplication) getMaster().getValue();
- if (app.getRootContext() == null) {
- addContext();
- } else {
- removeContext();
- }
- }
- });
- createRemoveRootContext.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 2, 1));
- }
-
ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_ToBeRendered, getMaster(), context, WidgetProperties.selection(), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED));
ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_Visible, getMaster(), context, WidgetProperties.selection(), EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__VISIBLE));
@@ -183,21 +148,6 @@ public class ApplicationEditor extends AbstractComponentEditor {
return parent;
}
- void removeContext() {
- Command cmd = SetCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT, null);
- if (cmd.canExecute()) {
- getEditingDomain().getCommandStack().execute(cmd);
- }
- }
-
- void addContext() {
- MBindingContext context = MCommandsFactory.INSTANCE.createBindingContext();
- Command cmd = SetCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT, context);
- if (cmd.canExecute()) {
- getEditingDomain().getCommandStack().execute(cmd);
- }
- }
-
@Override
public IObservableList getChildList(final Object element) {
final WritableList list = new WritableList();
@@ -210,7 +160,7 @@ public class ApplicationEditor extends AbstractComponentEditor {
});
- list.add(new VirtualEntry<Object>(ModelEditor.VIRTUAL_HANDLER, HANDLER_CONTAINER__HANDLERS, element, Messages.ApplicationEditor_Handlers) {
+ list.add(new VirtualEntry<Object>(ModelEditor.VIRTUAL_ROOT_CONTEXTS, BINDING_TABLE_CONTAINER__ROOT_CONTEXT, element, Messages.ApplicationEditor_RootContexts) {
@Override
protected boolean accepted(Object o) {
@@ -219,7 +169,7 @@ public class ApplicationEditor extends AbstractComponentEditor {
});
- list.add(new VirtualEntry<Object>(ModelEditor.VIRTUAL_PART_DESCRIPTORS, PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, element, Messages.ApplicationEditor_PartDescriptors) {
+ list.add(new VirtualEntry<Object>(ModelEditor.VIRTUAL_BINDING_TABLE, BINDING_CONTAINER__BINDINGS, element, Messages.ApplicationEditor_BindingTables) {
@Override
protected boolean accepted(Object o) {
@@ -228,7 +178,16 @@ public class ApplicationEditor extends AbstractComponentEditor {
});
- list.add(new VirtualEntry<Object>(ModelEditor.VIRTUAL_BINDING_TABLE, BINDING_CONTAINER__BINDINGS, element, Messages.ApplicationEditor_BindingTables) {
+ list.add(new VirtualEntry<Object>(ModelEditor.VIRTUAL_HANDLER, HANDLER_CONTAINER__HANDLERS, element, Messages.ApplicationEditor_Handlers) {
+
+ @Override
+ protected boolean accepted(Object o) {
+ return true;
+ }
+
+ });
+
+ list.add(new VirtualEntry<Object>(ModelEditor.VIRTUAL_PART_DESCRIPTORS, PART_DESCRIPTOR_CONTAINER__DESCRIPTORS, element, Messages.ApplicationEditor_PartDescriptors) {
@Override
protected boolean accepted(Object o) {
@@ -284,30 +243,31 @@ public class ApplicationEditor extends AbstractComponentEditor {
return true;
}
});
-
- MApplication application = (MApplication) element;
- if (application.getRootContext() != null) {
- list.add(0, application.getRootContext());
- }
-
- BINDING_TABLE_CONTAINER__ROOT_CONTEXT.observe(element).addValueChangeListener(new IValueChangeListener() {
-
- public void handleValueChange(ValueChangeEvent event) {
- if (event.diff.getOldValue() != null) {
- list.remove(event.diff.getOldValue());
- if (getMaster().getValue() == element) {
- createRemoveRootContext.setSelection(false);
- }
- }
-
- if (event.diff.getNewValue() != null) {
- list.add(0, event.diff.getNewValue());
- if (getMaster().getValue() == element) {
- createRemoveRootContext.setSelection(true);
- }
- }
- }
- });
+ //
+ // MApplication application = (MApplication) element;
+ // if (application.getRootContext() != null) {
+ // list.add(0, application.getRootContext());
+ // }
+
+ // BINDING_TABLE_CONTAINER__ROOT_CONTEXT.observe(element).addValueChangeListener(new
+ // IValueChangeListener() {
+ //
+ // public void handleValueChange(ValueChangeEvent event) {
+ // if (event.diff.getOldValue() != null) {
+ // list.remove(event.diff.getOldValue());
+ // if (getMaster().getValue() == element) {
+ // createRemoveRootContext.setSelection(false);
+ // }
+ // }
+ //
+ // if (event.diff.getNewValue() != null) {
+ // list.add(0, event.diff.getNewValue());
+ // if (getMaster().getValue() == element) {
+ // createRemoveRootContext.setSelection(true);
+ // }
+ // }
+ // }
+ // });
return list;
}
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VRootBindingContexts.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VRootBindingContexts.java
new file mode 100644
index 00000000..3bc2433b
--- /dev/null
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/virtual/VRootBindingContexts.java
@@ -0,0 +1,236 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BestSolution.at and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.tools.emf.ui.internal.common.component.virtual;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.observable.value.WritableValue;
+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.common.ComponentLabelProvider;
+import org.eclipse.e4.tools.emf.ui.internal.common.ModelEditor;
+import org.eclipse.e4.tools.emf.ui.internal.common.VirtualEntry;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.commands.MBindingContext;
+import org.eclipse.e4.ui.model.application.commands.MCommandsFactory;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsPackageImpl;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.databinding.EMFDataBindingContext;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.MoveCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+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.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;
+import org.eclipse.swt.widgets.Label;
+
+public class VRootBindingContexts extends AbstractComponentEditor {
+ private Composite composite;
+ private TableViewer viewer;
+ private EMFDataBindingContext context;
+
+ private List<Action> actions = new ArrayList<Action>();
+
+ public VRootBindingContexts(EditingDomain editingDomain, ModelEditor editor) {
+ super(editingDomain, editor);
+ actions.add(new Action(Messages.VRootBindingContexts_AddContext) {
+ @Override
+ public void run() {
+ handleAddContext();
+ }
+ });
+ }
+
+ @Override
+ public Image getImage(Object element, Display display) {
+ return null;
+ }
+
+ @Override
+ public String getLabel(Object element) {
+ return Messages.VRootBindingContexts_TreeLabel;
+ }
+
+ @Override
+ public String getDetailLabel(Object element) {
+ return null;
+ }
+
+ @Override
+ public String getDescription(Object element) {
+ return Messages.VRootBindingContexts_TreeLabelDescription;
+ }
+
+ @Override
+ public Composite getEditor(Composite parent, Object object) {
+ if (composite == null) {
+ context = new EMFDataBindingContext();
+ composite = createForm(parent, context, getMaster());
+ }
+ VirtualEntry<?> o = (VirtualEntry<?>) object;
+ viewer.setInput(o.getList());
+ getMaster().setValue(o.getOriginalParent());
+ return composite;
+ }
+
+ private Composite createForm(Composite parent, EMFDataBindingContext context, WritableValue master) {
+ parent = new Composite(parent, SWT.NONE);
+ GridLayout gl = new GridLayout(3, false);
+ gl.horizontalSpacing = 10;
+ parent.setLayout(gl);
+
+ {
+ Label l = new Label(parent, SWT.NONE);
+ l.setText(Messages.VRootBindingContexts_Contexts);
+ l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+
+ viewer = new TableViewer(parent);
+ ObservableListContentProvider cp = new ObservableListContentProvider();
+ viewer.setContentProvider(cp);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.heightHint = 300;
+ viewer.getControl().setLayoutData(gd);
+ viewer.setLabelProvider(new ComponentLabelProvider(getEditor()));
+
+ Composite buttonComp = new Composite(parent, SWT.NONE);
+ buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false));
+ gl = new GridLayout();
+ 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(getImage(b.getDisplay(), ARROW_UP));
+ b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+ 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();
+ MApplication container = (MApplication) getMaster().getValue();
+ int idx = container.getAddons().indexOf(obj) - 1;
+ if (idx >= 0) {
+ Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT, obj, idx);
+
+ if (cmd.canExecute()) {
+ getEditingDomain().getCommandStack().execute(cmd);
+ viewer.setSelection(new StructuredSelection(obj));
+ }
+ }
+
+ }
+ }
+ }
+ });
+
+ b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+ b.setText(Messages.ModelTooling_Common_Down);
+ b.setImage(getImage(b.getDisplay(), ARROW_DOWN));
+ b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+ 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();
+ MApplication container = (MApplication) getMaster().getValue();
+ int idx = container.getAddons().indexOf(obj) + 1;
+ if (idx < container.getAddons().size()) {
+ Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT, obj, idx);
+
+ if (cmd.canExecute()) {
+ getEditingDomain().getCommandStack().execute(cmd);
+ viewer.setSelection(new StructuredSelection(obj));
+ }
+ }
+
+ }
+ }
+ }
+ });
+
+ b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+ b.setText(Messages.ModelTooling_Common_AddEllipsis);
+ b.setImage(getImage(b.getDisplay(), TABLE_ADD_IMAGE));
+ b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+ b.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ handleAddContext();
+ }
+ });
+
+ b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
+ b.setText(Messages.ModelTooling_Common_Remove);
+ b.setImage(getImage(b.getDisplay(), TABLE_DELETE_IMAGE));
+ b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
+ b.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (!viewer.getSelection().isEmpty()) {
+ handleRemoveContexts(((IStructuredSelection) viewer.getSelection()).toList());
+ }
+ }
+ });
+ }
+
+ return parent;
+ }
+
+ private void handleAddContext() {
+ MBindingContext context = MCommandsFactory.INSTANCE.createBindingContext();
+ setElementId(context);
+
+ Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT, context);
+
+ if (cmd.canExecute()) {
+ getEditingDomain().getCommandStack().execute(cmd);
+ }
+ }
+
+ private void handleRemoveContexts(List<?> contexts) {
+ Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(), CommandsPackageImpl.Literals.BINDING_TABLE_CONTAINER__ROOT_CONTEXT, contexts);
+ if (cmd.canExecute()) {
+ getEditingDomain().getCommandStack().execute(cmd);
+ }
+ }
+
+ @Override
+ public IObservableList getChildList(Object element) {
+ return null;
+ }
+
+ @Override
+ public List<Action> getActions(Object element) {
+ ArrayList<Action> l = new ArrayList<Action>(super.getActions(element));
+ l.addAll(actions);
+ return l;
+ }
+}

Back to the top