Bug 305793 - tables for keybindings
Bug 305796 - model reconciler tests need rework
Bug 305797 - Need to re-act to keybinding model changes
diff --git a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/EBindingService.java b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/EBindingService.java
index 332fd54..333b376 100644
--- a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/EBindingService.java
+++ b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/EBindingService.java
@@ -9,12 +9,8 @@
Binding createBinding(TriggerSequence sequence, ParameterizedCommand command, String schemeId,
String contextId);
- Binding activateBinding(TriggerSequence sequence, ParameterizedCommand command);
-
void activateBinding(Binding binding);
- Binding deactivateBinding(TriggerSequence sequence, ParameterizedCommand command);
-
void deactivateBinding(Binding binding);
TriggerSequence createSequence(String sequence);
diff --git a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingServiceImpl.java b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingServiceImpl.java
index 061197e..1059831 100644
--- a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingServiceImpl.java
+++ b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingServiceImpl.java
@@ -13,104 +13,26 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
+import java.util.Set;
import javax.inject.Inject;
+import javax.inject.Named;
import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.commands.contexts.Context;
+import org.eclipse.core.commands.contexts.ContextManager;
+import org.eclipse.e4.core.services.annotations.Optional;
import org.eclipse.e4.core.services.context.IEclipseContext;
import org.eclipse.e4.ui.bindings.EBindingService;
import org.eclipse.jface.bindings.Binding;
-import org.eclipse.jface.bindings.Trigger;
import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.bindings.keys.IKeyLookup;
import org.eclipse.jface.bindings.keys.KeyBinding;
-import org.eclipse.jface.bindings.keys.KeyLookupFactory;
import org.eclipse.jface.bindings.keys.KeySequence;
-import org.eclipse.jface.bindings.keys.KeyStroke;
import org.eclipse.jface.bindings.keys.ParseException;
/**
*
*/
public class BindingServiceImpl implements EBindingService {
- static HashMap<Binding, String[]> prefixCache = new HashMap<Binding, String[]>();
-
- static String[] getPrefixes(Binding b) {
- String[] prefixes = prefixCache.get(b);
- if (prefixes == null) {
- TriggerSequence[] prefs = b.getTriggerSequence().getPrefixes();
- prefixes = new String[prefs.length - 1];
- prefixCache.put(b, prefixes);
- for (int i = 1; i < prefs.length; i++) {
- prefixes[i - 1] = B_SEQ + prefs[i];
- }
- }
- return prefixes;
- }
-
- static String getBindingId(Binding b) {
- return B_ID + b.getTriggerSequence().format();
- }
-
- static String getCommandId(Binding b) {
- return P_ID + b.getParameterizedCommand().serialize();
- }
-
- static final Comparator<Binding> BEST_SEQUENCE = new Comparator<Binding>() {
- public int compare(Binding o1, Binding o2) {
- /*
- * Check to see which has the least number of triggers in the trigger sequence.
- */
- final Trigger[] bestTriggers = o1.getTriggerSequence().getTriggers();
- final Trigger[] currentTriggers = o2.getTriggerSequence().getTriggers();
- int compareTo = bestTriggers.length - currentTriggers.length;
- if (compareTo != 0) {
- return compareTo;
- }
-
- /*
- * Compare the number of keys pressed in each trigger sequence. Some types of keys count
- * less than others (i.e., some types of modifiers keys are less likely to be chosen).
- */
- compareTo = countStrokes(bestTriggers) - countStrokes(currentTriggers);
- if (compareTo != 0) {
- return compareTo;
- }
-
- // If this is still a tie, then just chose the shortest text.
- return o1.getTriggerSequence().format().length()
- - o2.getTriggerSequence().format().length();
- }
-
- private final int countStrokes(final Trigger[] triggers) {
- int strokeCount = triggers.length;
- for (int i = 0; i < triggers.length; i++) {
- final Trigger trigger = triggers[i];
- if (trigger instanceof KeyStroke) {
- final KeyStroke keyStroke = (KeyStroke) trigger;
- final int modifierKeys = keyStroke.getModifierKeys();
- final IKeyLookup lookup = KeyLookupFactory.getDefault();
- if ((modifierKeys & lookup.getAlt()) != 0) {
- strokeCount += 8;
- }
- if ((modifierKeys & lookup.getCtrl()) != 0) {
- strokeCount += 2;
- }
- if ((modifierKeys & lookup.getShift()) != 0) {
- strokeCount += 4;
- }
- if ((modifierKeys & lookup.getCommand()) != 0) {
- strokeCount += 2;
- }
- } else {
- strokeCount += 99;
- }
- }
-
- return strokeCount;
- }
- };
+ static final String ACTIVE_CONTEXTS = "activeContexts"; //$NON-NLS-1$
static final String LOOKUP_BINDING = "binding"; //$NON-NLS-1$
static final String LOOKUP_CMD = "cmd"; //$NON-NLS-1$
@@ -123,8 +45,17 @@
static final String B_SEQ = "bindSeq::"; //$NON-NLS-1$
static final String P_ID = "parmCmd::"; //$NON-NLS-1$
+ @Inject
private IEclipseContext context;
+ @Inject
+ private BindingTableManager manager;
+
+ @Inject
+ private ContextManager contextManager;
+
+ private ContextSet contextSet = ContextSet.EMPTY;
+
/*
* (non-Javadoc)
*
@@ -138,24 +69,6 @@
null, Binding.SYSTEM);
}
- private Binding createDefaultBinding(TriggerSequence sequence, ParameterizedCommand command) {
- return createBinding(sequence, command, "org.eclipse.ui.defaultAcceleratorConfiguration", //$NON-NLS-1$
- "org.eclipse.ui.context.window"); //$NON-NLS-1$
- }
-
- /*
- * (non-Javadoc)
- *
- * @seeorg.eclipse.e4.ui.bindings.EBindingService#activateBinding(org.eclipse.e4.ui.bindings.
- * TriggerSequence, org.eclipse.core.commands.ParameterizedCommand)
- */
- public Binding activateBinding(TriggerSequence sequence, ParameterizedCommand command) {
- Binding binding = createDefaultBinding(sequence, command);
-
- activateBinding(binding);
- return binding;
- }
-
/*
* (non-Javadoc)
*
@@ -164,50 +77,12 @@
* )
*/
public void activateBinding(Binding binding) {
- context.set(getBindingId(binding), binding);
- // add mapping from command to keys
- addLocalArray(getCommandId(binding), binding);
-
- // deal with partial bindings
- String[] prefixes = getPrefixes(binding);
- for (int i = 0; i < prefixes.length; i++) {
- addLocalArray(prefixes[i], binding);
+ String contextId = binding.getContextId();
+ BindingTable table = manager.getTable(contextId);
+ if (table == null) {
+ System.err.println("No binding table for " + contextId); //$NON-NLS-1$
}
- }
-
- private void addLocalArray(String id, Binding binding) {
- ArrayList<Binding> bindings = new ArrayList<Binding>(3);
- ArrayList<Binding> tmp = (ArrayList<Binding>) context.getLocal(id);
- if (tmp != null) {
- bindings.addAll(tmp);
- }
- bindings.add(binding);
- Collections.sort(bindings, BEST_SEQUENCE);
- context.set(id, bindings);
- }
-
- private void removeLocalArray(String id, Binding binding) {
- ArrayList<Binding> tmp = (ArrayList<Binding>) context.getLocal(id);
- if (tmp.size() < 2) {
- context.remove(id);
- } else {
- tmp.remove(binding);
- context.set(id, new ArrayList<Binding>(tmp));
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @seeorg.eclipse.e4.ui.bindings.EBindingService#deactivateBinding(org.eclipse.e4.ui.bindings.
- * TriggerSequence, org.eclipse.core.commands.ParameterizedCommand)
- */
- public Binding deactivateBinding(TriggerSequence sequence, ParameterizedCommand command) {
- Binding binding = createDefaultBinding(sequence, command);
- Binding oldBinding = (Binding) context.get(getBindingId(binding));
- deactivateBinding(binding);
-
- return oldBinding;
+ table.addBinding(binding);
}
/*
@@ -218,16 +93,12 @@
* )
*/
public void deactivateBinding(Binding binding) {
- context.remove(getBindingId(binding));
-
- // remove the command to trigger bindings
- removeLocalArray(getCommandId(binding), binding);
-
- // deal with removing the partial binding
- String[] prefixes = getPrefixes(binding);
- for (int i = 0; i < prefixes.length; i++) {
- removeLocalArray(prefixes[i], binding);
+ String contextId = binding.getContextId();
+ BindingTable table = manager.getTable(contextId);
+ if (table == null) {
+ System.err.println("No binding table for " + contextId); //$NON-NLS-1$
}
+ table.removeBinding(binding);
}
/*
@@ -261,7 +132,7 @@
* TriggerSequence)
*/
public Binding getPerfectMatch(TriggerSequence trigger) {
- return (Binding) context.get(BINDING_LOOKUP, lookupBinding(trigger.format()));
+ return manager.getPerfectMatch(contextSet, trigger);
}
/*
@@ -271,7 +142,7 @@
* TriggerSequence)
*/
public boolean isPartialMatch(TriggerSequence keySequence) {
- return context.get(BINDING_PREFIX_LOOKUP, lookupSequence(keySequence.format())) != null;
+ return manager.isPartialMatch(contextSet, keySequence);
}
/*
@@ -281,13 +152,8 @@
* ParameterizedCommand)
*/
public TriggerSequence getBestSequenceFor(ParameterizedCommand command) {
- String cmdString = command.serialize();
- ArrayList<Binding> tmp = (ArrayList<Binding>) context.get(CMD_LOOKUP,
- lookupCommand(cmdString));
- if (tmp != null && !tmp.isEmpty()) {
- return tmp.get(0).getTriggerSequence();
- }
- return null;
+ Binding binding = manager.getBestSequenceFor(contextSet, command);
+ return binding == null ? null : binding.getTriggerSequence();
}
/*
@@ -297,8 +163,12 @@
* ParameterizedCommand)
*/
public Collection<TriggerSequence> getSequencesFor(ParameterizedCommand command) {
- String cmdString = command.serialize();
- return (Collection<TriggerSequence>) context.get(CMD_SEQ_LOOKUP, lookupCommand(cmdString));
+ Collection<Binding> bindings = manager.getSequencesFor(contextSet, command);
+ ArrayList<TriggerSequence> sequences = new ArrayList<TriggerSequence>(bindings.size());
+ for (Binding binding : bindings) {
+ sequences.add(binding.getTriggerSequence());
+ }
+ return sequences;
}
/*
@@ -318,16 +188,7 @@
* TriggerSequence)
*/
public Collection<Binding> getPartialMatches(TriggerSequence sequence) {
- return (Collection<Binding>) context.get(LOOKUP_PARTIAL_MATCH, lookupSequence(sequence
- .format()));
- }
-
- /**
- * @param c
- */
- @Inject
- public void setContext(IEclipseContext c) {
- context = c;
+ return manager.getPartialMatches(contextSet, sequence);
}
/**
@@ -337,15 +198,16 @@
return context;
}
- private Object[] lookupBinding(String bindingId) {
- return new Object[] { B_ID + bindingId };
- }
-
- private Object[] lookupCommand(String cmdString) {
- return new Object[] { P_ID + cmdString };
- }
-
- private Object[] lookupSequence(String sequence) {
- return new Object[] { B_SEQ + sequence };
+ @Inject
+ public void setContextIds(@Named(ACTIVE_CONTEXTS) @Optional Set<String> set) {
+ if (set == null || set.isEmpty() || contextManager == null) {
+ contextSet = ContextSet.EMPTY;
+ return;
+ }
+ ArrayList<Context> contexts = new ArrayList<Context>();
+ for (String id : set) {
+ contexts.add(contextManager.getContext(id));
+ }
+ contextSet = manager.createContextSet(contexts);
}
}
diff --git a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingTable.java b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingTable.java
index ec57921..db071c1 100644
--- a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingTable.java
+++ b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingTable.java
@@ -134,6 +134,23 @@
}
}
+ public void removeBinding(Binding binding) {
+ if (!getId().equals(binding.getContextId())) {
+ throw new IllegalArgumentException("Binding context " + binding.getContextId() //$NON-NLS-1$
+ + " does not match " + getId()); //$NON-NLS-1$
+ }
+
+ bindings.remove(binding);
+ bindingsByTrigger.remove(binding.getTriggerSequence());
+ ArrayList<Binding> sequences = bindingsByCommand.get(binding.getParameterizedCommand());
+ sequences.remove(binding);
+ TriggerSequence[] prefs = binding.getTriggerSequence().getPrefixes();
+ for (int i = 1; i < prefs.length; i++) {
+ ArrayList<Binding> bindings = bindingsByPrefix.get(prefs[i]);
+ bindings.remove(binding);
+ }
+ }
+
public Binding getPerfectMatch(TriggerSequence trigger) {
return bindingsByTrigger.get(trigger);
}
@@ -158,4 +175,5 @@
public boolean isPartialMatch(TriggerSequence seq) {
return bindingsByPrefix.get(seq) != null;
}
+
}
diff --git a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingTableManager.java b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingTableManager.java
index f1a580d..ddc1d23 100644
--- a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingTableManager.java
+++ b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/BindingTableManager.java
@@ -51,13 +51,13 @@
return (BindingTable) eclipseContext.get(id);
}
- public ContextSet createContextSet(List<Context> contexts) {
+ public ContextSet createContextSet(Collection<Context> contexts) {
return new ContextSet(contexts);
}
- public Binding getPerfectMatch(ContextSet windowSet, TriggerSequence triggerSequence) {
+ public Binding getPerfectMatch(ContextSet contextSet, TriggerSequence triggerSequence) {
Binding result = null;
- List<Context> contexts = windowSet.getContexts();
+ List<Context> contexts = contextSet.getContexts();
ListIterator<Context> it = contexts.listIterator(contexts.size());
while (it.hasPrevious() && result == null) {
Context c = it.previous();
diff --git a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/ContextSet.java b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/ContextSet.java
index e722662..0613e75 100644
--- a/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/ContextSet.java
+++ b/bundles/org.eclipse.e4.ui.bindings/src/org/eclipse/e4/ui/bindings/internal/ContextSet.java
@@ -12,6 +12,7 @@
package org.eclipse.e4.ui.bindings.internal;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -20,6 +21,8 @@
import org.eclipse.core.commands.contexts.ContextManager;
public class ContextSet {
+ public static ContextSet EMPTY = new ContextSet(Collections.EMPTY_LIST);
+
public static class CComp implements Comparator<Context> {
private ContextManager manager;
@@ -68,7 +71,7 @@
private List<Context> contexts;
- public ContextSet(List<Context> c) {
+ public ContextSet(Collection<Context> c) {
contexts = new ArrayList<Context>(c);
Collections.sort(contexts, CONTEXT_COMP);
}
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/plugin.properties b/bundles/org.eclipse.e4.ui.model.workbench.edit/plugin.properties
index 1eec88c..d10265e 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench.edit/plugin.properties
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/plugin.properties
@@ -159,3 +159,14 @@
_UI_ModelComponent_processor_feature = Processor
_UI_InputPart_type = Input Part
_UI_Part_closeable_feature = Closeable
+_UI_BindingContext_type = Binding Context
+_UI_BindingTable_type = Binding Table
+_UI_BindingContainer_bindingTables_feature = Binding Tables
+_UI_BindingContainer_rootContext_feature = Root Context
+_UI_BindingContext_name_feature = Name
+_UI_BindingContext_description_feature = Description
+_UI_BindingContext_children_feature = Children
+_UI_BindingTable_bindingContextId_feature = Binding Context Id
+_UI_BindingTable_bindings_feature = Bindings
+_UI_Bindings_type = Bindings
+_UI_Bindings_bindingContexts_feature = Binding Contexts
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java
index 9a1e279..9b582b8 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProvider.java
@@ -70,6 +70,7 @@
addContextPropertyDescriptor(object);
addVariablesPropertyDescriptor(object);
+ addBindingContextsPropertyDescriptor(object);
}
return itemPropertyDescriptors;
}
@@ -119,6 +120,28 @@
}
/**
+ * This adds a property descriptor for the Binding Contexts feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBindingContextsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Bindings_bindingContexts_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Bindings_bindingContexts_feature", "_UI_Bindings_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MApplicationPackage.Literals.BINDINGS__BINDING_CONTEXTS,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
* This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
* {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
* {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
@@ -132,7 +155,8 @@
super.getChildrenFeatures(object);
childrenFeatures.add(MApplicationPackage.Literals.CONTEXT__PROPERTIES);
childrenFeatures.add(MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS);
- childrenFeatures.add(MApplicationPackage.Literals.BINDING_CONTAINER__BINDINGS);
+ childrenFeatures.add(MApplicationPackage.Literals.BINDING_CONTAINER__BINDING_TABLES);
+ childrenFeatures.add(MApplicationPackage.Literals.BINDING_CONTAINER__ROOT_CONTEXT);
childrenFeatures.add(MApplicationPackage.Literals.PART_DESCRIPTOR_CONTAINER__DESCRIPTORS);
childrenFeatures.add(MApplicationPackage.Literals.APPLICATION__COMMANDS);
}
@@ -191,11 +215,13 @@
switch (notification.getFeatureID(MApplication.class)) {
case MApplicationPackage.APPLICATION__CONTEXT:
case MApplicationPackage.APPLICATION__VARIABLES:
+ case MApplicationPackage.APPLICATION__BINDING_CONTEXTS:
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
return;
case MApplicationPackage.APPLICATION__PROPERTIES:
case MApplicationPackage.APPLICATION__HANDLERS:
- case MApplicationPackage.APPLICATION__BINDINGS:
+ case MApplicationPackage.APPLICATION__BINDING_TABLES:
+ case MApplicationPackage.APPLICATION__ROOT_CONTEXT:
case MApplicationPackage.APPLICATION__DESCRIPTORS:
case MApplicationPackage.APPLICATION__COMMANDS:
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
@@ -227,8 +253,13 @@
newChildDescriptors.add
(createChildParameter
- (MApplicationPackage.Literals.BINDING_CONTAINER__BINDINGS,
- MApplicationFactory.eINSTANCE.createKeyBinding()));
+ (MApplicationPackage.Literals.BINDING_CONTAINER__BINDING_TABLES,
+ MApplicationFactory.eINSTANCE.createBindingTable()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (MApplicationPackage.Literals.BINDING_CONTAINER__ROOT_CONTEXT,
+ MApplicationFactory.eINSTANCE.createBindingContext()));
newChildDescriptors.add
(createChildParameter
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProviderAdapterFactory.java b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProviderAdapterFactory.java
index 3def8ac..260a264 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProviderAdapterFactory.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ApplicationItemProviderAdapterFactory.java
@@ -494,6 +494,52 @@
}
/**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.MBindingContext} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BindingContextItemProvider bindingContextItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.MBindingContext}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createBindingContextAdapter() {
+ if (bindingContextItemProvider == null) {
+ bindingContextItemProvider = new BindingContextItemProvider(this);
+ }
+
+ return bindingContextItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.MBindingTable} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BindingTableItemProvider bindingTableItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.e4.ui.model.application.MBindingTable}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createBindingTableAdapter() {
+ if (bindingTableItemProvider == null) {
+ bindingTableItemProvider = new BindingTableItemProvider(this);
+ }
+
+ return bindingTableItemProvider;
+ }
+
+ /**
* This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.MCommand} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -909,6 +955,8 @@
if (windowItemProvider != null) windowItemProvider.dispose();
if (modelComponentsItemProvider != null) modelComponentsItemProvider.dispose();
if (modelComponentItemProvider != null) modelComponentItemProvider.dispose();
+ if (bindingContextItemProvider != null) bindingContextItemProvider.dispose();
+ if (bindingTableItemProvider != null) bindingTableItemProvider.dispose();
if (commandItemProvider != null) commandItemProvider.dispose();
if (commandParameterItemProvider != null) commandParameterItemProvider.dispose();
if (handlerItemProvider != null) handlerItemProvider.dispose();
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/BindingContextItemProvider.java b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/BindingContextItemProvider.java
new file mode 100644
index 0000000..db37040
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/BindingContextItemProvider.java
@@ -0,0 +1,216 @@
+/**
+ * Copyright (c) 2008 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+import org.eclipse.e4.ui.model.application.MApplicationPackage;
+import org.eclipse.e4.ui.model.application.MBindingContext;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.MBindingContext} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BindingContextItemProvider
+ extends ApplicationElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BindingContextItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNamePropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_BindingContext_name_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_BindingContext_name_feature", "_UI_BindingContext_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MApplicationPackage.Literals.BINDING_CONTEXT__NAME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_BindingContext_description_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_BindingContext_description_feature", "_UI_BindingContext_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MApplicationPackage.Literals.BINDING_CONTEXT__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(MApplicationPackage.Literals.BINDING_CONTEXT__CHILDREN);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns BindingContext.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/BindingContext")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MBindingContext)object).getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_BindingContext_type") : //$NON-NLS-1$
+ getString("_UI_BindingContext_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MBindingContext.class)) {
+ case MApplicationPackage.BINDING_CONTEXT__NAME:
+ case MApplicationPackage.BINDING_CONTEXT__DESCRIPTION:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case MApplicationPackage.BINDING_CONTEXT__CHILDREN:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (MApplicationPackage.Literals.BINDING_CONTEXT__CHILDREN,
+ MApplicationFactory.eINSTANCE.createBindingContext()));
+ }
+
+}
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/BindingTableItemProvider.java b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/BindingTableItemProvider.java
new file mode 100644
index 0000000..9cf1080
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/BindingTableItemProvider.java
@@ -0,0 +1,192 @@
+/**
+ * Copyright (c) 2008 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
+import org.eclipse.e4.ui.model.application.MApplicationPackage;
+import org.eclipse.e4.ui.model.application.MBindingTable;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.e4.ui.model.application.MBindingTable} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BindingTableItemProvider
+ extends ApplicationElementItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BindingTableItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addBindingContextIdPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Binding Context Id feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBindingContextIdPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_BindingTable_bindingContextId_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_BindingTable_bindingContextId_feature", "_UI_BindingTable_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MApplicationPackage.Literals.BINDING_TABLE__BINDING_CONTEXT_ID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(MApplicationPackage.Literals.BINDING_TABLE__BINDINGS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns BindingTable.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/BindingTable")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((MBindingTable)object).getId();
+ return label == null || label.length() == 0 ?
+ getString("_UI_BindingTable_type") : //$NON-NLS-1$
+ getString("_UI_BindingTable_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(MBindingTable.class)) {
+ case MApplicationPackage.BINDING_TABLE__BINDING_CONTEXT_ID:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case MApplicationPackage.BINDING_TABLE__BINDINGS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (MApplicationPackage.Literals.BINDING_TABLE__BINDINGS,
+ MApplicationFactory.eINSTANCE.createKeyBinding()));
+ }
+
+}
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ModelComponentItemProvider.java b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ModelComponentItemProvider.java
index 024eac0..9bcd45a 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ModelComponentItemProvider.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/ModelComponentItemProvider.java
@@ -200,7 +200,8 @@
if (childrenFeatures == null) {
super.getChildrenFeatures(object);
childrenFeatures.add(MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS);
- childrenFeatures.add(MApplicationPackage.Literals.BINDING_CONTAINER__BINDINGS);
+ childrenFeatures.add(MApplicationPackage.Literals.BINDING_CONTAINER__BINDING_TABLES);
+ childrenFeatures.add(MApplicationPackage.Literals.BINDING_CONTAINER__ROOT_CONTEXT);
childrenFeatures.add(MApplicationPackage.Literals.MODEL_COMPONENT__CHILDREN);
childrenFeatures.add(MApplicationPackage.Literals.MODEL_COMPONENT__COMMANDS);
}
@@ -265,7 +266,8 @@
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
return;
case MApplicationPackage.MODEL_COMPONENT__HANDLERS:
- case MApplicationPackage.MODEL_COMPONENT__BINDINGS:
+ case MApplicationPackage.MODEL_COMPONENT__BINDING_TABLES:
+ case MApplicationPackage.MODEL_COMPONENT__ROOT_CONTEXT:
case MApplicationPackage.MODEL_COMPONENT__CHILDREN:
case MApplicationPackage.MODEL_COMPONENT__COMMANDS:
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
@@ -292,8 +294,13 @@
newChildDescriptors.add
(createChildParameter
- (MApplicationPackage.Literals.BINDING_CONTAINER__BINDINGS,
- MApplicationFactory.eINSTANCE.createKeyBinding()));
+ (MApplicationPackage.Literals.BINDING_CONTAINER__BINDING_TABLES,
+ MApplicationFactory.eINSTANCE.createBindingTable()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (MApplicationPackage.Literals.BINDING_CONTAINER__ROOT_CONTEXT,
+ MApplicationFactory.eINSTANCE.createBindingContext()));
newChildDescriptors.add
(createChildParameter
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/PartItemProvider.java b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/PartItemProvider.java
index 5f8c038..03b48ca 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/PartItemProvider.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/PartItemProvider.java
@@ -80,6 +80,7 @@
addIconURIPropertyDescriptor(object);
addTooltipPropertyDescriptor(object);
addDirtyPropertyDescriptor(object);
+ addBindingContextsPropertyDescriptor(object);
addMenusPropertyDescriptor(object);
addToolbarPropertyDescriptor(object);
addCloseablePropertyDescriptor(object);
@@ -352,6 +353,28 @@
}
/**
+ * This adds a property descriptor for the Binding Contexts feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBindingContextsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Bindings_bindingContexts_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Bindings_bindingContexts_feature", "_UI_Bindings_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MApplicationPackage.Literals.BINDINGS__BINDING_CONTEXTS,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
* This adds a property descriptor for the Menus feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -431,7 +454,6 @@
super.getChildrenFeatures(object);
childrenFeatures.add(MApplicationPackage.Literals.CONTEXT__PROPERTIES);
childrenFeatures.add(MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS);
- childrenFeatures.add(MApplicationPackage.Literals.BINDING_CONTAINER__BINDINGS);
childrenFeatures.add(MApplicationPackage.Literals.PART__MENUS);
childrenFeatures.add(MApplicationPackage.Literals.PART__TOOLBAR);
}
@@ -500,12 +522,12 @@
case MApplicationPackage.PART__ICON_URI:
case MApplicationPackage.PART__TOOLTIP:
case MApplicationPackage.PART__DIRTY:
+ case MApplicationPackage.PART__BINDING_CONTEXTS:
case MApplicationPackage.PART__CLOSEABLE:
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
return;
case MApplicationPackage.PART__PROPERTIES:
case MApplicationPackage.PART__HANDLERS:
- case MApplicationPackage.PART__BINDINGS:
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
return;
}
@@ -535,11 +557,6 @@
newChildDescriptors.add
(createChildParameter
- (MApplicationPackage.Literals.BINDING_CONTAINER__BINDINGS,
- MApplicationFactory.eINSTANCE.createKeyBinding()));
-
- newChildDescriptors.add
- (createChildParameter
(MApplicationPackage.Literals.PART__MENUS,
MApplicationFactory.eINSTANCE.createMenu()));
diff --git a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/WindowItemProvider.java b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/WindowItemProvider.java
index 5c5fd60..882d435 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/WindowItemProvider.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench.edit/src/org/eclipse/e4/ui/model/application/provider/WindowItemProvider.java
@@ -73,6 +73,7 @@
addTooltipPropertyDescriptor(object);
addContextPropertyDescriptor(object);
addVariablesPropertyDescriptor(object);
+ addBindingContextsPropertyDescriptor(object);
addXPropertyDescriptor(object);
addYPropertyDescriptor(object);
addWidthPropertyDescriptor(object);
@@ -192,6 +193,28 @@
}
/**
+ * This adds a property descriptor for the Binding Contexts feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBindingContextsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Bindings_bindingContexts_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Bindings_bindingContexts_feature", "_UI_Bindings_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ MApplicationPackage.Literals.BINDINGS__BINDING_CONTEXTS,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
* This adds a property descriptor for the X feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -293,7 +316,6 @@
super.getChildrenFeatures(object);
childrenFeatures.add(MApplicationPackage.Literals.CONTEXT__PROPERTIES);
childrenFeatures.add(MApplicationPackage.Literals.HANDLER_CONTAINER__HANDLERS);
- childrenFeatures.add(MApplicationPackage.Literals.BINDING_CONTAINER__BINDINGS);
childrenFeatures.add(MApplicationPackage.Literals.WINDOW__MAIN_MENU);
}
return childrenFeatures;
@@ -354,6 +376,7 @@
case MApplicationPackage.WINDOW__TOOLTIP:
case MApplicationPackage.WINDOW__CONTEXT:
case MApplicationPackage.WINDOW__VARIABLES:
+ case MApplicationPackage.WINDOW__BINDING_CONTEXTS:
case MApplicationPackage.WINDOW__X:
case MApplicationPackage.WINDOW__Y:
case MApplicationPackage.WINDOW__WIDTH:
@@ -362,7 +385,6 @@
return;
case MApplicationPackage.WINDOW__PROPERTIES:
case MApplicationPackage.WINDOW__HANDLERS:
- case MApplicationPackage.WINDOW__BINDINGS:
case MApplicationPackage.WINDOW__MAIN_MENU:
fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
return;
@@ -393,11 +415,6 @@
newChildDescriptors.add
(createChildParameter
- (MApplicationPackage.Literals.BINDING_CONTAINER__BINDINGS,
- MApplicationFactory.eINSTANCE.createKeyBinding()));
-
- newChildDescriptors.add
- (createChildParameter
(MApplicationPackage.Literals.WINDOW__MAIN_MENU,
MApplicationFactory.eINSTANCE.createMenu()));
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore b/bundles/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore
index c584ab2..8232013 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore
+++ b/bundles/org.eclipse.e4.ui.model.workbench/model/UIElements.ecore
@@ -146,10 +146,11 @@
<eGenericSuperTypes eClassifier="#//HandlerContainer"/>
<eGenericSuperTypes eClassifier="#//BindingContainer"/>
<eGenericSuperTypes eClassifier="#//PartDescriptorContainer"/>
+ <eGenericSuperTypes eClassifier="#//Bindings"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PSCElement" abstract="true" interface="true"
eSuperTypes="#//UIElement"/>
- <eClassifiers xsi:type="ecore:EClass" name="Part" eSuperTypes="#//Contribution #//Context #//PSCElement #//UILabel #//HandlerContainer #//BindingContainer #//Dirtyable">
+ <eClassifiers xsi:type="ecore:EClass" name="Part" eSuperTypes="#//Contribution #//Context #//PSCElement #//UILabel #//HandlerContainer #//Dirtyable #//Bindings">
<eStructuralFeatures xsi:type="ecore:EReference" name="menus" upperBound="-1"
eType="#//Menu" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="toolbar" eType="#//ToolBar"
@@ -191,8 +192,8 @@
<eGenericSuperTypes eClassifier="#//UILabel"/>
<eGenericSuperTypes eClassifier="#//Context"/>
<eGenericSuperTypes eClassifier="#//HandlerContainer"/>
- <eGenericSuperTypes eClassifier="#//BindingContainer"/>
<eGenericSuperTypes eClassifier="#//PSCElement"/>
+ <eGenericSuperTypes eClassifier="#//Bindings"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ModelComponents">
<eStructuralFeatures xsi:type="ecore:EReference" name="components" upperBound="-1"
@@ -212,6 +213,24 @@
<eClassifiers xsi:type="ecore:EClass" name="V______________Commands_______________V"
abstract="true" interface="true"/>
<eClassifiers xsi:type="ecore:EClass" name="BindingContainer" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="bindingTables" upperBound="-1"
+ eType="#//BindingTable" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rootContext" eType="#//BindingContext"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Bindings" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="bindingContexts" ordered="false"
+ upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BindingContext" eSuperTypes="#//ApplicationElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
+ eType="#//BindingContext" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BindingTable" eSuperTypes="#//ApplicationElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="bindingContextId" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="bindings" upperBound="-1"
eType="#//KeyBinding" containment="true"/>
</eClassifiers>
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplication.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplication.java
index eaa04c8..0ceba65 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplication.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplication.java
@@ -28,7 +28,7 @@
* @model
* @generated
*/
-public interface MApplication extends MElementContainer<MWindow>, MContext, MHandlerContainer, MBindingContainer, MPartDescriptorContainer {
+public interface MApplication extends MElementContainer<MWindow>, MContext, MHandlerContainer, MBindingContainer, MPartDescriptorContainer, MBindings {
/**
* Returns the value of the '<em><b>Commands</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.e4.ui.model.application.MCommand}.
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplicationFactory.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplicationFactory.java
index 0fdce32..7f88558 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplicationFactory.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplicationFactory.java
@@ -183,6 +183,24 @@
MModelComponent createModelComponent();
/**
+ * Returns a new object of class '<em>Binding Context</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Binding Context</em>'.
+ * @generated
+ */
+ MBindingContext createBindingContext();
+
+ /**
+ * Returns a new object of class '<em>Binding Table</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Binding Table</em>'.
+ * @generated
+ */
+ MBindingTable createBindingTable();
+
+ /**
* Returns a new object of class '<em>Command</em>'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplicationPackage.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplicationPackage.java
index bf812b7..35c44a3 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplicationPackage.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MApplicationPackage.java
@@ -422,7 +422,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getCommand()
* @generated
*/
- int COMMAND = 36;
+ int COMMAND = 39;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.CommandParameterImpl <em>Command Parameter</em>}' class.
@@ -432,7 +432,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getCommandParameter()
* @generated
*/
- int COMMAND_PARAMETER = 37;
+ int COMMAND_PARAMETER = 40;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.HandlerImpl <em>Handler</em>}' class.
@@ -442,7 +442,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getHandler()
* @generated
*/
- int HANDLER = 38;
+ int HANDLER = 41;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.MHandlerContainer <em>Handler Container</em>}' class.
@@ -452,7 +452,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getHandlerContainer()
* @generated
*/
- int HANDLER_CONTAINER = 39;
+ int HANDLER_CONTAINER = 42;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.HandledItemImpl <em>Handled Item</em>}' class.
@@ -462,7 +462,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getHandledItem()
* @generated
*/
- int HANDLED_ITEM = 40;
+ int HANDLED_ITEM = 43;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.HandledMenuItemImpl <em>Handled Menu Item</em>}' class.
@@ -472,7 +472,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getHandledMenuItem()
* @generated
*/
- int HANDLED_MENU_ITEM = 41;
+ int HANDLED_MENU_ITEM = 44;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.HandledToolItemImpl <em>Handled Tool Item</em>}' class.
@@ -482,7 +482,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getHandledToolItem()
* @generated
*/
- int HANDLED_TOOL_ITEM = 42;
+ int HANDLED_TOOL_ITEM = 45;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.MKeySequence <em>Key Sequence</em>}' class.
@@ -492,7 +492,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getKeySequence()
* @generated
*/
- int KEY_SEQUENCE = 44;
+ int KEY_SEQUENCE = 47;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.KeyBindingImpl <em>Key Binding</em>}' class.
@@ -502,7 +502,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getKeyBinding()
* @generated
*/
- int KEY_BINDING = 43;
+ int KEY_BINDING = 46;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.ParameterImpl <em>Parameter</em>}' class.
@@ -512,7 +512,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getParameter()
* @generated
*/
- int PARAMETER = 45;
+ int PARAMETER = 48;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.MV______________Trim_______________V <em>VTrim V</em>}' class.
@@ -522,7 +522,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getV______________Trim_______________V()
* @generated
*/
- int VTRIM_V = 46;
+ int VTRIM_V = 49;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.TrimContainerImpl <em>Trim Container</em>}' class.
@@ -532,7 +532,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getTrimContainer()
* @generated
*/
- int TRIM_CONTAINER = 47;
+ int TRIM_CONTAINER = 50;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.WindowTrimImpl <em>Window Trim</em>}' class.
@@ -542,7 +542,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getWindowTrim()
* @generated
*/
- int WINDOW_TRIM = 48;
+ int WINDOW_TRIM = 51;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.MV______________SharedElements_______________V <em>VShared Elements V</em>}' class.
@@ -552,7 +552,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getV______________SharedElements_______________V()
* @generated
*/
- int VSHARED_ELEMENTS_V = 49;
+ int VSHARED_ELEMENTS_V = 52;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.PlaceholderImpl <em>Placeholder</em>}' class.
@@ -562,7 +562,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getPlaceholder()
* @generated
*/
- int PLACEHOLDER = 50;
+ int PLACEHOLDER = 53;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.PerspectiveImpl <em>Perspective</em>}' class.
@@ -572,7 +572,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getPerspective()
* @generated
*/
- int PERSPECTIVE = 51;
+ int PERSPECTIVE = 54;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.PerspectiveStackImpl <em>Perspective Stack</em>}' class.
@@ -582,7 +582,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getPerspectiveStack()
* @generated
*/
- int PERSPECTIVE_STACK = 52;
+ int PERSPECTIVE_STACK = 55;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.MV_________Testing__________V <em>VTesting V</em>}' class.
@@ -592,7 +592,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getV_________Testing__________V()
* @generated
*/
- int VTESTING_V = 53;
+ int VTESTING_V = 56;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.TestHarnessImpl <em>Test Harness</em>}' class.
@@ -602,7 +602,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getTestHarness()
* @generated
*/
- int TEST_HARNESS = 54;
+ int TEST_HARNESS = 57;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.StringToStringMapImpl <em>String To String Map</em>}' class.
@@ -2487,13 +2487,22 @@
int APPLICATION__HANDLERS = ELEMENT_CONTAINER_FEATURE_COUNT + 3;
/**
- * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * The feature id for the '<em><b>Binding Tables</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int APPLICATION__BINDINGS = ELEMENT_CONTAINER_FEATURE_COUNT + 4;
+ int APPLICATION__BINDING_TABLES = ELEMENT_CONTAINER_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Root Context</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int APPLICATION__ROOT_CONTEXT = ELEMENT_CONTAINER_FEATURE_COUNT + 5;
/**
* The feature id for the '<em><b>Descriptors</b></em>' containment reference list.
@@ -2502,7 +2511,16 @@
* @generated
* @ordered
*/
- int APPLICATION__DESCRIPTORS = ELEMENT_CONTAINER_FEATURE_COUNT + 5;
+ int APPLICATION__DESCRIPTORS = ELEMENT_CONTAINER_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Binding Contexts</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int APPLICATION__BINDING_CONTEXTS = ELEMENT_CONTAINER_FEATURE_COUNT + 7;
/**
* The feature id for the '<em><b>Commands</b></em>' containment reference list.
@@ -2511,7 +2529,7 @@
* @generated
* @ordered
*/
- int APPLICATION__COMMANDS = ELEMENT_CONTAINER_FEATURE_COUNT + 6;
+ int APPLICATION__COMMANDS = ELEMENT_CONTAINER_FEATURE_COUNT + 8;
/**
* The number of structural features of the '<em>Application</em>' class.
@@ -2520,7 +2538,7 @@
* @generated
* @ordered
*/
- int APPLICATION_FEATURE_COUNT = ELEMENT_CONTAINER_FEATURE_COUNT + 7;
+ int APPLICATION_FEATURE_COUNT = ELEMENT_CONTAINER_FEATURE_COUNT + 9;
/**
* The feature id for the '<em><b>Id</b></em>' attribute.
@@ -2784,22 +2802,22 @@
int PART__HANDLERS = CONTRIBUTION_FEATURE_COUNT + 13;
/**
- * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int PART__BINDINGS = CONTRIBUTION_FEATURE_COUNT + 14;
-
- /**
* The feature id for the '<em><b>Dirty</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int PART__DIRTY = CONTRIBUTION_FEATURE_COUNT + 15;
+ int PART__DIRTY = CONTRIBUTION_FEATURE_COUNT + 14;
+
+ /**
+ * The feature id for the '<em><b>Binding Contexts</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PART__BINDING_CONTEXTS = CONTRIBUTION_FEATURE_COUNT + 15;
/**
* The feature id for the '<em><b>Menus</b></em>' containment reference list.
@@ -3019,15 +3037,6 @@
int INPUT_PART__HANDLERS = PART__HANDLERS;
/**
- * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int INPUT_PART__BINDINGS = PART__BINDINGS;
-
- /**
* The feature id for the '<em><b>Dirty</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -3037,6 +3046,15 @@
int INPUT_PART__DIRTY = PART__DIRTY;
/**
+ * The feature id for the '<em><b>Binding Contexts</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_PART__BINDING_CONTEXTS = PART__BINDING_CONTEXTS;
+
+ /**
* The feature id for the '<em><b>Menus</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -3253,15 +3271,6 @@
int PART_DESCRIPTOR__HANDLERS = PART__HANDLERS;
/**
- * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int PART_DESCRIPTOR__BINDINGS = PART__BINDINGS;
-
- /**
* The feature id for the '<em><b>Dirty</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -3271,6 +3280,15 @@
int PART_DESCRIPTOR__DIRTY = PART__DIRTY;
/**
+ * The feature id for the '<em><b>Binding Contexts</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PART_DESCRIPTOR__BINDING_CONTEXTS = PART__BINDING_CONTEXTS;
+
+ /**
* The feature id for the '<em><b>Menus</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -3730,13 +3748,13 @@
int WINDOW__HANDLERS = ELEMENT_CONTAINER_FEATURE_COUNT + 6;
/**
- * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * The feature id for the '<em><b>Binding Contexts</b></em>' attribute list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int WINDOW__BINDINGS = ELEMENT_CONTAINER_FEATURE_COUNT + 7;
+ int WINDOW__BINDING_CONTEXTS = ELEMENT_CONTAINER_FEATURE_COUNT + 7;
/**
* The feature id for the '<em><b>Main Menu</b></em>' containment reference.
@@ -3847,13 +3865,22 @@
int MODEL_COMPONENT__HANDLERS = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 2;
/**
- * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * The feature id for the '<em><b>Binding Tables</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int MODEL_COMPONENT__BINDINGS = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 3;
+ int MODEL_COMPONENT__BINDING_TABLES = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Root Context</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL_COMPONENT__ROOT_CONTEXT = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 4;
/**
* The feature id for the '<em><b>Position In Parent</b></em>' attribute.
@@ -3862,7 +3889,7 @@
* @generated
* @ordered
*/
- int MODEL_COMPONENT__POSITION_IN_PARENT = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 4;
+ int MODEL_COMPONENT__POSITION_IN_PARENT = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 5;
/**
* The feature id for the '<em><b>Parent ID</b></em>' attribute.
@@ -3871,7 +3898,7 @@
* @generated
* @ordered
*/
- int MODEL_COMPONENT__PARENT_ID = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 5;
+ int MODEL_COMPONENT__PARENT_ID = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 6;
/**
* The feature id for the '<em><b>Children</b></em>' containment reference list.
@@ -3880,7 +3907,7 @@
* @generated
* @ordered
*/
- int MODEL_COMPONENT__CHILDREN = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 6;
+ int MODEL_COMPONENT__CHILDREN = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 7;
/**
* The feature id for the '<em><b>Commands</b></em>' containment reference list.
@@ -3889,7 +3916,7 @@
* @generated
* @ordered
*/
- int MODEL_COMPONENT__COMMANDS = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 7;
+ int MODEL_COMPONENT__COMMANDS = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 8;
/**
* The feature id for the '<em><b>Processor</b></em>' attribute.
@@ -3898,7 +3925,7 @@
* @generated
* @ordered
*/
- int MODEL_COMPONENT__PROCESSOR = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 8;
+ int MODEL_COMPONENT__PROCESSOR = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 9;
/**
* The number of structural features of the '<em>Model Component</em>' class.
@@ -3907,7 +3934,7 @@
* @generated
* @ordered
*/
- int MODEL_COMPONENT_FEATURE_COUNT = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 9;
+ int MODEL_COMPONENT_FEATURE_COUNT = PART_DESCRIPTOR_CONTAINER_FEATURE_COUNT + 10;
/**
* The number of structural features of the '<em>VCommands V</em>' class.
@@ -3919,13 +3946,22 @@
int VCOMMANDS_V_FEATURE_COUNT = 0;
/**
- * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * The feature id for the '<em><b>Binding Tables</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int BINDING_CONTAINER__BINDINGS = 0;
+ int BINDING_CONTAINER__BINDING_TABLES = 0;
+
+ /**
+ * The feature id for the '<em><b>Root Context</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_CONTAINER__ROOT_CONTEXT = 1;
/**
* The number of structural features of the '<em>Binding Container</em>' class.
@@ -3934,7 +3970,154 @@
* @generated
* @ordered
*/
- int BINDING_CONTAINER_FEATURE_COUNT = 1;
+ int BINDING_CONTAINER_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.e4.ui.model.application.MBindings <em>Bindings</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.e4.ui.model.application.MBindings
+ * @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getBindings()
+ * @generated
+ */
+ int BINDINGS = 36;
+
+ /**
+ * The feature id for the '<em><b>Binding Contexts</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDINGS__BINDING_CONTEXTS = 0;
+
+ /**
+ * The number of structural features of the '<em>Bindings</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDINGS_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.BindingContextImpl <em>Binding Context</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.e4.ui.model.application.impl.BindingContextImpl
+ * @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getBindingContext()
+ * @generated
+ */
+ int BINDING_CONTEXT = 37;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_CONTEXT__ID = APPLICATION_ELEMENT__ID;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_CONTEXT__TAGS = APPLICATION_ELEMENT__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_CONTEXT__NAME = APPLICATION_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_CONTEXT__DESCRIPTION = APPLICATION_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_CONTEXT__CHILDREN = APPLICATION_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Binding Context</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_CONTEXT_FEATURE_COUNT = APPLICATION_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.e4.ui.model.application.impl.BindingTableImpl <em>Binding Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.e4.ui.model.application.impl.BindingTableImpl
+ * @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getBindingTable()
+ * @generated
+ */
+ int BINDING_TABLE = 38;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_TABLE__ID = APPLICATION_ELEMENT__ID;
+
+ /**
+ * The feature id for the '<em><b>Tags</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_TABLE__TAGS = APPLICATION_ELEMENT__TAGS;
+
+ /**
+ * The feature id for the '<em><b>Binding Context Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_TABLE__BINDING_CONTEXT_ID = APPLICATION_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_TABLE__BINDINGS = APPLICATION_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Binding Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BINDING_TABLE_FEATURE_COUNT = APPLICATION_ELEMENT_FEATURE_COUNT + 2;
/**
* The feature id for the '<em><b>Id</b></em>' attribute.
@@ -5708,7 +5891,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getItemType()
* @generated
*/
- int ITEM_TYPE = 55;
+ int ITEM_TYPE = 58;
/**
* The meta object id for the '{@link org.eclipse.e4.ui.model.application.SideValue <em>Side Value</em>}' enum.
@@ -5718,7 +5901,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getSideValue()
* @generated
*/
- int SIDE_VALUE = 56;
+ int SIDE_VALUE = 59;
/**
* The meta object id for the '<em>IEclipse Context</em>' data type.
@@ -5728,7 +5911,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getIEclipseContext()
* @generated
*/
- int IECLIPSE_CONTEXT = 57;
+ int IECLIPSE_CONTEXT = 60;
/**
* The meta object id for the '<em>Parameterized Command</em>' data type.
@@ -5738,7 +5921,7 @@
* @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getParameterizedCommand()
* @generated
*/
- int PARAMETERIZED_COMMAND = 58;
+ int PARAMETERIZED_COMMAND = 61;
/**
@@ -6576,15 +6759,122 @@
EClass getBindingContainer();
/**
- * Returns the meta object for the containment reference list '{@link org.eclipse.e4.ui.model.application.MBindingContainer#getBindings <em>Bindings</em>}'.
+ * Returns the meta object for the containment reference list '{@link org.eclipse.e4.ui.model.application.MBindingContainer#getBindingTables <em>Binding Tables</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @return the meta object for the containment reference list '<em>Bindings</em>'.
- * @see org.eclipse.e4.ui.model.application.MBindingContainer#getBindings()
+ * @return the meta object for the containment reference list '<em>Binding Tables</em>'.
+ * @see org.eclipse.e4.ui.model.application.MBindingContainer#getBindingTables()
* @see #getBindingContainer()
* @generated
*/
- EReference getBindingContainer_Bindings();
+ EReference getBindingContainer_BindingTables();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.e4.ui.model.application.MBindingContainer#getRootContext <em>Root Context</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Root Context</em>'.
+ * @see org.eclipse.e4.ui.model.application.MBindingContainer#getRootContext()
+ * @see #getBindingContainer()
+ * @generated
+ */
+ EReference getBindingContainer_RootContext();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.e4.ui.model.application.MBindings <em>Bindings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Bindings</em>'.
+ * @see org.eclipse.e4.ui.model.application.MBindings
+ * @generated
+ */
+ EClass getBindings();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.e4.ui.model.application.MBindings#getBindingContexts <em>Binding Contexts</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Binding Contexts</em>'.
+ * @see org.eclipse.e4.ui.model.application.MBindings#getBindingContexts()
+ * @see #getBindings()
+ * @generated
+ */
+ EAttribute getBindings_BindingContexts();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.e4.ui.model.application.MBindingContext <em>Binding Context</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Binding Context</em>'.
+ * @see org.eclipse.e4.ui.model.application.MBindingContext
+ * @generated
+ */
+ EClass getBindingContext();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.e4.ui.model.application.MBindingContext#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.e4.ui.model.application.MBindingContext#getName()
+ * @see #getBindingContext()
+ * @generated
+ */
+ EAttribute getBindingContext_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.e4.ui.model.application.MBindingContext#getDescription <em>Description</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Description</em>'.
+ * @see org.eclipse.e4.ui.model.application.MBindingContext#getDescription()
+ * @see #getBindingContext()
+ * @generated
+ */
+ EAttribute getBindingContext_Description();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.e4.ui.model.application.MBindingContext#getChildren <em>Children</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Children</em>'.
+ * @see org.eclipse.e4.ui.model.application.MBindingContext#getChildren()
+ * @see #getBindingContext()
+ * @generated
+ */
+ EReference getBindingContext_Children();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.e4.ui.model.application.MBindingTable <em>Binding Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Binding Table</em>'.
+ * @see org.eclipse.e4.ui.model.application.MBindingTable
+ * @generated
+ */
+ EClass getBindingTable();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.e4.ui.model.application.MBindingTable#getBindingContextId <em>Binding Context Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Binding Context Id</em>'.
+ * @see org.eclipse.e4.ui.model.application.MBindingTable#getBindingContextId()
+ * @see #getBindingTable()
+ * @generated
+ */
+ EAttribute getBindingTable_BindingContextId();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.e4.ui.model.application.MBindingTable#getBindings <em>Bindings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Bindings</em>'.
+ * @see org.eclipse.e4.ui.model.application.MBindingTable#getBindings()
+ * @see #getBindingTable()
+ * @generated
+ */
+ EReference getBindingTable_Bindings();
/**
* Returns the meta object for class '{@link org.eclipse.e4.ui.model.application.MCommand <em>Command</em>}'.
@@ -7775,12 +8065,98 @@
EClass BINDING_CONTAINER = eINSTANCE.getBindingContainer();
/**
+ * The meta object literal for the '<em><b>Binding Tables</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BINDING_CONTAINER__BINDING_TABLES = eINSTANCE.getBindingContainer_BindingTables();
+
+ /**
+ * The meta object literal for the '<em><b>Root Context</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BINDING_CONTAINER__ROOT_CONTEXT = eINSTANCE.getBindingContainer_RootContext();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.e4.ui.model.application.MBindings <em>Bindings</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.e4.ui.model.application.MBindings
+ * @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getBindings()
+ * @generated
+ */
+ EClass BINDINGS = eINSTANCE.getBindings();
+
+ /**
+ * The meta object literal for the '<em><b>Binding Contexts</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute BINDINGS__BINDING_CONTEXTS = eINSTANCE.getBindings_BindingContexts();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.e4.ui.model.application.impl.BindingContextImpl <em>Binding Context</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.e4.ui.model.application.impl.BindingContextImpl
+ * @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getBindingContext()
+ * @generated
+ */
+ EClass BINDING_CONTEXT = eINSTANCE.getBindingContext();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute BINDING_CONTEXT__NAME = eINSTANCE.getBindingContext_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute BINDING_CONTEXT__DESCRIPTION = eINSTANCE.getBindingContext_Description();
+
+ /**
+ * The meta object literal for the '<em><b>Children</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BINDING_CONTEXT__CHILDREN = eINSTANCE.getBindingContext_Children();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.e4.ui.model.application.impl.BindingTableImpl <em>Binding Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.e4.ui.model.application.impl.BindingTableImpl
+ * @see org.eclipse.e4.ui.model.application.impl.ApplicationPackageImpl#getBindingTable()
+ * @generated
+ */
+ EClass BINDING_TABLE = eINSTANCE.getBindingTable();
+
+ /**
+ * The meta object literal for the '<em><b>Binding Context Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute BINDING_TABLE__BINDING_CONTEXT_ID = eINSTANCE.getBindingTable_BindingContextId();
+
+ /**
* The meta object literal for the '<em><b>Bindings</b></em>' containment reference list feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
- EReference BINDING_CONTAINER__BINDINGS = eINSTANCE.getBindingContainer_Bindings();
+ EReference BINDING_TABLE__BINDINGS = eINSTANCE.getBindingTable_Bindings();
/**
* The meta object literal for the '{@link org.eclipse.e4.ui.model.application.impl.CommandImpl <em>Command</em>}' class.
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindingContainer.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindingContainer.java
index 13c1741..eb1adc1 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindingContainer.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindingContainer.java
@@ -20,7 +20,8 @@
* <p>
* The following features are supported:
* <ul>
- * <li>{@link org.eclipse.e4.ui.model.application.MBindingContainer#getBindings <em>Bindings</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.MBindingContainer#getBindingTables <em>Binding Tables</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.MBindingContainer#getRootContext <em>Root Context</em>}</li>
* </ul>
* </p>
*
@@ -30,19 +31,45 @@
*/
public interface MBindingContainer {
/**
- * Returns the value of the '<em><b>Bindings</b></em>' containment reference list.
- * The list contents are of type {@link org.eclipse.e4.ui.model.application.MKeyBinding}.
+ * Returns the value of the '<em><b>Binding Tables</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.e4.ui.model.application.MBindingTable}.
* <!-- begin-user-doc -->
* <p>
- * If the meaning of the '<em>Bindings</em>' containment reference list isn't clear,
+ * If the meaning of the '<em>Binding Tables</em>' containment reference list isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
- * @return the value of the '<em>Bindings</em>' containment reference list.
- * @see org.eclipse.e4.ui.model.application.MApplicationPackage#getBindingContainer_Bindings()
+ * @return the value of the '<em>Binding Tables</em>' containment reference list.
+ * @see org.eclipse.e4.ui.model.application.MApplicationPackage#getBindingContainer_BindingTables()
* @model containment="true"
* @generated
*/
- EList<MKeyBinding> getBindings();
+ EList<MBindingTable> getBindingTables();
+
+ /**
+ * Returns the value of the '<em><b>Root Context</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Root Context</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Root Context</em>' containment reference.
+ * @see #setRootContext(MBindingContext)
+ * @see org.eclipse.e4.ui.model.application.MApplicationPackage#getBindingContainer_RootContext()
+ * @model containment="true"
+ * @generated
+ */
+ MBindingContext getRootContext();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.e4.ui.model.application.MBindingContainer#getRootContext <em>Root Context</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Root Context</em>' containment reference.
+ * @see #getRootContext()
+ * @generated
+ */
+ void setRootContext(MBindingContext value);
} // MBindingContainer
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindingContext.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindingContext.java
new file mode 100644
index 0000000..c68c281
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindingContext.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) 2008 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Binding Context</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.e4.ui.model.application.MBindingContext#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.MBindingContext#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.MBindingContext#getChildren <em>Children</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.e4.ui.model.application.MApplicationPackage#getBindingContext()
+ * @model
+ * @generated
+ */
+public interface MBindingContext extends MApplicationElement {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.e4.ui.model.application.MApplicationPackage#getBindingContext_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.e4.ui.model.application.MBindingContext#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Description</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Description</em>' attribute.
+ * @see #setDescription(String)
+ * @see org.eclipse.e4.ui.model.application.MApplicationPackage#getBindingContext_Description()
+ * @model
+ * @generated
+ */
+ String getDescription();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.e4.ui.model.application.MBindingContext#getDescription <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Description</em>' attribute.
+ * @see #getDescription()
+ * @generated
+ */
+ void setDescription(String value);
+
+ /**
+ * Returns the value of the '<em><b>Children</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.e4.ui.model.application.MBindingContext}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Children</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Children</em>' containment reference list.
+ * @see org.eclipse.e4.ui.model.application.MApplicationPackage#getBindingContext_Children()
+ * @model containment="true"
+ * @generated
+ */
+ EList<MBindingContext> getChildren();
+
+} // MBindingContext
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindingTable.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindingTable.java
new file mode 100644
index 0000000..238b092
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindingTable.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2008 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Binding Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.e4.ui.model.application.MBindingTable#getBindingContextId <em>Binding Context Id</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.MBindingTable#getBindings <em>Bindings</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.e4.ui.model.application.MApplicationPackage#getBindingTable()
+ * @model
+ * @generated
+ */
+public interface MBindingTable extends MApplicationElement {
+ /**
+ * Returns the value of the '<em><b>Binding Context Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Binding Context Id</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Binding Context Id</em>' attribute.
+ * @see #setBindingContextId(String)
+ * @see org.eclipse.e4.ui.model.application.MApplicationPackage#getBindingTable_BindingContextId()
+ * @model required="true"
+ * @generated
+ */
+ String getBindingContextId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.e4.ui.model.application.MBindingTable#getBindingContextId <em>Binding Context Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Binding Context Id</em>' attribute.
+ * @see #getBindingContextId()
+ * @generated
+ */
+ void setBindingContextId(String value);
+
+ /**
+ * Returns the value of the '<em><b>Bindings</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.e4.ui.model.application.MKeyBinding}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Bindings</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Bindings</em>' containment reference list.
+ * @see org.eclipse.e4.ui.model.application.MApplicationPackage#getBindingTable_Bindings()
+ * @model containment="true"
+ * @generated
+ */
+ EList<MKeyBinding> getBindings();
+
+} // MBindingTable
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindings.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindings.java
new file mode 100644
index 0000000..456bc58
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MBindings.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2008 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Bindings</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.e4.ui.model.application.MBindings#getBindingContexts <em>Binding Contexts</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.e4.ui.model.application.MApplicationPackage#getBindings()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface MBindings {
+ /**
+ * Returns the value of the '<em><b>Binding Contexts</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Binding Contexts</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Binding Contexts</em>' attribute list.
+ * @see org.eclipse.e4.ui.model.application.MApplicationPackage#getBindings_BindingContexts()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<String> getBindingContexts();
+
+} // MBindings
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MPart.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MPart.java
index daf521a..6aa3d54 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MPart.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MPart.java
@@ -30,7 +30,7 @@
* @model
* @generated
*/
-public interface MPart extends MContribution, MContext, MPSCElement, MUILabel, MHandlerContainer, MBindingContainer, MDirtyable {
+public interface MPart extends MContribution, MContext, MPSCElement, MUILabel, MHandlerContainer, MDirtyable, MBindings {
/**
* Returns the value of the '<em><b>Menus</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.e4.ui.model.application.MMenu}.
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MWindow.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MWindow.java
index fe3c424..a313c52 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MWindow.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/MWindow.java
@@ -31,7 +31,7 @@
* @model
* @generated
*/
-public interface MWindow extends MElementContainer<MPSCElement>, MUILabel, MContext, MHandlerContainer, MBindingContainer, MPSCElement {
+public interface MWindow extends MElementContainer<MPSCElement>, MUILabel, MContext, MHandlerContainer, MPSCElement, MBindings {
/**
* Returns the value of the '<em><b>Main Menu</b></em>' containment reference.
* <!-- begin-user-doc -->
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationFactoryImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationFactoryImpl.java
index d788c89..ec243ac 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationFactoryImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationFactoryImpl.java
@@ -84,6 +84,8 @@
case MApplicationPackage.WINDOW: return (EObject)createWindow();
case MApplicationPackage.MODEL_COMPONENTS: return (EObject)createModelComponents();
case MApplicationPackage.MODEL_COMPONENT: return (EObject)createModelComponent();
+ case MApplicationPackage.BINDING_CONTEXT: return (EObject)createBindingContext();
+ case MApplicationPackage.BINDING_TABLE: return (EObject)createBindingTable();
case MApplicationPackage.COMMAND: return (EObject)createCommand();
case MApplicationPackage.COMMAND_PARAMETER: return (EObject)createCommandParameter();
case MApplicationPackage.HANDLER: return (EObject)createHandler();
@@ -311,6 +313,26 @@
* <!-- end-user-doc -->
* @generated
*/
+ public MBindingContext createBindingContext() {
+ BindingContextImpl bindingContext = new BindingContextImpl();
+ return bindingContext;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MBindingTable createBindingTable() {
+ BindingTableImpl bindingTable = new BindingTableImpl();
+ return bindingTable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public MCommand createCommand() {
CommandImpl command = new CommandImpl();
return command;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationImpl.java
index 8b94206..b4266e8 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationImpl.java
@@ -16,6 +16,9 @@
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.MApplicationPackage;
import org.eclipse.e4.ui.model.application.MBindingContainer;
+import org.eclipse.e4.ui.model.application.MBindingContext;
+import org.eclipse.e4.ui.model.application.MBindingTable;
+import org.eclipse.e4.ui.model.application.MBindings;
import org.eclipse.e4.ui.model.application.MCommand;
import org.eclipse.e4.ui.model.application.MContext;
import org.eclipse.e4.ui.model.application.MHandler;
@@ -53,8 +56,10 @@
* <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getVariables <em>Variables</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getProperties <em>Properties</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getHandlers <em>Handlers</em>}</li>
- * <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getBindings <em>Bindings</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getBindingTables <em>Binding Tables</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getRootContext <em>Root Context</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getDescriptors <em>Descriptors</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getBindingContexts <em>Binding Contexts</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.ApplicationImpl#getCommands <em>Commands</em>}</li>
* </ul>
* </p>
@@ -113,14 +118,24 @@
protected EList<MHandler> handlers;
/**
- * The cached value of the '{@link #getBindings() <em>Bindings</em>}' containment reference list.
+ * The cached value of the '{@link #getBindingTables() <em>Binding Tables</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @see #getBindings()
+ * @see #getBindingTables()
* @generated
* @ordered
*/
- protected EList<MKeyBinding> bindings;
+ protected EList<MBindingTable> bindingTables;
+
+ /**
+ * The cached value of the '{@link #getRootContext() <em>Root Context</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRootContext()
+ * @generated
+ * @ordered
+ */
+ protected MBindingContext rootContext;
/**
* The cached value of the '{@link #getDescriptors() <em>Descriptors</em>}' containment reference list.
@@ -133,6 +148,16 @@
protected EList<MPartDescriptor> descriptors;
/**
+ * The cached value of the '{@link #getBindingContexts() <em>Binding Contexts</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBindingContexts()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> bindingContexts;
+
+ /**
* The cached value of the '{@link #getCommands() <em>Commands</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -223,11 +248,54 @@
* <!-- end-user-doc -->
* @generated
*/
- public EList<MKeyBinding> getBindings() {
- if (bindings == null) {
- bindings = new EObjectContainmentEList<MKeyBinding>(MKeyBinding.class, this, MApplicationPackage.APPLICATION__BINDINGS);
+ public EList<MBindingTable> getBindingTables() {
+ if (bindingTables == null) {
+ bindingTables = new EObjectContainmentEList<MBindingTable>(MBindingTable.class, this, MApplicationPackage.APPLICATION__BINDING_TABLES);
}
- return bindings;
+ return bindingTables;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MBindingContext getRootContext() {
+ return rootContext;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRootContext(MBindingContext newRootContext, NotificationChain msgs) {
+ MBindingContext oldRootContext = rootContext;
+ rootContext = newRootContext;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MApplicationPackage.APPLICATION__ROOT_CONTEXT, oldRootContext, newRootContext);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRootContext(MBindingContext newRootContext) {
+ if (newRootContext != rootContext) {
+ NotificationChain msgs = null;
+ if (rootContext != null)
+ msgs = ((InternalEObject)rootContext).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MApplicationPackage.APPLICATION__ROOT_CONTEXT, null, msgs);
+ if (newRootContext != null)
+ msgs = ((InternalEObject)newRootContext).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MApplicationPackage.APPLICATION__ROOT_CONTEXT, null, msgs);
+ msgs = basicSetRootContext(newRootContext, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MApplicationPackage.APPLICATION__ROOT_CONTEXT, newRootContext, newRootContext));
}
/**
@@ -247,6 +315,18 @@
* <!-- end-user-doc -->
* @generated
*/
+ public EList<String> getBindingContexts() {
+ if (bindingContexts == null) {
+ bindingContexts = new EDataTypeUniqueEList<String>(String.class, this, MApplicationPackage.APPLICATION__BINDING_CONTEXTS);
+ }
+ return bindingContexts;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EList<MCommand> getCommands() {
if (commands == null) {
commands = new EObjectContainmentEList<MCommand>(MCommand.class, this, MApplicationPackage.APPLICATION__COMMANDS);
@@ -266,8 +346,10 @@
return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
case MApplicationPackage.APPLICATION__HANDLERS:
return ((InternalEList<?>)getHandlers()).basicRemove(otherEnd, msgs);
- case MApplicationPackage.APPLICATION__BINDINGS:
- return ((InternalEList<?>)getBindings()).basicRemove(otherEnd, msgs);
+ case MApplicationPackage.APPLICATION__BINDING_TABLES:
+ return ((InternalEList<?>)getBindingTables()).basicRemove(otherEnd, msgs);
+ case MApplicationPackage.APPLICATION__ROOT_CONTEXT:
+ return basicSetRootContext(null, msgs);
case MApplicationPackage.APPLICATION__DESCRIPTORS:
return ((InternalEList<?>)getDescriptors()).basicRemove(otherEnd, msgs);
case MApplicationPackage.APPLICATION__COMMANDS:
@@ -293,10 +375,14 @@
else return getProperties().map();
case MApplicationPackage.APPLICATION__HANDLERS:
return getHandlers();
- case MApplicationPackage.APPLICATION__BINDINGS:
- return getBindings();
+ case MApplicationPackage.APPLICATION__BINDING_TABLES:
+ return getBindingTables();
+ case MApplicationPackage.APPLICATION__ROOT_CONTEXT:
+ return getRootContext();
case MApplicationPackage.APPLICATION__DESCRIPTORS:
return getDescriptors();
+ case MApplicationPackage.APPLICATION__BINDING_CONTEXTS:
+ return getBindingContexts();
case MApplicationPackage.APPLICATION__COMMANDS:
return getCommands();
}
@@ -326,14 +412,21 @@
getHandlers().clear();
getHandlers().addAll((Collection<? extends MHandler>)newValue);
return;
- case MApplicationPackage.APPLICATION__BINDINGS:
- getBindings().clear();
- getBindings().addAll((Collection<? extends MKeyBinding>)newValue);
+ case MApplicationPackage.APPLICATION__BINDING_TABLES:
+ getBindingTables().clear();
+ getBindingTables().addAll((Collection<? extends MBindingTable>)newValue);
+ return;
+ case MApplicationPackage.APPLICATION__ROOT_CONTEXT:
+ setRootContext((MBindingContext)newValue);
return;
case MApplicationPackage.APPLICATION__DESCRIPTORS:
getDescriptors().clear();
getDescriptors().addAll((Collection<? extends MPartDescriptor>)newValue);
return;
+ case MApplicationPackage.APPLICATION__BINDING_CONTEXTS:
+ getBindingContexts().clear();
+ getBindingContexts().addAll((Collection<? extends String>)newValue);
+ return;
case MApplicationPackage.APPLICATION__COMMANDS:
getCommands().clear();
getCommands().addAll((Collection<? extends MCommand>)newValue);
@@ -362,12 +455,18 @@
case MApplicationPackage.APPLICATION__HANDLERS:
getHandlers().clear();
return;
- case MApplicationPackage.APPLICATION__BINDINGS:
- getBindings().clear();
+ case MApplicationPackage.APPLICATION__BINDING_TABLES:
+ getBindingTables().clear();
+ return;
+ case MApplicationPackage.APPLICATION__ROOT_CONTEXT:
+ setRootContext((MBindingContext)null);
return;
case MApplicationPackage.APPLICATION__DESCRIPTORS:
getDescriptors().clear();
return;
+ case MApplicationPackage.APPLICATION__BINDING_CONTEXTS:
+ getBindingContexts().clear();
+ return;
case MApplicationPackage.APPLICATION__COMMANDS:
getCommands().clear();
return;
@@ -391,10 +490,14 @@
return properties != null && !properties.isEmpty();
case MApplicationPackage.APPLICATION__HANDLERS:
return handlers != null && !handlers.isEmpty();
- case MApplicationPackage.APPLICATION__BINDINGS:
- return bindings != null && !bindings.isEmpty();
+ case MApplicationPackage.APPLICATION__BINDING_TABLES:
+ return bindingTables != null && !bindingTables.isEmpty();
+ case MApplicationPackage.APPLICATION__ROOT_CONTEXT:
+ return rootContext != null;
case MApplicationPackage.APPLICATION__DESCRIPTORS:
return descriptors != null && !descriptors.isEmpty();
+ case MApplicationPackage.APPLICATION__BINDING_CONTEXTS:
+ return bindingContexts != null && !bindingContexts.isEmpty();
case MApplicationPackage.APPLICATION__COMMANDS:
return commands != null && !commands.isEmpty();
}
@@ -424,7 +527,8 @@
}
if (baseClass == MBindingContainer.class) {
switch (derivedFeatureID) {
- case MApplicationPackage.APPLICATION__BINDINGS: return MApplicationPackage.BINDING_CONTAINER__BINDINGS;
+ case MApplicationPackage.APPLICATION__BINDING_TABLES: return MApplicationPackage.BINDING_CONTAINER__BINDING_TABLES;
+ case MApplicationPackage.APPLICATION__ROOT_CONTEXT: return MApplicationPackage.BINDING_CONTAINER__ROOT_CONTEXT;
default: return -1;
}
}
@@ -434,6 +538,12 @@
default: return -1;
}
}
+ if (baseClass == MBindings.class) {
+ switch (derivedFeatureID) {
+ case MApplicationPackage.APPLICATION__BINDING_CONTEXTS: return MApplicationPackage.BINDINGS__BINDING_CONTEXTS;
+ default: return -1;
+ }
+ }
return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
}
@@ -460,7 +570,8 @@
}
if (baseClass == MBindingContainer.class) {
switch (baseFeatureID) {
- case MApplicationPackage.BINDING_CONTAINER__BINDINGS: return MApplicationPackage.APPLICATION__BINDINGS;
+ case MApplicationPackage.BINDING_CONTAINER__BINDING_TABLES: return MApplicationPackage.APPLICATION__BINDING_TABLES;
+ case MApplicationPackage.BINDING_CONTAINER__ROOT_CONTEXT: return MApplicationPackage.APPLICATION__ROOT_CONTEXT;
default: return -1;
}
}
@@ -470,6 +581,12 @@
default: return -1;
}
}
+ if (baseClass == MBindings.class) {
+ switch (baseFeatureID) {
+ case MApplicationPackage.BINDINGS__BINDING_CONTEXTS: return MApplicationPackage.APPLICATION__BINDING_CONTEXTS;
+ default: return -1;
+ }
+ }
return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
}
@@ -487,6 +604,8 @@
result.append(context);
result.append(", variables: "); //$NON-NLS-1$
result.append(variables);
+ result.append(", bindingContexts: "); //$NON-NLS-1$
+ result.append(bindingContexts);
result.append(')');
return result.toString();
}
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationPackageImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationPackageImpl.java
index ca2c3b7..7bed4be 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationPackageImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ApplicationPackageImpl.java
@@ -21,6 +21,9 @@
import org.eclipse.e4.ui.model.application.MApplicationFactory;
import org.eclipse.e4.ui.model.application.MApplicationPackage;
import org.eclipse.e4.ui.model.application.MBindingContainer;
+import org.eclipse.e4.ui.model.application.MBindingContext;
+import org.eclipse.e4.ui.model.application.MBindingTable;
+import org.eclipse.e4.ui.model.application.MBindings;
import org.eclipse.e4.ui.model.application.MCommand;
import org.eclipse.e4.ui.model.application.MCommandParameter;
import org.eclipse.e4.ui.model.application.MContext;
@@ -342,6 +345,27 @@
* <!-- end-user-doc -->
* @generated
*/
+ private EClass bindingsEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass bindingContextEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass bindingTableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
private EClass commandEClass = null;
/**
@@ -1282,7 +1306,7 @@
* <!-- end-user-doc -->
* @generated
*/
- public EReference getBindingContainer_Bindings() {
+ public EReference getBindingContainer_BindingTables() {
return (EReference)bindingContainerEClass.getEStructuralFeatures().get(0);
}
@@ -1291,6 +1315,96 @@
* <!-- end-user-doc -->
* @generated
*/
+ public EReference getBindingContainer_RootContext() {
+ return (EReference)bindingContainerEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBindings() {
+ return bindingsEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getBindings_BindingContexts() {
+ return (EAttribute)bindingsEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBindingContext() {
+ return bindingContextEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getBindingContext_Name() {
+ return (EAttribute)bindingContextEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getBindingContext_Description() {
+ return (EAttribute)bindingContextEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBindingContext_Children() {
+ return (EReference)bindingContextEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBindingTable() {
+ return bindingTableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getBindingTable_BindingContextId() {
+ return (EAttribute)bindingTableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBindingTable_Bindings() {
+ return (EReference)bindingTableEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EClass getCommand() {
return commandEClass;
}
@@ -1827,7 +1941,20 @@
v______________Commands_______________VEClass = createEClass(VCOMMANDS_V);
bindingContainerEClass = createEClass(BINDING_CONTAINER);
- createEReference(bindingContainerEClass, BINDING_CONTAINER__BINDINGS);
+ createEReference(bindingContainerEClass, BINDING_CONTAINER__BINDING_TABLES);
+ createEReference(bindingContainerEClass, BINDING_CONTAINER__ROOT_CONTEXT);
+
+ bindingsEClass = createEClass(BINDINGS);
+ createEAttribute(bindingsEClass, BINDINGS__BINDING_CONTEXTS);
+
+ bindingContextEClass = createEClass(BINDING_CONTEXT);
+ createEAttribute(bindingContextEClass, BINDING_CONTEXT__NAME);
+ createEAttribute(bindingContextEClass, BINDING_CONTEXT__DESCRIPTION);
+ createEReference(bindingContextEClass, BINDING_CONTEXT__CHILDREN);
+
+ bindingTableEClass = createEClass(BINDING_TABLE);
+ createEAttribute(bindingTableEClass, BINDING_TABLE__BINDING_CONTEXT_ID);
+ createEReference(bindingTableEClass, BINDING_TABLE__BINDINGS);
commandEClass = createEClass(COMMAND);
createEAttribute(commandEClass, COMMAND__COMMAND_NAME);
@@ -1979,14 +2106,16 @@
applicationEClass.getEGenericSuperTypes().add(g1);
g1 = createEGenericType(this.getPartDescriptorContainer());
applicationEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(this.getBindings());
+ applicationEClass.getEGenericSuperTypes().add(g1);
pscElementEClass.getESuperTypes().add(this.getUIElement());
partEClass.getESuperTypes().add(this.getContribution());
partEClass.getESuperTypes().add(this.getContext());
partEClass.getESuperTypes().add(this.getPSCElement());
partEClass.getESuperTypes().add(this.getUILabel());
partEClass.getESuperTypes().add(this.getHandlerContainer());
- partEClass.getESuperTypes().add(this.getBindingContainer());
partEClass.getESuperTypes().add(this.getDirtyable());
+ partEClass.getESuperTypes().add(this.getBindings());
inputPartEClass.getESuperTypes().add(this.getPart());
inputPartEClass.getESuperTypes().add(this.getInput());
partDescriptorEClass.getESuperTypes().add(this.getPart());
@@ -2012,14 +2141,16 @@
windowEClass.getEGenericSuperTypes().add(g1);
g1 = createEGenericType(this.getHandlerContainer());
windowEClass.getEGenericSuperTypes().add(g1);
- g1 = createEGenericType(this.getBindingContainer());
- windowEClass.getEGenericSuperTypes().add(g1);
g1 = createEGenericType(this.getPSCElement());
windowEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(this.getBindings());
+ windowEClass.getEGenericSuperTypes().add(g1);
modelComponentEClass.getESuperTypes().add(this.getPartDescriptorContainer());
modelComponentEClass.getESuperTypes().add(this.getApplicationElement());
modelComponentEClass.getESuperTypes().add(this.getHandlerContainer());
modelComponentEClass.getESuperTypes().add(this.getBindingContainer());
+ bindingContextEClass.getESuperTypes().add(this.getApplicationElement());
+ bindingTableEClass.getESuperTypes().add(this.getApplicationElement());
commandEClass.getESuperTypes().add(this.getApplicationElement());
commandParameterEClass.getESuperTypes().add(this.getApplicationElement());
handlerEClass.getESuperTypes().add(this.getContribution());
@@ -2204,7 +2335,20 @@
initEClass(v______________Commands_______________VEClass, MV______________Commands_______________V.class, "V______________Commands_______________V", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
initEClass(bindingContainerEClass, MBindingContainer.class, "BindingContainer", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
- initEReference(getBindingContainer_Bindings(), this.getKeyBinding(), null, "bindings", null, 0, -1, MBindingContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getBindingContainer_BindingTables(), this.getBindingTable(), null, "bindingTables", null, 0, -1, MBindingContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getBindingContainer_RootContext(), this.getBindingContext(), null, "rootContext", null, 0, 1, MBindingContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(bindingsEClass, MBindings.class, "Bindings", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getBindings_BindingContexts(), ecorePackage.getEString(), "bindingContexts", null, 0, -1, MBindings.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(bindingContextEClass, MBindingContext.class, "BindingContext", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getBindingContext_Name(), ecorePackage.getEString(), "name", null, 0, 1, MBindingContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getBindingContext_Description(), ecorePackage.getEString(), "description", null, 0, 1, MBindingContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getBindingContext_Children(), this.getBindingContext(), null, "children", null, 0, -1, MBindingContext.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(bindingTableEClass, MBindingTable.class, "BindingTable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getBindingTable_BindingContextId(), ecorePackage.getEString(), "bindingContextId", null, 1, 1, MBindingTable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getBindingTable_Bindings(), this.getKeyBinding(), null, "bindings", null, 0, -1, MBindingTable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
initEClass(commandEClass, MCommand.class, "Command", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
initEAttribute(getCommand_CommandName(), ecorePackage.getEString(), "commandName", null, 0, 1, MCommand.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/BindingContextImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/BindingContextImpl.java
new file mode 100644
index 0000000..22d42c6
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/BindingContextImpl.java
@@ -0,0 +1,282 @@
+/**
+ * Copyright (c) 2008 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.impl;
+
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.MApplicationPackage;
+import org.eclipse.e4.ui.model.application.MBindingContext;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Binding Context</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.e4.ui.model.application.impl.BindingContextImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.impl.BindingContextImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.impl.BindingContextImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BindingContextImpl extends ApplicationElementImpl implements MBindingContext {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DESCRIPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected String description = DESCRIPTION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getChildren() <em>Children</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getChildren()
+ * @generated
+ * @ordered
+ */
+ protected EList<MBindingContext> children;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BindingContextImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MApplicationPackage.Literals.BINDING_CONTEXT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MApplicationPackage.BINDING_CONTEXT__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MApplicationPackage.BINDING_CONTEXT__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<MBindingContext> getChildren() {
+ if (children == null) {
+ children = new EObjectContainmentEList<MBindingContext>(MBindingContext.class, this, MApplicationPackage.BINDING_CONTEXT__CHILDREN);
+ }
+ return children;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MApplicationPackage.BINDING_CONTEXT__CHILDREN:
+ return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MApplicationPackage.BINDING_CONTEXT__NAME:
+ return getName();
+ case MApplicationPackage.BINDING_CONTEXT__DESCRIPTION:
+ return getDescription();
+ case MApplicationPackage.BINDING_CONTEXT__CHILDREN:
+ return getChildren();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MApplicationPackage.BINDING_CONTEXT__NAME:
+ setName((String)newValue);
+ return;
+ case MApplicationPackage.BINDING_CONTEXT__DESCRIPTION:
+ setDescription((String)newValue);
+ return;
+ case MApplicationPackage.BINDING_CONTEXT__CHILDREN:
+ getChildren().clear();
+ getChildren().addAll((Collection<? extends MBindingContext>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MApplicationPackage.BINDING_CONTEXT__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case MApplicationPackage.BINDING_CONTEXT__DESCRIPTION:
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ case MApplicationPackage.BINDING_CONTEXT__CHILDREN:
+ getChildren().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MApplicationPackage.BINDING_CONTEXT__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case MApplicationPackage.BINDING_CONTEXT__DESCRIPTION:
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case MApplicationPackage.BINDING_CONTEXT__CHILDREN:
+ return children != null && !children.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: "); //$NON-NLS-1$
+ result.append(name);
+ result.append(", description: "); //$NON-NLS-1$
+ result.append(description);
+ result.append(')');
+ return result.toString();
+ }
+
+} //BindingContextImpl
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/BindingTableImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/BindingTableImpl.java
new file mode 100644
index 0000000..7f43725
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/BindingTableImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2008 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ */
+package org.eclipse.e4.ui.model.application.impl;
+
+import java.util.Collection;
+
+import org.eclipse.e4.ui.model.application.MApplicationPackage;
+import org.eclipse.e4.ui.model.application.MBindingTable;
+import org.eclipse.e4.ui.model.application.MKeyBinding;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Binding Table</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.e4.ui.model.application.impl.BindingTableImpl#getBindingContextId <em>Binding Context Id</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.impl.BindingTableImpl#getBindings <em>Bindings</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BindingTableImpl extends ApplicationElementImpl implements MBindingTable {
+ /**
+ * The default value of the '{@link #getBindingContextId() <em>Binding Context Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBindingContextId()
+ * @generated
+ * @ordered
+ */
+ protected static final String BINDING_CONTEXT_ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getBindingContextId() <em>Binding Context Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBindingContextId()
+ * @generated
+ * @ordered
+ */
+ protected String bindingContextId = BINDING_CONTEXT_ID_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBindings() <em>Bindings</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBindings()
+ * @generated
+ * @ordered
+ */
+ protected EList<MKeyBinding> bindings;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BindingTableImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return MApplicationPackage.Literals.BINDING_TABLE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getBindingContextId() {
+ return bindingContextId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBindingContextId(String newBindingContextId) {
+ String oldBindingContextId = bindingContextId;
+ bindingContextId = newBindingContextId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MApplicationPackage.BINDING_TABLE__BINDING_CONTEXT_ID, oldBindingContextId, bindingContextId));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<MKeyBinding> getBindings() {
+ if (bindings == null) {
+ bindings = new EObjectContainmentEList<MKeyBinding>(MKeyBinding.class, this, MApplicationPackage.BINDING_TABLE__BINDINGS);
+ }
+ return bindings;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case MApplicationPackage.BINDING_TABLE__BINDINGS:
+ return ((InternalEList<?>)getBindings()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case MApplicationPackage.BINDING_TABLE__BINDING_CONTEXT_ID:
+ return getBindingContextId();
+ case MApplicationPackage.BINDING_TABLE__BINDINGS:
+ return getBindings();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case MApplicationPackage.BINDING_TABLE__BINDING_CONTEXT_ID:
+ setBindingContextId((String)newValue);
+ return;
+ case MApplicationPackage.BINDING_TABLE__BINDINGS:
+ getBindings().clear();
+ getBindings().addAll((Collection<? extends MKeyBinding>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case MApplicationPackage.BINDING_TABLE__BINDING_CONTEXT_ID:
+ setBindingContextId(BINDING_CONTEXT_ID_EDEFAULT);
+ return;
+ case MApplicationPackage.BINDING_TABLE__BINDINGS:
+ getBindings().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case MApplicationPackage.BINDING_TABLE__BINDING_CONTEXT_ID:
+ return BINDING_CONTEXT_ID_EDEFAULT == null ? bindingContextId != null : !BINDING_CONTEXT_ID_EDEFAULT.equals(bindingContextId);
+ case MApplicationPackage.BINDING_TABLE__BINDINGS:
+ return bindings != null && !bindings.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (bindingContextId: "); //$NON-NLS-1$
+ result.append(bindingContextId);
+ result.append(')');
+ return result.toString();
+ }
+
+} //BindingTableImpl
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ModelComponentImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ModelComponentImpl.java
index 43400f0..81a6cc9 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ModelComponentImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/ModelComponentImpl.java
@@ -15,6 +15,8 @@
import org.eclipse.e4.ui.model.application.MApplicationElement;
import org.eclipse.e4.ui.model.application.MApplicationPackage;
import org.eclipse.e4.ui.model.application.MBindingContainer;
+import org.eclipse.e4.ui.model.application.MBindingContext;
+import org.eclipse.e4.ui.model.application.MBindingTable;
import org.eclipse.e4.ui.model.application.MCommand;
import org.eclipse.e4.ui.model.application.MHandler;
import org.eclipse.e4.ui.model.application.MHandlerContainer;
@@ -46,7 +48,8 @@
* <li>{@link org.eclipse.e4.ui.model.application.impl.ModelComponentImpl#getId <em>Id</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.ModelComponentImpl#getTags <em>Tags</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.ModelComponentImpl#getHandlers <em>Handlers</em>}</li>
- * <li>{@link org.eclipse.e4.ui.model.application.impl.ModelComponentImpl#getBindings <em>Bindings</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.impl.ModelComponentImpl#getBindingTables <em>Binding Tables</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.impl.ModelComponentImpl#getRootContext <em>Root Context</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.ModelComponentImpl#getPositionInParent <em>Position In Parent</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.ModelComponentImpl#getParentID <em>Parent ID</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.ModelComponentImpl#getChildren <em>Children</em>}</li>
@@ -99,14 +102,24 @@
protected EList<MHandler> handlers;
/**
- * The cached value of the '{@link #getBindings() <em>Bindings</em>}' containment reference list.
+ * The cached value of the '{@link #getBindingTables() <em>Binding Tables</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @see #getBindings()
+ * @see #getBindingTables()
* @generated
* @ordered
*/
- protected EList<MKeyBinding> bindings;
+ protected EList<MBindingTable> bindingTables;
+
+ /**
+ * The cached value of the '{@link #getRootContext() <em>Root Context</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRootContext()
+ * @generated
+ * @ordered
+ */
+ protected MBindingContext rootContext;
/**
* The default value of the '{@link #getPositionInParent() <em>Position In Parent</em>}' attribute.
@@ -323,11 +336,54 @@
* <!-- end-user-doc -->
* @generated
*/
- public EList<MKeyBinding> getBindings() {
- if (bindings == null) {
- bindings = new EObjectContainmentEList<MKeyBinding>(MKeyBinding.class, this, MApplicationPackage.MODEL_COMPONENT__BINDINGS);
+ public EList<MBindingTable> getBindingTables() {
+ if (bindingTables == null) {
+ bindingTables = new EObjectContainmentEList<MBindingTable>(MBindingTable.class, this, MApplicationPackage.MODEL_COMPONENT__BINDING_TABLES);
}
- return bindings;
+ return bindingTables;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MBindingContext getRootContext() {
+ return rootContext;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRootContext(MBindingContext newRootContext, NotificationChain msgs) {
+ MBindingContext oldRootContext = rootContext;
+ rootContext = newRootContext;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MApplicationPackage.MODEL_COMPONENT__ROOT_CONTEXT, oldRootContext, newRootContext);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRootContext(MBindingContext newRootContext) {
+ if (newRootContext != rootContext) {
+ NotificationChain msgs = null;
+ if (rootContext != null)
+ msgs = ((InternalEObject)rootContext).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MApplicationPackage.MODEL_COMPONENT__ROOT_CONTEXT, null, msgs);
+ if (newRootContext != null)
+ msgs = ((InternalEObject)newRootContext).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MApplicationPackage.MODEL_COMPONENT__ROOT_CONTEXT, null, msgs);
+ msgs = basicSetRootContext(newRootContext, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, MApplicationPackage.MODEL_COMPONENT__ROOT_CONTEXT, newRootContext, newRootContext));
}
/**
@@ -361,8 +417,10 @@
switch (featureID) {
case MApplicationPackage.MODEL_COMPONENT__HANDLERS:
return ((InternalEList<?>)getHandlers()).basicRemove(otherEnd, msgs);
- case MApplicationPackage.MODEL_COMPONENT__BINDINGS:
- return ((InternalEList<?>)getBindings()).basicRemove(otherEnd, msgs);
+ case MApplicationPackage.MODEL_COMPONENT__BINDING_TABLES:
+ return ((InternalEList<?>)getBindingTables()).basicRemove(otherEnd, msgs);
+ case MApplicationPackage.MODEL_COMPONENT__ROOT_CONTEXT:
+ return basicSetRootContext(null, msgs);
case MApplicationPackage.MODEL_COMPONENT__CHILDREN:
return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
case MApplicationPackage.MODEL_COMPONENT__COMMANDS:
@@ -385,8 +443,10 @@
return getTags();
case MApplicationPackage.MODEL_COMPONENT__HANDLERS:
return getHandlers();
- case MApplicationPackage.MODEL_COMPONENT__BINDINGS:
- return getBindings();
+ case MApplicationPackage.MODEL_COMPONENT__BINDING_TABLES:
+ return getBindingTables();
+ case MApplicationPackage.MODEL_COMPONENT__ROOT_CONTEXT:
+ return getRootContext();
case MApplicationPackage.MODEL_COMPONENT__POSITION_IN_PARENT:
return getPositionInParent();
case MApplicationPackage.MODEL_COMPONENT__PARENT_ID:
@@ -421,9 +481,12 @@
getHandlers().clear();
getHandlers().addAll((Collection<? extends MHandler>)newValue);
return;
- case MApplicationPackage.MODEL_COMPONENT__BINDINGS:
- getBindings().clear();
- getBindings().addAll((Collection<? extends MKeyBinding>)newValue);
+ case MApplicationPackage.MODEL_COMPONENT__BINDING_TABLES:
+ getBindingTables().clear();
+ getBindingTables().addAll((Collection<? extends MBindingTable>)newValue);
+ return;
+ case MApplicationPackage.MODEL_COMPONENT__ROOT_CONTEXT:
+ setRootContext((MBindingContext)newValue);
return;
case MApplicationPackage.MODEL_COMPONENT__POSITION_IN_PARENT:
setPositionInParent((String)newValue);
@@ -463,8 +526,11 @@
case MApplicationPackage.MODEL_COMPONENT__HANDLERS:
getHandlers().clear();
return;
- case MApplicationPackage.MODEL_COMPONENT__BINDINGS:
- getBindings().clear();
+ case MApplicationPackage.MODEL_COMPONENT__BINDING_TABLES:
+ getBindingTables().clear();
+ return;
+ case MApplicationPackage.MODEL_COMPONENT__ROOT_CONTEXT:
+ setRootContext((MBindingContext)null);
return;
case MApplicationPackage.MODEL_COMPONENT__POSITION_IN_PARENT:
setPositionInParent(POSITION_IN_PARENT_EDEFAULT);
@@ -499,8 +565,10 @@
return tags != null && !tags.isEmpty();
case MApplicationPackage.MODEL_COMPONENT__HANDLERS:
return handlers != null && !handlers.isEmpty();
- case MApplicationPackage.MODEL_COMPONENT__BINDINGS:
- return bindings != null && !bindings.isEmpty();
+ case MApplicationPackage.MODEL_COMPONENT__BINDING_TABLES:
+ return bindingTables != null && !bindingTables.isEmpty();
+ case MApplicationPackage.MODEL_COMPONENT__ROOT_CONTEXT:
+ return rootContext != null;
case MApplicationPackage.MODEL_COMPONENT__POSITION_IN_PARENT:
return POSITION_IN_PARENT_EDEFAULT == null ? positionInParent != null : !POSITION_IN_PARENT_EDEFAULT.equals(positionInParent);
case MApplicationPackage.MODEL_COMPONENT__PARENT_ID:
@@ -537,7 +605,8 @@
}
if (baseClass == MBindingContainer.class) {
switch (derivedFeatureID) {
- case MApplicationPackage.MODEL_COMPONENT__BINDINGS: return MApplicationPackage.BINDING_CONTAINER__BINDINGS;
+ case MApplicationPackage.MODEL_COMPONENT__BINDING_TABLES: return MApplicationPackage.BINDING_CONTAINER__BINDING_TABLES;
+ case MApplicationPackage.MODEL_COMPONENT__ROOT_CONTEXT: return MApplicationPackage.BINDING_CONTAINER__ROOT_CONTEXT;
default: return -1;
}
}
@@ -566,7 +635,8 @@
}
if (baseClass == MBindingContainer.class) {
switch (baseFeatureID) {
- case MApplicationPackage.BINDING_CONTAINER__BINDINGS: return MApplicationPackage.MODEL_COMPONENT__BINDINGS;
+ case MApplicationPackage.BINDING_CONTAINER__BINDING_TABLES: return MApplicationPackage.MODEL_COMPONENT__BINDING_TABLES;
+ case MApplicationPackage.BINDING_CONTAINER__ROOT_CONTEXT: return MApplicationPackage.MODEL_COMPONENT__ROOT_CONTEXT;
default: return -1;
}
}
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/PartImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/PartImpl.java
index 23b63ae..a1a66f2 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/PartImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/PartImpl.java
@@ -15,6 +15,7 @@
import org.eclipse.e4.core.services.context.IEclipseContext;
import org.eclipse.e4.ui.model.application.MApplicationPackage;
+import org.eclipse.e4.ui.model.application.MBindings;
import org.eclipse.e4.ui.model.application.MBindingContainer;
import org.eclipse.e4.ui.model.application.MContext;
import org.eclipse.e4.ui.model.application.MDirtyable;
@@ -69,8 +70,8 @@
* <li>{@link org.eclipse.e4.ui.model.application.impl.PartImpl#getIconURI <em>Icon URI</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.PartImpl#getTooltip <em>Tooltip</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.PartImpl#getHandlers <em>Handlers</em>}</li>
- * <li>{@link org.eclipse.e4.ui.model.application.impl.PartImpl#getBindings <em>Bindings</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.PartImpl#isDirty <em>Dirty</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.impl.PartImpl#getBindingContexts <em>Binding Contexts</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.PartImpl#getMenus <em>Menus</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.PartImpl#getToolbar <em>Toolbar</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.PartImpl#isCloseable <em>Closeable</em>}</li>
@@ -311,16 +312,6 @@
protected EList<MHandler> handlers;
/**
- * The cached value of the '{@link #getBindings() <em>Bindings</em>}' containment reference list.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see #getBindings()
- * @generated
- * @ordered
- */
- protected EList<MKeyBinding> bindings;
-
- /**
* The default value of the '{@link #isDirty() <em>Dirty</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -341,6 +332,16 @@
protected boolean dirty = DIRTY_EDEFAULT;
/**
+ * The cached value of the '{@link #getBindingContexts() <em>Binding Contexts</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBindingContexts()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> bindingContexts;
+
+ /**
* The cached value of the '{@link #getMenus() <em>Menus</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -692,18 +693,6 @@
* <!-- end-user-doc -->
* @generated
*/
- public EList<MKeyBinding> getBindings() {
- if (bindings == null) {
- bindings = new EObjectContainmentEList<MKeyBinding>(MKeyBinding.class, this, MApplicationPackage.PART__BINDINGS);
- }
- return bindings;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
public boolean isDirty() {
return dirty;
}
@@ -725,6 +714,18 @@
* <!-- end-user-doc -->
* @generated
*/
+ public EList<String> getBindingContexts() {
+ if (bindingContexts == null) {
+ bindingContexts = new EDataTypeUniqueEList<String>(String.class, this, MApplicationPackage.PART__BINDING_CONTEXTS);
+ }
+ return bindingContexts;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public EList<MMenu> getMenus() {
if (menus == null) {
menus = new EObjectContainmentEList<MMenu>(MMenu.class, this, MApplicationPackage.PART__MENUS);
@@ -827,8 +828,6 @@
return basicSetParent(null, msgs);
case MApplicationPackage.PART__HANDLERS:
return ((InternalEList<?>)getHandlers()).basicRemove(otherEnd, msgs);
- case MApplicationPackage.PART__BINDINGS:
- return ((InternalEList<?>)getBindings()).basicRemove(otherEnd, msgs);
case MApplicationPackage.PART__MENUS:
return ((InternalEList<?>)getMenus()).basicRemove(otherEnd, msgs);
case MApplicationPackage.PART__TOOLBAR:
@@ -888,10 +887,10 @@
return getTooltip();
case MApplicationPackage.PART__HANDLERS:
return getHandlers();
- case MApplicationPackage.PART__BINDINGS:
- return getBindings();
case MApplicationPackage.PART__DIRTY:
return isDirty();
+ case MApplicationPackage.PART__BINDING_CONTEXTS:
+ return getBindingContexts();
case MApplicationPackage.PART__MENUS:
return getMenus();
case MApplicationPackage.PART__TOOLBAR:
@@ -955,13 +954,13 @@
getHandlers().clear();
getHandlers().addAll((Collection<? extends MHandler>)newValue);
return;
- case MApplicationPackage.PART__BINDINGS:
- getBindings().clear();
- getBindings().addAll((Collection<? extends MKeyBinding>)newValue);
- return;
case MApplicationPackage.PART__DIRTY:
setDirty((Boolean)newValue);
return;
+ case MApplicationPackage.PART__BINDING_CONTEXTS:
+ getBindingContexts().clear();
+ getBindingContexts().addAll((Collection<? extends String>)newValue);
+ return;
case MApplicationPackage.PART__MENUS:
getMenus().clear();
getMenus().addAll((Collection<? extends MMenu>)newValue);
@@ -1026,12 +1025,12 @@
case MApplicationPackage.PART__HANDLERS:
getHandlers().clear();
return;
- case MApplicationPackage.PART__BINDINGS:
- getBindings().clear();
- return;
case MApplicationPackage.PART__DIRTY:
setDirty(DIRTY_EDEFAULT);
return;
+ case MApplicationPackage.PART__BINDING_CONTEXTS:
+ getBindingContexts().clear();
+ return;
case MApplicationPackage.PART__MENUS:
getMenus().clear();
return;
@@ -1081,10 +1080,10 @@
return TOOLTIP_EDEFAULT == null ? tooltip != null : !TOOLTIP_EDEFAULT.equals(tooltip);
case MApplicationPackage.PART__HANDLERS:
return handlers != null && !handlers.isEmpty();
- case MApplicationPackage.PART__BINDINGS:
- return bindings != null && !bindings.isEmpty();
case MApplicationPackage.PART__DIRTY:
return dirty != DIRTY_EDEFAULT;
+ case MApplicationPackage.PART__BINDING_CONTEXTS:
+ return bindingContexts != null && !bindingContexts.isEmpty();
case MApplicationPackage.PART__MENUS:
return menus != null && !menus.isEmpty();
case MApplicationPackage.PART__TOOLBAR:
@@ -1141,18 +1140,18 @@
default: return -1;
}
}
- if (baseClass == MBindingContainer.class) {
- switch (derivedFeatureID) {
- case MApplicationPackage.PART__BINDINGS: return MApplicationPackage.BINDING_CONTAINER__BINDINGS;
- default: return -1;
- }
- }
if (baseClass == MDirtyable.class) {
switch (derivedFeatureID) {
case MApplicationPackage.PART__DIRTY: return MApplicationPackage.DIRTYABLE__DIRTY;
default: return -1;
}
}
+ if (baseClass == MBindings.class) {
+ switch (derivedFeatureID) {
+ case MApplicationPackage.PART__BINDING_CONTEXTS: return MApplicationPackage.BINDINGS__BINDING_CONTEXTS;
+ default: return -1;
+ }
+ }
return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
}
@@ -1202,18 +1201,18 @@
default: return -1;
}
}
- if (baseClass == MBindingContainer.class) {
- switch (baseFeatureID) {
- case MApplicationPackage.BINDING_CONTAINER__BINDINGS: return MApplicationPackage.PART__BINDINGS;
- default: return -1;
- }
- }
if (baseClass == MDirtyable.class) {
switch (baseFeatureID) {
case MApplicationPackage.DIRTYABLE__DIRTY: return MApplicationPackage.PART__DIRTY;
default: return -1;
}
}
+ if (baseClass == MBindings.class) {
+ switch (baseFeatureID) {
+ case MApplicationPackage.BINDINGS__BINDING_CONTEXTS: return MApplicationPackage.PART__BINDING_CONTEXTS;
+ default: return -1;
+ }
+ }
return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
}
@@ -1251,6 +1250,8 @@
result.append(tooltip);
result.append(", dirty: "); //$NON-NLS-1$
result.append(dirty);
+ result.append(", bindingContexts: "); //$NON-NLS-1$
+ result.append(bindingContexts);
result.append(", closeable: "); //$NON-NLS-1$
result.append(closeable);
result.append(')');
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/WindowImpl.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/WindowImpl.java
index 348d2ad..ce72a00 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/WindowImpl.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/impl/WindowImpl.java
@@ -15,6 +15,7 @@
import org.eclipse.e4.core.services.context.IEclipseContext;
import org.eclipse.e4.ui.model.application.MApplicationPackage;
+import org.eclipse.e4.ui.model.application.MBindings;
import org.eclipse.e4.ui.model.application.MBindingContainer;
import org.eclipse.e4.ui.model.application.MContext;
import org.eclipse.e4.ui.model.application.MHandler;
@@ -56,7 +57,7 @@
* <li>{@link org.eclipse.e4.ui.model.application.impl.WindowImpl#getVariables <em>Variables</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.WindowImpl#getProperties <em>Properties</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.WindowImpl#getHandlers <em>Handlers</em>}</li>
- * <li>{@link org.eclipse.e4.ui.model.application.impl.WindowImpl#getBindings <em>Bindings</em>}</li>
+ * <li>{@link org.eclipse.e4.ui.model.application.impl.WindowImpl#getBindingContexts <em>Binding Contexts</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.WindowImpl#getMainMenu <em>Main Menu</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.WindowImpl#getX <em>X</em>}</li>
* <li>{@link org.eclipse.e4.ui.model.application.impl.WindowImpl#getY <em>Y</em>}</li>
@@ -179,14 +180,14 @@
protected EList<MHandler> handlers;
/**
- * The cached value of the '{@link #getBindings() <em>Bindings</em>}' containment reference list.
+ * The cached value of the '{@link #getBindingContexts() <em>Binding Contexts</em>}' attribute list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @see #getBindings()
+ * @see #getBindingContexts()
* @generated
* @ordered
*/
- protected EList<MKeyBinding> bindings;
+ protected EList<String> bindingContexts;
/**
* The cached value of the '{@link #getMainMenu() <em>Main Menu</em>}' containment reference.
@@ -422,11 +423,11 @@
* <!-- end-user-doc -->
* @generated
*/
- public EList<MKeyBinding> getBindings() {
- if (bindings == null) {
- bindings = new EObjectContainmentEList<MKeyBinding>(MKeyBinding.class, this, MApplicationPackage.WINDOW__BINDINGS);
+ public EList<String> getBindingContexts() {
+ if (bindingContexts == null) {
+ bindingContexts = new EDataTypeUniqueEList<String>(String.class, this, MApplicationPackage.WINDOW__BINDING_CONTEXTS);
}
- return bindings;
+ return bindingContexts;
}
/**
@@ -568,8 +569,6 @@
return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
case MApplicationPackage.WINDOW__HANDLERS:
return ((InternalEList<?>)getHandlers()).basicRemove(otherEnd, msgs);
- case MApplicationPackage.WINDOW__BINDINGS:
- return ((InternalEList<?>)getBindings()).basicRemove(otherEnd, msgs);
case MApplicationPackage.WINDOW__MAIN_MENU:
return basicSetMainMenu(null, msgs);
}
@@ -599,8 +598,8 @@
else return getProperties().map();
case MApplicationPackage.WINDOW__HANDLERS:
return getHandlers();
- case MApplicationPackage.WINDOW__BINDINGS:
- return getBindings();
+ case MApplicationPackage.WINDOW__BINDING_CONTEXTS:
+ return getBindingContexts();
case MApplicationPackage.WINDOW__MAIN_MENU:
return getMainMenu();
case MApplicationPackage.WINDOW__X:
@@ -647,9 +646,9 @@
getHandlers().clear();
getHandlers().addAll((Collection<? extends MHandler>)newValue);
return;
- case MApplicationPackage.WINDOW__BINDINGS:
- getBindings().clear();
- getBindings().addAll((Collection<? extends MKeyBinding>)newValue);
+ case MApplicationPackage.WINDOW__BINDING_CONTEXTS:
+ getBindingContexts().clear();
+ getBindingContexts().addAll((Collection<? extends String>)newValue);
return;
case MApplicationPackage.WINDOW__MAIN_MENU:
setMainMenu((MMenu)newValue);
@@ -699,8 +698,8 @@
case MApplicationPackage.WINDOW__HANDLERS:
getHandlers().clear();
return;
- case MApplicationPackage.WINDOW__BINDINGS:
- getBindings().clear();
+ case MApplicationPackage.WINDOW__BINDING_CONTEXTS:
+ getBindingContexts().clear();
return;
case MApplicationPackage.WINDOW__MAIN_MENU:
setMainMenu((MMenu)null);
@@ -743,8 +742,8 @@
return properties != null && !properties.isEmpty();
case MApplicationPackage.WINDOW__HANDLERS:
return handlers != null && !handlers.isEmpty();
- case MApplicationPackage.WINDOW__BINDINGS:
- return bindings != null && !bindings.isEmpty();
+ case MApplicationPackage.WINDOW__BINDING_CONTEXTS:
+ return bindingContexts != null && !bindingContexts.isEmpty();
case MApplicationPackage.WINDOW__MAIN_MENU:
return mainMenu != null;
case MApplicationPackage.WINDOW__X:
@@ -788,14 +787,14 @@
default: return -1;
}
}
- if (baseClass == MBindingContainer.class) {
+ if (baseClass == MPSCElement.class) {
switch (derivedFeatureID) {
- case MApplicationPackage.WINDOW__BINDINGS: return MApplicationPackage.BINDING_CONTAINER__BINDINGS;
default: return -1;
}
}
- if (baseClass == MPSCElement.class) {
+ if (baseClass == MBindings.class) {
switch (derivedFeatureID) {
+ case MApplicationPackage.WINDOW__BINDING_CONTEXTS: return MApplicationPackage.BINDINGS__BINDING_CONTEXTS;
default: return -1;
}
}
@@ -831,14 +830,14 @@
default: return -1;
}
}
- if (baseClass == MBindingContainer.class) {
+ if (baseClass == MPSCElement.class) {
switch (baseFeatureID) {
- case MApplicationPackage.BINDING_CONTAINER__BINDINGS: return MApplicationPackage.WINDOW__BINDINGS;
default: return -1;
}
}
- if (baseClass == MPSCElement.class) {
+ if (baseClass == MBindings.class) {
switch (baseFeatureID) {
+ case MApplicationPackage.BINDINGS__BINDING_CONTEXTS: return MApplicationPackage.WINDOW__BINDING_CONTEXTS;
default: return -1;
}
}
@@ -865,6 +864,8 @@
result.append(context);
result.append(", variables: "); //$NON-NLS-1$
result.append(variables);
+ result.append(", bindingContexts: "); //$NON-NLS-1$
+ result.append(bindingContexts);
result.append(", x: "); //$NON-NLS-1$
result.append(x);
result.append(", y: "); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationAdapterFactory.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationAdapterFactory.java
index a10f2ad..2a0d8b5 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationAdapterFactory.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationAdapterFactory.java
@@ -221,6 +221,18 @@
return createBindingContainerAdapter();
}
@Override
+ public Adapter caseBindings(MBindings object) {
+ return createBindingsAdapter();
+ }
+ @Override
+ public Adapter caseBindingContext(MBindingContext object) {
+ return createBindingContextAdapter();
+ }
+ @Override
+ public Adapter caseBindingTable(MBindingTable object) {
+ return createBindingTableAdapter();
+ }
+ @Override
public Adapter caseCommand(MCommand object) {
return createCommandAdapter();
}
@@ -807,6 +819,48 @@
}
/**
+ * Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.MBindings <em>Bindings</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.MBindings
+ * @generated
+ */
+ public Adapter createBindingsAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.MBindingContext <em>Binding Context</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.MBindingContext
+ * @generated
+ */
+ public Adapter createBindingContextAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.MBindingTable <em>Binding Table</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.e4.ui.model.application.MBindingTable
+ * @generated
+ */
+ public Adapter createBindingTableAdapter() {
+ return null;
+ }
+
+ /**
* Creates a new adapter for an object of class '{@link org.eclipse.e4.ui.model.application.MCommand <em>Command</em>}'.
* <!-- begin-user-doc -->
* This default implementation returns null so that we can easily ignore cases;
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationSwitch.java b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationSwitch.java
index 8a00cff..9406615 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationSwitch.java
+++ b/bundles/org.eclipse.e4.ui.model.workbench/src/org/eclipse/e4/ui/model/application/util/ApplicationSwitch.java
@@ -283,6 +283,7 @@
if (result == null) result = caseHandlerContainer(application);
if (result == null) result = caseBindingContainer(application);
if (result == null) result = casePartDescriptorContainer(application);
+ if (result == null) result = caseBindings(application);
if (result == null) result = caseUIElement(application);
if (result == null) result = caseApplicationElement(application);
if (result == null) result = defaultCase(theEObject);
@@ -304,8 +305,8 @@
if (result == null) result = casePSCElement(part);
if (result == null) result = caseUILabel(part);
if (result == null) result = caseHandlerContainer(part);
- if (result == null) result = caseBindingContainer(part);
if (result == null) result = caseDirtyable(part);
+ if (result == null) result = caseBindings(part);
if (result == null) result = caseUIElement(part);
if (result == null) result = caseApplicationElement(part);
if (result == null) result = defaultCase(theEObject);
@@ -321,8 +322,8 @@
if (result == null) result = casePSCElement(inputPart);
if (result == null) result = caseUILabel(inputPart);
if (result == null) result = caseHandlerContainer(inputPart);
- if (result == null) result = caseBindingContainer(inputPart);
if (result == null) result = caseDirtyable(inputPart);
+ if (result == null) result = caseBindings(inputPart);
if (result == null) result = caseUIElement(inputPart);
if (result == null) result = caseApplicationElement(inputPart);
if (result == null) result = defaultCase(theEObject);
@@ -337,8 +338,8 @@
if (result == null) result = casePSCElement(partDescriptor);
if (result == null) result = caseUILabel(partDescriptor);
if (result == null) result = caseHandlerContainer(partDescriptor);
- if (result == null) result = caseBindingContainer(partDescriptor);
if (result == null) result = caseDirtyable(partDescriptor);
+ if (result == null) result = caseBindings(partDescriptor);
if (result == null) result = caseUIElement(partDescriptor);
if (result == null) result = caseApplicationElement(partDescriptor);
if (result == null) result = defaultCase(theEObject);
@@ -379,8 +380,8 @@
if (result == null) result = caseUILabel(window);
if (result == null) result = caseContext(window);
if (result == null) result = caseHandlerContainer(window);
- if (result == null) result = caseBindingContainer(window);
if (result == null) result = casePSCElement(window);
+ if (result == null) result = caseBindings(window);
if (result == null) result = caseUIElement(window);
if (result == null) result = caseApplicationElement(window);
if (result == null) result = defaultCase(theEObject);
@@ -414,6 +415,26 @@
if (result == null) result = defaultCase(theEObject);
return result;
}
+ case MApplicationPackage.BINDINGS: {
+ MBindings bindings = (MBindings)theEObject;
+ T1 result = caseBindings(bindings);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case MApplicationPackage.BINDING_CONTEXT: {
+ MBindingContext bindingContext = (MBindingContext)theEObject;
+ T1 result = caseBindingContext(bindingContext);
+ if (result == null) result = caseApplicationElement(bindingContext);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case MApplicationPackage.BINDING_TABLE: {
+ MBindingTable bindingTable = (MBindingTable)theEObject;
+ T1 result = caseBindingTable(bindingTable);
+ if (result == null) result = caseApplicationElement(bindingTable);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
case MApplicationPackage.COMMAND: {
MCommand command = (MCommand)theEObject;
T1 result = caseCommand(command);
@@ -1115,6 +1136,51 @@
}
/**
+ * Returns the result of interpreting the object as an instance of '<em>Bindings</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Bindings</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseBindings(MBindings object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Binding Context</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Binding Context</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseBindingContext(MBindingContext object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Binding Table</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Binding Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseBindingTable(MBindingTable object) {
+ return null;
+ }
+
+ /**
* Returns the result of interpreting the object as an instance of '<em>Command</em>'.
* <!-- begin-user-doc -->
* This implementation returns null;
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/modeling/ModelReconciler.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/modeling/ModelReconciler.java
index 441e84a..d5424b2 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/modeling/ModelReconciler.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/modeling/ModelReconciler.java
@@ -203,10 +203,22 @@
.getTrimContainer_Side().getName();
/**
- * Attribute defined by MBindingContainers (value is <code>bindings</code>).
+ * Attribute defined by MBindingContainers (value is <code>rootContext</code>).
*/
- public static final String BINDINGCONTAINER_BINDINGS_ATTNAME = MApplicationPackage.eINSTANCE
- .getBindingContainer_Bindings().getName();
+ public static final String BINDINGCONTAINER_ROOTCONTEXT_ATTNAME = MApplicationPackage.eINSTANCE
+ .getBindingContainer_RootContext().getName();
+
+ /**
+ * Attribute defined by MBindingContainers (value is <code>bindingTables</code>).
+ */
+ public static final String BINDINGCONTAINER_BINDINGTABLES_ATTNAME = MApplicationPackage.eINSTANCE
+ .getBindingContainer_BindingTables().getName();
+
+ /**
+ * Attribute defined by MBindingTables (value is <code>bindings</code>).
+ */
+ public static final String BINDINGTABLES_BINDINGS_ATTNAME = MApplicationPackage.eINSTANCE
+ .getBindingTable_Bindings().getName();
/**
* Attribute defined by MHandlers (value is <code>command</code>).
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/E4CommandProcessor.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/E4CommandProcessor.java
index cd3deb2..ef0981c 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/E4CommandProcessor.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/E4CommandProcessor.java
@@ -11,16 +11,33 @@
package org.eclipse.e4.workbench.ui.internal;
+import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.eclipse.core.commands.Category;
import org.eclipse.core.commands.IParameter;
+import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.commands.contexts.Context;
+import org.eclipse.core.commands.contexts.ContextManager;
import org.eclipse.e4.core.commands.ECommandService;
import org.eclipse.e4.core.services.context.IEclipseContext;
+import org.eclipse.e4.core.services.context.spi.ContextInjectionFactory;
+import org.eclipse.e4.ui.bindings.EBindingService;
+import org.eclipse.e4.ui.bindings.internal.BindingTable;
+import org.eclipse.e4.ui.bindings.internal.BindingTableManager;
import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.MBindingContainer;
+import org.eclipse.e4.ui.model.application.MBindingContext;
+import org.eclipse.e4.ui.model.application.MBindingTable;
import org.eclipse.e4.ui.model.application.MCommand;
import org.eclipse.e4.ui.model.application.MCommandParameter;
+import org.eclipse.e4.ui.model.application.MKeyBinding;
+import org.eclipse.e4.ui.model.application.MParameter;
import org.eclipse.emf.common.util.EList;
+import org.eclipse.jface.bindings.Binding;
+import org.eclipse.jface.bindings.TriggerSequence;
/**
*
@@ -28,7 +45,7 @@
public class E4CommandProcessor {
public static void processCommands(IEclipseContext context, List<MCommand> commands) {
// fill in commands
- Activator.trace(Policy.DEBUG_CMDS, "Initialize service from model", null); //$NON-NLS-1$
+ Activator.trace(Policy.DEBUG_CMDS, "Initialize commands from model", null); //$NON-NLS-1$
ECommandService cs = (ECommandService) context.get(ECommandService.class.getName());
Category cat = cs
.defineCategory(MApplication.class.getName(), "Application Category", null); //$NON-NLS-1$
@@ -49,4 +66,72 @@
}
}
+
+ public static void processBindings(IEclipseContext context, MBindingContainer bindingContainer) {
+ Activator.trace(Policy.DEBUG_CMDS, "Initialize binding tables from model", null); //$NON-NLS-1$
+ MBindingContext root = bindingContainer.getRootContext();
+ if (root == null) {
+ return;
+ }
+ ContextManager manager = (ContextManager) context.get(ContextManager.class.getName());
+ defineContexts(null, root, manager);
+ BindingTableManager bindingTables;
+ try {
+ bindingTables = (BindingTableManager) ContextInjectionFactory.make(
+ BindingTableManager.class, context);
+ } catch (InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ return;
+ } catch (InstantiationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ return;
+ }
+ context.set(BindingTableManager.class.getName(), bindingTables);
+ for (MBindingTable bt : bindingContainer.getBindingTables()) {
+ Context c = manager.getContext(bt.getBindingContextId());
+ defineBindingTable(context, c, bindingTables, bt);
+ }
+ }
+
+ private static void defineBindingTable(IEclipseContext context, Context bindingContext,
+ BindingTableManager manager, MBindingTable bt) {
+ BindingTable table = new BindingTable(bindingContext);
+ manager.addTable(table);
+ ECommandService cs = (ECommandService) context.get(ECommandService.class.getName());
+ EBindingService bs = (EBindingService) context.get(EBindingService.class.getName());
+ EList<MKeyBinding> bindings = bt.getBindings();
+ for (MKeyBinding binding : bindings) {
+ Map<String, Object> parameters = null;
+ EList<MParameter> modelParms = binding.getParameters();
+ if (modelParms != null && !modelParms.isEmpty()) {
+ parameters = new HashMap<String, Object>();
+ for (MParameter mParm : modelParms) {
+ parameters.put(mParm.getTag(), mParm.getValue());
+ }
+ }
+ ParameterizedCommand cmd = cs.createCommand(binding.getCommand().getId(), parameters);
+ TriggerSequence sequence = bs.createSequence(binding.getKeySequence());
+ if (cmd == null || sequence == null) {
+ System.err.println("Failed to handle binding: " + binding); //$NON-NLS-1$
+ } else {
+ Binding keyBinding = bs.createBinding(sequence, cmd,
+ "org.eclipse.ui.defaultAcceleratorConfiguration", bindingContext.getId()); //$NON-NLS-1$
+ table.addBinding(keyBinding);
+ }
+ }
+ }
+
+ private static void defineContexts(MBindingContext parent, MBindingContext current,
+ ContextManager manager) {
+ Context context = manager.getContext(current.getId());
+ if (!context.isDefined()) {
+ context.define(current.getName(), current.getDescription(), parent == null ? null
+ : parent.getId());
+ }
+ for (MBindingContext child : current.getChildren()) {
+ defineContexts(current, child, manager);
+ }
+ }
}
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/E4Workbench.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/E4Workbench.java
index 88142dd..1c42a63 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/E4Workbench.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/E4Workbench.java
@@ -11,14 +11,10 @@
******************************************************************************/
package org.eclipse.e4.workbench.ui.internal;
-import java.util.HashMap;
import java.util.Iterator;
-import java.util.Map;
-import org.eclipse.core.commands.ParameterizedCommand;
import org.eclipse.core.commands.contexts.ContextManager;
import org.eclipse.core.runtime.IAdapterManager;
import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.e4.core.commands.ECommandService;
import org.eclipse.e4.core.commands.EHandlerService;
import org.eclipse.e4.core.services.IContributionFactory;
import org.eclipse.e4.core.services.Logger;
@@ -29,19 +25,17 @@
import org.eclipse.e4.core.services.context.spi.ContextFunction;
import org.eclipse.e4.core.services.context.spi.ContextInjectionFactory;
import org.eclipse.e4.core.services.context.spi.IContextConstants;
-import org.eclipse.e4.ui.bindings.EBindingService;
import org.eclipse.e4.ui.internal.services.ActiveContextsFunction;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.MApplicationElement;
-import org.eclipse.e4.ui.model.application.MBindingContainer;
+import org.eclipse.e4.ui.model.application.MBindings;
import org.eclipse.e4.ui.model.application.MContext;
import org.eclipse.e4.ui.model.application.MElementContainer;
import org.eclipse.e4.ui.model.application.MHandler;
import org.eclipse.e4.ui.model.application.MHandlerContainer;
-import org.eclipse.e4.ui.model.application.MKeyBinding;
-import org.eclipse.e4.ui.model.application.MParameter;
import org.eclipse.e4.ui.model.application.MPart;
import org.eclipse.e4.ui.model.application.MUIElement;
+import org.eclipse.e4.ui.services.EContextService;
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.e4.ui.services.IStylingEngine;
import org.eclipse.e4.workbench.ui.IExceptionHandler;
@@ -49,7 +43,6 @@
import org.eclipse.e4.workbench.ui.IWorkbench;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.common.util.EList;
-import org.eclipse.jface.bindings.TriggerSequence;
public class E4Workbench implements IWorkbench {
public static final String LOCAL_ACTIVE_SHELL = "localActiveShell"; //$NON-NLS-1$
@@ -112,6 +105,7 @@
Activator.trace(Policy.DEBUG_WORKBENCH, "init() workbench", null); //$NON-NLS-1$
E4CommandProcessor.processCommands(appElement.getContext(), appElement.getCommands());
+ E4CommandProcessor.processBindings(appElement.getContext(), appElement);
// Do a top level processHierarchy for the application?
processHierarchy(appElement);
@@ -237,31 +231,15 @@
}
}
}
- if (me instanceof MBindingContainer) {
+ if (me instanceof MBindings) {
MContext contextModel = (MContext) me;
- MBindingContainer container = (MBindingContainer) me;
+ MBindings container = (MBindings) me;
+ EList<String> bindingContexts = container.getBindingContexts();
IEclipseContext context = contextModel.getContext();
- if (context != null) {
- ECommandService cs = (ECommandService) context.get(ECommandService.class.getName());
- EBindingService bs = (EBindingService) context.get(EBindingService.class.getName());
- EList<MKeyBinding> bindings = container.getBindings();
- for (MKeyBinding binding : bindings) {
- Map<String, Object> parameters = null;
- EList<MParameter> modelParms = binding.getParameters();
- if (modelParms != null && !modelParms.isEmpty()) {
- parameters = new HashMap<String, Object>();
- for (MParameter mParm : modelParms) {
- parameters.put(mParm.getTag(), mParm.getValue());
- }
- }
- ParameterizedCommand cmd = cs.createCommand(binding.getCommand().getId(),
- parameters);
- TriggerSequence sequence = bs.createSequence(binding.getKeySequence());
- if (cmd == null || sequence == null) {
- System.err.println("Failed to handle binding: " + binding); //$NON-NLS-1$
- } else {
- bs.activateBinding(sequence, cmd);
- }
+ if (context != null && !bindingContexts.isEmpty()) {
+ EContextService cs = (EContextService) context.get(EContextService.class.getName());
+ for (String id : bindingContexts) {
+ cs.activateContext(id);
}
}
}
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/XMLModelReconciler.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/XMLModelReconciler.java
index e2e8b51..1fbcf0d 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/XMLModelReconciler.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/XMLModelReconciler.java
@@ -27,6 +27,7 @@
import org.eclipse.e4.ui.model.application.MApplicationElement;
import org.eclipse.e4.ui.model.application.MApplicationPackage;
import org.eclipse.e4.ui.model.application.MBindingContainer;
+import org.eclipse.e4.ui.model.application.MBindingTable;
import org.eclipse.e4.ui.model.application.MCommand;
import org.eclipse.e4.ui.model.application.MContext;
import org.eclipse.e4.ui.model.application.MContribution;
@@ -176,8 +177,12 @@
return MApplicationPackage.eINSTANCE.getCommand_Description();
} else if (featureName.equals(KEYSEQUENCE_KEYSEQUENCE_ATTNAME)) {
return MApplicationPackage.eINSTANCE.getKeySequence_KeySequence();
- } else if (featureName.equals(BINDINGCONTAINER_BINDINGS_ATTNAME)) {
- return MApplicationPackage.eINSTANCE.getBindingContainer_Bindings();
+ } else if (featureName.equals(BINDINGCONTAINER_BINDINGTABLES_ATTNAME)) {
+ return MApplicationPackage.eINSTANCE.getBindingContainer_BindingTables();
+ } else if (featureName.equals(BINDINGCONTAINER_ROOTCONTEXT_ATTNAME)) {
+ return MApplicationPackage.eINSTANCE.getBindingContainer_RootContext();
+ } else if (featureName.equals(BINDINGTABLES_BINDINGS_ATTNAME)) {
+ return MApplicationPackage.eINSTANCE.getBindingTable_Bindings();
} else if (featureName.equals(HANDLER_COMMAND_ATTNAME)
|| featureName.equals(KEYBINDING_COMMAND_ATTNAME)
|| featureName.equals(HANDLEDITEM_COMMAND_ATTNAME)) {
@@ -287,7 +292,15 @@
}
if (object instanceof MBindingContainer) {
- for (MKeyBinding keyBinding : ((MBindingContainer) object).getBindings()) {
+ for (MBindingTable bindingTable : ((MBindingContainer) object).getBindingTables()) {
+ if (constructDeltas(deltas, references, (EObject) bindingTable, element, id)) {
+ return true;
+ }
+ }
+ }
+
+ if (object instanceof MBindingTable) {
+ for (MKeyBinding keyBinding : ((MBindingTable) object).getBindings()) {
if (constructDeltas(deltas, references, (EObject) keyBinding, element, id)) {
return true;
}
@@ -972,6 +985,37 @@
}
}
+ if (reference instanceof MBindingTable) {
+ EMap<EObject, EList<FeatureChange>> objectChanges = changeDescription
+ .getObjectChanges();
+
+ boolean bindingTablesChanged = false;
+
+ for (Entry<EObject, EList<FeatureChange>> entry : objectChanges.entrySet()) {
+ EObject key = entry.getKey();
+ if (key == rootObject) {
+ for (FeatureChange change : entry.getValue()) {
+ if (change.getFeatureName().equals(BINDINGCONTAINER_BINDINGTABLES_ATTNAME)) {
+ List<?> commands = (List<?>) change.getValue();
+ for (Object command : commands) {
+ if (command == reference) {
+ return key;
+ }
+ }
+
+ bindingTablesChanged = true;
+ break;
+ }
+ }
+ break;
+ }
+ }
+
+ if (!bindingTablesChanged) {
+ return reference.eContainer();
+ }
+ }
+
if (reference instanceof MHandler) {
EMap<EObject, EList<FeatureChange>> objectChanges = changeDescription
.getObjectChanges();
@@ -1010,9 +1054,9 @@
for (Entry<EObject, EList<FeatureChange>> entry : objectChanges.entrySet()) {
EObject key = entry.getKey();
- if (key instanceof MBindingContainer) {
+ if (key instanceof MBindingTable) {
for (FeatureChange change : entry.getValue()) {
- if (change.getFeatureName().equals(BINDINGCONTAINER_BINDINGS_ATTNAME)) {
+ if (change.getFeatureName().equals(BINDINGTABLES_BINDINGS_ATTNAME)) {
List<?> commands = (List<?>) change.getValue();
for (Object command : commands) {
if (command == reference) {
@@ -1485,7 +1529,7 @@
// an ElementContainer has multiple children
return featureName.equals(ELEMENTCONTAINER_CHILDREN_ATTNAME) ||
// a BindingContainer has multiple bindings
- featureName.equals(BINDINGCONTAINER_BINDINGS_ATTNAME) ||
+ featureName.equals(BINDINGTABLES_BINDINGS_ATTNAME) ||
// a Part has multiple menus
featureName.equals(PART_MENUS_ATTNAME) ||
// an Application has multiple commands
diff --git a/examples/org.eclipse.e4.demo.contacts/Application.e4xmi b/examples/org.eclipse.e4.demo.contacts/Application.e4xmi
index e046c02..d5624ac 100644
--- a/examples/org.eclipse.e4.demo.contacts/Application.e4xmi
+++ b/examples/org.eclipse.e4.demo.contacts/Application.e4xmi
@@ -37,14 +37,21 @@
<handlers xmi:id="_SeXUGe8EEd6FC9cDb6iV7g" id="_SeXUGe8EEd6FC9cDb6iV7g" URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse.e4.demo.contacts.handlers.DeleteContactHandler" command="contacts.delete"/>
<handlers xmi:id="_SeXUGu8EEd6FC9cDb6iV7g" id="_SeXUGu8EEd6FC9cDb6iV7g" URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse.e4.demo.contacts.handlers.DarkThemeHandler" command="contacts.darkTheme"/>
<handlers xmi:id="_SeXUG-8EEd6FC9cDb6iV7g" id="_SeXUG-8EEd6FC9cDb6iV7g" URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse.e4.demo.contacts.handlers.BrightThemeHandler" command="contacts.brightTheme"/>
- <bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D" id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
- <bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L" id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
- <bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S" id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
- <bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete" id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
- <bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X" id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
+ <rootContext xmi:id="_SeXUHO8EEd6FC9cDb6iV7y" id="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
+ <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7w" id="org.eclipse.ui.contexts.window" name="In Windows"/>
+ <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" id="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
+ </rootContext>
+ <bindingTables xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" bindingContextId="org.eclipse.ui.contexts.dialogAndWindow">
+ <bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D" id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
+ <bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L" id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
+ <bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S" id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
+ <bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete" id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
+ <bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X" id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
+ </bindingTables>
<commands xmi:id="contacts.exit" id="contacts.exit" commandName="Exit" description=""/>
<commands xmi:id="contacts.darkTheme" id="contacts.darkTheme" commandName="Dark Theme"/>
<commands xmi:id="contacts.brightTheme" id="contacts.brightTheme" commandName="Bright Theme" description=""/>
<commands xmi:id="contacts.save" id="contacts.save" commandName="Save" description=""/>
<commands xmi:id="contacts.delete" id="contacts.delete" commandName="Delete" description=""/>
+ <bindingContexts>org.eclipse.ui.contexts.dialogAndWindow</bindingContexts>
</application:Application>
diff --git a/examples/org.eclipse.e4.demo.e4photo/Application.e4xmi b/examples/org.eclipse.e4.demo.e4photo/Application.e4xmi
index 8174523..1d65549 100644
--- a/examples/org.eclipse.e4.demo.e4photo/Application.e4xmi
+++ b/examples/org.eclipse.e4.demo.e4photo/Application.e4xmi
@@ -47,11 +47,18 @@
<handlers xmi:id="_AXeqWu8IEd6FC9cDb6iV7g" id="_AXeqWu8IEd6FC9cDb6iV7g" URI="platform:/plugin/org.eclipse.e4.demo.e4photo/org.eclipse.e4.demo.e4photo.SwitchPerspectiveHandler" command="e4photo.switchPersepective"/>
<handlers xmi:id="_AXeqW-8IEd6FC9cDb6iV7g" id="_AXeqW-8IEd6FC9cDb6iV7g" URI="platform:/plugin/org.eclipse.e4.demo.e4photo/org.eclipse.e4.demo.e4photo.ImageDialogHandler" command="e4photo.imageDialog"/>
<handlers id="e4.photo.demo.addNote.handler" URI="platform:/plugin/org.eclipse.e4.demo.e4photo/org.eclipse.e4.demo.e4photo.AddNoteHandler" persistedState="" command="//@commands.4"/>
- <bindings xmi:id="_AXeqXO8IEd6FC9cDb6iV7g" keySequence="CTRL+Q" id="_AXeqXO8IEd6FC9cDb6iV7g" command="e4photo.exit"/>
- <bindings xmi:id="_AXeqXe8IEd6FC9cDb6iV7g" keySequence="CTRL+N" id="_AXeqXe8IEd6FC9cDb6iV7g" command="e4photo.createAlbum"/>
+ <rootContext xmi:id="_SeXUHO8EEd6FC9cDb6iV7y" id="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
+ <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7w" id="org.eclipse.ui.contexts.window" name="In Windows"/>
+ <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" id="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
+ </rootContext>
+ <bindingTables xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" bindingContextId="org.eclipse.ui.contexts.dialogAndWindow">
+ <bindings xmi:id="_AXeqXO8IEd6FC9cDb6iV7g" keySequence="CTRL+Q" id="_AXeqXO8IEd6FC9cDb6iV7g" command="e4photo.exit"/>
+ <bindings xmi:id="_AXeqXe8IEd6FC9cDb6iV7g" keySequence="CTRL+N" id="_AXeqXe8IEd6FC9cDb6iV7g" command="e4photo.createAlbum"/>
+ </bindingTables>
<commands xmi:id="e4photo.exit" id="e4photo.exit" commandName="Exit" description=""/>
<commands xmi:id="e4photo.createAlbum" id="e4photo.createAlbum" commandName="Create Album"/>
<commands xmi:id="e4photo.switchPersepective" id="e4photo.switchPersepective" commandName="Switch Perspective" description=""/>
<commands xmi:id="e4photo.imageDialog" id="e4photo.imageDialog" commandName="Image Dialog" description=""/>
<commands id="e4photo.addNote" commandName="Add Note"/>
+ <bindingContexts>org.eclipse.ui.contexts.dialogAndWindow</bindingContexts>
</application:Application>
diff --git a/tests/org.eclipse.e4.ui.bindings.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.e4.ui.bindings.tests/META-INF/MANIFEST.MF
index 2ba9412..2babc80 100644
--- a/tests/org.eclipse.e4.ui.bindings.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.e4.ui.bindings.tests/META-INF/MANIFEST.MF
@@ -12,6 +12,8 @@
org.eclipse.e4.core.services.annotations,
org.eclipse.e4.core.services.context,
org.eclipse.e4.core.services.context.spi,
+ org.eclipse.e4.ui.internal.services,
+ org.eclipse.e4.ui.services,
org.eclipse.jface.bindings,
org.eclipse.jface.bindings.keys,
org.eclipse.jface.bindings.keys.formatting,
diff --git a/tests/org.eclipse.e4.ui.bindings.tests/src/org/eclipse/e4/ui/bindings/tests/BindingLookupTest.java b/tests/org.eclipse.e4.ui.bindings.tests/src/org/eclipse/e4/ui/bindings/tests/BindingLookupTest.java
index c91bc2a..bbbd0f4 100644
--- a/tests/org.eclipse.e4.ui.bindings.tests/src/org/eclipse/e4/ui/bindings/tests/BindingLookupTest.java
+++ b/tests/org.eclipse.e4.ui.bindings.tests/src/org/eclipse/e4/ui/bindings/tests/BindingLookupTest.java
@@ -1,5 +1,7 @@
package org.eclipse.e4.ui.bindings.tests;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -7,15 +9,36 @@
import org.eclipse.core.commands.Category;
import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.commands.contexts.Context;
+import org.eclipse.core.commands.contexts.ContextManager;
import org.eclipse.e4.core.commands.ECommandService;
import org.eclipse.e4.core.services.IDisposable;
import org.eclipse.e4.core.services.context.IEclipseContext;
+import org.eclipse.e4.core.services.context.spi.ContextInjectionFactory;
import org.eclipse.e4.core.services.context.spi.IContextConstants;
import org.eclipse.e4.ui.bindings.EBindingService;
+import org.eclipse.e4.ui.bindings.internal.BindingTable;
+import org.eclipse.e4.ui.bindings.internal.BindingTableManager;
+import org.eclipse.e4.ui.bindings.internal.ContextSet;
+import org.eclipse.e4.ui.internal.services.ActiveContextsFunction;
+import org.eclipse.e4.ui.services.EContextService;
+import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.jface.bindings.Binding;
import org.eclipse.jface.bindings.TriggerSequence;
public class BindingLookupTest extends TestCase {
+ private static final String ID_DIALOG = "org.eclipse.ui.contexts.dialog";
+ private static final String ID_DIALOG_AND_WINDOW = "org.eclipse.ui.contexts.dialogAndWindow";
+ private static final String ID_WINDOW = "org.eclipse.ui.contexts.window";
+ private static final String ID_TEXT = "org.eclipse.ui.textScope";
+ private static final String ID_JAVA = "org.eclipse.jdt.ui.javaScope";
+ private static final String ID_JS = "org.eclipse.wst.jsdt.ui.javaScriptScope";
+
+ final static String[] CONTEXTS = { ID_DIALOG_AND_WINDOW, "DAW", null,
+ ID_DIALOG, "Dialog", ID_DIALOG_AND_WINDOW, ID_WINDOW, "Window",
+ ID_DIALOG_AND_WINDOW, ID_TEXT, "Text Scope", ID_WINDOW, ID_JAVA,
+ "Java scope", ID_TEXT, ID_JS, "JavaScript scope", ID_TEXT, };
+
private static final String TEST_CAT1 = "test.cat1";
private static final String TEST_ID1 = "test.id1";
private static final String TEST_ID2 = "test.id2";
@@ -41,6 +64,43 @@
workbenchContext = createWorkbenchContext(Activator.getDefault()
.getGlobalContext());
defineCommands(workbenchContext);
+ defineContexts(workbenchContext);
+ defineBindingTables(workbenchContext);
+ }
+
+ private void defineContexts(IEclipseContext context) {
+ ContextManager contextManager = new ContextManager();
+ context.set(ContextManager.class.getName(), contextManager);
+ ContextSet.setComparator(new ContextSet.CComp(contextManager));
+ for (int i = 0; i < CONTEXTS.length; i += 3) {
+ Context c = contextManager.getContext(CONTEXTS[i]);
+ c.define(CONTEXTS[i + 1], null, CONTEXTS[i + 2]);
+ }
+
+ EContextService cs = (EContextService) context
+ .get(EContextService.class.getName());
+ cs.activateContext(ID_DIALOG_AND_WINDOW);
+ context.set(IServiceConstants.ACTIVE_CONTEXTS,
+ new ActiveContextsFunction());
+ }
+
+ private void defineBindingTables(IEclipseContext context) {
+ try {
+ BindingTableManager btm = (BindingTableManager) ContextInjectionFactory
+ .make(BindingTableManager.class, context);
+ context.set(BindingTableManager.class.getName(), btm);
+ ContextManager cm = (ContextManager) context
+ .get(ContextManager.class.getName());
+ btm.addTable(new BindingTable(cm.getContext(ID_DIALOG_AND_WINDOW)));
+ btm.addTable(new BindingTable(cm.getContext(ID_WINDOW)));
+ btm.addTable(new BindingTable(cm.getContext(ID_DIALOG)));
+ } catch (InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (InstantiationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
@Override
@@ -58,13 +118,14 @@
EBindingService bs = (EBindingService) workbenchContext
.get(EBindingService.class.getName());
TriggerSequence seq = bs.createSequence("CTRL+5 T");
- bs.activateBinding(seq, cmd);
+ Binding db = createDefaultBinding(bs, seq, cmd, ID_DIALOG_AND_WINDOW);
+ bs.activateBinding(db);
Binding perfectMatch = bs.getPerfectMatch(seq);
assertEquals(cmd, perfectMatch.getParameterizedCommand());
- bs.deactivateBinding(seq, cmd);
+ bs.deactivateBinding(db);
assertNull(bs.getPerfectMatch(seq));
- bs.activateBinding(seq, cmd);
+ bs.activateBinding(db);
assertEquals(cmd, bs.getPerfectMatch(seq).getParameterizedCommand());
}
@@ -76,8 +137,10 @@
.get(EBindingService.class.getName());
TriggerSequence seq = bs.createSequence("CTRL+5 T");
TriggerSequence seq2 = bs.createSequence("CTRL+2 X");
- bs.activateBinding(seq, cmd);
- bs.activateBinding(seq2, cmd);
+ Binding db = createDefaultBinding(bs, seq, cmd, ID_DIALOG_AND_WINDOW);
+ bs.activateBinding(db);
+ db = createDefaultBinding(bs, seq2, cmd, ID_DIALOG_AND_WINDOW);
+ bs.activateBinding(db);
assertEquals(cmd, bs.getPerfectMatch(seq).getParameterizedCommand());
assertEquals(cmd, bs.getPerfectMatch(seq2).getParameterizedCommand());
@@ -93,13 +156,14 @@
EBindingService bs1 = (EBindingService) c1.get(EBindingService.class
.getName());
TriggerSequence seq = bs1.createSequence("CTRL+5 T");
- bs1.activateBinding(seq, cmd);
+ Binding db = createDefaultBinding(bs1, seq, cmd, ID_DIALOG_AND_WINDOW);
+ bs1.activateBinding(db);
EBindingService wBS = (EBindingService) workbenchContext
.get(EBindingService.class.getName());
assertEquals(cmd, wBS.getPerfectMatch(seq).getParameterizedCommand());
assertEquals(cmd, bs1.getPerfectMatch(seq).getParameterizedCommand());
- bs1.deactivateBinding(seq, cmd);
+ bs1.deactivateBinding(db);
assertNull(wBS.getPerfectMatch(seq));
assertNull(bs1.getPerfectMatch(seq));
}
@@ -116,16 +180,22 @@
IEclipseContext c1 = TestUtil.createContext(workbenchContext, "c1");
workbenchContext.set(IContextConstants.ACTIVE_CHILD, c1);
+ EContextService es = (EContextService) c1.get(EContextService.class.getName());
+ es.activateContext(ID_WINDOW);
EBindingService bs1 = (EBindingService) c1.get(EBindingService.class
.getName());
- bs1.activateBinding(seq, cmd1);
+ Binding db = createDefaultBinding(bs1, seq, cmd1, ID_WINDOW);
+ bs1.activateBinding(db);
IEclipseContext c2 = TestUtil.createContext(workbenchContext, "c2");
+ EContextService es2 = (EContextService) c2.get(EContextService.class.getName());
+ es2.activateContext(ID_DIALOG);
EBindingService bs2 = (EBindingService) c2.get(EBindingService.class
.getName());
- bs2.activateBinding(seq, cmd2);
+ db = createDefaultBinding(bs1, seq, cmd2, ID_DIALOG);
+ bs2.activateBinding(db);
assertEquals(cmd1, wBS.getPerfectMatch(seq).getParameterizedCommand());
assertEquals(cmd1, bs1.getPerfectMatch(seq).getParameterizedCommand());
@@ -144,16 +214,22 @@
IEclipseContext c1 = TestUtil.createContext(workbenchContext, "c1");
workbenchContext.set(IContextConstants.ACTIVE_CHILD, c1);
+ EContextService es = (EContextService) c1.get(EContextService.class.getName());
+ es.activateContext(ID_WINDOW);
EBindingService bs1 = (EBindingService) c1.get(EBindingService.class
.getName());
- bs1.activateBinding(seq, cmd1);
+ Binding db = createDefaultBinding(bs1, seq, cmd1, ID_WINDOW);
+ bs1.activateBinding(db);
IEclipseContext c2 = TestUtil.createContext(workbenchContext, "c2");
+ EContextService es2 = (EContextService) c2.get(EContextService.class.getName());
+ es2.activateContext(ID_DIALOG);
EBindingService bs2 = (EBindingService) c2.get(EBindingService.class
.getName());
- bs2.activateBinding(seq, cmd2);
+ db = createDefaultBinding(bs1, seq, cmd2, ID_DIALOG);
+ bs2.activateBinding(db);
assertEquals(cmd1, bs1.getPerfectMatch(seq).getParameterizedCommand());
assertEquals(cmd2, bs2.getPerfectMatch(seq).getParameterizedCommand());
@@ -184,7 +260,8 @@
EBindingService bs = (EBindingService) workbenchContext
.get(EBindingService.class.getName());
TriggerSequence seq = bs.createSequence("CTRL+5 T");
- bs.activateBinding(seq, cmd);
+ Binding db = createDefaultBinding(bs, seq, cmd, ID_DIALOG_AND_WINDOW);
+ bs.activateBinding(db);
assertEquals(seq, bs.getBestSequenceFor(cmd));
}
@@ -197,8 +274,10 @@
.get(EBindingService.class.getName());
TriggerSequence seq = bs.createSequence("CTRL+5 T");
TriggerSequence seq2 = bs.createSequence("CTRL+2 X");
- bs.activateBinding(seq, cmd);
- bs.activateBinding(seq2, cmd);
+ Binding db = createDefaultBinding(bs, seq, cmd, ID_DIALOG_AND_WINDOW);
+ bs.activateBinding(db);
+ Binding db2 = createDefaultBinding(bs, seq2, cmd, ID_DIALOG_AND_WINDOW);
+ bs.activateBinding(db2);
TriggerSequence foundSequence = bs.getBestSequenceFor(cmd);
assertNotNull(foundSequence);
@@ -212,10 +291,12 @@
EBindingService bs = (EBindingService) workbenchContext
.get(EBindingService.class.getName());
TriggerSequence seq2 = bs.createSequence("ALT+5 X");
- bs.activateBinding(seq2, cmd);
+ Binding db2 = createDefaultBinding(bs, seq2, cmd, ID_DIALOG_AND_WINDOW);
+ bs.activateBinding(db2);
TriggerSequence seq = bs.createSequence("CTRL+5 T");
- bs.activateBinding(seq, cmd);
+ Binding db = createDefaultBinding(bs, seq, cmd, ID_DIALOG_AND_WINDOW);
+ bs.activateBinding(db);
TriggerSequence foundSequence = bs.getBestSequenceFor(cmd);
assertNotNull(foundSequence);
@@ -229,7 +310,8 @@
EBindingService bs = (EBindingService) workbenchContext
.get(EBindingService.class.getName());
TriggerSequence seq2 = bs.createSequence("CTRL+5 T");
- bs.activateBinding(seq2, cmd);
+ Binding db2 = createDefaultBinding(bs, seq2, cmd, ID_DIALOG_AND_WINDOW);
+ bs.activateBinding(db2);
IEclipseContext c1 = TestUtil.createContext(workbenchContext, "c1");
workbenchContext.set(IContextConstants.ACTIVE_CHILD, c1);
@@ -237,11 +319,12 @@
.getName());
TriggerSequence seq = bs1.createSequence("ALT+5 X");
- bs1.activateBinding(seq, cmd);
+ Binding db = createDefaultBinding(bs, seq, cmd, ID_DIALOG_AND_WINDOW);
+ bs1.activateBinding(db);
TriggerSequence foundSequence = bs.getBestSequenceFor(cmd);
assertNotNull(foundSequence);
- assertEquals(seq, foundSequence);
+ assertEquals(seq2, foundSequence);
}
public void testLookupShortcutsTwoChildren() throws Exception {
@@ -256,16 +339,22 @@
IEclipseContext c1 = TestUtil.createContext(workbenchContext, "c1");
workbenchContext.set(IContextConstants.ACTIVE_CHILD, c1);
+ EContextService es = (EContextService) c1.get(EContextService.class.getName());
+ es.activateContext(ID_WINDOW);
EBindingService bs1 = (EBindingService) c1.get(EBindingService.class
.getName());
- bs1.activateBinding(seq, cmd1);
+ Binding db = createDefaultBinding(bs1, seq, cmd1, ID_WINDOW);
+ bs1.activateBinding(db);
IEclipseContext c2 = TestUtil.createContext(workbenchContext, "c2");
+ EContextService es2 = (EContextService) c2.get(EContextService.class.getName());
+ es2.activateContext(ID_DIALOG);
EBindingService bs2 = (EBindingService) c2.get(EBindingService.class
.getName());
- bs2.activateBinding(seq, cmd2);
+ Binding db2 = createDefaultBinding(bs2, seq, cmd2, ID_DIALOG);
+ bs2.activateBinding(db2);
assertEquals(seq, wBS.getBestSequenceFor(cmd1));
assertNull(wBS.getBestSequenceFor(cmd2));
@@ -284,16 +373,19 @@
EBindingService bs = (EBindingService) workbenchContext
.get(EBindingService.class.getName());
TriggerSequence seq2 = bs.createSequence("ALT+5 X");
- bs.activateBinding(seq2, cmd);
+ Binding db2 = createDefaultBinding(bs, seq2, cmd, ID_DIALOG_AND_WINDOW);
+ bs.activateBinding(db2);
TriggerSequence seq = bs.createSequence("CTRL+5 T");
- bs.activateBinding(seq, cmd);
+ Binding db = createDefaultBinding(bs, seq, cmd, ID_DIALOG_AND_WINDOW);
+ bs.activateBinding(db);
- HashSet<TriggerSequence> set = new HashSet<TriggerSequence>();
- set.add(seq);
- set.add(seq2);
+ // the list will always be ordered
+ ArrayList<TriggerSequence> list = new ArrayList<TriggerSequence>();
+ list.add(seq);
+ list.add(seq2);
- assertEquals(set, bs.getSequencesFor(cmd));
+ assertEquals(list, bs.getSequencesFor(cmd));
}
public void testLookupAllShortcutsWithChild() throws Exception {
@@ -304,21 +396,26 @@
EBindingService wBS = (EBindingService) workbenchContext
.get(EBindingService.class.getName());
TriggerSequence seq2 = wBS.createSequence("ALT+5 X");
- wBS.activateBinding(seq2, cmd);
+ Binding db2 = createDefaultBinding(wBS, seq2, cmd, ID_DIALOG_AND_WINDOW);
+ wBS.activateBinding(db2);
IEclipseContext c1 = TestUtil.createContext(workbenchContext, "c1");
workbenchContext.set(IContextConstants.ACTIVE_CHILD, c1);
+ EContextService es = (EContextService) c1.get(EContextService.class.getName());
+ es.activateContext(ID_WINDOW);
EBindingService bs1 = (EBindingService) c1.get(EBindingService.class
.getName());
TriggerSequence seq = bs1.createSequence("CTRL+5 T");
- bs1.activateBinding(seq, cmd);
+ Binding db = createDefaultBinding(wBS, seq, cmd, ID_WINDOW);
+ bs1.activateBinding(db);
- HashSet<TriggerSequence> set = new HashSet<TriggerSequence>();
- set.add(seq);
- set.add(seq2);
+ // the list will always be ordered
+ ArrayList<TriggerSequence> list = new ArrayList<TriggerSequence>();
+ list.add(seq);
+ list.add(seq2);
- assertEquals(set, wBS.getSequencesFor(cmd));
+ assertEquals(list, wBS.getSequencesFor(cmd));
}
public void testPartialMatch() throws Exception {
@@ -329,7 +426,8 @@
EBindingService wBS = (EBindingService) workbenchContext
.get(EBindingService.class.getName());
TriggerSequence seq2 = wBS.createSequence("ALT+5 X");
- wBS.activateBinding(seq2, cmd);
+ Binding db2 = createDefaultBinding(wBS, seq2, cmd, ID_DIALOG_AND_WINDOW);
+ wBS.activateBinding(db2);
IEclipseContext c1 = TestUtil.createContext(workbenchContext, "c1");
workbenchContext.set(IContextConstants.ACTIVE_CHILD, c1);
@@ -337,7 +435,8 @@
.getName());
TriggerSequence seq = bs1.createSequence("CTRL+5 T");
- bs1.activateBinding(seq, cmd);
+ Binding db = createDefaultBinding(wBS, seq, cmd, ID_DIALOG_AND_WINDOW);
+ bs1.activateBinding(db);
TriggerSequence partialMatch = bs1.createSequence("CTRL+5");
TriggerSequence partialNoMatch = bs1.createSequence("CTRL+8");
@@ -354,7 +453,9 @@
EBindingService wBS = (EBindingService) workbenchContext
.get(EBindingService.class.getName());
TriggerSequence seq2 = wBS.createSequence("ALT+5 X");
- wBS.activateBinding(seq2, cmd);
+ Binding wbBind = createDefaultBinding(wBS, seq2, cmd,
+ ID_DIALOG_AND_WINDOW);
+ wBS.activateBinding(wbBind);
IEclipseContext c1 = TestUtil.createContext(workbenchContext, "c1");
workbenchContext.set(IContextConstants.ACTIVE_CHILD, c1);
@@ -362,19 +463,30 @@
.getName());
TriggerSequence seq = bs1.createSequence("CTRL+5 T");
- Binding b1 = bs1.activateBinding(seq, cmd);
+ Binding b1 = createDefaultBinding(wBS, seq, cmd, ID_DIALOG_AND_WINDOW);
+ bs1.activateBinding(b1);
TriggerSequence sseq = bs1.createSequence("CTRL+5 Y");
- Binding b2 = bs1.activateBinding(sseq, cmd2);
- HashSet<Binding> commandMatches = new HashSet<Binding>();
- commandMatches.add(b2);
+ Binding b2 = createDefaultBinding(bs1, sseq, cmd2, ID_DIALOG_AND_WINDOW);
+ bs1.activateBinding(b2);
+ ArrayList<Binding> commandMatches = new ArrayList<Binding>();
commandMatches.add(b1);
-
+ commandMatches.add(b2);
+
TriggerSequence partialMatch = bs1.createSequence("CTRL+5");
TriggerSequence partialNoMatch = bs1.createSequence("CTRL+8");
assertFalse(bs1.isPartialMatch(partialNoMatch));
assertTrue(bs1.isPartialMatch(partialMatch));
-
+
Collection<Binding> matches = bs1.getPartialMatches(partialMatch);
assertEquals(commandMatches, matches);
}
+
+ private Binding createDefaultBinding(EBindingService bs,
+ TriggerSequence sequence, ParameterizedCommand command,
+ String contextId) {
+ return bs.createBinding(sequence, command,
+ "org.eclipse.ui.defaultAcceleratorConfiguration", //$NON-NLS-1$
+ contextId);
+ }
+
}
diff --git a/tests/org.eclipse.e4.ui.bindings.tests/src/org/eclipse/e4/ui/bindings/tests/KeyDispatcherTest.java b/tests/org.eclipse.e4.ui.bindings.tests/src/org/eclipse/e4/ui/bindings/tests/KeyDispatcherTest.java
index eb265c2..97d94bf 100644
--- a/tests/org.eclipse.e4.ui.bindings.tests/src/org/eclipse/e4/ui/bindings/tests/KeyDispatcherTest.java
+++ b/tests/org.eclipse.e4.ui.bindings.tests/src/org/eclipse/e4/ui/bindings/tests/KeyDispatcherTest.java
@@ -1,16 +1,27 @@
package org.eclipse.e4.ui.bindings.tests;
+import java.lang.reflect.InvocationTargetException;
+
import junit.framework.TestCase;
import org.eclipse.core.commands.Category;
import org.eclipse.core.commands.ParameterizedCommand;
+import org.eclipse.core.commands.contexts.Context;
+import org.eclipse.core.commands.contexts.ContextManager;
import org.eclipse.e4.core.commands.ECommandService;
import org.eclipse.e4.core.commands.EHandlerService;
import org.eclipse.e4.core.services.IDisposable;
import org.eclipse.e4.core.services.context.IEclipseContext;
import org.eclipse.e4.core.services.context.spi.ContextInjectionFactory;
import org.eclipse.e4.ui.bindings.EBindingService;
+import org.eclipse.e4.ui.bindings.internal.BindingTable;
+import org.eclipse.e4.ui.bindings.internal.BindingTableManager;
+import org.eclipse.e4.ui.bindings.internal.ContextSet;
import org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher;
+import org.eclipse.e4.ui.internal.services.ActiveContextsFunction;
+import org.eclipse.e4.ui.services.EContextService;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.bindings.Binding;
import org.eclipse.jface.bindings.TriggerSequence;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
@@ -21,6 +32,14 @@
import org.eclipse.swt.widgets.Shell;
public class KeyDispatcherTest extends TestCase {
+ private static final String ID_DIALOG = "org.eclipse.ui.contexts.dialog";
+ private static final String ID_DIALOG_AND_WINDOW = "org.eclipse.ui.contexts.dialogAndWindow";
+ private static final String ID_WINDOW = "org.eclipse.ui.contexts.window";
+
+ final static String[] CONTEXTS = { ID_DIALOG_AND_WINDOW, "DAW", null,
+ ID_DIALOG, "Dialog", ID_DIALOG_AND_WINDOW, ID_WINDOW, "Window",
+ ID_DIALOG_AND_WINDOW, };
+
private static final String TEST_CAT1 = "test.cat1";
private static final String TEST_ID1 = "test.id1";
private static final String TEST_ID2 = "test.id2";
@@ -62,13 +81,22 @@
EBindingService bs = (EBindingService) workbenchContext
.get(EBindingService.class.getName());
TriggerSequence seq = bs.createSequence("CTRL+A");
- bs.activateBinding(seq, cmd);
+ Binding db = createDefaultBinding(bs, seq, cmd);
+ bs.activateBinding(db);
ParameterizedCommand cmd2 = cs.createCommand(TEST_ID2, null);
twoStrokeHandler = new CallHandler();
hs.activateHandler(TEST_ID2, twoStrokeHandler);
TriggerSequence twoKeys = bs.createSequence("CTRL+5 CTRL+A");
- bs.activateBinding(twoKeys, cmd2);
+ db = createDefaultBinding(bs, twoKeys, cmd2);
+ bs.activateBinding(db);
+ }
+
+ private Binding createDefaultBinding(EBindingService bs,
+ TriggerSequence sequence, ParameterizedCommand command) {
+ return bs.createBinding(sequence, command,
+ "org.eclipse.ui.defaultAcceleratorConfiguration", //$NON-NLS-1$
+ ID_WINDOW);
}
private IEclipseContext createWorkbenchContext(IEclipseContext globalContext) {
@@ -82,9 +110,47 @@
display = new Display();
workbenchContext = createWorkbenchContext(Activator.getDefault()
.getGlobalContext());
+ defineContexts(workbenchContext);
+ defineBindingTables(workbenchContext);
defineCommands(workbenchContext);
}
+ private void defineContexts(IEclipseContext context) {
+ ContextManager contextManager = new ContextManager();
+ context.set(ContextManager.class.getName(), contextManager);
+ ContextSet.setComparator(new ContextSet.CComp(contextManager));
+ for (int i = 0; i < CONTEXTS.length; i += 3) {
+ Context c = contextManager.getContext(CONTEXTS[i]);
+ c.define(CONTEXTS[i + 1], null, CONTEXTS[i + 2]);
+ }
+
+ EContextService cs = (EContextService) context
+ .get(EContextService.class.getName());
+ cs.activateContext(ID_DIALOG_AND_WINDOW);
+ cs.activateContext(ID_WINDOW);
+ context.set(IServiceConstants.ACTIVE_CONTEXTS,
+ new ActiveContextsFunction());
+ }
+
+ private void defineBindingTables(IEclipseContext context) {
+ try {
+ BindingTableManager btm = (BindingTableManager) ContextInjectionFactory
+ .make(BindingTableManager.class, context);
+ context.set(BindingTableManager.class.getName(), btm);
+ ContextManager cm = (ContextManager) context
+ .get(ContextManager.class.getName());
+ btm.addTable(new BindingTable(cm.getContext(ID_DIALOG_AND_WINDOW)));
+ btm.addTable(new BindingTable(cm.getContext(ID_WINDOW)));
+ btm.addTable(new BindingTable(cm.getContext(ID_DIALOG)));
+ } catch (InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (InstantiationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
@Override
protected void tearDown() throws Exception {
if (workbenchContext instanceof IDisposable) {
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerBindingContainerTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerBindingContainerTest.java
index 7213d3b..aa556f9 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerBindingContainerTest.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerBindingContainerTest.java
@@ -15,6 +15,7 @@
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.MApplicationFactory;
+import org.eclipse.e4.ui.model.application.MBindingTable;
import org.eclipse.e4.ui.model.application.MCommand;
import org.eclipse.e4.ui.model.application.MKeyBinding;
import org.eclipse.e4.workbench.modeling.ModelDelta;
@@ -27,6 +28,10 @@
throws Exception {
MApplication application = createApplication();
+ MBindingTable bindingTable = MApplicationFactory.eINSTANCE
+ .createBindingTable();
+ application.getBindingTables().add(bindingTable);
+
saveModel();
ModelReconciler reconciler = createModelReconciler();
@@ -35,21 +40,22 @@
MKeyBinding keyBinding = MApplicationFactory.eINSTANCE
.createKeyBinding();
keyBinding.setKeySequence(keySequence);
- application.getBindings().add(keyBinding);
+ bindingTable.getBindings().add(keyBinding);
Object state = reconciler.serialize();
application = createApplication();
+ bindingTable = application.getBindingTables().get(0);
Collection<ModelDelta> deltas = constructDeltas(application, state);
- assertEquals(0, application.getBindings().size());
+ assertEquals(0, bindingTable.getBindings().size());
applyAll(deltas);
- assertEquals(1, application.getBindings().size());
+ assertEquals(1, bindingTable.getBindings().size());
- keyBinding = application.getBindings().get(0);
+ keyBinding = bindingTable.getBindings().get(0);
assertNull(keyBinding.getCommand());
assertEquals(keySequence, keyBinding.getKeySequence());
assertEquals(0, keyBinding.getParameters().size());
@@ -71,34 +77,39 @@
throws Exception {
MApplication application = createApplication();
+ MBindingTable bindingTable = MApplicationFactory.eINSTANCE
+ .createBindingTable();
+ application.getBindingTables().add(bindingTable);
+
MKeyBinding keyBinding = MApplicationFactory.eINSTANCE
.createKeyBinding();
keyBinding.setKeySequence(keySequence);
- application.getBindings().add(keyBinding);
+ bindingTable.getBindings().add(keyBinding);
saveModel();
ModelReconciler reconciler = createModelReconciler();
reconciler.recordChanges(application);
- application.getBindings().remove(0);
+ bindingTable.getBindings().remove(0);
Object state = reconciler.serialize();
application = createApplication();
+ bindingTable = application.getBindingTables().get(0);
Collection<ModelDelta> deltas = constructDeltas(application, state);
- assertEquals(1, application.getBindings().size());
+ assertEquals(1, bindingTable.getBindings().size());
- keyBinding = application.getBindings().get(0);
+ keyBinding = bindingTable.getBindings().get(0);
assertNull(keyBinding.getCommand());
assertEquals(keySequence, keyBinding.getKeySequence());
assertEquals(0, keyBinding.getParameters().size());
applyAll(deltas);
- assertEquals(0, application.getBindings().size());
+ assertEquals(0, bindingTable.getBindings().size());
}
public void testBindingContainer_Remove_KeyBinding_Null() throws Exception {
@@ -118,6 +129,10 @@
throws Exception {
MApplication application = createApplication();
+ MBindingTable bindingTable = MApplicationFactory.eINSTANCE
+ .createBindingTable();
+ application.getBindingTables().add(bindingTable);
+
MCommand command = MApplicationFactory.eINSTANCE.createCommand();
application.getCommands().add(command);
@@ -130,22 +145,23 @@
.createKeyBinding();
keyBinding.setKeySequence(keySequence);
keyBinding.setCommand(command);
- application.getBindings().add(keyBinding);
+ bindingTable.getBindings().add(keyBinding);
Object state = reconciler.serialize();
application = createApplication();
+ bindingTable = application.getBindingTables().get(0);
command = application.getCommands().get(0);
Collection<ModelDelta> deltas = constructDeltas(application, state);
- assertEquals(0, application.getBindings().size());
+ assertEquals(0, bindingTable.getBindings().size());
applyAll(deltas);
- assertEquals(1, application.getBindings().size());
+ assertEquals(1, bindingTable.getBindings().size());
- keyBinding = application.getBindings().get(0);
+ keyBinding = bindingTable.getBindings().get(0);
assertEquals(command, keyBinding.getCommand());
assertEquals(keySequence, keyBinding.getKeySequence());
}
@@ -169,6 +185,10 @@
throws Exception {
MApplication application = createApplication();
+ MBindingTable bindingTable = MApplicationFactory.eINSTANCE
+ .createBindingTable();
+ application.getBindingTables().add(bindingTable);
+
MCommand command = MApplicationFactory.eINSTANCE.createCommand();
application.getCommands().add(command);
@@ -176,32 +196,33 @@
.createKeyBinding();
keyBinding.setKeySequence(keySequence);
keyBinding.setCommand(command);
- application.getBindings().add(keyBinding);
+ bindingTable.getBindings().add(keyBinding);
saveModel();
ModelReconciler reconciler = createModelReconciler();
reconciler.recordChanges(application);
- application.getBindings().remove(keyBinding);
+ bindingTable.getBindings().remove(keyBinding);
Object state = reconciler.serialize();
application = createApplication();
+ bindingTable = application.getBindingTables().get(0);
command = application.getCommands().get(0);
Collection<ModelDelta> deltas = constructDeltas(application, state);
- assertEquals(1, application.getBindings().size());
+ assertEquals(1, bindingTable.getBindings().size());
- keyBinding = application.getBindings().get(0);
+ keyBinding = bindingTable.getBindings().get(0);
assertEquals(command, keyBinding.getCommand());
assertEquals(keySequence, keyBinding.getKeySequence());
assertEquals(0, keyBinding.getParameters().size());
applyAll(deltas);
- assertEquals(0, application.getBindings().size());
+ assertEquals(0, bindingTable.getBindings().size());
}
public void testBindingContainer_Remove_BoundKeyBinding_Null()
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerKeyBindingTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerKeyBindingTest.java
index efe1eb0..1c94d0d 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerKeyBindingTest.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerKeyBindingTest.java
@@ -15,6 +15,7 @@
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.MApplicationFactory;
+import org.eclipse.e4.ui.model.application.MBindingTable;
import org.eclipse.e4.ui.model.application.MCommand;
import org.eclipse.e4.ui.model.application.MKeyBinding;
import org.eclipse.e4.workbench.modeling.ModelDelta;
@@ -24,6 +25,9 @@
private void testKeySequence_KeySequence(String before, String after) {
MApplication application = createApplication();
+ MBindingTable bindingTable = MApplicationFactory.eINSTANCE
+ .createBindingTable();
+ application.getBindingTables().add(bindingTable);
MCommand command = MApplicationFactory.eINSTANCE.createCommand();
application.getCommands().add(command);
@@ -31,7 +35,7 @@
.createKeyBinding();
keyBinding.setKeySequence(before);
keyBinding.setCommand(command);
- application.getBindings().add(keyBinding);
+ bindingTable.getBindings().add(keyBinding);
saveModel();
@@ -43,8 +47,9 @@
Object state = reconciler.serialize();
application = createApplication();
+ bindingTable = application.getBindingTables().get(0);
command = application.getCommands().get(0);
- keyBinding = application.getBindings().get(0);
+ keyBinding = bindingTable.getBindings().get(0);
Collection<ModelDelta> deltas = constructDeltas(application, state);
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerKeySequenceTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerKeySequenceTest.java
index 8e41423..40b542a 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerKeySequenceTest.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerKeySequenceTest.java
@@ -15,6 +15,7 @@
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.MApplicationFactory;
+import org.eclipse.e4.ui.model.application.MBindingTable;
import org.eclipse.e4.ui.model.application.MKeyBinding;
import org.eclipse.e4.workbench.modeling.ModelDelta;
import org.eclipse.e4.workbench.modeling.ModelReconciler;
@@ -25,10 +26,14 @@
private void testKeySequence_KeySequence(String before, String after) {
MApplication application = createApplication();
+ MBindingTable bindingTable = MApplicationFactory.eINSTANCE
+ .createBindingTable();
+ application.getBindingTables().add(bindingTable);
+
MKeyBinding keyBinding = MApplicationFactory.eINSTANCE
.createKeyBinding();
keyBinding.setKeySequence(before);
- application.getBindings().add(keyBinding);
+ bindingTable.getBindings().add(keyBinding);
saveModel();
@@ -40,7 +45,8 @@
Object state = reconciler.serialize();
application = createApplication();
- keyBinding = application.getBindings().get(0);
+ bindingTable = application.getBindingTables().get(0);
+ keyBinding = bindingTable.getBindings().get(0);
Collection<ModelDelta> deltas = constructDeltas(application, state);
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerScenarioTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerScenarioTest.java
index 3776407..7a5c0c7 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerScenarioTest.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/reconciler/ModelReconcilerScenarioTest.java
@@ -15,6 +15,7 @@
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.MApplicationFactory;
+import org.eclipse.e4.ui.model.application.MBindingTable;
import org.eclipse.e4.ui.model.application.MCommand;
import org.eclipse.e4.ui.model.application.MKeyBinding;
import org.eclipse.e4.ui.model.application.MMenu;
@@ -792,35 +793,6 @@
assertEquals(partD, stack2.getChildren().get(2));
}
- public void testBindingContainer_NewWithBindings() {
- MApplication application = createApplication();
-
- saveModel();
-
- ModelReconciler reconciler = createModelReconciler();
- reconciler.recordChanges(application);
-
- MWindow window = createWindow(application);
-
- MKeyBinding keyBinding = MApplicationFactory.eINSTANCE
- .createKeyBinding();
- window.getBindings().add(keyBinding);
-
- Object state = reconciler.serialize();
-
- application = createApplication();
-
- Collection<ModelDelta> deltas = constructDeltas(application, state);
-
- assertEquals(0, application.getChildren().size());
- assertEquals(0, application.getBindings().size());
-
- applyAll(deltas);
-
- window = application.getChildren().get(0);
- assertEquals(1, window.getBindings().size());
- }
-
public void testElementContainer_ActiveChild_New() {
MApplication application = createApplication();
MWindow window1 = MApplicationFactory.eINSTANCE.createWindow();
@@ -1328,56 +1300,61 @@
String originalWindowKeyBindingSequence,
String userWindowKeyBindingSequence) {
MApplication application = createApplication();
- MWindow window = createWindow(application);
+
+ MBindingTable bindingTable = MApplicationFactory.eINSTANCE
+ .createBindingTable();
+ MBindingTable bindingTable2 = MApplicationFactory.eINSTANCE
+ .createBindingTable();
+ application.getBindingTables().add(bindingTable);
+ application.getBindingTables().add(bindingTable2);
MCommand command = MApplicationFactory.eINSTANCE.createCommand();
application.getCommands().add(command);
- MKeyBinding applicationKeyBinding = MApplicationFactory.eINSTANCE
+ MKeyBinding keyBinding = MApplicationFactory.eINSTANCE
.createKeyBinding();
- applicationKeyBinding.setCommand(command);
- applicationKeyBinding
- .setKeySequence(originalApplicationKeyBindingSequence);
+ keyBinding.setCommand(command);
+ keyBinding.setKeySequence(originalApplicationKeyBindingSequence);
- MKeyBinding windowKeyBinding = MApplicationFactory.eINSTANCE
+ MKeyBinding keyBinding2 = MApplicationFactory.eINSTANCE
.createKeyBinding();
- windowKeyBinding.setCommand(command);
- windowKeyBinding.setKeySequence(originalWindowKeyBindingSequence);
+ keyBinding2.setCommand(command);
+ keyBinding2.setKeySequence(originalWindowKeyBindingSequence);
- application.getBindings().add(applicationKeyBinding);
- window.getBindings().add(windowKeyBinding);
+ bindingTable.getBindings().add(keyBinding);
+ bindingTable2.getBindings().add(keyBinding2);
saveModel();
ModelReconciler reconciler = createModelReconciler();
reconciler.recordChanges(application);
- applicationKeyBinding.setKeySequence(userApplicationKeyBindingSequence);
- windowKeyBinding.setKeySequence(userWindowKeyBindingSequence);
+ keyBinding.setKeySequence(userApplicationKeyBindingSequence);
+ keyBinding2.setKeySequence(userWindowKeyBindingSequence);
Object state = reconciler.serialize();
application = createApplication();
- window = application.getChildren().get(0);
+ bindingTable = application.getBindingTables().get(0);
+ bindingTable2 = application.getBindingTables().get(1);
command = application.getCommands().get(0);
- applicationKeyBinding = application.getBindings().get(0);
- windowKeyBinding = window.getBindings().get(0);
+ keyBinding = bindingTable.getBindings().get(0);
+ keyBinding2 = bindingTable2.getBindings().get(0);
Collection<ModelDelta> deltas = constructDeltas(application, state);
- assertEquals(originalApplicationKeyBindingSequence,
- applicationKeyBinding.getKeySequence());
- assertEquals(originalWindowKeyBindingSequence, windowKeyBinding
+ assertEquals(originalApplicationKeyBindingSequence, keyBinding
+ .getKeySequence());
+ assertEquals(originalWindowKeyBindingSequence, keyBinding2
.getKeySequence());
applyAll(deltas);
- assertEquals(userApplicationKeyBindingSequence, applicationKeyBinding
+ assertEquals(userApplicationKeyBindingSequence, keyBinding
.getKeySequence());
- assertEquals(userWindowKeyBindingSequence, windowKeyBinding
- .getKeySequence());
+ assertEquals(userWindowKeyBindingSequence, keyBinding2.getKeySequence());
}
public void testApplication_Commands_MultiLevelKeyBindings_NullNull_NullNull() {
diff --git a/tests/org.eclipse.e4.ui.tests/xmi/contacts.e4xmi b/tests/org.eclipse.e4.ui.tests/xmi/contacts.e4xmi
index bece7a2..91bfd83 100644
--- a/tests/org.eclipse.e4.ui.tests/xmi/contacts.e4xmi
+++ b/tests/org.eclipse.e4.ui.tests/xmi/contacts.e4xmi
@@ -37,14 +37,21 @@
<handlers xmi:id="_SeXUGe8EEd6FC9cDb6iV7g" id="_SeXUGe8EEd6FC9cDb6iV7g" URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse.e4.demo.contacts.handlers.DeleteContactHandler" command="contacts.delete"/>
<handlers xmi:id="_SeXUGu8EEd6FC9cDb6iV7g" id="_SeXUGu8EEd6FC9cDb6iV7g" URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse.e4.demo.contacts.handlers.DarkThemeHandler" command="contacts.darkTheme"/>
<handlers xmi:id="_SeXUG-8EEd6FC9cDb6iV7g" id="_SeXUG-8EEd6FC9cDb6iV7g" URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse.e4.demo.contacts.handlers.BrightThemeHandler" command="contacts.brightTheme"/>
- <bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D" id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
- <bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L" id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
- <bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S" id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
- <bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete" id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
- <bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X" id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
+ <rootContext xmi:id="_SeXUHO8EEd6FC9cDb6iV7y" id="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
+ <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7w" id="org.eclipse.ui.contexts.window" name="In Windows"/>
+ <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" id="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
+ </rootContext>
+ <bindingTables xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" bindingContextId="org.eclipse.ui.contexts.dialogAndWindow">
+ <bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D" id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
+ <bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L" id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
+ <bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S" id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
+ <bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete" id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
+ <bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X" id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
+ </bindingTables>
<commands xmi:id="contacts.exit" id="contacts.exit" commandName="Exit" description=""/>
<commands xmi:id="contacts.darkTheme" id="contacts.darkTheme" commandName="Dark Theme"/>
<commands xmi:id="contacts.brightTheme" id="contacts.brightTheme" commandName="Bright Theme" description=""/>
<commands xmi:id="contacts.save" id="contacts.save" commandName="Save" description=""/>
<commands xmi:id="contacts.delete" id="contacts.delete" commandName="Delete" description=""/>
+ <bindingContexts>org.eclipse.ui.contexts.dialogAndWindow</bindingContexts>
</application:Application>
diff --git a/tests/org.eclipse.e4.ui.tests/xmi/photo.e4xmi b/tests/org.eclipse.e4.ui.tests/xmi/photo.e4xmi
index d62520e..3bc10df 100644
--- a/tests/org.eclipse.e4.ui.tests/xmi/photo.e4xmi
+++ b/tests/org.eclipse.e4.ui.tests/xmi/photo.e4xmi
@@ -38,10 +38,17 @@
<handlers xmi:id="_AXeqWe8IEd6FC9cDb6iV7g" id="_AXeqWe8IEd6FC9cDb6iV7g" URI="platform:/plugin/org.eclipse.e4.demo.e4photo/org.eclipse.e4.demo.e4photo.NewProjectHandler" command="e4photo.createAlbum"/>
<handlers xmi:id="_AXeqWu8IEd6FC9cDb6iV7g" id="_AXeqWu8IEd6FC9cDb6iV7g" URI="platform:/plugin/org.eclipse.e4.demo.e4photo/org.eclipse.e4.demo.e4photo.SwitchPerspectiveHandler" command="e4photo.switchPersepective"/>
<handlers xmi:id="_AXeqW-8IEd6FC9cDb6iV7g" id="_AXeqW-8IEd6FC9cDb6iV7g" URI="platform:/plugin/org.eclipse.e4.demo.e4photo/org.eclipse.e4.demo.e4photo.ImageDialogHandler" command="e4photo.imageDialog"/>
- <bindings xmi:id="_AXeqXO8IEd6FC9cDb6iV7g" keySequence="CTRL+X" id="_AXeqXO8IEd6FC9cDb6iV7g" command="e4photo.exit"/>
- <bindings xmi:id="_AXeqXe8IEd6FC9cDb6iV7g" keySequence="CTRL+N" id="_AXeqXe8IEd6FC9cDb6iV7g" command="e4photo.createAlbum"/>
+ <rootContext xmi:id="_SeXUHO8EEd6FC9cDb6iV7y" id="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
+ <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7w" id="org.eclipse.ui.contexts.window" name="In Windows"/>
+ <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" id="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
+ </rootContext>
+ <bindingTables xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" bindingContextId="org.eclipse.ui.contexts.dialogAndWindow">
+ <bindings xmi:id="_AXeqXO8IEd6FC9cDb6iV7g" keySequence="CTRL+Q" id="_AXeqXO8IEd6FC9cDb6iV7g" command="e4photo.exit"/>
+ <bindings xmi:id="_AXeqXe8IEd6FC9cDb6iV7g" keySequence="CTRL+N" id="_AXeqXe8IEd6FC9cDb6iV7g" command="e4photo.createAlbum"/>
+ </bindingTables>
<commands xmi:id="e4photo.exit" id="e4photo.exit" commandName="Exit" description=""/>
<commands xmi:id="e4photo.createAlbum" id="e4photo.createAlbum" commandName="Create Album"/>
<commands xmi:id="e4photo.switchPersepective" id="e4photo.switchPersepective" commandName="Switch Perspective" description=""/>
<commands xmi:id="e4photo.imageDialog" id="e4photo.imageDialog" commandName="Image Dialog" description=""/>
+ <bindingContexts>org.eclipse.ui.contexts.dialogAndWindow</bindingContexts>
</application:Application>