/* * Smart GWT (GWT for SmartClient) * Copyright 2008 and beyond, Isomorphic Software, Inc. * * Smart GWT is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 3 * as published by the Free Software Foundation. Smart GWT is also * available under typical commercial license terms - see * http://smartclient.com/license * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ import com.smartgwt.client.types.Alignment; import com.smartgwt.client.types.DragDataAction; import com.smartgwt.client.types.TreeModelType; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.TransferImgButton; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.layout.HStack; import com.smartgwt.client.widgets.layout.VStack; import com.smartgwt.client.widgets.tree.Tree; import com.smartgwt.client.widgets.tree.TreeGrid; import com.smartgwt.client.widgets.tree.TreeNode; import com.google.gwt.core.client.EntryPoint; public class TreeDragNodesSample implements EntryPoint { public void onModuleLoad() { Tree grid1Tree = new Tree(); grid1Tree.setModelType(TreeModelType.CHILDREN); grid1Tree.setNameProperty("Name"); grid1Tree.setRoot(new PartsTreeNode("Root", new PartsTreeNode("Bin 1", new PartsTreeNode("Blue Cube", "cube_blue.png"), new PartsTreeNode("Yellow Cube", "cube_yellow.png"), new PartsTreeNode("Green Cube", "cube_green.png") ), new PartsTreeNode("Bin 2", new PartsTreeNode("Blue Piece", "pawn_blue.png"), new PartsTreeNode("Green Piece", "pawn_green.png"), new PartsTreeNode("Yellow Piece", "pawn_yellow.png") ) )); final PartsTreeGrid grid1 = new PartsTreeGrid(); grid1.setDragDataAction(DragDataAction.MOVE); grid1.setData(grid1Tree); grid1.getData().openAll(); Tree grid2Tree = new Tree(); grid2Tree.setModelType(TreeModelType.CHILDREN); grid2Tree.setNameProperty("Name"); grid2Tree.setRoot(new PartsTreeNode("Root", new PartsTreeNode("Bin 3", new PartsTreeNode("Blue Part", "piece_blue.png"), new PartsTreeNode("Green Part", "piece_green.png"), new PartsTreeNode("Yellow Part", "piece_yellow.png") ) )); final PartsTreeGrid grid2 = new PartsTreeGrid(); grid2.setLeft(250); grid2.setData(grid2Tree); grid2.getData().openAll(); VStack moveControls = new VStack(10); moveControls.setWidth(32); moveControls.setHeight(74); moveControls.setLayoutAlign(Alignment.CENTER); TransferImgButton rightArrow = new TransferImgButton(TransferImgButton.RIGHT, new ClickHandler() { public void onClick(ClickEvent event) { grid2.transferSelectedData(grid1); } }); moveControls.addMember(rightArrow); TransferImgButton leftArrow = new TransferImgButton(TransferImgButton.LEFT, new ClickHandler() { public void onClick(ClickEvent event) { grid1.transferSelectedData(grid2); } }); moveControls.addMember(leftArrow); HStack grids = new HStack(10); grids.setHeight(160); grids.addMember(grid1); grids.addMember(moveControls); grids.addMember(grid2); grids.draw(); } public static class PartsTreeGrid extends TreeGrid { public PartsTreeGrid() { setWidth(200); setHeight(200); setShowEdges(true); setBorder("0px"); setBodyStyleName("normal"); setShowHeader(false); setLeaveScrollbarGap(false); setEmptyMessage("
Drag & drop parts here"); setManyItemsImage("cubes_all.png"); setAppImgDir("pieces/16/"); setCanReorderRecords(true); setCanAcceptDroppedRecords(true); setCanDragRecordsOut(true); } } public static class PartsTreeNode extends TreeNode { public PartsTreeNode(String name, String icon) { this(name, icon, new PartsTreeNode[]{}); } public PartsTreeNode(String name, PartsTreeNode... children) { this(name, null, children); } public PartsTreeNode(String name, String icon, PartsTreeNode... children) { setAttribute("Name", name); setAttribute("children", children); if (icon != null) setAttribute("icon", icon); } } }