}
} else {
contextId = IContextIds.CONTEXT_ID_WINDOW;
}
if (object instanceof KeyBinding) {
KeyBinding keyBinding = (KeyBinding) object;
if (!keyBinding.getContextId().equals(contextId)
|| !keyBinding.getKeySequence().equals(keySequence)) {
final KeyBinding binding = new KeyBinding(
keySequence,
keyBinding.getParameterizedCommand(),
getSchemeId(),
contextId, null, null, null, Binding.USER);
ArrayList extraSystemDeletes = new ArrayList();
if (keyBinding.getType() == Binding.USER) {
localChangeManager.removeBinding(keyBinding);
} else {
// TODO This should be the user's personal scheme.
Collection previousConflictMatches = (Collection) localChangeManager
.getActiveBindingsDisregardingContext().get(
keyBinding.getTriggerSequence());
KeyBinding deleteBinding = new KeyBinding(
keyBinding.getKeySequence(), null,
keyBinding.getSchemeId(), keyBinding
.getContextId(), null, null, null,
Binding.USER);
localChangeManager.addBinding(deleteBinding);
if (previousConflictMatches != null) {
Iterator i = previousConflictMatches.iterator();
while (i.hasNext()) {
Binding b = (Binding) i.next();
if (b != keyBinding && deletes(deleteBinding, b)) {
extraSystemDeletes.add(b);
}
}
}
}
localChangeManager.addBinding(binding);
// update the model
bindingModel.remove(keyBinding);
bindingModel.add(binding);
if (!extraSystemDeletes.isEmpty()) {
Iterator i = extraSystemDeletes.iterator();
while (i.hasNext()) {
KeyBinding b = (KeyBinding) i.next();
KeyBinding newBinding = new KeyBinding(b.getKeySequence(), b
.getParameterizedCommand(), b.getSchemeId(), b
.getContextId(), null, null, null, Binding.USER);
localChangeManager.addBinding(newBinding);
bindingModel.remove(b);
bindingModel.add(newBinding);
}
}
updateConflicts(keyBinding);
updateConflicts(binding);
// end update the model
update();
filteredTree.getViewer().setSelection(
new StructuredSelection(binding), true);
}
} else if (object instanceof ParameterizedCommand) {
// TODO This should use the user's personal scheme.
final KeyBinding binding = new KeyBinding(keySequence,
(ParameterizedCommand) object,
getSchemeId(),
contextId, null, null, null, Binding.USER);
localChangeManager.addBinding(binding);
// update the model