package org.vectomatic.svg.samples.client.dnd; import org.vectomatic.dom.svg.ui.SVGImage; import org.vectomatic.dom.svg.ui.SVGResource; import org.vectomatic.svg.samples.client.Main; import org.vectomatic.svg.samples.client.Main.MainBundle; import org.vectomatic.svg.samples.client.SampleBase; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Visibility; import com.google.gwt.event.dom.client.DragEnterEvent; import com.google.gwt.event.dom.client.DragLeaveEvent; import com.google.gwt.event.dom.client.DragOverEvent; import com.google.gwt.event.dom.client.DragStartEvent; import com.google.gwt.event.dom.client.DropEvent; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.TabLayoutPanel; public class DndSample extends SampleBase { public interface DndCss extends CssResource { @ClassName("svg-background") public String svgBackground(); } public interface DndSampleBundle extends ClientBundle { @Source("bee_forestgreen.svg") SVGResource bee(); @Source("flower.svg") SVGResource flower1(); @Source("HakanL_Simple_Flower.svg") SVGResource flower2(); @Source("PeterM_Flower.svg") SVGResource flower3(); @Source("Gerald_G_Simple_Fruit_15.svg") SVGResource fruit1(); @Source("Gerald_G_Simple_Fruit_2.svg") SVGResource fruit2(); @Source("Gerald_G_Simple_Fruit_5.svg") SVGResource fruit3(); @Source("background.svg") SVGResource svgCheckerResource(); @Source("dnd.css") DndCss css(); } @UiField(provided=true) public static DndSampleBundle resources = GWT.create(DndSampleBundle.class); interface DndSampleBinder extends UiBinder<TabLayoutPanel, DndSample> { } private static DndSampleBinder binder = GWT.create(DndSampleBinder.class); @UiField(provided=true) public static MainBundle mainBundle = Main.mainBundle; @UiField SVGImage flower1; @UiField SVGImage flower2; @UiField SVGImage flower3; @UiField SVGImage fruit1; @UiField SVGImage fruit2; @UiField SVGImage fruit3; @UiField Image bee; @UiField FlowPanel container; @Override public TabLayoutPanel getPanel() { if (tabPanel == null) { resources.css().ensureInjected(); tabPanel = binder.createAndBindUi(this); tabPanel.setTabText(0, "Drag-And-Drop"); createCodeTabs("DndSample"); bee.getElement().setAttribute("draggable", "true"); GWT.log(resources.svgCheckerResource().getUrl()); } return tabPanel; } @UiHandler("flower1") public void flower1Enter(DragEnterEvent event) { flower1.getStyle().setOpacity(0.5f); event.preventDefault(); } @UiHandler("flower1") public void flower1Leave(DragLeaveEvent event) { flower1.getStyle().setOpacity(1f); } @UiHandler("flower1") public void flower1Over(DragOverEvent event) { flower1.getStyle().setOpacity(0.5f); event.preventDefault(); } @UiHandler("flower1") public void flower1Drop(DropEvent event) { flower1.getStyle().setVisibility(Visibility.HIDDEN); flower1.getStyle().setOpacity(1f); fruit1.getStyle().setVisibility(Visibility.VISIBLE); Timer t = new Timer() { @Override public void run() { flower1.getStyle().setVisibility(Visibility.VISIBLE); fruit1.getStyle().setVisibility(Visibility.HIDDEN); } }; t.schedule(3000); } @UiHandler("flower2") public void flower2Enter(DragEnterEvent event) { flower2.getStyle().setOpacity(0.5f); event.preventDefault(); } @UiHandler("flower2") public void flower2Leave(DragLeaveEvent event) { flower2.getStyle().setOpacity(1f); } @UiHandler("flower2") public void flower2Over(DragOverEvent event) { event.preventDefault(); } @UiHandler("flower2") public void flower2Drop(DropEvent event) { flower2.getStyle().setVisibility(Visibility.HIDDEN); flower2.getStyle().setOpacity(1f); fruit2.getStyle().setVisibility(Visibility.VISIBLE); Timer t = new Timer() { @Override public void run() { flower2.getStyle().setVisibility(Visibility.VISIBLE); fruit2.getStyle().setVisibility(Visibility.HIDDEN); } }; t.schedule(3000); } @UiHandler("flower3") public void flower3Enter(DragEnterEvent event) { flower3.getStyle().setOpacity(0.5f); event.preventDefault(); } @UiHandler("flower3") public void flower3Leave(DragLeaveEvent event) { flower3.getStyle().setOpacity(1f); } @UiHandler("flower3") public void flower3Over(DragOverEvent event) { event.preventDefault(); } @UiHandler("flower3") public void flower3Drop(DropEvent event) { flower3.getStyle().setVisibility(Visibility.HIDDEN); flower3.getStyle().setOpacity(1f); fruit3.getStyle().setVisibility(Visibility.VISIBLE); Timer t = new Timer() { @Override public void run() { flower3.getStyle().setVisibility(Visibility.VISIBLE); fruit3.getStyle().setVisibility(Visibility.HIDDEN); } }; t.schedule(3000); } @UiHandler("bee") public void beeDragStart(DragStartEvent event) { event.getDataTransfer().setData("text/plain", "bzzz"); } }