/* * Ext GWT - Ext for GWT * Copyright(c) 2007-2009, Ext JS, LLC. * licensing@extjs.com * * http://extjs.com/license */ package com.extjs.gxt.samples.client.examples.dnd; import com.extjs.gxt.ui.client.core.El; import com.extjs.gxt.ui.client.dnd.DragSource; import com.extjs.gxt.ui.client.dnd.DropTarget; import com.extjs.gxt.ui.client.event.ButtonEvent; import com.extjs.gxt.ui.client.event.DNDEvent; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.widget.HorizontalPanel; import com.extjs.gxt.ui.client.widget.Html; import com.extjs.gxt.ui.client.widget.LayoutContainer; import com.extjs.gxt.ui.client.widget.button.Button; import com.extjs.gxt.ui.client.widget.layout.FlowData; import com.google.gwt.user.client.Element; public class BasicDNDExample extends LayoutContainer { @Override protected void onRender(Element parent, int index) { super.onRender(parent, index); HorizontalPanel hp = new HorizontalPanel(); hp.setSpacing(10); final LayoutContainer container = new LayoutContainer(); container.setLayoutOnChange(true); container.setBorders(true); container.setSize(200, 200); DropTarget target = new DropTarget(container) { @Override protected void onDragDrop(DNDEvent event) { super.onDragDrop(event); Html html = event.getData(); container.add(html); } }; target.setGroup("test"); target.setOverStyle("drag-ok"); final LayoutContainer sourceContainer = new LayoutContainer(); sourceContainer.setLayoutOnChange(true); sourceContainer.setWidth(100); addSources(sourceContainer); Button reset = new Button("Reset"); reset.addSelectionListener(new SelectionListener<ButtonEvent>() { @Override public void componentSelected(ButtonEvent ce) { container.removeAll(); sourceContainer.removeAll(); addSources(sourceContainer); } }); hp.add(container); hp.add(sourceContainer); add(hp); add(reset, new FlowData(10)); } private void addSources(LayoutContainer container) { for (int i = 0; i < 5; i++) { final Html html = new Html("Drag Me " + i); html.setStyleAttribute("padding", "5px"); html.setStyleAttribute("border", "1px solid red"); html.setStyleAttribute("cursor", "default"); html.setStyleName("text"); container.add(html, new FlowData(3)); DragSource source = new DragSource(html) { @Override protected void onDragStart(DNDEvent event) { // by default drag is allowed event.setData(html); event.getStatus().update(El.fly(html.getElement()).cloneNode(true)); } }; // group is optional source.setGroup("test"); } } }