/* * Copyright 2008 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.user.client.ui; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Event; import java.util.ArrayList; /** * A helper class for implementers of the SourcesKeyboardEvents interface. This * subclass of {@link ArrayList} assumes that all objects added to it will be of * type {@link com.google.gwt.user.client.ui.KeyboardListener}. * * @deprecated Widgets should now manage their own handlers via {@link Widget#addDomHandler} */ @Deprecated public class KeyboardListenerCollection extends ArrayList<KeyboardListener> { /** * Gets the keyboard modifiers associated with a DOMEvent. * * @param event the event. * @return the modifiers as defined in {@link KeyboardListener}. */ public static int getKeyboardModifiers(Event event) { return (DOM.eventGetShiftKey(event) ? KeyboardListener.MODIFIER_SHIFT : 0) | (DOM.eventGetMetaKey(event) ? KeyboardListener.MODIFIER_META : 0) | (DOM.eventGetCtrlKey(event) ? KeyboardListener.MODIFIER_CTRL : 0) | (DOM.eventGetAltKey(event) ? KeyboardListener.MODIFIER_ALT : 0); } /** * Automatically fires the appropriate keyboard event to all listeners. If the * given event is not a keyboard event, no action will be performed. * * @param sender the widget sending the event. * @param event the Event received by the widget. */ public void fireKeyboardEvent(Widget sender, Event event) { int modifiers = getKeyboardModifiers(event); switch (DOM.eventGetType(event)) { case Event.ONKEYDOWN: fireKeyDown(sender, (char) DOM.eventGetKeyCode(event), modifiers); break; case Event.ONKEYUP: fireKeyUp(sender, (char) DOM.eventGetKeyCode(event), modifiers); break; case Event.ONKEYPRESS: fireKeyPress(sender, (char) DOM.eventGetKeyCode(event), modifiers); break; } } /** * Fires a keyDown event to all listeners. * * @param sender the widget sending the event. * @param keyCode the keyCode to send with the event. * @param modifiers the modifier keys pressed at when the event occurred. This * value is a combination of the bits defined by * {@link KeyboardListener#MODIFIER_SHIFT}, * {@link KeyboardListener#MODIFIER_CTRL}, and * {@link KeyboardListener#MODIFIER_ALT}. */ public void fireKeyDown(Widget sender, char keyCode, int modifiers) { for (KeyboardListener listener : this) { listener.onKeyDown(sender, keyCode, modifiers); } } /** * Fires a keyDown event to all listeners. * * @param sender the widget sending the event. * @param key the key to send with the event. * @param modifiers the modifier keys pressed at when the event occurred. This * value is a combination of the bits defined by * {@link KeyboardListener#MODIFIER_SHIFT}, * {@link KeyboardListener#MODIFIER_CTRL}, and * {@link KeyboardListener#MODIFIER_ALT}. */ public void fireKeyPress(Widget sender, char key, int modifiers) { for (KeyboardListener listener : this) { listener.onKeyPress(sender, key, modifiers); } } /** * Fires a keyDown event to all listeners. * * @param sender the widget sending the event. * @param keyCode the keyCode to send with the event. * @param modifiers the modifier keys pressed at when the event occurred. This * value is a combination of the bits defined by * {@link KeyboardListener#MODIFIER_SHIFT}, * {@link KeyboardListener#MODIFIER_CTRL}, and * {@link KeyboardListener#MODIFIER_ALT}. */ public void fireKeyUp(Widget sender, char keyCode, int modifiers) { for (KeyboardListener listener : this) { listener.onKeyUp(sender, keyCode, modifiers); } } }