Handle device icon update
diff --git a/ui/org.eclipse.sensinact.studio.view.outdoor/.classpath b/ui/org.eclipse.sensinact.studio.view.outdoor/.classpath
index 098194c..01836c4 100644
--- a/ui/org.eclipse.sensinact.studio.view.outdoor/.classpath
+++ b/ui/org.eclipse.sensinact.studio.view.outdoor/.classpath
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/ui/org.eclipse.sensinact.studio.view.outdoor/META-INF/MANIFEST.MF b/ui/org.eclipse.sensinact.studio.view.outdoor/META-INF/MANIFEST.MF
index 325c5e3..dd52d3b 100644
--- a/ui/org.eclipse.sensinact.studio.view.outdoor/META-INF/MANIFEST.MF
+++ b/ui/org.eclipse.sensinact.studio.view.outdoor/META-INF/MANIFEST.MF
@@ -8,6 +8,7 @@
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.ui,
+ org.eclipse.emf.transaction,
org.eclipse.core.runtime,
org.eclipse.sensinact.studio.model.resource,
org.eclipse.sensinact.studio.webapp.outdoor,
diff --git a/ui/org.eclipse.sensinact.studio.view.outdoor/src/org/eclipse/sensinact/studio/view/outdoor/OutdoorDeploymentView.java b/ui/org.eclipse.sensinact.studio.view.outdoor/src/org/eclipse/sensinact/studio/view/outdoor/OutdoorDeploymentView.java
index 625839a..ce0a345 100644
--- a/ui/org.eclipse.sensinact.studio.view.outdoor/src/org/eclipse/sensinact/studio/view/outdoor/OutdoorDeploymentView.java
+++ b/ui/org.eclipse.sensinact.studio.view.outdoor/src/org/eclipse/sensinact/studio/view/outdoor/OutdoorDeploymentView.java
@@ -24,8 +24,10 @@
import org.eclipse.sensinact.studio.http.services.server.serverstarted.ServerUpdatedListener;
import org.eclipse.sensinact.studio.http.services.server.serverstarted.ServerUpdatedManager;
import org.eclipse.sensinact.studio.http.services.server.serverstarted.UpdateDescriptor;
+import org.eclipse.sensinact.studio.model.manager.listener.devicelocation.DeviceIconListener;
import org.eclipse.sensinact.studio.model.manager.listener.devicelocation.DeviceLocationListener;
-import org.eclipse.sensinact.studio.model.manager.listener.devicelocation.DeviceLocationManager;
+import org.eclipse.sensinact.studio.model.manager.listener.devicelocation.DeviceUpdateManager;
+import org.eclipse.sensinact.studio.model.manager.listener.devicelocation.DeviceSelectionListener;
import org.eclipse.sensinact.studio.model.resource.utils.DeviceDescriptor;
import org.eclipse.sensinact.studio.model.resource.utils.GPScoordinates;
import org.eclipse.sensinact.studio.preferences.ConfigurationManager;
@@ -53,7 +55,7 @@
/**
* @author Nicolas Hili, Etienne Gandrille
*/
-public class OutdoorDeploymentView implements ServerUpdatedListener, DeviceLocationListener {
+public class OutdoorDeploymentView implements ServerUpdatedListener, DeviceLocationListener, DeviceIconListener, DeviceSelectionListener {
private static final Logger logger = Logger.getLogger(OutdoorDeploymentView.class);
@@ -84,10 +86,12 @@
dndShell.setVisible(false);
dndComposite = new Composite(dndShell, SWT.NO_BACKGROUND);
dndComposite.setVisible(false);
-
+ DeviceUpdateManager manager = DeviceUpdateManager.getInstance();
// updates device position on the map
- DeviceLocationManager.getInstance().addDeviceLocationListener(this);
-
+ manager.addDeviceLocationListener(this);
+ manager.addDeviceSelectionListener(this);
+ manager.addDeviceIconListener(this);
+
// swap browserStarted flag to true when browser is ready
browser.addProgressListener(new BrowserProgressListener());
@@ -137,13 +141,15 @@
/* DeviceLocation */
/* ============== */
+
@Override
public void deviceLocationUpdated(final GPScoordinates coordinate, final DeviceDescriptor descriptor) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
String dev = "'" + descriptor.toString() + "'";
- String cmd = "updateDeviceLocation(" + coordinate.getLat() + "," + coordinate.getLng() + "," + dev + ");";
+ String icon = "'" + descriptor.getIcon() + "'";
+ String cmd = "updateDeviceLocation(" + coordinate.getLat() + "," + coordinate.getLng() + "," + dev + "," + icon + ");";
browser.execute(cmd);
}
});
@@ -289,11 +295,11 @@
String device = tab[1];
// try to update on server
- boolean locationUpdated = DeviceLocationManager.getInstance().updateLocationInServer(new DeviceDescriptor(gateway, device), new GPScoordinates(lat, lng));
+ boolean locationUpdated = DeviceUpdateManager.getInstance().updateLocationInServer(new DeviceDescriptor(gateway, device), new GPScoordinates(lat, lng));
if (locationUpdated) {
String dev = "'" + gateway + "/" + device + "'";
- String cmd = "return updateDeviceLocation(" + lat + "," + lng + "," + dev + ");";
+ String cmd = "return updateDeviceLocation(" + lat + "," + lng + "," + dev + ", 'default');";
browser.evaluate(cmd);
} else {
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
@@ -307,4 +313,26 @@
public void dropAccept(DropTargetEvent event) {
}
}
+
+ @Override
+ public void deviceSelected(GPScoordinates coordinate) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ browser.execute("map.setView(["+coordinate.getLat()+","+coordinate.getLng()+"]);");
+ }
+ });
+
+ }
+
+ @Override
+ public void deviceIconUpdated(DeviceDescriptor descriptor) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ String cmd = "updateDeviceIcon(\"" + descriptor.toString() + "\",\"" + descriptor.getIcon() + "\");";
+ browser.execute(cmd);
+ }
+ });
+ }
}