/******************************************************************************* * Copyright (c) 2007, 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.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); } }