Leh8
14 Jan 2009, 12:29 AM
Hi all,
Been trying to get a simple drag and drop tree working. It works ok until its a copy operation. So for example, if you drag item1 to SubParent1 and drag another item1 to SubParent2. Then try to drag item1 back to the list, the tree doesnt refresh by removing the item1 even though the store underneath removes it correctly... Any idea what i'm doing wrong or could this be a bug?
public class DNDTreeExample extends LayoutContainer
{
TreeStore<ModelData> treeStore;
TreeBinder<ModelData> treeBinder;
public DNDTreeExample()
{
this.setLayout(new FlowLayout(0));
TabPanel tabContainer = new TabPanel();
tabContainer.add(getTab1());
this.add(tabContainer);
}
private TabItem getTab1()
{
// Tab item
TabItem dndTab = new TabItem("DND items");
dndTab.setHeight(4000);
ContentPanel centerConfigPanel = new ContentPanel();
dndTab.add(centerConfigPanel);
// Create the List store for the list view.
ListStore<ModelData> store = new ListStore<ModelData>();
List<ModelData> testData = new ArrayList<ModelData>();
BaseModel listItem = new BaseModel();
listItem.set("name", "Item1");
testData.add(listItem);
listItem = new BaseModel();
listItem.set("name", "Item2");
testData.add(listItem);
store.add(testData);
// Create the List view and set the store.
ListView<ModelData> listItems = new ListView<ModelData>();
listItems.setStore(store);
listItems.setDisplayProperty("name");
dndTab.add(listItems);
// Make the Listview draggable and droppable.
new ListViewDragSource(listItems);
new ListViewDropTarget(listItems);
// Create the Tree.
Tree tree = new Tree();
treeStore = new TreeStore<ModelData>();
treeBinder = new TreeBinder<ModelData>(tree, treeStore);
treeBinder.setDisplayProperty("name");
treeBinder.setAutoLoad(true);
TreeDropTarget treeDNDTarget = new TreeDropTarget(treeBinder);
treeDNDTarget.setOperation(Operation.COPY);
// Make the tree draggable and droppable.
new TreeDragSource(treeBinder);
dndTab.add(tree);
// Build the tree with sample data.
DeferredCommand.addCommand(new Command()
{
public void execute()
{
buildTree();
}
});
return dndTab;
}
private void buildTree()
{
BaseTreeModel parentNode = createTreeNode("parent");
BaseTreeModel subParentNode = createTreeNode("SubParent1");
parentNode.add(subParentNode);
subParentNode.add(createTreeNode("Child1"));
subParentNode = createTreeNode("SubParent2");
parentNode.add(subParentNode);
subParentNode.add(createTreeNode("Child2"));
treeStore.add(parentNode, true);
}
private BaseTreeModel createTreeNode(String name)
{
BaseTreeModel childNode = new BaseTreeModel();
childNode.set("name", name);
return childNode;
}
}
Kind regards,
L
Been trying to get a simple drag and drop tree working. It works ok until its a copy operation. So for example, if you drag item1 to SubParent1 and drag another item1 to SubParent2. Then try to drag item1 back to the list, the tree doesnt refresh by removing the item1 even though the store underneath removes it correctly... Any idea what i'm doing wrong or could this be a bug?
public class DNDTreeExample extends LayoutContainer
{
TreeStore<ModelData> treeStore;
TreeBinder<ModelData> treeBinder;
public DNDTreeExample()
{
this.setLayout(new FlowLayout(0));
TabPanel tabContainer = new TabPanel();
tabContainer.add(getTab1());
this.add(tabContainer);
}
private TabItem getTab1()
{
// Tab item
TabItem dndTab = new TabItem("DND items");
dndTab.setHeight(4000);
ContentPanel centerConfigPanel = new ContentPanel();
dndTab.add(centerConfigPanel);
// Create the List store for the list view.
ListStore<ModelData> store = new ListStore<ModelData>();
List<ModelData> testData = new ArrayList<ModelData>();
BaseModel listItem = new BaseModel();
listItem.set("name", "Item1");
testData.add(listItem);
listItem = new BaseModel();
listItem.set("name", "Item2");
testData.add(listItem);
store.add(testData);
// Create the List view and set the store.
ListView<ModelData> listItems = new ListView<ModelData>();
listItems.setStore(store);
listItems.setDisplayProperty("name");
dndTab.add(listItems);
// Make the Listview draggable and droppable.
new ListViewDragSource(listItems);
new ListViewDropTarget(listItems);
// Create the Tree.
Tree tree = new Tree();
treeStore = new TreeStore<ModelData>();
treeBinder = new TreeBinder<ModelData>(tree, treeStore);
treeBinder.setDisplayProperty("name");
treeBinder.setAutoLoad(true);
TreeDropTarget treeDNDTarget = new TreeDropTarget(treeBinder);
treeDNDTarget.setOperation(Operation.COPY);
// Make the tree draggable and droppable.
new TreeDragSource(treeBinder);
dndTab.add(tree);
// Build the tree with sample data.
DeferredCommand.addCommand(new Command()
{
public void execute()
{
buildTree();
}
});
return dndTab;
}
private void buildTree()
{
BaseTreeModel parentNode = createTreeNode("parent");
BaseTreeModel subParentNode = createTreeNode("SubParent1");
parentNode.add(subParentNode);
subParentNode.add(createTreeNode("Child1"));
subParentNode = createTreeNode("SubParent2");
parentNode.add(subParentNode);
subParentNode.add(createTreeNode("Child2"));
treeStore.add(parentNode, true);
}
private BaseTreeModel createTreeNode(String name)
{
BaseTreeModel childNode = new BaseTreeModel();
childNode.set("name", name);
return childNode;
}
}
Kind regards,
L