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.vaadin.gwt.client.actionbar.widget;
35
36 import info.magnolia.ui.vaadin.gwt.client.actionbar.event.ActionTriggerEvent;
37 import info.magnolia.ui.vaadin.gwt.client.actionbar.shared.ActionbarItem;
38
39 import com.google.gwt.user.client.DOM;
40 import com.google.gwt.user.client.Event;
41 import com.google.gwt.user.client.Timer;
42 import com.google.web.bindery.event.shared.EventBus;
43 import com.googlecode.mgwt.dom.client.event.touch.TouchStartHandler;
44 import com.vaadin.client.ui.Icon;
45
46
47
48
49 public class VActionbarItemTablet extends ActionbarItemWidget {
50
51 private boolean holdingTouch;
52
53 private Timer holdTimer;
54
55 private int row;
56
57 private int column;
58
59 public VActionbarItemTablet(ActionbarItem data, VActionbarGroup group, EventBus eventBus, Icon icon) {
60 super(data, group, eventBus, icon);
61 initialize();
62 }
63
64 public VActionbarItemTablet(ActionbarItem data, VActionbarGroup group, EventBus eventBus) {
65 super(data, group, eventBus);
66 initialize();
67 }
68
69 public void setRow(int row) {
70 removeStyleName("row-" + this.row);
71 addStyleName("row-" + row);
72 this.row = row;
73 }
74
75 public void setColumn(int column) {
76 removeStyleName("col-" + this.column);
77 addStyleName("col-" + column);
78 this.column = column;
79 }
80
81 private void initialize() {
82
83 holdTimer = new Timer() {
84
85 @Override
86 public void run() {
87 holdingTouch = true;
88 removeStyleName("hover");
89 group.toggleHorizontal();
90 }
91 };
92 }
93
94 @Override
95 protected void bindHandlers() {
96
97 DOM.sinkEvents(getElement(), Event.TOUCHEVENTS);
98
99 delegate.addTouchStartHandler(new TouchStartHandler() {
100
101 @Override
102 public void onTouchStart(com.googlecode.mgwt.dom.client.event.touch.TouchStartEvent event) {
103 holdingTouch = false;
104 addStyleName("hover");
105 if (column == 0) {
106 holdTimer.schedule(400);
107 }
108 }
109 });
110
111 delegate.addTouchEndHandler(new com.googlecode.mgwt.dom.client.event.touch.TouchEndHandler() {
112
113 @Override
114 public void onTouchEnd(com.googlecode.mgwt.dom.client.event.touch.TouchEndEvent event) {
115 removeStyleName("hover");
116 holdTimer.cancel();
117
118 if (!holdingTouch) {
119 eventBus.fireEvent(new ActionTriggerEvent(data.getName(), VActionbarItemTablet.this));
120 group.setOpenHorizontally(false);
121 }
122 }
123 });
124
125 }
126 }