Source code: com/trapezium/chisel/ChiselKeys.java
1 /*
2 * @(#)ChiselKeys.java
3 *
4 * Copyright (c) 1998 by Trapezium Development LLC. All Rights Reserved.
5 *
6 * The information in this file is the property of Trapezium Development LLC
7 * and may be used only in accordance with the terms of the license granted
8 * by Trapezium.
9 *
10 */
11 package com.trapezium.chisel;
12
13 import java.util.*;
14 import java.io.*;
15 import java.awt.*;
16 import java.awt.event.*;
17
18 public class ChiselKeys {
19 private static Hashtable keys = new Hashtable();
20 static {
21 setKeyAction("anchor-drop", Event.ALT_MASK, KeyEvent.VK_A);
22 setKeyAction("anchor-goto-last", Event.ALT_MASK, KeyEvent.VK_J);
23 setKeyAction("brace-match-backward", Event.ALT_MASK, 219); // '['
24 setKeyAction("brace-match-forward", Event.ALT_MASK, 221); // ']'
25 setKeyAction("buffer-paste", Event.CTRL_MASK, KeyEvent.VK_V);
26 setKeyAction("character-delete-backward", 0, KeyEvent.VK_BACK_SPACE);
27 setKeyAction("character-delete-forward", 0, KeyEvent.VK_DELETE);
28 setKeyAction("cursor-backward", 0, KeyEvent.VK_LEFT);
29 setKeyAction("cursor-document-begin", KeyEvent.CTRL_MASK, KeyEvent.VK_PAGE_UP);
30 setKeyAction("cursor-document-end", KeyEvent.CTRL_MASK, KeyEvent.VK_PAGE_DOWN);
31 setKeyAction("cursor-down", 0, KeyEvent.VK_DOWN);
32 setKeyAction("cursor-forward", 0, KeyEvent.VK_RIGHT);
33 setKeyAction("cursor-line-begin", 0, KeyEvent.VK_HOME);
34 setKeyAction("cursor-line-end", 0, KeyEvent.VK_END);
35 setKeyAction("cursor-select-backward", Event.SHIFT_MASK, KeyEvent.VK_LEFT);
36 setKeyAction("cursor-select-document-begin", Event.SHIFT_MASK | KeyEvent.CTRL_MASK, KeyEvent.VK_HOME);
37 setKeyAction("cursor-select-document-end", Event.SHIFT_MASK | KeyEvent.CTRL_MASK, KeyEvent.VK_END);
38 setKeyAction("cursor-select-down", Event.SHIFT_MASK | Event.SHIFT_MASK, KeyEvent.VK_DOWN);
39 setKeyAction("cursor-select-forward", Event.SHIFT_MASK, KeyEvent.VK_RIGHT);
40 setKeyAction("cursor-select-line-begin", Event.SHIFT_MASK, KeyEvent.VK_HOME);
41 setKeyAction("cursor-select-line-end", Event.SHIFT_MASK, KeyEvent.VK_END);
42 setKeyAction("cursor-select-up", Event.SHIFT_MASK, KeyEvent.VK_UP);
43 setKeyAction("cursor-select-word-backward", Event.SHIFT_MASK | Event.CTRL_MASK, KeyEvent.VK_LEFT);
44 setKeyAction("cursor-select-word-forward", Event.SHIFT_MASK | Event.CTRL_MASK, KeyEvent.VK_RIGHT);
45 setKeyAction("cursor-page-begin", KeyEvent.CTRL_MASK, KeyEvent.VK_HOME);
46 setKeyAction("cursor-page-end", KeyEvent.CTRL_MASK, KeyEvent.VK_END);
47 setKeyAction("cursor-up", 0, KeyEvent.VK_UP);
48 setKeyAction("cursor-word-backward", Event.CTRL_MASK, KeyEvent.VK_LEFT);
49 setKeyAction("cursor-word-forward", Event.CTRL_MASK, KeyEvent.VK_RIGHT);
50 setKeyAction("find-dialog", Event.CTRL_MASK, KeyEvent.VK_F);
51 setKeyAction("find-next-backward", Event.ALT_MASK, KeyEvent.VK_UP);
52 setKeyAction("find-next-forward", Event.ALT_MASK, KeyEvent.VK_DOWN);
53 setKeyAction("frame-close", Event.CTRL_MASK, KeyEvent.VK_W);
54 setKeyAction("goto-dialog", Event.CTRL_MASK, KeyEvent.VK_G);
55 setKeyAction("line-break", 0, KeyEvent.VK_ENTER);
56 setKeyAction("line-clone", Event.ALT_MASK, KeyEvent.VK_O);
57 setKeyAction("line-delete", Event.ALT_MASK, KeyEvent.VK_D);
58 setKeyAction("line-swap", Event.ALT_MASK, KeyEvent.VK_S);
59 setKeyAction("mode-autoindent-switch", Event.ALT_MASK, KeyEvent.VK_F3);
60 setKeyAction("page-down", 0, KeyEvent.VK_PAGE_DOWN);
61 setKeyAction("page-up", 0, KeyEvent.VK_PAGE_UP);
62 setKeyAction("redo", Event.CTRL_MASK, KeyEvent.VK_Y);
63 setKeyAction("replace-dialog", Event.CTRL_MASK, KeyEvent.VK_H);
64 setKeyAction("selection-copy", Event.CTRL_MASK, KeyEvent.VK_C);
65 setKeyAction("selection-cut", Event.CTRL_MASK, KeyEvent.VK_X);
66 setKeyAction("selection-indent", Event.CTRL_MASK, KeyEvent.VK_TAB );
67 setKeyAction("selection-unindent", Event.SHIFT_MASK, KeyEvent.VK_TAB );
68 setKeyAction("undo", Event.CTRL_MASK, KeyEvent.VK_Z);
69 setKeyAction("undo", Event.ALT_MASK, KeyEvent.VK_BACK_SPACE);
70 }
71
72 protected ChiselKeys() {
73 }
74
75 public static void setKeyAction(String action, int modifiers, int key) {
76 keys.put(new KeyObject(modifiers, key), action);
77 }
78
79 public static String getKeyAction(int modifiers, int key) {
80 return (String)keys.get(new KeyObject(modifiers, key));
81 }
82 }
83
84 /* This is doubly a "key object". It holds a keystroke and serves as
85 * a hashtable key for the keystroke to action-string mapping
86 */
87 class KeyObject {
88 public int key;
89
90 public KeyObject(int m, int k) {
91 key = (k & 0xFFFF) | (m & 0x7FFF) << 16;
92 }
93
94 public int getMod() {
95 return (key & 0x7FFF0000) >> 16;
96 }
97
98 public int getCode() {
99 return (key & 0x0000FFFF);
100 }
101
102 public int hashCode() {
103 return key;
104 }
105
106 public boolean equals(Object obj) {
107 return obj instanceof KeyObject && ((KeyObject)obj).key == this.key;
108 }
109 }