diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2013-01-09 20:32:40 +1300 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2013-01-09 20:32:40 +1300 |
commit | f0b99fd68cb3b6b484d50c1f9ebc0e77997fd2dd (patch) | |
tree | cd9beb89c07dbeacbb26d9df8a1a42502d206c74 /src/org/traccar/web/client/controller | |
parent | a7c6a5f03c0ac94603b5238c59a275a239d16b73 (diff) | |
download | trackermap-web-f0b99fd68cb3b6b484d50c1f9ebc0e77997fd2dd.tar.gz trackermap-web-f0b99fd68cb3b6b484d50c1f9ebc0e77997fd2dd.tar.bz2 trackermap-web-f0b99fd68cb3b6b484d50c1f9ebc0e77997fd2dd.zip |
Completely rewritten project
Diffstat (limited to 'src/org/traccar/web/client/controller')
5 files changed, 301 insertions, 0 deletions
diff --git a/src/org/traccar/web/client/controller/ArchiveController.java b/src/org/traccar/web/client/controller/ArchiveController.java new file mode 100644 index 00000000..598a744d --- /dev/null +++ b/src/org/traccar/web/client/controller/ArchiveController.java @@ -0,0 +1,44 @@ +package org.traccar.web.client.controller; + +import java.util.Collection; + +import org.traccar.web.client.view.ArchiveView; +import org.traccar.web.shared.model.Device; +import org.traccar.web.shared.model.Position; + +import com.sencha.gxt.widget.core.client.ContentPanel; + +public class ArchiveController implements ContentController, ArchiveView.ArchiveHandler { + + public interface ArchiveHandler { + public void onSelected(Position position); + } + + private ArchiveHandler archiveHandler; + + private ArchiveView archiveView; + + public ArchiveController(ArchiveHandler archiveHandler) { + this.archiveHandler = archiveHandler; + archiveView = new ArchiveView(this); + } + + @Override + public ContentPanel getView() { + return archiveView.getView(); + } + + @Override + public void run() { + } + + public void updateDevices(Collection<Device> devices) { + + } + + @Override + public void onSelected(Position position) { + archiveHandler.onSelected(position); + } + +} diff --git a/src/org/traccar/web/client/controller/ContentController.java b/src/org/traccar/web/client/controller/ContentController.java new file mode 100644 index 00000000..7e8d6778 --- /dev/null +++ b/src/org/traccar/web/client/controller/ContentController.java @@ -0,0 +1,11 @@ +package org.traccar.web.client.controller; + +import com.sencha.gxt.widget.core.client.ContentPanel; + +public interface ContentController { + + public ContentPanel getView(); + + public void run(); + +} diff --git a/src/org/traccar/web/client/controller/DeviceController.java b/src/org/traccar/web/client/controller/DeviceController.java new file mode 100644 index 00000000..b24c205e --- /dev/null +++ b/src/org/traccar/web/client/controller/DeviceController.java @@ -0,0 +1,109 @@ +package org.traccar.web.client.controller; + +import java.util.List; + +import org.traccar.web.client.Application; +import org.traccar.web.client.model.BaseAsyncCallback; +import org.traccar.web.client.view.DeviceDialog; +import org.traccar.web.client.view.DeviceView; +import org.traccar.web.shared.model.Device; + +import com.sencha.gxt.widget.core.client.ContentPanel; +import com.sencha.gxt.widget.core.client.Dialog.PredefinedButton; +import com.sencha.gxt.widget.core.client.box.ConfirmMessageBox; +import com.sencha.gxt.widget.core.client.event.HideEvent; +import com.sencha.gxt.widget.core.client.event.HideEvent.HideHandler; + +public class DeviceController implements ContentController, DeviceView.DeviceHandler { + + public interface DeviceHandler { + public void onLoad(List<Device> devices); + public void onSelected(Device device); + public void onAdd(Device device); + public void onUpdate(Device device); + public void onRemove(Device device); + } + + private DeviceHandler deviceHandler; + + private DeviceView deviceView; + + public DeviceController(DeviceHandler deviceHandler) { + this.deviceHandler = deviceHandler; + deviceView = new DeviceView(this); + } + + @Override + public ContentPanel getView() { + return deviceView.getView(); + } + + @Override + public void run() { + Application.getDataService().getDevices(new BaseAsyncCallback<List<Device>>() { + @Override + public void onSuccess(List<Device> result) { + deviceView.load(result); + deviceHandler.onLoad(result); + } + }); + } + + @Override + public void onSelected(Device device) { + deviceHandler.onSelected(device); + } + + @Override + public void onAdd() { + new DeviceDialog(new Device(), new DeviceDialog.DeviceHandler() { + @Override + public void onSave(Device device) { + Application.getDataService().addDevice(device, new BaseAsyncCallback<Device>() { + @Override + public void onSuccess(Device result) { + deviceView.add(result); + deviceHandler.onAdd(result); + } + }); + } + }).show(); + } + + @Override + public void onEdit(Device device) { + new DeviceDialog(new Device(device), new DeviceDialog.DeviceHandler() { + @Override + public void onSave(Device device) { + Application.getDataService().updateDevice(device, new BaseAsyncCallback<Device>() { + @Override + public void onSuccess(Device result) { + deviceView.update(result); + deviceHandler.onUpdate(result); + } + }); + } + }).show(); + } + + @Override + public void onRemove(final Device device) { + final ConfirmMessageBox dialog = new ConfirmMessageBox("Confirm", "Are you sure you want remove device?"); + dialog.addHideHandler(new HideHandler() { + @Override + public void onHide(HideEvent event) { + if (dialog.getHideButton() == dialog.getButtonById(PredefinedButton.YES.name())) { + Application.getDataService().removeDevice(device, new BaseAsyncCallback<Device>() { + @Override + public void onSuccess(Device result) { + deviceView.remove(device); + deviceHandler.onRemove(device); + } + }); + } + } + }); + dialog.show(); + } + +} diff --git a/src/org/traccar/web/client/controller/LoginController.java b/src/org/traccar/web/client/controller/LoginController.java new file mode 100644 index 00000000..ceda85cf --- /dev/null +++ b/src/org/traccar/web/client/controller/LoginController.java @@ -0,0 +1,81 @@ +package org.traccar.web.client.controller; + +import org.traccar.web.client.Application; +import org.traccar.web.client.model.BaseAsyncCallback; +import org.traccar.web.client.view.LoginDialog; + +import com.sencha.gxt.widget.core.client.box.AlertMessageBox; + +public class LoginController implements LoginDialog.LoginHandler { + + private LoginDialog dialog; + + public interface LoginHandler { + public void onLogin(); + } + + private LoginHandler loginHandler; + + public void login(final LoginHandler loginHandler) { + this.loginHandler = loginHandler; + + Application.getDataService().authenticated(new BaseAsyncCallback<Boolean>() { + @Override + public void onSuccess(Boolean result) { + if (result) { + loginHandler.onLogin(); + } else { + dialog = new LoginDialog(LoginController.this); + dialog.show(); + } + } + }); + } + + private boolean validate(String login, String password) { + if (login == null || login.isEmpty() || password == null || password.isEmpty()) { + new AlertMessageBox("Error", "User name and password must not be empty").show(); + return false; + } + return true; + } + + @Override + public void onLogin(String login, String password) { + if (validate(login, password)) { + Application.getDataService().authenticate(login, password, new BaseAsyncCallback<Boolean>() { + @Override + public void onSuccess(Boolean result) { + if (result) { + if (loginHandler != null) { + dialog.hide(); + loginHandler.onLogin(); + } + } else { + new AlertMessageBox("Error", "User name or password is invalid").show(); + } + } + }); + } + } + + @Override + public void onRegister(String login, String password) { + if (validate(login, password)) { + Application.getDataService().register(login, password, new BaseAsyncCallback<Boolean>() { + @Override + public void onSuccess(Boolean result) { + if (result) { + if (loginHandler != null) { + dialog.hide(); + loginHandler.onLogin(); + } + } else { + new AlertMessageBox("Error", "Registration error").show(); + } + } + }); + } + } + +} diff --git a/src/org/traccar/web/client/controller/MapController.java b/src/org/traccar/web/client/controller/MapController.java new file mode 100644 index 00000000..5a53cf22 --- /dev/null +++ b/src/org/traccar/web/client/controller/MapController.java @@ -0,0 +1,56 @@ +package org.traccar.web.client.controller; + +import org.traccar.web.client.view.MapView; +import org.traccar.web.shared.model.Device; + +import com.google.gwt.user.client.Timer; +import com.sencha.gxt.widget.core.client.ContentPanel; + +public class MapController implements ContentController { + + private static final int UPDATE_INTERVAL = 10000; + + private MapView mapView; + + public MapController() { + mapView = new MapView(); + } + + @Override + public ContentPanel getView() { + return mapView.getView(); + } + + private Timer updateTimer; + + @Override + public void run() { + updateTimer = new Timer() { + @Override + public void run() { + update(); + } + }; + update(); + } + + public void update() { + updateTimer.cancel(); + /*Application.getDataService().getLatestPositions(new AsyncCallback<List<Position>>() { + @Override + public void onSuccess(List<Position> result) { + mapView.showPositions(result); + updateTimer.schedule(UPDATE_INTERVAL); + } + @Override + public void onFailure(Throwable caught) { + updateTimer.schedule(UPDATE_INTERVAL); + } + });*/ + } + + public void select(Device device) { + mapView.select(device, true); + } + +} |