/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* 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:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.api.editor.keymap;
/**
* Description of a key binding.
*/
public class KeyBinding {
/** Is the control key pressed? */
private final boolean control;
/** Is the shift key pressed? */
private final boolean shift;
/** Is the alt key pressed? */
private final boolean alt;
/** Is the cmd key pressed? */
private final boolean cmd;
/** The key code of this key binding. */
private final Integer keyCodeNumber;
/** The character of this key binding. */
private final String character;
/** The key event type. */
private final String type;
/** The action taken on the key binding. */
private final KeyBindingAction action;
public KeyBinding(final boolean control, final boolean shift, final boolean alt,
final boolean cmd, final int keycode, final KeyBindingAction action) {
this.control = control;
this.shift = shift;
this.alt = alt;
this.cmd = cmd;
this.keyCodeNumber = keycode;
this.character = null;
this.action = action;
this.type = "keydown";
}
public KeyBinding(final boolean control, final boolean shift, final boolean alt,
final boolean cmd, final char character, final KeyBindingAction action) {
this.control = control;
this.shift = shift;
this.alt = alt;
this.cmd = cmd;
this.keyCodeNumber = null;
this.character = String.valueOf(character);
this.action = action;
this.type = "keypress";
}
/**
* Whether the control key is hold during the key binding.
* @return true iff the binding uses control
*/
public boolean isControl() {
return this.control;
}
/**
* Whether the shift key is hold during the key binding.
* @return true iff the binding uses shift
*/
public boolean isShift() {
return this.shift;
}
/**
* Whether the alt key is hold during the key binding.
* @return true iff the binding uses alt
*/
public boolean isAlt() {
return this.alt;
}
/**
* Whether the cmd key is hold during the key binding.
* @return true iff the binding uses cmd
*/
public boolean isCmd() {
return this.cmd;
}
/**
* Returns the keycode of the key binding.
* @return the keycode
*/
public Integer getKeyCodeNumber() {
return this.keyCodeNumber;
}
/**
* Returns the keycode of the key binding.
* @return the keycode
*/
public String getCharacter() {
return this.character;
}
/**
* Whether the key binding is character based.
* @return true iff the binding uses a character
*/
public boolean isCharacterBinding() {
return getCharacter() != null;
}
/**
* Returns the event type of the key binding.
* @return the event type
*/
public String getType() {
return type;
}
/**
* Returns the triggered action.
* @return the action
*/
public KeyBindingAction getAction() {
return this.action;
}
}