blob: a2c34efe293d195ac4c12fc7074ee5461758840c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 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.ui.internal.keys.model;
import org.eclipse.core.commands.ParameterizedCommand;
import org.eclipse.core.commands.common.NotDefinedException;
import org.eclipse.jface.bindings.Binding;
import org.eclipse.jface.bindings.TriggerSequence;
import org.eclipse.jface.bindings.keys.KeyBinding;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.internal.keys.NewKeysPreferenceMessages;
import org.eclipse.ui.internal.util.Util;
/**
* @since 3.4
*
*/
public class BindingElement extends ModelElement {
public static final String PROP_TRIGGER = "trigger"; //$NON-NLS-1$
public static final String PROP_CONTEXT = "bindingContext"; //$NON-NLS-1$
public static final String PROP_CATEGORY = "category"; //$NON-NLS-1$
public static final String PROP_USER_DELTA = "userDelta"; //$NON-NLS-1$
private static final String PROP_IMAGE = "image"; //$NON-NLS-1$
public static final String PROP_CONFLICT = "bindingConflict"; //$NON-NLS-1$
private TriggerSequence trigger;
private ContextElement context;
private String category;
private Integer userDelta;
private Image image;
private Boolean conflict;
/**
* @param kc
*/
public BindingElement(KeyController kc) {
super(kc);
}
/**
* @param b
* @param model
*/
public void init(Binding b, ContextModel model) {
setCommandInfo(b.getParameterizedCommand());
setTrigger(b.getTriggerSequence());
setContext((ContextElement) model.getContextIdToElement().get(
b.getContextId()));
setUserDelta(new Integer(b.getType()));
setModelObject(b);
}
/**
* @param bindingCommand
*/
private void setCommandInfo(ParameterizedCommand bindingCommand) {
setId(bindingCommand.getId());
try {
setName(bindingCommand.getName());
} catch (NotDefinedException e) {
setName(NewKeysPreferenceMessages.Undefined_Command);
}
try {
setDescription(bindingCommand.getCommand().getDescription());
} catch (NotDefinedException e) {
setDescription(Util.ZERO_LENGTH_STRING);
}
try {
setCategory(bindingCommand.getCommand().getCategory().getName());
} catch (NotDefinedException e) {
setCategory(NewKeysPreferenceMessages.Unavailable_Category);
}
setConflict(Boolean.FALSE);
}
/**
* @param cmd
* @param type
* The binding type. Check {@link Binding} constants.
*/
public void init(ParameterizedCommand cmd) {
setCommandInfo(cmd);
setTrigger(null);
setContext(null);
setUserDelta(new Integer(Binding.SYSTEM));
setModelObject(cmd);
}
/**
* @return Returns the trigger.
*/
public TriggerSequence getTrigger() {
return trigger;
}
/**
* @param trigger
* The trigger to set.
*/
public void setTrigger(TriggerSequence trigger) {
Object old = this.trigger;
this.trigger = trigger;
controller.firePropertyChange(this, PROP_TRIGGER, old, trigger);
}
/**
* @return Returns the context.
*/
public ContextElement getContext() {
return context;
}
/**
* @param context
* The context to set.
*/
public void setContext(ContextElement context) {
Object old = this.context;
this.context = context;
controller.firePropertyChange(this, PROP_CONTEXT, old, context);
}
/**
* @return Returns the category.
*/
public String getCategory() {
return category;
}
/**
* @param category
* The category to set.
*/
public void setCategory(String category) {
Object old = this.category;
this.category = category;
controller.firePropertyChange(this, PROP_CATEGORY, old, category);
}
/**
* @return Returns the userDelta.
*/
public Integer getUserDelta() {
return userDelta;
}
/**
* @param userDelta
* The userDelta to set.
*/
public void setUserDelta(Integer userDelta) {
Object old = this.userDelta;
this.userDelta = userDelta;
controller.firePropertyChange(this, PROP_USER_DELTA, old, userDelta);
}
/**
* @return Returns the image.
*/
public Image getImage() {
return image;
}
/**
* @param image
* The image to set.
*/
public void setImage(Image image) {
Object old = this.image;
this.image = image;
controller.firePropertyChange(this, PROP_IMAGE, old, image);
}
/**
* @return Returns the conflict.
*/
public Boolean getConflict() {
return conflict;
}
/**
* @param conflict
* The conflict to set.
*/
public void setConflict(Boolean conflict) {
Object old = this.conflict;
this.conflict = conflict;
controller.firePropertyChange(this, PROP_CONFLICT, old, conflict);
}
/**
* @param binding
* @param contextModel
*/
public void fill(KeyBinding binding, ContextModel contextModel) {
setCommandInfo(binding.getParameterizedCommand());
setTrigger(binding.getTriggerSequence());
setContext((ContextElement) contextModel.getContextIdToElement().get(
binding.getContextId()));
setUserDelta(new Integer(binding.getType()));
setModelObject(binding);
}
/**
* @param parameterizedCommand
*/
public void fill(ParameterizedCommand parameterizedCommand) {
setCommandInfo(parameterizedCommand);
setTrigger(null);
setContext(null);
setUserDelta(new Integer(Binding.SYSTEM));
setModelObject(parameterizedCommand);
}
}