1 package org.vectomatic.svg.samples.client.dnd;
2
3 import org.vectomatic.dom.svg.ui.SVGImage;
4 import org.vectomatic.dom.svg.ui.SVGResource;
5 import org.vectomatic.svg.samples.client.Main;
6 import org.vectomatic.svg.samples.client.Main.MainBundle;
7 import org.vectomatic.svg.samples.client.SampleBase;
8
9 import com.google.gwt.core.client.GWT;
10 import com.google.gwt.dom.client.Style.Visibility;
11 import com.google.gwt.event.dom.client.DragEnterEvent;
12 import com.google.gwt.event.dom.client.DragLeaveEvent;
13 import com.google.gwt.event.dom.client.DragOverEvent;
14 import com.google.gwt.event.dom.client.DragStartEvent;
15 import com.google.gwt.event.dom.client.DropEvent;
16 import com.google.gwt.resources.client.ClientBundle;
17 import com.google.gwt.resources.client.CssResource;
18 import com.google.gwt.uibinder.client.UiBinder;
19 import com.google.gwt.uibinder.client.UiField;
20 import com.google.gwt.uibinder.client.UiHandler;
21 import com.google.gwt.user.client.Timer;
22 import com.google.gwt.user.client.ui.FlowPanel;
23 import com.google.gwt.user.client.ui.Image;
24 import com.google.gwt.user.client.ui.TabLayoutPanel;
25
26 public class DndSample extends SampleBase {
27 public interface DndCss extends CssResource {
28 @ClassName("svg-background")
29 public String svgBackground();
30 }
31
32 public interface DndSampleBundle extends ClientBundle {
33
34 @Source("bee_forestgreen.svg")
35 SVGResource bee();
36 @Source("flower.svg")
37 SVGResource flower1();
38 @Source("HakanL_Simple_Flower.svg")
39 SVGResource flower2();
40 @Source("PeterM_Flower.svg")
41 SVGResource flower3();
42 @Source("Gerald_G_Simple_Fruit_15.svg")
43 SVGResource fruit1();
44 @Source("Gerald_G_Simple_Fruit_2.svg")
45 SVGResource fruit2();
46 @Source("Gerald_G_Simple_Fruit_5.svg")
47 SVGResource fruit3();
48 @Source("background.svg")
49 SVGResource svgCheckerResource();
50 @Source("dnd.css")
51 DndCss css();
52 }
53 @UiField(provided=true)
54 public static DndSampleBundle resources = GWT.create(DndSampleBundle.class);
55
56
57 interface DndSampleBinder extends UiBinder<TabLayoutPanel, DndSample> {
58 }
59 private static DndSampleBinder binder = GWT.create(DndSampleBinder.class);
60
61 @UiField(provided=true)
62 public static MainBundle mainBundle = Main.mainBundle;
63 @UiField
64 SVGImage flower1;
65 @UiField
66 SVGImage flower2;
67 @UiField
68 SVGImage flower3;
69 @UiField
70 SVGImage fruit1;
71 @UiField
72 SVGImage fruit2;
73 @UiField
74 SVGImage fruit3;
75 @UiField
76 Image bee;
77 @UiField
78 FlowPanel container;
79
80 @Override
81 public TabLayoutPanel getPanel() {
82 if (tabPanel == null) {
83 resources.css().ensureInjected();
84 tabPanel = binder.createAndBindUi(this);
85 tabPanel.setTabText(0, "Drag-And-Drop");
86 createCodeTabs("DndSample");
87 bee.getElement().setAttribute("draggable", "true");
88 GWT.log(resources.svgCheckerResource().getUrl());
89 }
90 return tabPanel;
91 }
92
93 @UiHandler("flower1")
94 public void flower1Enter(DragEnterEvent event) {
95 flower1.getStyle().setOpacity(0.5f);
96 event.preventDefault();
97 }
98 @UiHandler("flower1")
99 public void flower1Leave(DragLeaveEvent event) {
100 flower1.getStyle().setOpacity(1f);
101 }
102 @UiHandler("flower1")
103 public void flower1Over(DragOverEvent event) {
104 flower1.getStyle().setOpacity(0.5f);
105 event.preventDefault();
106 }
107 @UiHandler("flower1")
108 public void flower1Drop(DropEvent event) {
109 flower1.getStyle().setVisibility(Visibility.HIDDEN);
110 flower1.getStyle().setOpacity(1f);
111 fruit1.getStyle().setVisibility(Visibility.VISIBLE);
112 Timer t = new Timer() {
113 @Override
114 public void run() {
115 flower1.getStyle().setVisibility(Visibility.VISIBLE);
116 fruit1.getStyle().setVisibility(Visibility.HIDDEN);
117 }
118 };
119 t.schedule(3000);
120 }
121
122 @UiHandler("flower2")
123 public void flower2Enter(DragEnterEvent event) {
124 flower2.getStyle().setOpacity(0.5f);
125 event.preventDefault();
126 }
127 @UiHandler("flower2")
128 public void flower2Leave(DragLeaveEvent event) {
129 flower2.getStyle().setOpacity(1f);
130 }
131 @UiHandler("flower2")
132 public void flower2Over(DragOverEvent event) {
133 event.preventDefault();
134 }
135 @UiHandler("flower2")
136 public void flower2Drop(DropEvent event) {
137 flower2.getStyle().setVisibility(Visibility.HIDDEN);
138 flower2.getStyle().setOpacity(1f);
139 fruit2.getStyle().setVisibility(Visibility.VISIBLE);
140 Timer t = new Timer() {
141 @Override
142 public void run() {
143 flower2.getStyle().setVisibility(Visibility.VISIBLE);
144 fruit2.getStyle().setVisibility(Visibility.HIDDEN);
145 }
146 };
147 t.schedule(3000);
148 }
149
150 @UiHandler("flower3")
151 public void flower3Enter(DragEnterEvent event) {
152 flower3.getStyle().setOpacity(0.5f);
153 event.preventDefault();
154 }
155 @UiHandler("flower3")
156 public void flower3Leave(DragLeaveEvent event) {
157 flower3.getStyle().setOpacity(1f);
158 }
159 @UiHandler("flower3")
160 public void flower3Over(DragOverEvent event) {
161 event.preventDefault();
162 }
163 @UiHandler("flower3")
164 public void flower3Drop(DropEvent event) {
165 flower3.getStyle().setVisibility(Visibility.HIDDEN);
166 flower3.getStyle().setOpacity(1f);
167 fruit3.getStyle().setVisibility(Visibility.VISIBLE);
168 Timer t = new Timer() {
169 @Override
170 public void run() {
171 flower3.getStyle().setVisibility(Visibility.VISIBLE);
172 fruit3.getStyle().setVisibility(Visibility.HIDDEN);
173 }
174 };
175 t.schedule(3000);
176 }
177
178 @UiHandler("bee")
179 public void beeDragStart(DragStartEvent event) {
180 event.getDataTransfer().setData("text/plain", "bzzz");
181 }
182 }