1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
package com.itmill.toolkit.demo;
import java.util.Date;
import com.itmill.toolkit.Application;
import com.itmill.toolkit.event.Action;
import com.itmill.toolkit.event.ShortcutAction;
import com.itmill.toolkit.event.Action.Handler;
import com.itmill.toolkit.ui.Button;
import com.itmill.toolkit.ui.ExpandLayout;
import com.itmill.toolkit.ui.Label;
import com.itmill.toolkit.ui.OrderedLayout;
import com.itmill.toolkit.ui.Panel;
import com.itmill.toolkit.ui.TextField;
import com.itmill.toolkit.ui.Window;
/**
* Test application for KeyboardShortcuts
*/
public class KeyboardShortcut extends Application implements Handler {
private OrderedLayout loki;
private final Label instructions = new Label(
"<p>Keyboard shortcuts is a must have feature for applications in a "
+ "daily use. In IT Mill toolkit shortcuts are binded to "
+ "Panel and its subclasses like Windows (most common place)."
+ "</p>"
+ "<p>Browsers reserve some keyboard combinations for their own"
+ " actions, so all combinations cannot be used in web "
+ "applications. (see our article on <a href=\"http://www.itmill"
+ ".com/articles/Keybindings_in_Web_Browsers.htm\">"
+ "www.itmill.com)</a></p>"
+ "Events are attached to Window in this application, so a "
+ "component inside window must be focused to fire event on"
+ " keyboard shortcut.</p>"
+ "<strong>Shortcuts used in this example:</strong> "
+ "<br/>ESC restarts program, ctrl-shift-a (Button A), "
+ "ctrl-shift-z (Button Z), ctrl-shift-x (Button X)",
Label.CONTENT_XHTML);
private final Action ACTION_A = new ShortcutAction("Button a action",
ShortcutAction.KeyCode.A, new int[] {
ShortcutAction.ModifierKey.CTRL,
ShortcutAction.ModifierKey.SHIFT });
private final Action ACTION_Z = new ShortcutAction("Button z action",
ShortcutAction.KeyCode.Z, new int[] {
ShortcutAction.ModifierKey.CTRL,
ShortcutAction.ModifierKey.SHIFT });
private final Action ACTION_X = new ShortcutAction("Button x action",
ShortcutAction.KeyCode.X, new int[] {
ShortcutAction.ModifierKey.CTRL,
ShortcutAction.ModifierKey.SHIFT });
private final Action ACTION_RESTART = new ShortcutAction("Restart ",
ShortcutAction.KeyCode.ESCAPE, null);
private Action[] actions = new Action[] { ACTION_A, ACTION_Z, ACTION_X,
ACTION_RESTART };
private TextField f;
public void init() {
Window w = new Window("Keyboard shortcuts demo");
ExpandLayout main = new ExpandLayout();
main.setMargin(true);
main.setSpacing(true);
setMainWindow(w);
w.setLayout(main);
Panel p = new Panel("Test application for shortcut actions");
p.addComponent(instructions);
OrderedLayout buttons = new OrderedLayout(
OrderedLayout.ORIENTATION_HORIZONTAL);
// Restart button
Button close = new Button("restart", this, "close");
Button a = new Button("Button A", this, "actionAHandler");
Button z = new Button("Button Z", this, "actionZHandler");
Button x = new Button("Button X", this, "actionXHandler");
f = new TextField();
buttons.addComponent(close);
buttons.addComponent(a);
buttons.addComponent(z);
buttons.addComponent(x);
buttons.addComponent(f);
p.addComponent(buttons);
main.addComponent(p);
loki = new OrderedLayout();
main.addComponent(loki);
main.expand(loki);
w.addActionHandler(this);
f.focus();
}
public Action[] getActions(Object target, Object sender) {
return actions;
}
public void handleAction(Action action, Object sender, Object target) {
if (action == ACTION_A) {
actionAHandler();
}
if (action == ACTION_Z) {
actionZHandler();
}
if (action == ACTION_X) {
actionXHandler();
}
if (action == ACTION_RESTART) {
actionRestartHandler();
}
}
public void actionAHandler() {
log("Button A handler fired");
}
public void actionZHandler() {
log("Button Z handler fired");
}
public void actionXHandler() {
log("Button X handler fired");
}
public void actionRestartHandler() {
close();
}
public void log(String s) {
loki.addComponentAsFirst(new Label(new Date() + " : " + s));
}
}
|