/** * 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.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; 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.cell.core.client.form.ComboBoxCell.TriggerAction; import com.sencha.gxt.data.shared.LabelProvider; import com.sencha.gxt.data.shared.TreeStore; import com.sencha.gxt.dnd.core.client.DND.Feedback; 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.Category; 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.ContentPanel; import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer; import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer.HorizontalLayoutData; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer; import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData; import com.sencha.gxt.widget.core.client.form.SimpleComboBox; import com.sencha.gxt.widget.core.client.toolbar.LabelToolItem; import com.sencha.gxt.widget.core.client.toolbar.ToolBar; import com.sencha.gxt.widget.core.client.tree.Tree; @Detail(name = "Tree to Tree", category = "Drag and Drop", icon = "treetotree", classes = {BaseDtoProperties.class}) public class TreeToTreeExample implements EntryPoint, IsWidget { @Override public Widget asWidget() { ContentPanel cp = new ContentPanel(); cp.setHeadingHtml("Tree to Tree Example"); cp.setPixelSize(600, 400); cp.addStyleName("margin-10"); VerticalLayoutContainer outer = new VerticalLayoutContainer(); HorizontalLayoutContainer vp = new HorizontalLayoutContainer(); ExampleModel examples = GWT.create(ExampleModel.class); NamedModelProperties props = GWT.create(NamedModelProperties.class); TreeStore<NamedModel> sourceStore = new TreeStore<NamedModel>(props.kp()); sourceStore.addSubTree(0, examples.getModels()); Tree<NamedModel, String> sourceTree = new Tree<NamedModel, String>(sourceStore, props.name()); sourceTree.getStyle().setLeafIcon(ExampleImages.INSTANCE.text()); new TreeDragSource<NamedModel>(sourceTree); TreeStore<NamedModel> targetStore = new TreeStore<NamedModel>(props.kp()); targetStore.add(new Category("My Files")); Tree<NamedModel, String> targetTree = new Tree<NamedModel, String>(targetStore, props.name()) { protected boolean hasChildren(NamedModel model) { return (model instanceof Category) || super.hasChildren(model); } }; targetTree.getStyle().setLeafIcon(ExampleImages.INSTANCE.text()); final TreeDropTarget<NamedModel> target = new TreeDropTarget<NamedModel>(targetTree); vp.add(sourceTree, new HorizontalLayoutData(.5, 1)); vp.add(targetTree, new HorizontalLayoutData(.5, 1)); ToolBar toolbar = new ToolBar(); toolbar.add(new LabelToolItem("Feedback: ")); SimpleComboBox<Feedback> type = new SimpleComboBox<Feedback>(new LabelProvider<Feedback>() { @Override public String getLabel(Feedback item) { return item.toString().substring(0, 1) + item.toString().substring(1).toLowerCase(); } }); type.setTriggerAction(TriggerAction.ALL); type.setEditable(false); type.add(Feedback.APPEND); type.add(Feedback.INSERT); type.add(Feedback.BOTH); type.addValueChangeHandler(new ValueChangeHandler<Feedback>() { @Override public void onValueChange(ValueChangeEvent<Feedback> event) { target.setFeedback(event.getValue()); } }); toolbar.add(type); type.setValue(Feedback.APPEND); target.setFeedback(Feedback.APPEND); outer.add(toolbar, new VerticalLayoutData(1, -1)); outer.add(vp, new VerticalLayoutData(1, 1)); cp.setWidget(outer); return cp; } @Override public void onModuleLoad() { RootPanel.get().add(this); } }