/**
* Sencha GXT 3.0.0b - Sencha for GWT
* Copyright(c) 2007-2012, Sencha, Inc.
* licensing@sencha.com
*
* http://www.sencha.com/products/gxt/license/
*/
package com.sencha.gxt.explorer.client.dnd;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.data.shared.TreeStore;
import com.sencha.gxt.dnd.core.client.DND.Feedback;
import com.sencha.gxt.dnd.core.client.DndDragStartEvent;
import com.sencha.gxt.dnd.core.client.DndDragStartEvent.DndDragStartHandler;
import com.sencha.gxt.dnd.core.client.TreeDragSource;
import com.sencha.gxt.dnd.core.client.TreeDropTarget;
import com.sencha.gxt.examples.resources.client.images.ExampleImages;
import com.sencha.gxt.examples.resources.client.model.BaseDtoProperties;
import com.sencha.gxt.explorer.client.model.Example.Detail;
import com.sencha.gxt.explorer.client.model.ExampleModel;
import com.sencha.gxt.explorer.client.model.NamedModel;
import com.sencha.gxt.explorer.client.model.NamedModel.NamedModelProperties;
import com.sencha.gxt.widget.core.client.FramedPanel;
import com.sencha.gxt.widget.core.client.info.Info;
import com.sencha.gxt.widget.core.client.tree.Tree;
@Detail(name = "Reordering Tree", category = "Drag and Drop", icon = "reorderingtree", classes = {BaseDtoProperties.class})
public class ReorderingTreeExample implements EntryPoint, IsWidget {
@Override
public Widget asWidget() {
ExampleModel examples = GWT.create(ExampleModel.class);
NamedModelProperties props = GWT.create(NamedModelProperties.class);
final TreeStore<NamedModel> sourceStore = new TreeStore<NamedModel>(props.kp());
sourceStore.addSubTree(0, examples.getModels());
final Tree<NamedModel, String> sourceTree = new Tree<NamedModel, String>(sourceStore, props.name());
sourceTree.getStyle().setLeafIcon(ExampleImages.INSTANCE.text());
sourceTree.setBorders(true);
sourceTree.getElement().getStyle().setBackgroundColor("white");
TreeDragSource<NamedModel> source = new TreeDragSource<NamedModel>(sourceTree);
source.addDragStartHandler(new DndDragStartHandler() {
@Override
public void onDragStart(DndDragStartEvent event) {
NamedModel sel = sourceTree.getSelectionModel().getSelectedItem();
if (sel != null && sel == sourceStore.getRootItems().get(0)) {
event.setCancelled(true);
event.getStatusProxy().setStatus(false);
Info.display("Drag Prevented",
"See the source code for an example of how to cancel a drag operation under program control.");
}
}
});
TreeDropTarget<NamedModel> target = new TreeDropTarget<NamedModel>(sourceTree);
target.setAllowSelfAsSource(true);
target.setFeedback(Feedback.BOTH);
FramedPanel panel = new FramedPanel();
panel.setHeadingText("Reordering Tree");
panel.addStyleName("margin-10");
panel.setPixelSize(320, 420);
panel.setWidget(sourceTree);
return panel;
}
@Override
public void onModuleLoad() {
RootPanel.get().add(this);
}
}