Menus support all the drag and drop behaviors supported by grids (Smart GWT)
/*
* SmartGWT (GWT for SmartClient)
* Copyright 2008 and beyond, Isomorphic Software, Inc.
*
* SmartGWT 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. SmartGWT 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.
*/
package com.smartgwt.sample.showcase.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.types.DragDataAction;
import com.smartgwt.client.types.ListGridFieldType;
import com.smartgwt.client.types.SelectionStyle;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.ImgProperties;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.layout.HStack;
import com.smartgwt.client.widgets.menu.Menu;
import com.smartgwt.client.widgets.menu.MenuButton;
public class Showcase implements EntryPoint {
public void onModuleLoad() {
RootPanel.get().add(getViewPanel());
}
public Canvas getViewPanel() {
Menu menu = new Menu();
ListGridField partSrcField = new ListGridField("partSrc", 20);
partSrcField.setType(ListGridFieldType.IMAGE);
partSrcField.setImgDir("pieces/16/");
ListGridField partNameField = new ListGridField("partName");
partNameField.setWidth(70);
menu.setFields(partSrcField, partNameField);
menu.setData(getRecords());
menu.setSelectionType(SelectionStyle.SINGLE);
menu.setCanDragRecordsOut(true);
menu.setDragDataAction(DragDataAction.MOVE);
MenuButton menuButton = new MenuButton();
menuButton.setTitle("Parts");
menuButton.setMenu(menu);
ListGrid partsGrid = new ListGrid();
partsGrid.setWidth(300);
partsGrid.setCanAcceptDroppedRecords(true);
partsGrid.setCanReorderFields(true);
ListGridField partSrcField2 = new ListGridField("partSrc", 80);
partSrcField2.setType(ListGridFieldType.IMAGE);
partSrcField2.setImgDir("pieces/16/");
ListGridField partNameField2 = new ListGridField("partName");
partNameField2.setWidth(140);
ListGridField partNumField2 = new ListGridField("partNum", 80);
partsGrid.setFields(partSrcField2, partNameField2, partNumField2);
partsGrid.setData(new Record[] {
new PartRecord("Blue", "cube_blue.png", 1),
new PartRecord("Yellow", "cube_yellow.png", 2),
});
HStack layout = new HStack(70);
layout.setHeight(160);
layout.setMembers(menuButton, partsGrid);
return layout;
}
public PartRecord[] getRecords() {
return new PartRecord[]{
new PartRecord("Blue", "cube_blue.png", 1),
new PartRecord("Yellow", "cube_yellow.png", 2),
new PartRecord("Green", "cube_green.png", 3),
new PartRecord("Blue", "cube_blue.png", 4),
new PartRecord("Yellow", "cube_yellow.png", 5),
new PartRecord("Green", "cube_green.png", 6),
new PartRecord("Blue", "cube_blue.png", 7),
new PartRecord("Yellow", "cube_yellow.png", 8),
new PartRecord("Green", "cube_green.png", 9),
};
}
}
class PartRecord extends ListGridRecord {
public PartRecord() {
}
public PartRecord(String partName, String partSrc, int partNum) {
setPartName(partName);
setPartSrc(partSrc);
setPartNum(partNum);
}
public void setPartName(String partName) {
setAttribute("partName", partName);
}
public void setPartSrc(String partSrc) {
setAttribute("partSrc", partSrc);
}
public void setPartNum(int partNum) {
setAttribute("partNum", partNum);
}
}
class PartsListGrid extends ListGrid {
PartsListGrid() {
setWidth(150);
setCellHeight(24);
setImageSize(16);
setShowEdges(true);
setBorder("0px");
setBodyStyleName("normal");
setAlternateRecordStyles(true);
setShowHeader(false);
setLeaveScrollbarGap(false);
setEmptyMessage("<br><br>Drag & drop parts here");
ListGridField partSrcField = new ListGridField("partSrc", 24);
partSrcField.setType(ListGridFieldType.IMAGE);
partSrcField.setImgDir("pieces/16/");
ListGridField partNameField = new ListGridField("partName");
ListGridField partNumField = new ListGridField("partNum", 20);
setFields(partSrcField, partNameField, partNumField);
setTrackerImage(new ImgProperties("pieces/24/cubes_all.png", 24, 24));
}
}
SmartGWT.zip( 9,880 k)Related examples in the same category