List of usage examples for org.eclipse.jface.bindings.keys KeyStroke getModifierKeys
public final int getModifierKeys()
From source file:com.aptana.shared_core.bindings.KeyBindingHelper.java
License:Open Source License
public static boolean matchesKeybinding(int keyCode, int stateMask, KeySequence keySequence) { KeyStroke[] keyStrokes = keySequence.getKeyStrokes(); for (KeyStroke keyStroke : keyStrokes) { if (keyStroke.getNaturalKey() == keyCode && ((keyStroke.getModifierKeys() & stateMask) != 0 || keyStroke.getModifierKeys() == stateMask)) { return true; }//www . j a va2s . c o m } return false; }
From source file:com.aptana.ui.keybinding.KeyBindingHelper.java
License:Open Source License
private static boolean internalMatchesKeybinding(int keyCode, int stateMask, TriggerSequence seq) { KeySequence keySequence = (KeySequence) seq; KeyStroke[] keyStrokes = keySequence.getKeyStrokes(); if (keyStrokes.length > 1) { return false; // Only handling one step binding... the code below does not support things as "CTRL+X R" for // redo. }//from w ww . j a va2 s . c om for (KeyStroke keyStroke : keyStrokes) { if (keyStroke.getNaturalKey() == keyCode && keyStroke.getModifierKeys() == stateMask) { return true; } } return false; }
From source file:com.archimatetool.editor.diagram.actions.FullScreenAction.java
License:Open Source License
/** * Add a Key binding mapped to an Action *//*from w w w . ja va2 s . c o m*/ private void addKeyBinding(ActionRegistry registry, IBindingService service, ActionFactory actionFactory) { KeySequence seq = (KeySequence) service.getBestActiveBindingFor(actionFactory.getCommandId()); if (seq != null && seq.getKeyStrokes().length > 0) { KeyStroke ks = seq.getKeyStrokes()[0]; keyBindings.add(new KeyBinding(ks.getModifierKeys(), Character.toLowerCase(ks.getNaturalKey()), registry.getAction(actionFactory.getId()))); } }
From source file:com.github.haixing_hu.swt.action.ActionContributionItemEx.java
License:Open Source License
/** * Synchronizes the UI with the given property. * * @param propertyName// w ww . j a v a 2 s . c o m * the name of the property, or <code>null</code> meaning all * applicable properties */ @Override public void update(String propertyName) { if (widget != null) { // determine what to do final boolean textChanged = (propertyName == null) || propertyName.equals(IAction.TEXT); boolean imageChanged = (propertyName == null) || propertyName.equals(IAction.IMAGE); final boolean tooltipTextChanged = (propertyName == null) || propertyName.equals(IAction.TOOL_TIP_TEXT); final boolean enableStateChanged = (propertyName == null) || propertyName.equals(IAction.ENABLED) || propertyName.equals(IContributionManagerOverrides.P_ENABLED); final boolean checkChanged = ((action.getStyle() == IAction.AS_CHECK_BOX) || (action.getStyle() == IAction.AS_RADIO_BUTTON)) && ((propertyName == null) || propertyName.equals(IAction.CHECKED)); if (!showImage) { // do not update the image if not show image imageChanged = false; } if (widget instanceof ToolItem) { final ToolItem ti = (ToolItem) widget; String text = action.getText(); // the set text is shown only if there is no image or if forced // by MODE_FORCE_TEXT final boolean showText = (text != null) && (((getMode() & MODE_FORCE_TEXT) != 0) || !hasImages(action)); // only do the trimming if the text will be used if (showText && (text != null)) { text = Action.removeAcceleratorText(text); text = Action.removeMnemonics(text); } if (textChanged) { final String textToSet = showText ? text : ""; //$NON-NLS-1$ final boolean rightStyle = (ti.getParent().getStyle() & SWT.RIGHT) != 0; if (rightStyle || !ti.getText().equals(textToSet)) { // In addition to being required to update the text if // it // gets nulled out in the action, this is also a // workaround // for bug 50151: Using SWT.RIGHT on a ToolBar leaves // blank space ti.setText(textToSet); } } if (imageChanged) { // only substitute a missing image if it has no text updateImages(!showText); } if (tooltipTextChanged || textChanged) { String toolTip = action.getToolTipText(); if ((toolTip == null) || (toolTip.length() == 0)) { toolTip = text; } final ExternalActionManager.ICallback callback = ExternalActionManager.getInstance() .getCallback(); final String commandId = action.getActionDefinitionId(); if ((callback != null) && (commandId != null) && (toolTip != null)) { final String acceleratorText = callback.getAcceleratorText(commandId); if ((acceleratorText != null) && (acceleratorText.length() != 0)) { toolTip = JFaceResources.format("Toolbar_Tooltip_Accelerator", //$NON-NLS-1$ new Object[] { toolTip, acceleratorText }); } } // if the text is showing, then only set the tooltip if // different if (!showText || ((toolTip != null) && !toolTip.equals(text))) { ti.setToolTipText(toolTip); } else { ti.setToolTipText(null); } } if (enableStateChanged) { final boolean shouldBeEnabled = action.isEnabled() && isEnabledAllowed(); if (ti.getEnabled() != shouldBeEnabled) { ti.setEnabled(shouldBeEnabled); } } if (checkChanged) { final boolean bv = action.isChecked(); if (ti.getSelection() != bv) { ti.setSelection(bv); } } return; } if (widget instanceof MenuItem) { final MenuItem mi = (MenuItem) widget; if (textChanged) { int accelerator = 0; String acceleratorText = null; final ActionEx updatedAction = getAction(); String text = null; accelerator = updatedAction.getAccelerator(); final ExternalActionManager.ICallback callback = ExternalActionManager.getInstance() .getCallback(); // Block accelerators that are already in use. if ((accelerator != 0) && (callback != null) && (callback.isAcceleratorInUse(accelerator))) { accelerator = 0; } /* * Process accelerators on GTK in a special way to avoid Bug 42009. We * will override the native input method by allowing these reserved * accelerators to be placed on the menu. We will only do this for * "Ctrl+Shift+[0-9A-FU]". */ final String commandId = updatedAction.getActionDefinitionId(); if ((Util.isGtk()) && (callback instanceof IBindingManagerCallback) && (commandId != null)) { final IBindingManagerCallback bindingManagerCallback = (IBindingManagerCallback) callback; final IKeyLookup lookup = KeyLookupFactory.getDefault(); final TriggerSequence[] triggerSequences = bindingManagerCallback .getActiveBindingsFor(commandId); for (final TriggerSequence triggerSequence : triggerSequences) { final Trigger[] triggers = triggerSequence.getTriggers(); if (triggers.length == 1) { final Trigger trigger = triggers[0]; if (trigger instanceof KeyStroke) { final KeyStroke currentKeyStroke = (KeyStroke) trigger; final int currentNaturalKey = currentKeyStroke.getNaturalKey(); if ((currentKeyStroke .getModifierKeys() == (lookup.getCtrl() | lookup.getShift())) && (((currentNaturalKey >= '0') && (currentNaturalKey <= '9')) || ((currentNaturalKey >= 'A') && (currentNaturalKey <= 'F')) || (currentNaturalKey == 'U'))) { accelerator = currentKeyStroke.getModifierKeys() | currentNaturalKey; acceleratorText = triggerSequence.format(); break; } } } } } if (accelerator == 0) { if ((callback != null) && (commandId != null)) { acceleratorText = callback.getAcceleratorText(commandId); } } IContributionManagerOverrides overrides = null; if (getParent() != null) { overrides = getParent().getOverrides(); } if (overrides != null) { text = getParent().getOverrides().getText(this); } mi.setAccelerator(accelerator); if (text == null) { text = updatedAction.getText(); } if ((text != null) && (acceleratorText == null)) { // use extracted accelerator text in case accelerator // cannot be fully represented in one int (e.g. // multi-stroke keys) acceleratorText = LegacyActionTools.extractAcceleratorText(text); if ((acceleratorText == null) && (accelerator != 0)) { acceleratorText = Action.convertAccelerator(accelerator); } } if (text == null) { text = ""; //$NON-NLS-1$ } else { text = Action.removeAcceleratorText(text); } // add "..." if the action will show a dialog if (updatedAction.isShowDialog()) { text = text + dialogIndicator; } if (acceleratorText == null) { mi.setText(text); } else { mi.setText(text + '\t' + acceleratorText); } } if (imageChanged) { updateImages(false); } if (enableStateChanged) { final boolean shouldBeEnabled = action.isEnabled() && isEnabledAllowed(); if (mi.getEnabled() != shouldBeEnabled) { mi.setEnabled(shouldBeEnabled); } } if (checkChanged) { final boolean bv = action.isChecked(); if (mi.getSelection() != bv) { mi.setSelection(bv); } } return; } if (widget instanceof Button) { final Button button = (Button) widget; if (imageChanged) { updateImages(false); } if (textChanged) { String text = action.getText(); final boolean showText = (text != null) && (((getMode() & MODE_FORCE_TEXT) != 0) || !hasImages(action)); // only do the trimming if the text will be used if (showText) { text = Action.removeAcceleratorText(text); } final String textToSet = showText ? text : ""; //$NON-NLS-1$ button.setText(textToSet); } if (tooltipTextChanged) { button.setToolTipText(action.getToolTipText()); } if (enableStateChanged) { final boolean shouldBeEnabled = action.isEnabled() && isEnabledAllowed(); if (button.getEnabled() != shouldBeEnabled) { button.setEnabled(shouldBeEnabled); } } if (checkChanged) { final boolean bv = action.isChecked(); if (button.getSelection() != bv) { button.setSelection(bv); } } return; } } }
From source file:com.mulgasoft.emacsplus.commands.EmacsMovementHandler.java
License:Open Source License
/** * Does the trigger for this movement command contain the SHIFT key? * /* ww w.j ava 2s . c o m*/ * Enforce that the <binding> and <binding>+SHIFT belong to the same Command. * If not, don't apply shift selection (if enabled) for this command (i.e. return false). * * @param event the Execution event that invoked this command * * @return true if SHIFT modifier was set, else false */ private boolean getShifted(ExecutionEvent event) { // NB: only single keystroke commands are valid boolean result = false; Object trigger = event.getTrigger(); Event e = null; if (trigger != null && trigger instanceof Event && ((e = (Event) trigger).stateMask & SWT.SHIFT) != 0) { String cmdId = event.getCommand().getId(); int mask = (e.stateMask & SWT.MODIFIER_MASK) ^ SWT.SHIFT; int u_code = Character.toUpperCase((char) e.keyCode); IBindingService bs = (IBindingService) PlatformUI.getWorkbench().getService(IBindingService.class); if (cmdId != null && bs != null) { TriggerSequence[] sequences = bs.getActiveBindingsFor(cmdId); for (TriggerSequence s : sequences) { if (s instanceof KeySequence) { KeyStroke[] strokes = ((KeySequence) s).getKeyStrokes(); if (strokes.length == 1) { KeyStroke k = strokes[strokes.length - 1]; // if keyCode is alpha, then we test uppercase, else keyCode if (k.getModifierKeys() == mask && (k.getNaturalKey() == u_code || k.getNaturalKey() == e.keyCode)) { result = true; break; } } } } } } return result; }
From source file:com.mulgasoft.emacsplus.commands.UniversalHandler.java
License:Open Source License
private Event makeEvent(IUniversalResult ua) { Event result = new Event(); KeySequence keys = ua.getTrigger();//w w w . ja va 2s . co m if (keys != null) { Trigger[] triggers = keys.getTriggers(); if (triggers[0] instanceof KeyStroke) { // really, all it can be anyway KeyStroke ks = (KeyStroke) triggers[triggers.length - 1]; result.keyCode = ks.getNaturalKey(); result.stateMask = ks.getModifierKeys() & SWT.MODIFIER_MASK; } } return result; }
From source file:com.rcpcompany.test.utils.ui.UITestUtils.java
License:Open Source License
/** * Posts the specified keystroke to the specified control which will get focus. * //from w w w. j a va2s . c om * @param c * the control * @param stroke * the text representation of the key-stroke */ public static void postKeyStroke(Control c, String stroke) { assertNotNull(c); assertFalse(c.isDisposed()); KeyStroke keyStroke = null; try { keyStroke = KeyStroke.getInstance(stroke); } catch (final ParseException ex) { fail(stroke + ": " + ex.getMessage()); return; } assertTrue(stroke + ": not complete", keyStroke.isComplete()); // LogUtils.debug(c, stroke + " --> " + keyStroke); Event event; c.setFocus(); postModifierKeys(c, keyStroke, true); event = new Event(); event.type = SWT.KeyDown; event.stateMask = keyStroke.getModifierKeys(); event.keyCode = keyStroke.getNaturalKey(); event.character = (char) event.keyCode; event.widget = c; // System.out.println("e:: " + ToStringUtils.toString(event)); assertTrue(stroke + ": post KeyDown", c.getDisplay().post(event)); event = new Event(); event.type = SWT.KeyUp; event.stateMask = keyStroke.getModifierKeys(); event.keyCode = keyStroke.getNaturalKey(); event.character = (char) event.keyCode; event.widget = c; // System.out.println("e:: " + ToStringUtils.toString(event)); assertTrue(stroke + ": post KeyUp", c.getDisplay().post(event)); postModifierKeys(c, keyStroke, false); yield(); }
From source file:com.rcpcompany.test.utils.ui.UITestUtils.java
License:Open Source License
/** * Posts a set of modifiers (shift, control, etc) to the specified control. * /*from ww w. j a v a 2s . co m*/ * @param c * the {@link Control} * @param keyStroke * the key stroke * @param down * <code>true</code> for keyDown and <code>false</code> for keyUp */ public static void postModifierKeys(Control c, KeyStroke keyStroke, boolean down) { if ((keyStroke.getModifierKeys() & SWT.COMMAND) == SWT.COMMAND) { final Event event = new Event(); event.type = down ? SWT.KeyDown : SWT.KeyUp; event.stateMask = 0; event.keyCode = SWT.COMMAND; event.widget = c; assertTrue(c.getDisplay().post(event)); } if ((keyStroke.getModifierKeys() & SWT.ALT) == SWT.ALT) { final Event event = new Event(); event.type = down ? SWT.KeyDown : SWT.KeyUp; event.stateMask = 0; event.keyCode = SWT.ALT; event.widget = c; assertTrue(c.getDisplay().post(event)); } if ((keyStroke.getModifierKeys() & SWT.SHIFT) == SWT.SHIFT) { final Event event = new Event(); event.type = down ? SWT.KeyDown : SWT.KeyUp; event.stateMask = 0; event.keyCode = SWT.SHIFT; event.widget = c; assertTrue(c.getDisplay().post(event)); } if ((keyStroke.getModifierKeys() & SWT.CTRL) == SWT.CTRL) { final Event event = new Event(); event.type = down ? SWT.KeyDown : SWT.KeyUp; event.stateMask = 0; event.keyCode = SWT.CTRL; event.widget = c; assertTrue(c.getDisplay().post(event)); } }
From source file:com.rcpcompany.uibindings.extests.BaseTestUtils.java
License:Open Source License
/** * Posts the specified keystroke to the specified control which will get focus. * //w w w . j ava2s . c o m * * @param c the control * @param stroke the text representation of the key-stroke */ public static void postKeyStroke(Control c, String stroke) { KeyStroke keyStroke = null; try { keyStroke = KeyStroke.getInstance(stroke); } catch (final ParseException ex) { fail(stroke + ": " + ex.getMessage()); } assertTrue(stroke + ": not complete", keyStroke.isComplete()); // LogUtils.debug(c, stroke + " --> " + keyStroke); Event event; c.setFocus(); postModifierKeys(c, keyStroke, true); event = new Event(); event.type = SWT.KeyDown; event.stateMask = keyStroke.getModifierKeys(); event.keyCode = keyStroke.getNaturalKey(); event.character = (char) event.keyCode; event.widget = c; // System.out.println("e:: " + ToStringUtils.toString(event)); assertTrue(stroke + ": post KeyDown", c.getDisplay().post(event)); event = new Event(); event.type = SWT.KeyUp; event.stateMask = keyStroke.getModifierKeys(); event.keyCode = keyStroke.getNaturalKey(); event.character = (char) event.keyCode; event.widget = c; // System.out.println("e:: " + ToStringUtils.toString(event)); assertTrue(stroke + ": post KeyUp", c.getDisplay().post(event)); postModifierKeys(c, keyStroke, false); yield(); }
From source file:com.rcpcompany.uibindings.extests.BaseTestUtils.java
License:Open Source License
/** * @param c// w w w . j a v a2 s. co m * @param keyStroke * @param down TODO */ public static void postModifierKeys(Control c, KeyStroke keyStroke, boolean down) { if ((keyStroke.getModifierKeys() & SWT.ALT) == SWT.ALT) { final Event event = new Event(); event.type = down ? SWT.KeyDown : SWT.KeyUp; event.stateMask = 0; event.keyCode = SWT.ALT; event.widget = c; assertTrue(c.getDisplay().post(event)); } if ((keyStroke.getModifierKeys() & SWT.SHIFT) == SWT.SHIFT) { final Event event = new Event(); event.type = down ? SWT.KeyDown : SWT.KeyUp; event.stateMask = 0; event.keyCode = SWT.SHIFT; event.widget = c; assertTrue(c.getDisplay().post(event)); } if ((keyStroke.getModifierKeys() & SWT.CTRL) == SWT.CTRL) { final Event event = new Event(); event.type = down ? SWT.KeyDown : SWT.KeyUp; event.stateMask = 0; event.keyCode = SWT.CTRL; event.widget = c; assertTrue(c.getDisplay().post(event)); } }