/*
* 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 java.util.Arrays;
import com.extjs.gxt.samples.resources.client.Resources;
import com.extjs.gxt.samples.resources.client.TestData;
import com.extjs.gxt.samples.resources.client.model.Folder;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.dnd.TreeGridDragSource;
import com.extjs.gxt.ui.client.dnd.TreeGridDropTarget;
import com.extjs.gxt.ui.client.dnd.DND.Feedback;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.FieldEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.store.TreeStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.VerticalPanel;
import com.extjs.gxt.ui.client.widget.form.SimpleComboBox;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.layout.VBoxLayout;
import com.extjs.gxt.ui.client.widget.layout.VBoxLayoutData;
import com.extjs.gxt.ui.client.widget.layout.VBoxLayout.VBoxLayoutAlign;
import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.extjs.gxt.ui.client.widget.treegrid.TreeGrid;
import com.extjs.gxt.ui.client.widget.treegrid.TreeGridCellRenderer;
import com.google.gwt.user.client.Element;
public class TreeGridToTreeGridExample extends LayoutContainer {
private TreeGridDropTarget target;
@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
VerticalPanel vp = new VerticalPanel();
vp.setSpacing(10);
Folder model = TestData.getTreeModel();
TreeStore<ModelData> store = new TreeStore<ModelData>();
store.add(model.getChildren(), true);
ColumnConfig name = new ColumnConfig("name", "Name", 100);
name.setRenderer(new TreeGridCellRenderer<ModelData>());
ColumnConfig date = new ColumnConfig("author", "Author", 100);
ColumnConfig size = new ColumnConfig("genre", "Genre", 100);
ColumnModel cm = new ColumnModel(Arrays.asList(name, date, size));
ContentPanel cp = new ContentPanel();
cp.setBodyBorder(false);
cp.setFrame(true);
cp.setHeading("TreeGrid to TreeGrid Example");
cp.setButtonAlign(HorizontalAlignment.CENTER);
VBoxLayout layout = new VBoxLayout();
layout.setVBoxLayoutAlign(VBoxLayoutAlign.STRETCH);
cp.setLayout(layout);
cp.setSize(500, 500);
ToolBar toolBar = new ToolBar();
toolBar.setBorders(true);
toolBar.add(new LabelToolItem("Feedback: "));
final SimpleComboBox<String> type = new SimpleComboBox<String>();
type.setTriggerAction(TriggerAction.ALL);
type.setEditable(false);
type.setWidth(100);
type.add("Append");
type.add("Insert");
type.setSimpleValue("Append");
type.addListener(Events.Change, new Listener<FieldEvent>() {
public void handleEvent(FieldEvent be) {
boolean append = type.getSimpleValue().equals("Append");
Feedback f = append ? Feedback.APPEND : Feedback.INSERT;
target.setFeedback(f);
}
});
toolBar.add(type);
toolBar.add(new SeparatorToolItem());
cp.setTopComponent(toolBar);
TreeGrid<ModelData> tree = new TreeGrid<ModelData>(store, cm);
tree.setBorders(true);
tree.getStyle().setLeafIcon(Resources.ICONS.music());
tree.setAutoExpandColumn("name");
tree.setTrackMouseOver(false);
new TreeGridDragSource(tree);
VBoxLayoutData data = new VBoxLayoutData(6, 0, 6, 0);
data.setFlex(10);
cp.add(tree, data);
Folder f = new Folder("My Music");
TreeStore<ModelData> dropStore = new TreeStore<ModelData>();
dropStore.add(f, false);
tree = new TreeGrid<ModelData>(dropStore, cm) {
@Override
protected boolean hasChildren(ModelData model) {
if ("My Music".equals(model.get("name")) || model instanceof Folder) {
return true;
}
return super.hasChildren(model);
}
};
tree.setBorders(true);
tree.getStyle().setLeafIcon(Resources.ICONS.music());
tree.setAutoExpandColumn("name");
tree.setTrackMouseOver(false);
target = new TreeGridDropTarget(tree);
data = new VBoxLayoutData();
data.setFlex(10);
cp.add(tree, data);
vp.add(cp);
add(vp);
}
}