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 package info.magnolia.ui.dialog.actionarea.renderer;
35
36 import info.magnolia.ui.api.action.ActionDefinition;
37 import info.magnolia.ui.api.view.View;
38 import info.magnolia.ui.dialog.actionarea.ActionListener;
39 import info.magnolia.ui.form.EditorValidator;
40
41 import java.util.HashMap;
42
43 import com.vaadin.ui.Button;
44 import com.vaadin.ui.Button.ClickEvent;
45 import com.vaadin.ui.Button.ClickListener;
46 import com.vaadin.ui.Component;
47
48
49
50
51 public class DefaultEditorActionRenderer implements ActionRenderer {
52
53 @Override
54 public View start(final ActionDefinition definition, final ActionListener listener) {
55 return new DefaultActionView(definition.getLabel(), definition.getName(), listener);
56 }
57
58 private static class DefaultActionView implements View {
59
60 private Button button = null;
61
62 private DefaultActionView(final String label, final String name, final ActionListener listener) {
63 ClickListener clickListener = new ClickListener() {
64 @Override
65 public void buttonClick(ClickEvent event) {
66 listener.onActionFired(name, new HashMap<String, Object>());
67 if (listener instanceof EditorValidator && !((EditorValidator) listener).isValid()) {
68
69 button.setEnabled(true);
70 }
71 }
72 };
73 this.button = new Button(label, clickListener) {
74 @Override
75 public void beforeClientResponse(boolean initial) {
76 super.beforeClientResponse(initial);
77 }
78 };
79 this.button.addStyleName(name);
80 this.button.addStyleName("btn-dialog");
81 this.button.addStyleName("webkit-fix");
82 this.button.setDisableOnClick(true);
83 }
84
85 @Override
86 public Component asVaadinComponent() {
87 return button;
88 }
89
90 }
91 }