blob: 7f65daab337a62fe3da064ccfdadb820595404d7 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.openoffice.java.accessibility;
import com.sun.star.accessibility.*;
import com.sun.star.awt.KeyStroke;
/**
*
*/
public class AccessibleKeyBinding extends Object implements javax.accessibility.AccessibleKeyBinding {
XAccessibleKeyBinding unoAccessibleKeybinding;
public AccessibleKeyBinding(XAccessibleKeyBinding unoKB) {
unoAccessibleKeybinding = unoKB;
}
public static int convertModifiers(short s) {
int modifiers = 0;
if ((s & com.sun.star.awt.KeyModifier.SHIFT) != 0) {
modifiers = modifiers | java.awt.event.KeyEvent.SHIFT_DOWN_MASK;
}
if ((s & com.sun.star.awt.KeyModifier.MOD1) != 0) {
modifiers = modifiers | java.awt.event.KeyEvent.CTRL_DOWN_MASK;
}
if ((s & com.sun.star.awt.KeyModifier.MOD2) != 0) {
modifiers = modifiers | java.awt.event.KeyEvent.ALT_DOWN_MASK;
}
if ((s & com.sun.star.awt.KeyModifier.MOD3) != 0) {
modifiers = modifiers | java.awt.event.KeyEvent.META_DOWN_MASK;
}
return modifiers;
}
public static int convertKeyCode(short s) {
int keycode = java.awt.event.KeyEvent.VK_UNDEFINED;
switch(s) {
case com.sun.star.awt.Key.NUM0:
keycode = java.awt.event.KeyEvent.VK_0;
break;
case com.sun.star.awt.Key.NUM1:
keycode = java.awt.event.KeyEvent.VK_1;
break;
case com.sun.star.awt.Key.NUM2:
keycode = java.awt.event.KeyEvent.VK_2;
break;
case com.sun.star.awt.Key.NUM3:
keycode = java.awt.event.KeyEvent.VK_3;
break;
case com.sun.star.awt.Key.NUM4:
keycode = java.awt.event.KeyEvent.VK_4;
break;
case com.sun.star.awt.Key.NUM5:
keycode = java.awt.event.KeyEvent.VK_5;
break;
case com.sun.star.awt.Key.NUM6:
keycode = java.awt.event.KeyEvent.VK_6;
break;
case com.sun.star.awt.Key.NUM7:
keycode = java.awt.event.KeyEvent.VK_7;
break;
case com.sun.star.awt.Key.NUM8:
keycode = java.awt.event.KeyEvent.VK_8;
break;
case com.sun.star.awt.Key.NUM9:
keycode = java.awt.event.KeyEvent.VK_9;
break;
case com.sun.star.awt.Key.A:
keycode = java.awt.event.KeyEvent.VK_A;
break;
case com.sun.star.awt.Key.B:
keycode = java.awt.event.KeyEvent.VK_B;
break;
case com.sun.star.awt.Key.C:
keycode = java.awt.event.KeyEvent.VK_C;
break;
case com.sun.star.awt.Key.D:
keycode = java.awt.event.KeyEvent.VK_D;
break;
case com.sun.star.awt.Key.E:
keycode = java.awt.event.KeyEvent.VK_E;
break;
case com.sun.star.awt.Key.F:
keycode = java.awt.event.KeyEvent.VK_F;
break;
case com.sun.star.awt.Key.G:
keycode = java.awt.event.KeyEvent.VK_G;
break;
case com.sun.star.awt.Key.H:
keycode = java.awt.event.KeyEvent.VK_H;
break;
case com.sun.star.awt.Key.I:
keycode = java.awt.event.KeyEvent.VK_I;
break;
case com.sun.star.awt.Key.J:
keycode = java.awt.event.KeyEvent.VK_J;
break;
case com.sun.star.awt.Key.K:
keycode = java.awt.event.KeyEvent.VK_K;
break;
case com.sun.star.awt.Key.L:
keycode = java.awt.event.KeyEvent.VK_L;
break;
case com.sun.star.awt.Key.M:
keycode = java.awt.event.KeyEvent.VK_M;
break;
case com.sun.star.awt.Key.N:
keycode = java.awt.event.KeyEvent.VK_N;
break;
case com.sun.star.awt.Key.O:
keycode = java.awt.event.KeyEvent.VK_O;
break;
case com.sun.star.awt.Key.P:
keycode = java.awt.event.KeyEvent.VK_P;
break;
case com.sun.star.awt.Key.Q:
keycode = java.awt.event.KeyEvent.VK_Q;
break;
case com.sun.star.awt.Key.R:
keycode = java.awt.event.KeyEvent.VK_R;
break;
case com.sun.star.awt.Key.S:
keycode = java.awt.event.KeyEvent.VK_S;
break;
case com.sun.star.awt.Key.T:
keycode = java.awt.event.KeyEvent.VK_T;
break;
case com.sun.star.awt.Key.U:
keycode = java.awt.event.KeyEvent.VK_U;
break;
case com.sun.star.awt.Key.V:
keycode = java.awt.event.KeyEvent.VK_V;
break;
case com.sun.star.awt.Key.W:
keycode = java.awt.event.KeyEvent.VK_W;
break;
case com.sun.star.awt.Key.X:
keycode = java.awt.event.KeyEvent.VK_X;
break;
case com.sun.star.awt.Key.Y:
keycode = java.awt.event.KeyEvent.VK_Y;
break;
case com.sun.star.awt.Key.Z:
keycode = java.awt.event.KeyEvent.VK_Z;
break;
case com.sun.star.awt.Key.F1:
keycode = java.awt.event.KeyEvent.VK_F1;
break;
case com.sun.star.awt.Key.F2:
keycode = java.awt.event.KeyEvent.VK_F2;
break;
case com.sun.star.awt.Key.F3:
keycode = java.awt.event.KeyEvent.VK_F3;
break;
case com.sun.star.awt.Key.F4:
keycode = java.awt.event.KeyEvent.VK_F4;
break;
case com.sun.star.awt.Key.F5:
keycode = java.awt.event.KeyEvent.VK_F5;
break;
case com.sun.star.awt.Key.F6:
keycode = java.awt.event.KeyEvent.VK_F6;
break;
case com.sun.star.awt.Key.F7:
keycode = java.awt.event.KeyEvent.VK_F7;
break;
case com.sun.star.awt.Key.F8:
keycode = java.awt.event.KeyEvent.VK_F8;
break;
case com.sun.star.awt.Key.F9:
keycode = java.awt.event.KeyEvent.VK_F9;
break;
case com.sun.star.awt.Key.F10:
keycode = java.awt.event.KeyEvent.VK_F10;
break;
case com.sun.star.awt.Key.F11:
keycode = java.awt.event.KeyEvent.VK_F11;
break;
case com.sun.star.awt.Key.F12:
keycode = java.awt.event.KeyEvent.VK_F12;
break;
case com.sun.star.awt.Key.F13:
keycode = java.awt.event.KeyEvent.VK_F13;
break;
case com.sun.star.awt.Key.F14:
keycode = java.awt.event.KeyEvent.VK_F14;
break;
case com.sun.star.awt.Key.F15:
keycode = java.awt.event.KeyEvent.VK_F15;
break;
case com.sun.star.awt.Key.F16:
keycode = java.awt.event.KeyEvent.VK_F16;
break;
case com.sun.star.awt.Key.F17:
keycode = java.awt.event.KeyEvent.VK_F17;
break;
case com.sun.star.awt.Key.F18:
keycode = java.awt.event.KeyEvent.VK_F18;
break;
case com.sun.star.awt.Key.F19:
keycode = java.awt.event.KeyEvent.VK_F19;
break;
case com.sun.star.awt.Key.F20:
keycode = java.awt.event.KeyEvent.VK_F20;
break;
case com.sun.star.awt.Key.F21:
keycode = java.awt.event.KeyEvent.VK_F21;
break;
case com.sun.star.awt.Key.F22:
keycode = java.awt.event.KeyEvent.VK_F22;
break;
case com.sun.star.awt.Key.F23:
keycode = java.awt.event.KeyEvent.VK_F23;
break;
case com.sun.star.awt.Key.F24:
keycode = java.awt.event.KeyEvent.VK_F24;
break;
case com.sun.star.awt.Key.DOWN:
keycode = java.awt.event.KeyEvent.VK_DOWN;
break;
case com.sun.star.awt.Key.UP:
keycode = java.awt.event.KeyEvent.VK_UP;
break;
case com.sun.star.awt.Key.LEFT:
keycode = java.awt.event.KeyEvent.VK_LEFT;
break;
case com.sun.star.awt.Key.RIGHT:
keycode = java.awt.event.KeyEvent.VK_RIGHT;
break;
case com.sun.star.awt.Key.HOME:
keycode = java.awt.event.KeyEvent.VK_HOME;
break;
case com.sun.star.awt.Key.END:
keycode = java.awt.event.KeyEvent.VK_END;
break;
case com.sun.star.awt.Key.PAGEUP:
keycode = java.awt.event.KeyEvent.VK_PAGE_UP;
break;
case com.sun.star.awt.Key.PAGEDOWN:
keycode = java.awt.event.KeyEvent.VK_PAGE_DOWN;
break;
case com.sun.star.awt.Key.RETURN:
keycode = java.awt.event.KeyEvent.VK_ENTER;
break;
case com.sun.star.awt.Key.ESCAPE:
keycode = java.awt.event.KeyEvent.VK_ESCAPE;
break;
case com.sun.star.awt.Key.TAB:
keycode = java.awt.event.KeyEvent.VK_TAB;
break;
case com.sun.star.awt.Key.BACKSPACE:
keycode = java.awt.event.KeyEvent.VK_BACK_SPACE;
break;
case com.sun.star.awt.Key.SPACE:
keycode = java.awt.event.KeyEvent.VK_SPACE;
break;
case com.sun.star.awt.Key.INSERT:
keycode = java.awt.event.KeyEvent.VK_INSERT;
break;
case com.sun.star.awt.Key.DELETE:
keycode = java.awt.event.KeyEvent.VK_DELETE;
break;
case com.sun.star.awt.Key.ADD:
keycode = java.awt.event.KeyEvent.VK_ADD;
break;
case com.sun.star.awt.Key.SUBTRACT:
keycode = java.awt.event.KeyEvent.VK_SUBTRACT;
break;
case com.sun.star.awt.Key.MULTIPLY:
keycode = java.awt.event.KeyEvent.VK_MULTIPLY;
break;
case com.sun.star.awt.Key.DIVIDE:
keycode = java.awt.event.KeyEvent.VK_DIVIDE;
break;
case com.sun.star.awt.Key.POINT:
keycode = java.awt.event.KeyEvent.VK_PERIOD;
break;
case com.sun.star.awt.Key.COMMA:
keycode = java.awt.event.KeyEvent.VK_COMMA;
break;
case com.sun.star.awt.Key.LESS:
keycode = java.awt.event.KeyEvent.VK_LESS;
break;
case com.sun.star.awt.Key.GREATER:
keycode = java.awt.event.KeyEvent.VK_GREATER;
break;
case com.sun.star.awt.Key.EQUAL:
keycode = java.awt.event.KeyEvent.VK_EQUALS;
break;
case com.sun.star.awt.Key.CUT:
keycode = java.awt.event.KeyEvent.VK_CUT;
break;
case com.sun.star.awt.Key.COPY:
keycode = java.awt.event.KeyEvent.VK_COPY;
break;
case com.sun.star.awt.Key.PASTE:
keycode = java.awt.event.KeyEvent.VK_PASTE;
break;
case com.sun.star.awt.Key.UNDO:
keycode = java.awt.event.KeyEvent.VK_UNDO;
break;
case com.sun.star.awt.Key.FIND:
keycode = java.awt.event.KeyEvent.VK_FIND;
break;
case com.sun.star.awt.Key.PROPERTIES:
keycode = java.awt.event.KeyEvent.VK_PROPS;
break;
case com.sun.star.awt.Key.HELP:
keycode = java.awt.event.KeyEvent.VK_HELP;
break;
default:
}
return keycode;
}
/*
* AccessibleKeyBinding
*/
/** Returns a key binding for this object */
public Object getAccessibleKeyBinding(int i) {
try {
KeyStroke[] keys = unoAccessibleKeybinding.getAccessibleKeyBinding(i);
javax.swing.KeyStroke[] data = new javax.swing.KeyStroke[keys.length];
for (int j=0; j < keys.length; j++) {
int keyCode = convertKeyCode(keys[j].KeyCode);
if (keyCode != java.awt.event.KeyEvent.VK_UNDEFINED) {
data[j] = javax.swing.KeyStroke.getKeyStroke(keyCode, convertModifiers(keys[j].Modifiers));
} else {
data[j] = null;
}
}
if (keys.length == 1) {
return data[0];
} else {
return data;
}
} catch (com.sun.star.lang.IndexOutOfBoundsException e) {
return null;
} catch (com.sun.star.uno.RuntimeException e) {
return null;
}
}
/** Returns the number of key bindings for this object */
public int getAccessibleKeyBindingCount() {
try {
return unoAccessibleKeybinding.getAccessibleKeyBindingCount();
} catch (com.sun.star.uno.RuntimeException e) {
return 0;
}
}
}