blob: c41bbfdc5c5f221b77e8b816d8c54eb6c676ff34 (
plain)
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
|
/*
@ITMillApache2LicenseForJavaFiles@
*/
package com.itmill.toolkit.tests.magi;
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.CustomComponent;
import com.itmill.toolkit.ui.Label;
import com.itmill.toolkit.ui.OrderedLayout;
import com.itmill.toolkit.ui.Panel;
import com.itmill.toolkit.ui.TextField;
public class DefaultButtonExample extends CustomComponent implements Handler {
// Define and create user interface components
Panel panel = new Panel("Login");
OrderedLayout formlayout = new OrderedLayout(
OrderedLayout.ORIENTATION_VERTICAL);
TextField username = new TextField("Username");
TextField password = new TextField("Password");
OrderedLayout buttons = new OrderedLayout(
OrderedLayout.ORIENTATION_HORIZONTAL);
// Create buttons and define their listener methods. Here we use
// parameterless
// methods so that we can use same methods for both click events and
// keyboard
// actions.
Button ok = new Button("OK", this, "okHandler");
Button cancel = new Button("Cancel", this, "cancelHandler");
public DefaultButtonExample() {
// Set up the user interface
setCompositionRoot(panel);
panel.addComponent(formlayout);
formlayout.addComponent(username);
formlayout.addComponent(password);
formlayout.setStyle("form");
formlayout.addComponent(buttons);
buttons.addComponent(ok);
buttons.addComponent(cancel);
// Set focus to username
username.focus();
// Set this object as the action handler for actions related to the Ok
// and Cancel buttons.
// @TODO
// ok.addActionHandler(this);
// cancel.addActionHandler(this);
}
/**
* Retrieve actions for a specific component. This method will be called for
* each object that has a handler; in this example the Ok and Cancel
* buttons.
*/
public Action[] getActions(Object target, Object sender) {
final Action[] actions = new Action[1];
// Set the action for the requested component
if (sender == ok) {
// Bind the unmodified Enter key to the Ok button.
actions[0] = new ShortcutAction("Default key",
ShortcutAction.KeyCode.ENTER, null);
} else if (sender == cancel) {
// Bind "C" key modified with Alt to the Cancel button.
actions[0] = new ShortcutAction("Alt+C", ShortcutAction.KeyCode.C,
new int[] { ShortcutAction.ModifierKey.ALT });
} else {
return null;
}
return actions;
}
/**
* Handle actions received from keyboard. This simply directs the actions to
* the same listener methods that are called with ButtonClick events.
*/
public void handleAction(Action action, Object sender, Object target) {
if (target == ok) {
okHandler();
}
if (target == cancel) {
cancelHandler();
}
}
public void okHandler() {
// Do something: report the click
formlayout.addComponent(new Label("OK clicked"));
}
public void cancelHandler() {
// Do something: report the click
formlayout.addComponent(new Label("Cancel clicked"));
}
}
|