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
146
147
|
/*
@ITMillApache2LicenseForJavaFiles@
*/
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.HorizontalLayout;
import com.itmill.toolkit.ui.Label;
import com.itmill.toolkit.ui.Panel;
import com.itmill.toolkit.ui.TextField;
import com.itmill.toolkit.ui.VerticalLayout;
import com.itmill.toolkit.ui.Window;
/**
* Test application for KeyboardShortcuts
*/
public class KeyboardShortcut extends Application implements Handler {
private VerticalLayout 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>"
+ "<p>Focus must be inside web application (eg. not in address "
+ "bar) for shortcuts to work. By default app element is focused.</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 final Action[] actions = new Action[] { ACTION_A, ACTION_Z,
ACTION_X, ACTION_RESTART };
private TextField f;
@Override
public void init() {
final Window w = new Window("Keyboard shortcuts demo");
final VerticalLayout main = new VerticalLayout();
main.setMargin(true);
main.setSpacing(true);
setMainWindow(w);
w.setLayout(main);
final Panel p = new Panel("Test application for shortcut actions");
p.addComponent(instructions);
final HorizontalLayout buttons = new HorizontalLayout();
// Restart button
final Button close = new Button("restart", this, "close");
final Button a = new Button("Button A", this, "actionAHandler");
final Button z = new Button("Button Z", this, "actionZHandler");
final 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 VerticalLayout();
main.addComponent(loki);
main.setExpandRatio(loki, 1.0f);
w.addActionHandler(this);
}
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));
}
}
|