package com.sencha.gxt.explorer.client.dnd; 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.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.Style.SelectionMode; 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.ListViewDragSource; import com.sencha.gxt.dnd.core.client.ListViewDropTarget; 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.ListView; import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer; import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer.HorizontalLayoutData; public class ListViewDndExample implements IsWidget, EntryPoint { interface StockProperties extends PropertyAccess
{ @Path("symbol") ModelKeyProvider
key(); @Path("name") ValueProvider
nameProp(); } @Override public Widget asWidget() { VerticalPanel vp = new VerticalPanel(); vp.setSpacing(10); FramedPanel panel = new FramedPanel(); panel.setHeadingText("ListView Append Sorted"); panel.setPixelSize(500, 225); HorizontalLayoutContainer con = new HorizontalLayoutContainer(); StockProperties props = GWT.create(StockProperties.class); ListStore
store = new ListStore
(props.key()); store.addSortInfo(new StoreSortInfo
(props.nameProp(), SortDir.ASC)); store.addAll(ExampleData.getStocks()); ListView
list1 = new ListView
(store, props.nameProp()); store = new ListStore
(props.key()); store.addSortInfo(new StoreSortInfo
(props.nameProp(), SortDir.ASC)); ListView
list2 = new ListView
(store, props.nameProp()); list2.getSelectionModel().setSelectionMode(SelectionMode.MULTI); new ListViewDragSource
(list1); new ListViewDragSource
(list2); new ListViewDropTarget
(list1); new ListViewDropTarget
(list2); con.add(list1, new HorizontalLayoutData(.5, 1, new Margins(5))); con.add(list2, new HorizontalLayoutData(.5, 1, new Margins(5, 5, 5, 0))); panel.add(con); vp.add(panel); panel = new FramedPanel(); panel.setHeadingText("ListView Insert"); panel.setPixelSize(500, 225); con = new HorizontalLayoutContainer(); props = GWT.create(StockProperties.class); store = new ListStore
(props.key()); store.addAll(ExampleData.getStocks()); list1 = new ListView
(store, props.nameProp()); store = new ListStore
(props.key()); list2 = new ListView
(store, props.nameProp()); new ListViewDragSource
(list1); new ListViewDragSource
(list2); ListViewDropTarget
target1 = new ListViewDropTarget
(list1); target1.setFeedback(Feedback.INSERT); ListViewDropTarget
target2 = new ListViewDropTarget
(list2); target2.setFeedback(Feedback.INSERT); con.add(list1, new HorizontalLayoutData(.5, 1, new Margins(5))); con.add(list2, 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); } }