package com.sencha.gxt.explorer.client.dnd; import java.util.Arrays; import java.util.List; 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.core.client.util.Margins; 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.TreeGridDragSource; import com.sencha.gxt.dnd.core.client.TreeGridDropTarget; import com.sencha.gxt.examples.resources.client.TestData; import com.sencha.gxt.examples.resources.client.model.BaseDto; import com.sencha.gxt.examples.resources.client.model.BaseDtoProperties; import com.sencha.gxt.examples.resources.client.model.FolderDto; import com.sencha.gxt.explorer.client.model.Example.Detail; import com.sencha.gxt.widget.core.client.FramedPanel; 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.grid.ColumnConfig; import com.sencha.gxt.widget.core.client.grid.ColumnModel; 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.treegrid.TreeGrid; public class TreeGridToTreeGridExample implements EntryPoint, IsWidget { @Override public Widget asWidget() { FramedPanel cp = new FramedPanel(); cp.setHeadingText("TreeGrid to TreeGrid Example"); cp.setPixelSize(500, 500); cp.addStyleName("margin-10"); VerticalLayoutContainer vp = new VerticalLayoutContainer(); BaseDtoProperties props = GWT.create(BaseDtoProperties.class); FolderDto folder = TestData.getMusicRootFolder(); TreeStore
sourceStore = new TreeStore
(BaseDtoProperties.key); sourceStore.addSubTree(0, folder.getChildren()); TreeStore
targetStore = new TreeStore
(BaseDtoProperties.key); TreeGrid
sourceTree = createTreeGrid(props, sourceStore); new TreeGridDragSource
(sourceTree); TreeGrid
targetTree = createTreeGrid(props, targetStore); final TreeGridDropTarget
target = new TreeGridDropTarget
(targetTree); ToolBar toolbar = new ToolBar(); toolbar.setBorders(true); toolbar.add(new LabelToolItem("Feedback: ")); SimpleComboBox
type = new SimpleComboBox
(new LabelProvider
() { @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
() { @Override public void onValueChange(ValueChangeEvent
event) { target.setFeedback(event.getValue()); } }); toolbar.add(type); type.setValue(Feedback.APPEND); target.setFeedback(Feedback.APPEND); vp.add(toolbar, new VerticalLayoutData(1, -1)); vp.add(sourceTree, new VerticalLayoutData(1, .5, new Margins(5, 0, 0, 0))); vp.add(targetTree, new VerticalLayoutData(1, .5, new Margins(5, 0, 0, 0))); cp.setWidget(vp); return cp; } protected TreeGrid
createTreeGrid(BaseDtoProperties props, TreeStore
store) { ColumnConfig
cc1 = new ColumnConfig
(props.name()); cc1.setHeader("Name"); ColumnConfig
cc2 = new ColumnConfig
(BaseDtoProperties.author); cc2.setHeader("Author"); ColumnConfig
cc3 = new ColumnConfig
(BaseDtoProperties.genre); cc3.setHeader("Genre"); @SuppressWarnings("unchecked") List
> columns = Arrays.
> asList(cc1, cc2, cc3); TreeGrid
sourceTree = new TreeGrid
(store, new ColumnModel
(columns), cc1); sourceTree.getView().setAutoExpandColumn(cc1); sourceTree.setBorders(true); return sourceTree; } @Override public void onModuleLoad() { RootPanel.get().add(this); } }