From f0b99fd68cb3b6b484d50c1f9ebc0e77997fd2dd Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Wed, 9 Jan 2013 20:32:40 +1300 Subject: Completely rewritten project --- src/org/traccar/web/client/view/DeviceView.java | 128 ++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 src/org/traccar/web/client/view/DeviceView.java (limited to 'src/org/traccar/web/client/view/DeviceView.java') diff --git a/src/org/traccar/web/client/view/DeviceView.java b/src/org/traccar/web/client/view/DeviceView.java new file mode 100644 index 0000000..157973e --- /dev/null +++ b/src/org/traccar/web/client/view/DeviceView.java @@ -0,0 +1,128 @@ +package org.traccar.web.client.view; + +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; + +import org.traccar.web.client.model.DeviceProperties; +import org.traccar.web.shared.model.Device; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; +import com.sencha.gxt.core.client.Style.SelectionMode; +import com.sencha.gxt.data.shared.ListStore; +import com.sencha.gxt.widget.core.client.ContentPanel; +import com.sencha.gxt.widget.core.client.button.TextButton; +import com.sencha.gxt.widget.core.client.event.SelectEvent; +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; +import com.sencha.gxt.widget.core.client.selection.SelectionChangedEvent; + +public class DeviceView extends Composite implements SelectionChangedEvent.SelectionChangedHandler { + + private static DeviceViewUiBinder uiBinder = GWT.create(DeviceViewUiBinder.class); + + interface DeviceViewUiBinder extends UiBinder { + } + + public interface DeviceHandler { + public void onSelected(Device device); + public void onAdd(); + public void onEdit(Device device); + public void onRemove(Device device); + } + + private DeviceHandler deviceHandler; + + @UiField + ContentPanel contentPanel; + + public ContentPanel getView() { + return contentPanel; + } + + @UiField + TextButton addButton; + + @UiField + TextButton editButton; + + @UiField + TextButton removeButton; + + @UiField(provided = true) + ColumnModel columnModel; + + @UiField(provided = true) + ListStore store; + + @UiField + Grid grid; + + public DeviceView(DeviceHandler deviceHandler) { + this.deviceHandler = deviceHandler; + + DeviceProperties deviceProperties = GWT.create(DeviceProperties.class); + + List> columnConfigList = new LinkedList>(); + columnConfigList.add(new ColumnConfig(deviceProperties.name(), 0, "Name")); + columnConfigList.add(new ColumnConfig(deviceProperties.uniqueId(), 0, "Unique Identifier")); + columnModel = new ColumnModel(columnConfigList); + + store = new ListStore(deviceProperties.id()); + + uiBinder.createAndBindUi(this); + + grid.getSelectionModel().addSelectionChangedHandler(this); + grid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); + } + + @Override + public void onSelectionChanged(SelectionChangedEvent event) { + editButton.setEnabled(!event.getSelection().isEmpty()); + removeButton.setEnabled(!event.getSelection().isEmpty()); + + if (event.getSelection().isEmpty()) { + deviceHandler.onSelected(null); + } else { + deviceHandler.onSelected(event.getSelection().get(0)); + } + } + + public void load(Collection devices) { + store.addAll(devices); + } + + @UiHandler("addButton") + public void onAddClicked(SelectEvent event) { + deviceHandler.onAdd(); + } + + public void add(Device device) { + store.add(store.size(), device); + } + + @UiHandler("editButton") + public void onEditClicked(SelectEvent event) { + deviceHandler.onEdit(grid.getSelectionModel().getSelectedItem()); + } + + public void update(Device device) { + store.update(device); + } + + @UiHandler("removeButton") + public void onRemoveClicked(SelectEvent event) { + deviceHandler.onRemove(grid.getSelectionModel().getSelectedItem()); + } + + public void remove(Device device) { + store.remove(device); + } + +} -- cgit v1.2.3