/**
* Sencha GXT 3.0.0b - Sencha for GWT
* Copyright(c) 2007-2012, Sencha, Inc.
* licensing@sencha.com
*
* http://www.sencha.com/products/gxt/license/
*/
package com.sencha.gxt.explorer.client.dnd;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.editor.client.Editor.Path;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.ValueProvider;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.data.shared.ListStore;
import com.sencha.gxt.data.shared.ModelKeyProvider;
import com.sencha.gxt.data.shared.PropertyAccess;
import com.sencha.gxt.data.shared.SortDir;
import com.sencha.gxt.data.shared.Store.StoreSortInfo;
import com.sencha.gxt.dnd.core.client.DND.Feedback;
import com.sencha.gxt.dnd.core.client.GridDragSource;
import com.sencha.gxt.dnd.core.client.GridDropTarget;
import com.sencha.gxt.examples.resources.client.model.ExampleData;
import com.sencha.gxt.examples.resources.client.model.Stock;
import com.sencha.gxt.examples.resources.client.model.StockProxy;
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.HorizontalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer.HorizontalLayoutData;
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.grid.Grid;
@Detail(name = "Grid to Grid", icon = "gridtogrid", category = "Drag and Drop")
public class GridDndExample implements IsWidget, EntryPoint {
interface StockProperties extends PropertyAccess<Stock> {
@Path("symbol")
ModelKeyProvider<StockProxy> key();
@Path("name")
ValueProvider<StockProxy, String> nameProp();
}
@Override
public Widget asWidget() {
VerticalPanel vp = new VerticalPanel();
vp.setSpacing(10);
FramedPanel panel = new FramedPanel();
panel.setHeadingText("Grid Append Sorted");
panel.setPixelSize(500, 225);
HorizontalLayoutContainer con = new HorizontalLayoutContainer();
StockProperties props = GWT.create(StockProperties.class);
ListStore<StockProxy> store = new ListStore<StockProxy>(props.key());
store.addSortInfo(new StoreSortInfo<StockProxy>(props.nameProp(), SortDir.ASC));
store.addAll(ExampleData.getStocks());
ColumnConfig<StockProxy, String> cc1 = new ColumnConfig<StockProxy, String>(props.nameProp());
cc1.setHeader(SafeHtmlUtils.fromString("Stock Name"));
List<ColumnConfig<StockProxy, ?>> l = new ArrayList<ColumnConfig<StockProxy, ?>>();
l.add(cc1);
Grid<StockProxy> grid1 = new Grid<StockProxy>(store, new ColumnModel<StockProxy>(l));
grid1.setBorders(true);
grid1.getView().setForceFit(true);
store = new ListStore<StockProxy>(props.key());
store.addSortInfo(new StoreSortInfo<StockProxy>(props.nameProp(), SortDir.ASC));
Grid<StockProxy> grid2 = new Grid<StockProxy>(store, new ColumnModel<StockProxy>(l));
grid2.setBorders(true);
grid2.getView().setForceFit(true);
new GridDragSource<StockProxy>(grid1);
new GridDragSource<StockProxy>(grid2);
new GridDropTarget<StockProxy>(grid1);
new GridDropTarget<StockProxy>(grid2);
con.add(grid1, new HorizontalLayoutData(.5, 1, new Margins(5)));
con.add(grid2, new HorizontalLayoutData(.5, 1, new Margins(5, 5, 5, 0)));
panel.add(con);
vp.add(panel);
panel = new FramedPanel();
panel.setHeadingText("Grid Insert");
panel.setPixelSize(500, 225);
con = new HorizontalLayoutContainer();
props = GWT.create(StockProperties.class);
store = new ListStore<StockProxy>(props.key());
store.addAll(ExampleData.getStocks());
grid1 = new Grid<StockProxy>(store, new ColumnModel<StockProxy>(l));
grid1.setBorders(true);
grid1.getView().setForceFit(true);
store = new ListStore<StockProxy>(props.key());
grid2 = new Grid<StockProxy>(store, new ColumnModel<StockProxy>(l));
grid2.setBorders(true);
grid2.getView().setForceFit(true);
new GridDragSource<StockProxy>(grid1);
new GridDragSource<StockProxy>(grid2);
GridDropTarget<StockProxy> target1 = new GridDropTarget<StockProxy>(grid1);
target1.setFeedback(Feedback.INSERT);
GridDropTarget<StockProxy> target2 = new GridDropTarget<StockProxy>(grid2);
target2.setFeedback(Feedback.INSERT);
con.add(grid1, new HorizontalLayoutData(.5, 1, new Margins(5)));
con.add(grid2, new HorizontalLayoutData(.5, 1, new Margins(5, 5, 5, 0)));
panel.add(con);
vp.add(panel);
return vp;
}
@Override
public void onModuleLoad() {
RootPanel.get().add(this);
}
}