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.layout.lazylayout.connector;
35
36 import info.magnolia.ui.vaadin.gwt.client.layout.lazylayout.rpc.LazyLayoutServerRpc;
37 import info.magnolia.ui.vaadin.gwt.client.layout.lazylayout.shared.ThumbnailData;
38 import info.magnolia.ui.vaadin.gwt.client.layout.lazylayout.widget.EscalatorCardsPanel;
39 import info.magnolia.ui.vaadin.gwt.client.layout.lazylayout.widget.EscalatorPanel;
40 import info.magnolia.ui.vaadin.gwt.shared.Range;
41 import info.magnolia.ui.vaadin.layout.LazyCardLayout;
42
43 import com.google.gwt.user.client.Timer;
44 import com.vaadin.client.communication.RpcProxy;
45 import com.vaadin.shared.ui.Connect;
46
47
48
49
50
51
52 @Connect(LazyCardLayout.class)
53 public class LazyCardLayoutConnector extends LazyLayoutConnector implements EscalatorCardsPanel.Listener {
54
55 private final LazyLayoutServerRpc rpc = RpcProxy.create(LazyLayoutServerRpc.class, this);
56
57 private Timer timer = new Timer() {
58 @Override
59 public void run() {
60 serveThumbnails();
61 }
62 };
63
64 protected EscalatorPanel createWidget() {
65 final EscalatorCardsPanel layout = new EscalatorCardsPanel(this);
66 layout.setThumbnailService(new ThumbnailService() {
67 @Override
68 public void onViewportChanged(final Range requestedRange) {
69 timer.schedule(THUMBNAIL_QUERY_RPC_DELAY);
70 updateSelection();
71 }
72
73 @Override
74 public void onThumbnailsScaled(float ratio) {
75 rpc.setScaleRatio(ratio);
76 }
77 });
78 return layout;
79 }
80
81 @Override
82 void updateThumbnailContentAtIndex(int thumbnailAbsoluteIndex) {
83 final ThumbnailData thumbnailData = indexToThumbnail.get(thumbnailAbsoluteIndex);
84 getWidget().updateImageSource(idToUrl.get(thumbnailData.getThumbnailId()), thumbnailAbsoluteIndex);
85 ((EscalatorCardsPanel) getWidget()).updateImageCaption(thumbnailData.getCaption(), thumbnailAbsoluteIndex);
86 }
87
88 @Override
89 LazyLayoutServerRpc getLazyLayoutServerRpc() {
90 return rpc;
91 }
92
93 @Override
94 public void onThumbnailClicked(int index, boolean isMetaKeyPressed, boolean isShiftKeyPressed) {
95 rpc.onElementsSelected(index, isMetaKeyPressed, isShiftKeyPressed);
96 }
97
98 @Override
99 public void onThumbnailRightClicked(int index, int xPos, int yPos) {
100 rpc.onElementRightClicked(index, xPos, yPos);
101 }
102
103 @Override
104 public void onThumbnailDoubleClicked(int index) {
105 rpc.onElementDoubleClicked(index);
106 }
107
108 void cancelTimer() {
109 timer.cancel();
110 }
111 }