package scrum.client.test;
import com.allen_sauer.gwt.dnd.client.DragContext;
import com.allen_sauer.gwt.dnd.client.PickupDragController;
import com.allen_sauer.gwt.dnd.client.VetoDragException;
import com.allen_sauer.gwt.dnd.client.drop.DropController;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MouseListener;
import com.google.gwt.user.client.ui.MouseListenerCollection;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SourcesMouseEvents;
import com.google.gwt.user.client.ui.Widget;
public class DndTestWidget extends Composite {
public DndTestWidget() {
AbsolutePanel dndPanel = new AbsolutePanel();
dndPanel.setPixelSize(400, 400);
final Composite drag = new DragComposite();
final Label drop = new Label("drop");
PickupDragController dragController = new PickupDragController(RootPanel.get(), true);
dragController.setBehaviorDragProxy(true);
dragController.setBehaviorConstrainedToBoundaryPanel(false);
dragController.setBehaviorMultipleSelection(true);
DropController dropController = new DropController() {
public Widget getDropTarget() {
return drop;
}
public void onDrop(DragContext context) {
drop.setText(drop.getText() + ".");
}
public void onEnter(DragContext context) {}
public void onLeave(DragContext context) {}
public void onMove(DragContext context) {}
public void onPreviewDrop(DragContext context) throws VetoDragException {}
};
dragController.registerDropController(dropController);
dragController.makeDraggable(drag);
dndPanel.add(drag);
dndPanel.add(drop);
initWidget(dndPanel);
}
private static class DragComposite extends Composite implements SourcesMouseEvents {
MouseListenerCollection mouseListeners;
public DragComposite() {
initWidget(new Label("ownDragWidget"));
}
public void addMouseListener(MouseListener listener) {
if (mouseListeners == null) {
mouseListeners = new MouseListenerCollection();
sinkEvents(Event.MOUSEEVENTS);
}
mouseListeners.add(listener);
}
public void removeMouseListener(MouseListener listener) {
if (mouseListeners != null) {
mouseListeners.remove(listener);
}
}
@Override
public void onBrowserEvent(Event event) {
switch (DOM.eventGetType(event)) {
case Event.ONMOUSEDOWN:
case Event.ONMOUSEUP:
case Event.ONMOUSEMOVE:
case Event.ONMOUSEOVER:
case Event.ONMOUSEOUT:
mouseListeners.fireMouseEvent(this, event);
break;
}
}
}
}