|
From: <jan...@us...> - 2007-01-15 23:51:27
|
Revision: 509
http://svn.sourceforge.net/magicmap/?rev=509&view=rev
Author: jan_fride
Date: 2007-01-15 15:51:04 -0800 (Mon, 15 Jan 2007)
Log Message:
-----------
MeasurementModel show every client.
one bug: ap for all clients are shown, only after the first selection of a clint!?
Modified Paths:
--------------
trunk/magicmapclient/magicmapclient.iml
trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java
trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MeasurementTable.java
trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MeasurementView.java
trunk/magicmapclient/src/net/sf/magicmap/client/model/measurement/IMeasurementModel.java
trunk/magicmapclient/src/net/sf/magicmap/client/model/measurement/MeasurementModel.java
trunk/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java
trunk/magicmapserver/magicmapserver.iml
Added Paths:
-----------
trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MeasureTableCellRenderer.java
Modified: trunk/magicmapclient/magicmapclient.iml
===================================================================
--- trunk/magicmapclient/magicmapclient.iml 2007-01-14 20:56:16 UTC (rev 508)
+++ trunk/magicmapclient/magicmapclient.iml 2007-01-15 23:51:04 UTC (rev 509)
@@ -6,13 +6,13 @@
<exclude-output />
<output-test url="file://$MODULE_DIR$/build-test" />
<content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/inf" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/perl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/res" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src-gen" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/.settings" />
- <excludeFolder url="file://$MODULE_DIR$/inf" />
<excludeFolder url="file://$MODULE_DIR$/lib" />
<excludeFolder url="file://$MODULE_DIR$/lib-dev" />
</content>
@@ -290,15 +290,6 @@
<SOURCES />
</library>
</orderEntry>
- <orderEntry type="module-library">
- <library>
- <CLASSES>
- <root url="file://$MODULE_DIR$/build" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
<orderEntryProperties />
</component>
<component name="VcsManagerConfiguration">
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java 2007-01-14 20:56:16 UTC (rev 508)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java 2007-01-15 23:51:04 UTC (rev 509)
@@ -4,476 +4,459 @@
package net.sf.magicmap.client.controller;
+import net.sf.magicmap.client.interfaces.ServerPollerListener;
+import net.sf.magicmap.client.model.node.*;
+import net.sf.magicmap.server.dto.*;
+
+import javax.swing.*;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
-import javax.swing.SwingUtilities;
-
-import net.sf.magicmap.client.interfaces.ServerPollerListener;
-import net.sf.magicmap.client.model.node.AccessPointNode;
-import net.sf.magicmap.client.model.node.ClientNode;
-import net.sf.magicmap.client.model.node.GeoPos;
-import net.sf.magicmap.client.model.node.GeoPosNode;
-import net.sf.magicmap.client.model.node.INodeModel;
-import net.sf.magicmap.client.model.node.InfoObject;
-import net.sf.magicmap.client.model.node.LocationNode;
-import net.sf.magicmap.client.model.node.MapNode;
-import net.sf.magicmap.client.model.node.Node;
-import net.sf.magicmap.client.model.node.NodeModelConstants;
-import net.sf.magicmap.server.dto.AccessPointDTO;
-import net.sf.magicmap.server.dto.ClientDTO;
-import net.sf.magicmap.server.dto.GeoPointDTO;
-import net.sf.magicmap.server.dto.MapDTO;
-import net.sf.magicmap.server.dto.PositionDTO;
-import net.sf.magicmap.server.dto.SignalCharacterDTO;
-import net.sf.magicmap.server.dto.SimpleScanResultDTO;
-
/**
* Wertet die Ergebnisse des Pollers aus und gibt sie in geeigneter Weise an den
* Client weiter.
- *
+ *
* @author thuebner
*/
public class PollHandler implements ServerPollerListener {
- private Controller controller;
+ private Controller controller;
- public PollHandler(Controller controller) {
- this.controller = controller;
- }
+ public PollHandler(Controller controller) {
+ this.controller = controller;
+ }
- /**
- * Werte ein PositionDTO-Objekt aus und generiert entsprechende Ergenisse
- * f\xFCr die Aktualisierung der Modelle und somit auch der Views. In dieser
- * Methode ist es wichtig alle m\xF6glichen Fehlersituation zu ber\xFCcksichtigen,
- * da stets nur Differenzen seit einem Zeitstempel \xFCbertragen werden. Also:
- * Defensiv programmieren aber nicht gleich wegen jeder Inkonsistenz
- * abbrechen.... ;-)
- *
- * @see net.sf.magicmap.client.interfaces.ServerPollerListener#positionCreatedOrUpdatedOrDeleted(java.lang.String,
- * long, net.sf.magicmap.client.delegate.dto.PositionDTO)
- */
- public void positionCreatedOrUpdatedOrDeleted(final PositionDTO position){
+ /**
+ * Werte ein PositionDTO-Objekt aus und generiert entsprechende Ergenisse
+ * f\xFCr die Aktualisierung der Modelle und somit auch der Views. In dieser
+ * Methode ist es wichtig alle m\xF6glichen Fehlersituation zu ber\xFCcksichtigen,
+ * da stets nur Differenzen seit einem Zeitstempel \xFCbertragen werden. Also:
+ * Defensiv programmieren aber nicht gleich wegen jeder Inkonsistenz
+ * abbrechen.... ;-)
+ * @see net.sf.magicmap.client.interfaces.ServerPollerListener
+ */
+ public void positionCreatedOrUpdatedOrDeleted(final PositionDTO position){
- try {
- SwingUtilities.invokeAndWait(new Runnable() {
+ try {
+ SwingUtilities.invokeAndWait(new Runnable() {
- public void run(){
- try {
- INodeModel nodeModel = PollHandler.this.controller.getNodeModel();
- Node node = nodeModel.findNode(position.getName());
+ public void run(){
+ try {
+ INodeModel nodeModel = PollHandler.this.controller.getNodeModel();
+ Node node = nodeModel.findNode(position.getName());
- if (position.isDeleted()) {
+ if (position.isDeleted()) {
- if (position.getClient() == null && position.getAccessPoint() == null) {
- if (node != null) {
- // Referenzpunkt wird gel\xF6scht
- if (node.getType() == NodeModelConstants.NODETYPE_LOCATION) // Aus dem lokalen Graphen entfernen das
- // Ding
- nodeModel.removeNode(node);
- else
- System.out
- .println("Position with location information deleted, but node with given name is not a location!");
- } else
- System.out
- .println("Position with location information deleted, but no node found for it.");
- return;
- }
- if (position.getClient() != null) // Node client =
- // nodeModel.findNode(position.getClient().getName());
- /*
- * if (client != null) { // Client wurde "frei"
- * gemacht if (client.getType() ==
- * NodeModel.NODETYPE_CLIENT) {
- * client.setFix(false);
- * System.out.println("Client unfixed."); } else {
- * System.out.println("Position with client
- * deleted, but node with given name is not a
- * client!"); } } else {
- * System.out.println("Position with client
- * deleted, but no node found for it."); }
- */
- return;
- if (position.getAccessPoint() != null) {
- AccessPointNode ap = nodeModel.findAccessPoint(position.getAccessPoint().getMac());
- if (ap != null) {
- // AccessPoint wurde "frei" gemacht
- ap.setFix(false);
- System.out.println("Accesspoint unfixed.");
- } else
- System.out.println("Position with accesspoint deleted, but no node found for it.");
- return;
- }
+ if (position.getClient() == null && position.getAccessPoint() == null) {
+ if (node != null) {
+ // Referenzpunkt wird gel\xF6scht
+ if (node.getType() == NodeModelConstants.NODETYPE_LOCATION) // Aus dem lokalen Graphen entfernen das
+ // Ding
+ nodeModel.removeNode(node);
+ else
+ System.out
+ .println("Position with location information deleted, but node with given name is not a location!");
+ } else
+ System.out
+ .println("Position with location information deleted, but no node found for it.");
+ return;
+ }
+ if (position.getClient() != null) // Node client =
+ return;
+ if (position.getAccessPoint() != null) {
+ AccessPointNode ap = nodeModel.findAccessPoint(position.getAccessPoint().getMac());
+ if (ap != null) {
+ // AccessPoint wurde "frei" gemacht
+ ap.setFix(false);
+ System.out.println("Accesspoint unfixed.");
+ } else
+ System.out.println("Position with accesspoint deleted, but no node found for it.");
+ return;
+ }
+ System.out.println("Position with id " + position.getId()
+ + " was deleted but not handled.");
+ return;
+ } else {
+ // Neues Positionsobjekt oder altes wurde
+ // aktualisiert (Location)
+ if (position.getClient() == null && position.getAccessPoint() == null) {
+ handlePositionXYZ(node, nodeModel, position);
+ return;
+ }
+ if (position.getAccessPoint() != null) {
+ handleAccessPointXYZ(nodeModel, position);
+ return;
+ }
+ if (position.getClient() != null && position.getCharacter() != null) {
+ handleClientXYZ(nodeModel, position);
+ return;
+ }
+ }
+ System.out.println("Unbekannte Position. Kann nix anfangen damit.");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
- System.out.println("Position with id " + position.getId().longValue()
- + " was deleted but not handled.");
- return;
- } else {
- // Neues Positionsobjekt oder altes wurde
- // aktualisiert (Location)
- if (position.getClient() == null && position.getAccessPoint() == null) {
- // Referenzpunkt angelegt oder aktualisiert
- LocationNode location;
- if (node == null) {
- // Referenzpunkt bisher unbekannt
- location = new LocationNode(nodeModel);
+ /**
+ *
+ * @param node a node
+ * @param nodeModel the model
+ * @param position the position data
+ */
+ private void handlePositionXYZ(Node node, INodeModel nodeModel, PositionDTO position) {
+ // Referenzpunkt angelegt oder aktualisiert
+ LocationNode location;
+ if (node == null) {
+ // Referenzpunkt bisher unbekannt
+ location = new LocationNode(nodeModel);
- location.setId(position.getId().longValue());
- location.setName(position.getName());
- nodeModel.addNode(location);
+ location.setId(position.getId());
+ location.setName(position.getName());
+ nodeModel.addNode(location);
- if (position.getPosX().intValue() != -1 && position.getPosY().intValue() != -1) {
- location.setPosition(position.getPosX().intValue(), position.getPosY()
- .intValue(), position.getPosZ().intValue());
- location.setFix(true);
- } else
- location.setFix(false);
- // Signalcharakteristik auswerden und
- // gesehene
- // AccessPoints ebenfalls erzeugen bzw. mit
- // ihnen Verbindungen
- // herstellen
- SignalCharacterDTO sc = position.getCharacter();
- SimpleScanResultDTO[] sr = sc.getSimpleScanResults();
- for (int i = 0; sr != null && i < sr.length; i++) {
- SimpleScanResultDTO r = sr[i];
- String mac = r.getMacAP();
- // Gibt es ggf. einen AP mit der
- // Mac-Adresse?
- AccessPointNode ap = nodeModel.findAccessPoint(mac);
- if (ap == null) {
- // Nein
- ap = new AccessPointNode(nodeModel);
- ap.setMacAddress(mac);
- nodeModel.addNode(ap);
- // ap.setName(mac);
- }
- if (!ap.isHidden())
- location.seesAccessPoint(ap, r.getSignalLevel().doubleValue());
- }
- } else {
- System.out.println("Referenzpunkt verschoben.");
- // Referenzpunkt wird nur aktualisiert, wir
- // gehen davon aus
- // das sich nur die Position ver\xE4ndern darf
- // (die Programmlogik sieht
- // es jedenfalls so vor, \xC4ndern der APs
- // geschieht \xFCber L\xF6schen und
- // Neuanlegen)
- location = (LocationNode) node;
- location.setId(position.getId().longValue()); // Falls
- // nicht
- // gesetzt
- // Nur Position von fixierten
- // Orten/Referenzpunkten beachten
- if (position.isFixed()) {
- location.setPosition(position.getPosX().intValue(), position.getPosY()
- .intValue(), position.getPosZ().intValue());
- location.setFix(true);
- } else
- location.setFix(false);
- // Signalcharakteristik auswerden und
- // gesehene
- // AccessPoints ebenfalls erzeugen bzw. mit
- // ihnen Verbindungen
- // herstellen
- SignalCharacterDTO sc = position.getCharacter();
- SimpleScanResultDTO[] sr = sc.getSimpleScanResults();
- // Alle momentan gesehenen AccessPoints
- // merken
+ if (position.getPosX() != -1 && position.getPosY() != -1) {
+ location.setPosition(position.getPosX(), position.getPosY(), position.getPosZ());
+ location.setFix(true);
+ } else
+ location.setFix(false);
+ // Signalcharakteristik auswerden und
+ // gesehene
+ // AccessPoints ebenfalls erzeugen bzw. mit
+ // ihnen Verbindungen
+ // herstellen
+ SignalCharacterDTO sc = position.getCharacter();
+ SimpleScanResultDTO[] sr = sc.getSimpleScanResults();
+ for (int i = 0; sr != null && i < sr.length; i++) {
+ SimpleScanResultDTO r = sr[i];
+ String mac = r.getMacAP();
+ // Gibt es ggf. einen AP mit der
+ // Mac-Adresse?
+ AccessPointNode ap = nodeModel.findAccessPoint(mac);
+ if (ap == null) {
+ // Nein
+ ap = new AccessPointNode(nodeModel);
+ ap.setMacAddress(mac);
+ nodeModel.addNode(ap);
+ // ap.setName(mac);
+ }
+ if (!ap.isHidden())
+ location.seesAccessPoint(ap, r.getSignalLevel());
+ }
+ } else {
+ System.out.println("Referenzpunkt verschoben.");
+ // Referenzpunkt wird nur aktualisiert, wir
+ // gehen davon aus
+ // das sich nur die Position ver\xE4ndern darf
+ // (die Programmlogik sieht
+ // es jedenfalls so vor, \xC4ndern der APs
+ // geschieht \xFCber L\xF6schen und
+ // Neuanlegen)
+ location = (LocationNode) node;
+ location.setId(position.getId()); // Falls
+ // nicht
+ // gesetzt
+ // Nur Position von fixierten
+ // Orten/Referenzpunkten beachten
+ if (position.isFixed()) {
+ location.setPosition(position.getPosX(), position.getPosY(), position.getPosZ());
+ location.setFix(true);
+ } else
+ location.setFix(false);
+ // Signalcharakteristik auswerden und
+ // gesehene
+ // AccessPoints ebenfalls erzeugen bzw. mit
+ // ihnen Verbindungen
+ // herstellen
+ SignalCharacterDTO sc = position.getCharacter();
+ SimpleScanResultDTO[] sr = sc.getSimpleScanResults();
+ // Alle momentan gesehenen AccessPoints
+ // merken
- ArrayList seenAps = location.getSeenAccessPoints();
- for (int i = 0; i < sr.length; i++) {
- SimpleScanResultDTO r = sr[i];
- String mac = r.getMacAP();
- // Gibt es ggf. einen AP mit der
- // Mac-Adresse?
- AccessPointNode ap = nodeModel.findAccessPoint(mac);
- if (ap == null) {
- // Nein
- ap = new AccessPointNode(nodeModel);
- ap.setMacAddress(mac);
- nodeModel.addNode(ap);
- // ap.setName(mac);
- } else // AccessPoint nur aktualisieren?
- if (seenAps.remove(ap)) // Nur Signallevel aktualisieren
- location.setSignalLevelForAcessPoint(ap, r.getSignalLevel().doubleValue());
- else
- // Neu
- location.seesAccessPoint(ap, r.getSignalLevel().doubleValue());
- }
+ ArrayList seenAps = location.getSeenAccessPoints();
+ for (SimpleScanResultDTO r : sr) {
+ String mac = r.getMacAP();
+ // Gibt es ggf. einen AP mit der
+ // Mac-Adresse?
+ AccessPointNode ap = nodeModel.findAccessPoint(mac);
+ if (ap == null) {
+ // Nein
+ ap = new AccessPointNode(nodeModel);
+ ap.setMacAddress(mac);
+ nodeModel.addNode(ap);
+ // ap.setName(mac);
+ } else // AccessPoint nur aktualisieren?
+ if (seenAps.remove(ap)) // Nur Signallevel aktualisieren
+ location.setSignalLevelForAcessPoint(ap, r.getSignalLevel());
+ else
+ // Neu
+ location.seesAccessPoint(ap, r.getSignalLevel());
+ }
- // Alle APs aus seenAps werden demzufolge
- // nicht mehr gesehen und
- // dies teilen wir unserem Modell mit
- for (int i = 0; i < seenAps.size(); i++) {
- AccessPointNode ap = (AccessPointNode) seenAps.get(i);
- location.notSeesAccessPoint(ap);
- }
- }
- return;
- }
- if (position.getAccessPoint() != null) {
- System.out.println("Accesspointposition erzeugt oder aktualisiert.");
- AccessPointDTO apdto = position.getAccessPoint();
- AccessPointNode ap = nodeModel.findAccessPoint(apdto.getMac());
- if (ap == null) {
- // Gibt es noch nicht in unserem Modell =>
- // Schnell erzeugen
- ap = new AccessPointNode(nodeModel);
- ap.setMacAddress(apdto.getMac());
- nodeModel.addNode(ap);
- }
- ap.setId(position.getId().longValue());
- ap.setHiddenStatus(apdto.isHidden());
- // Nur Position von fixierten AccessPoints
- // beachten
- if (position.isFixed()) {
- // AccessPoint wurde fixiert
- ap.setPosition(position.getPosX().intValue(), position.getPosY().intValue(),
- position.getPosZ().intValue());
- ap.setFix(true);
- } else {
- // Loser AccessPoint gemeldet
- ap.setFix(false);
- System.out.println("Unfix accesspoint received. This was not in our contract.");
- }
- return;
- }
- // if (position.getGeoPoint() != null) {
- // GeoPointDTO gpdto = position.getGeoPoint();
- // GeoPosNode geoNode = (GeoPosNode)
- // nodeModel.findNode(gpdto.getPath());
- // if (geoNode == null) {
- // geoNode.setPosition(position.getPosX(),
- // position.getPosY());
- // geoNode.setFix(true);
- // }
- // }
- if (position.getClient() != null && position.getCharacter() != null) {
- // System.out.println("Clientposition erzeugt
- // oder aktualisiert f\xFCr Client " +
- // position.getClient().getName());
- ClientDTO clientdto = position.getClient();
- ClientNode client = (ClientNode) nodeModel.findNode(clientdto.getName());
+ // Alle APs aus seenAps werden demzufolge
+ // nicht mehr gesehen und
+ // dies teilen wir unserem Modell mit
+ for (Object seenAp : seenAps) {
+ AccessPointNode ap = (AccessPointNode) seenAp;
+ location.notSeesAccessPoint(ap);
+ }
+ }
+ }
- // Wenn eigener Client unfixiert kommt
- // Positionsangaben ignorieren
- if (client == PollHandler.this.controller.getClient() && !position.isFixed()) {
- // Aber noch schnell unfixieren
- client.setFix(false);
- System.out.println("Eigener Client wird ignoriert");
- return;
- } else if (client == PollHandler.this.controller.getClient() && position.isFixed())
- System.out.println("Eigener Client empfangen mit fixierter Position.");
+ /**
+ * Macht irgendwass
+ * @param nodeModel
+ * @param position
+ */
+ private void handleAccessPointXYZ(INodeModel nodeModel, PositionDTO position) {
+ System.out.println("Accesspointposition erzeugt oder aktualisiert.");
+ AccessPointDTO apdto = position.getAccessPoint();
+ AccessPointNode ap = nodeModel.findAccessPoint(apdto.getMac());
+ if (ap == null) {
+ // Gibt es noch nicht in unserem Modell =>
+ // Schnell erzeugen
+ ap = new AccessPointNode(nodeModel);
+ ap.setMacAddress(apdto.getMac());
+ nodeModel.addNode(ap);
+ }
+ ap.setId(position.getId());
+ ap.setHiddenStatus(apdto.isHidden());
+ // Nur Position von fixierten AccessPoints
+ // beachten
+ if (position.isFixed()) {
+ // AccessPoint wurde fixiert
+ ap.setPosition(position.getPosX(), position.getPosY(),
+ position.getPosZ());
+ ap.setFix(true);
+ } else {
+ // Loser AccessPoint gemeldet
+ ap.setFix(false);
+ System.out.println("Unfix accesspoint received. This was not in our contract.");
+ }
+ }
- // Sonst beachten wir alle Positionen die wir
- // bekommen
- if (client == null) {
- System.out.println("Neuer Client empfangen (" + clientdto.getMac() + ", "
- + clientdto.getName() + ". F\xFCge zum Graphen hinzu.");
- client = new ClientNode(nodeModel);
- client.setMacAddress(clientdto.getMac());
- client.setName(clientdto.getName());
- nodeModel.addNode(client);
- }
+ /**
+ * Macht igrnedwass!
+ * @param nodeModel
+ * @param position
+ */
+ private void handleClientXYZ(INodeModel nodeModel, PositionDTO position) {
+ ClientDTO clientdto = position.getClient();
+ ClientNode client = (ClientNode) nodeModel.findNode(clientdto.getName());
- System.out.println("Position f\xFCr Client " + client.getName() + " empfangen. fix = "
- + position.isFixed());
- // client.setPosition(position.getPosX().intValue(),
- // position.getPosY().intValue());
+ // Wenn eigener Client unfixiert kommt
+ // Positionsangaben ignorieren
+ if (client == this.controller.getClient() && !position.isFixed()) {
+ // Aber noch schnell unfixieren
+ client.setFix(false);
+ System.out.println("Eigener Client wird ignoriert");
+ return;
+ } else if (client == this.controller.getClient() && position.isFixed())
+ System.out.println("Eigener Client empfangen mit fixierter Position.");
- if (position.isFixed()) {
- // Client wurde fixiert
- client.setFix(true);
- client.setPosition(position.getPosX().intValue(), position.getPosY().intValue(),
- position.getPosZ().intValue());
- } else
- client.setFix(false);
- client.setId(position.getId().longValue());
+ // Sonst beachten wir alle Positionen die wir
+ // bekommen
+ if (client == null) {
+ System.out.println("Neuer Client empfangen (" + clientdto.getMac() + ", "
+ + clientdto.getName() + ". F\xFCge zum Graphen hinzu.");
+ client = new ClientNode(nodeModel);
+ client.setMacAddress(clientdto.getMac());
+ client.setName(clientdto.getName());
+ nodeModel.addNode(client);
+ }
- // Signalst\xE4rken usw. verwaltet der scannende
- // Client selbst
- if (client == PollHandler.this.controller.getClient()) return;
+ System.out.println("Position f\xFCr Client " + client.getName() + " empfangen. fix = "
+ + position.isFixed());
+ // client.setPosition(position.getPosX().intValue(),
+ // position.getPosY().intValue());
- // Signalcharakteristik auswerden und gesehene
- // AccessPoints ebenfalls erzeugen bzw. mit
- // ihnen Verbindungen
- // herstellen
- SignalCharacterDTO sc = position.getCharacter();
- SimpleScanResultDTO[] sr = sc.getSimpleScanResults();
- // Alle momentan gesehenen AccessPoints merken
- ArrayList seenAps = client.getSeenAccessPoints();
+ if (position.isFixed()) {
+ // Client wurde fixiert
+ client.setFix(true);
+ client.setPosition(position.getPosX(), position.getPosY(),
+ position.getPosZ());
+ } else
+ client.setFix(false);
+ client.setId(position.getId());
- if (sr != null) for (int i = 0; i < sr.length; i++) {
- SimpleScanResultDTO r = sr[i];
- String mac = r.getMacAP();
- // Gibt es ggf. einen AP mit der
- // Mac-Adresse?
- AccessPointNode ap = nodeModel.findAccessPoint(mac);
- if (ap == null) {
- // Nein
- ap = new AccessPointNode(nodeModel);
- ap.setMacAddress(mac);
- nodeModel.addNode(ap);
- // ap.setName(mac);
- } else // AccessPoint nur aktualisieren?
- if (seenAps.remove(ap)) // Nur Signallevel aktualisieren
- client.setSignalLevelForAcessPoint(ap, r.getSignalLevel().doubleValue());
- else
- // Neu
- client.seesAccessPoint(ap, r.getSignalLevel().doubleValue());
- }
+ // Signalst\xE4rken usw. verwaltet der scannende
+ // Client selbst
+ if (client == this.controller.getClient()) return;
- // Alle APs aus seenAps werden demzufolge nicht
- // mehr gesehen und
- // dies teilen wir unserem Modell mit
- for (int i = 0; i < seenAps.size(); i++) {
- AccessPointNode ap = (AccessPointNode) seenAps.get(i);
- client.notSeesAccessPoint(ap);
- }
- return;
- }
- }
- System.out.println("Unbekannte Position. Kann nix anfangen damit.");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
+ // Signalcharakteristik auswerden und gesehene
+ // AccessPoints ebenfalls erzeugen bzw. mit
+ // ihnen Verbindungen
+ // herstellen
+ SignalCharacterDTO sc = position.getCharacter();
+ SimpleScanResultDTO[] sr = sc.getSimpleScanResults();
+ // Alle momentan gesehenen AccessPoints merken
+ ArrayList seenAps = client.getSeenAccessPoints();
- /*
- * (non-Javadoc)
- *
- * @see net.sf.magicmap.client.interfaces.ServerPollerListener#mapCreatedOrUpdatedOrDeleted(net.sf.magicmap.server.dto.MapDTO)
- */
- public void mapCreatedOrUpdatedOrDeleted(final MapDTO mapDTO){
+ if (sr != null) {
+ for (SimpleScanResultDTO r : sr) {
+ String mac = r.getMacAP();
+ // Gibt es ggf. einen AP mit der
+ // Mac-Adresse?
+ AccessPointNode ap = nodeModel.findAccessPoint(mac);
+ if (ap == null) {
+ // Nein
+ ap = new AccessPointNode(nodeModel);
+ ap.setMacAddress(mac);
+ nodeModel.addNode(ap);
+ // ap.setName(mac);
+ } else // AccessPoint nur aktualisieren?
+ if (seenAps.remove(ap)){ // Nur Signallevel aktualisieren
+ client.setSignalLevelForAcessPoint(ap, r.getSignalLevel());
+ Controller.getInstance().getMeasurementModel().updateScanResult(client, ap.getMacAddress(), r.getSignalLevel());
+ }
+ else{
+ client.seesAccessPoint(ap, r.getSignalLevel());
+ Controller.getInstance().getMeasurementModel().updateScanResult(client, ap.getMacAddress(), r.getSignalLevel());
+ }
+ }
+ }
- try {
- SwingUtilities.invokeAndWait(new Runnable() {
+ // Alle APs aus seenAps werden demzufolge nicht
+ // mehr gesehen und
+ // dies teilen wir unserem Modell mit
+ for (Object seenAp : seenAps) {
+ AccessPointNode ap = (AccessPointNode) seenAp;
+ client.notSeesAccessPoint(ap);
+ }
+ }
- public void run(){
- try {
- INodeModel nodeModel = PollHandler.this.controller.getNodeModel();
- Node node = nodeModel.findNode(mapDTO.getName());
+ /*
+ * (non-Javadoc)
+ *
+ * @see net.sf.magicmap.client.interfaces.ServerPollerListener#mapCreatedOrUpdatedOrDeleted(net.sf.magicmap.server.dto.MapDTO)
+ */
+ public void mapCreatedOrUpdatedOrDeleted(final MapDTO mapDTO){
- if (node == null) {
- MapNode mapNode = new MapNode(nodeModel);
- mapNode.setName(mapDTO.getName());
- mapNode.setMapInfo(mapDTO);
- nodeModel.addNode(mapNode);
- }
+ try {
+ SwingUtilities.invokeAndWait(new Runnable() {
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
+ public void run(){
+ try {
+ INodeModel nodeModel = PollHandler.this.controller.getNodeModel();
+ Node node = nodeModel.findNode(mapDTO.getName());
- /*
- * (non-Javadoc)
- *
- * @see net.sf.magicmap.client.interfaces.ServerPollerListener#geoPosCreatedOrUpdatedOrDeleted(net.sf.magicmap.server.dto.GeoPointDTO)
- */
- public void geoPosCreatedOrUpdatedOrDeleted(final GeoPointDTO pointDTO){
+ if (node == null) {
+ MapNode mapNode = new MapNode(nodeModel);
+ mapNode.setName(mapDTO.getName());
+ mapNode.setMapInfo(mapDTO);
+ nodeModel.addNode(mapNode);
+ }
- try {
- SwingUtilities.invokeAndWait(new Runnable() {
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
- public void run(){
- try {
- INodeModel nodeModel = PollHandler.this.controller.getNodeModel();
- Node node = nodeModel.findNode(pointDTO.toString());
+ /*
+ * (non-Javadoc)
+ *
+ * @see net.sf.magicmap.client.interfaces.ServerPollerListener#geoPosCreatedOrUpdatedOrDeleted(net.sf.magicmap.server.dto.GeoPointDTO)
+ */
+ public void geoPosCreatedOrUpdatedOrDeleted(final GeoPointDTO pointDTO){
- if (node == null) {
- GeoPosNode geoNode = new GeoPosNode(nodeModel);
- GeoPos geoPos = new GeoPos(pointDTO.getGeoPointLong().intValue(), pointDTO.getGeoPointLat()
- .intValue(), pointDTO.getGeoPointAlt().intValue());
- geoNode.setName(pointDTO.toString());
- geoNode.setId(pointDTO.getId());
- System.err.println("created geo node: " + geoNode.getId());
- geoNode.setGeoPos(geoPos);
- nodeModel.addNode(geoNode);
- geoNode.setFix(true);
- geoNode.setPosition(pointDTO.getGeoPointX().intValue(), pointDTO.getGeoPointY().intValue(),
- 0);
- }
+ try {
+ SwingUtilities.invokeAndWait(new Runnable() {
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
+ public void run(){
+ try {
+ INodeModel nodeModel = PollHandler.this.controller.getNodeModel();
+ Node node = nodeModel.findNode(pointDTO.toString());
- /*
- * (non-Javadoc)
- *
- * @see net.sf.magicmap.client.interfaces.ServerPollerListener#infoObjectCreatedorUpdatedOrDeleted(net.sf.magicmap.client.model.node.InfoObject)
- */
- public void infoObjectCreatedorUpdatedOrDeleted(final InfoObject infoObject){
+ if (node == null) {
+ GeoPosNode geoNode = new GeoPosNode(nodeModel);
+ GeoPos geoPos = new GeoPos(pointDTO.getGeoPointLong(), pointDTO.getGeoPointLat(), pointDTO.getGeoPointAlt());
+ geoNode.setName(pointDTO.toString());
+ geoNode.setId(pointDTO.getId());
+ System.err.println("created geo node: " + geoNode.getId());
+ geoNode.setGeoPos(geoPos);
+ nodeModel.addNode(geoNode);
+ geoNode.setFix(true);
+ geoNode.setPosition(pointDTO.getGeoPointX(), pointDTO.getGeoPointY(),
+ 0);
+ }
- try {
- SwingUtilities.invokeAndWait(new Runnable() {
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
- public void run(){
- // try {
- // INodeModel nodeModel = controller.getNodeModel();
- // Node node = nodeModel.findNode(infoObject.getUrl());
- //
- // if (node == null) {
- // InfoObjectNode infoNode = new InfoObjectNode(nodeModel);
- // infoNode.setName(infoObject.getUrl());
- // infoNode.setDisplayName(infoObject.getName());
- // infoNode.setId(infoObject.hashCode());
- // String[] tags = infoObject.getUrl().split(",");
- // for (String string : tags) {
- // infoNode.addTag(string);
- // }
- // if
- // (infoObject.getMap().equals(Controller.getInstance().getCurrentMap().name))
- // {
- // nodeModel.addNode(infoNode);
- // infoNode.setFix(true);
- // infoNode.setPosition(infoObject.getX(),
- // infoObject.getY(), 0);
- // }
- // }
- //
- // } catch (Exception e){
- // e.printStackTrace();
- // }
- }
- });
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
+ /*
+ * (non-Javadoc)
+ *
+ * @see net.sf.magicmap.client.interfaces.ServerPollerListener#infoObjectCreatedorUpdatedOrDeleted(net.sf.magicmap.client.model.node.InfoObject)
+ */
+ public void infoObjectCreatedorUpdatedOrDeleted(final InfoObject infoObject){
+
+ try {
+ SwingUtilities.invokeAndWait(new Runnable() {
+
+ public void run(){
+ // try {
+ // INodeModel nodeModel = controller.getNodeModel();
+ // Node node = nodeModel.findNode(infoObject.getUrl());
+ //
+ // if (node == null) {
+ // InfoObjectNode infoNode = new InfoObjectNode(nodeModel);
+ // infoNode.setName(infoObject.getUrl());
+ // infoNode.setDisplayName(infoObject.getName());
+ // infoNode.setId(infoObject.hashCode());
+ // String[] tags = infoObject.getUrl().split(",");
+ // for (String string : tags) {
+ // infoNode.addTag(string);
+ // }
+ // if
+ // (infoObject.getMap().equals(Controller.getInstance().getCurrentMap().name))
+ // {
+ // nodeModel.addNode(infoNode);
+ // infoNode.setFix(true);
+ // infoNode.setPosition(infoObject.getX(),
+ // infoObject.getY(), 0);
+ // }
+ // }
+ //
+ // } catch (Exception e){
+ // e.printStackTrace();
+ // }
+ }
+ });
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
}
Added: trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MeasureTableCellRenderer.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MeasureTableCellRenderer.java (rev 0)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MeasureTableCellRenderer.java 2007-01-15 23:51:04 UTC (rev 509)
@@ -0,0 +1,72 @@
+package net.sf.magicmap.client.gui.views;
+
+import net.sf.magicmap.client.measurement.Constants;
+import net.sf.magicmap.client.measurement.MeasurementUtils;
+import net.sf.magicmap.client.model.measurement.SeenAccessPoint;
+
+import javax.swing.*;
+import javax.swing.table.TableCellRenderer;
+import java.awt.*;
+
+/**
+ *
+ * @author Jan Friderici, thuebner
+ *
+ */
+class MeasureTableCellRenderer extends JPanel implements TableCellRenderer {
+
+ /**
+ * serial version id
+ */
+ private static final long serialVersionUID = 2446093942494182395L;
+ private SeenAccessPoint ap;
+ private boolean avg;
+
+ public MeasureTableCellRenderer(boolean avg) {
+ setLayout(new BorderLayout());
+ this.avg = avg;
+ }
+
+ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
+ boolean hasFocus, int row, int column){
+
+ if (isSelected) {
+ super.setForeground(table.getSelectionForeground());
+ super.setBackground(table.getSelectionBackground());
+ } else {
+ super.setForeground(table.getForeground());
+ super.setBackground(table.getBackground());
+ }
+ this.ap = (SeenAccessPoint) value;
+
+ return this;
+ }
+
+ @Override
+ protected void paintComponent(Graphics g){
+
+ super.paintComponent(g);
+
+ Graphics2D g2 = (Graphics2D) g;
+ // Farbverlauf von rot nach gelb nach gr?n
+ GradientPaint p1 = new GradientPaint(0, 0, Color.RED, getWidth() / 2, getHeight(), Color.YELLOW);
+ GradientPaint p2 = new GradientPaint(getWidth() / 2, 0, Color.YELLOW, getWidth(), getHeight(), Color.GREEN);
+
+ //double d = 100.0 - Math.abs(avg ? ap.getAverageSignalLevel() : ap.getLastSignalLevel());
+ double d = MeasurementUtils.signalLevelToStrength(this.avg ? this.ap.getAverageSignalLevel() : this.ap
+ .getLastSignalLevel());
+
+ g2.setPaint(p1);
+ int w = (int) (getWidth() * d / Constants.MIN_SIGNALLEVEL);
+ g2.setClip(0, 2, w, getHeight() - 6);
+ g2.fillRect(0, 0, getWidth() / 2, getHeight());
+ g2.setPaint(p2);
+ g2.fillRect(getWidth() / 2, 0, getWidth() / 2, getHeight());
+ g2.setPaintMode();
+ g2.setClip(0, 0, getWidth(), getHeight());
+ g2.setBackground(UIManager.getColor("Button.darkShadow"));
+ g2.setColor(UIManager.getColor("Button.highlight"));
+ g2.draw3DRect(0, 2, w, getHeight() - 6, true);
+
+ }
+}
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MeasurementTable.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MeasurementTable.java 2007-01-14 20:56:16 UTC (rev 508)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MeasurementTable.java 2007-01-15 23:51:04 UTC (rev 509)
@@ -1,114 +1,46 @@
package net.sf.magicmap.client.gui.views;
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.GradientPaint;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
+import net.sf.magicmap.client.model.measurement.IMeasurementModel;
+import net.sf.magicmap.client.model.measurement.MeasurementTableModel;
-import javax.swing.JPanel;
-import javax.swing.JTable;
-import javax.swing.UIManager;
-import javax.swing.table.TableCellRenderer;
+import javax.swing.*;
+import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;
-import net.sf.magicmap.client.measurement.Constants;
-import net.sf.magicmap.client.measurement.MeasurementUtils;
-import net.sf.magicmap.client.model.measurement.MeasurementTableModel;
-import net.sf.magicmap.client.model.measurement.SeenAccessPoint;
-import net.sf.magicmap.client.model.measurement.IMeasurementModel;
-
public class MeasurementTable extends JTable {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
- /**
- *
- * @param model
- */
- public MeasurementTable(IMeasurementModel model) {
- this(new MeasurementTableModel(model));
- }
+ /**
+ *
+ * @param model
+ */
+ public MeasurementTable(IMeasurementModel model) {
+ this(new MeasurementTableModel(model));
+ }
- public MeasurementTable(MeasurementTableModel model) {
- super(model);
- //setDefaultRenderer(SeenAccessPoint.class, new MeasureTableCellRenderer(true));
- // getColumnModel().getColumn(3).setCellRenderer(new MeasureTableCellRenderer(false));
- // getColumnModel().getColumn(4).setCellRenderer(new MeasureTableCellRenderer(true));
- }
+ public MeasurementTable(MeasurementTableModel model) {
+ super(model);
+ //
+ }
- @Override
- public void setModel(TableModel model){
- super.setModel(model);
- getColumnModel().getColumn(3).setCellRenderer(new MeasureTableCellRenderer(false));
- getColumnModel().getColumn(4).setCellRenderer(new MeasureTableCellRenderer(true));
- }
+ @Override
+ public void setModel(TableModel model){
+ super.setModel(model);
- /**
- *
- * @author Jan Friderici, thuebner
- *
- */
- private class MeasureTableCellRenderer extends JPanel implements TableCellRenderer {
+ }
+ @Override
+ public void addColumn(TableColumn aColumn) {
+ super.addColumn(aColumn);
+ if (3 == aColumn.getModelIndex()){
+ aColumn.setCellRenderer(new MeasureTableCellRenderer(false));
+ }else if (4 == aColumn.getModelIndex()){
+ aColumn.setCellRenderer(new MeasureTableCellRenderer(true));
+ }
+ }
- /**
- * serial version id
- */
- private static final long serialVersionUID = 2446093942494182395L;
- private SeenAccessPoint ap;
- private boolean avg;
-
- public MeasureTableCellRenderer(boolean avg) {
- setLayout(new BorderLayout());
- this.avg = avg;
- }
-
- public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
- boolean hasFocus, int row, int column){
-
- if (isSelected) {
- super.setForeground(table.getSelectionForeground());
- super.setBackground(table.getSelectionBackground());
- } else {
- super.setForeground(table.getForeground());
- super.setBackground(table.getBackground());
- }
- this.ap = (SeenAccessPoint) value;
-
- return this;
- }
-
- @Override
- protected void paintComponent(Graphics g){
-
- super.paintComponent(g);
-
- Graphics2D g2 = (Graphics2D) g;
- // Farbverlauf von rot nach gelb nach gr�n
- GradientPaint p1 = new GradientPaint(0, 0, Color.RED, getWidth() / 2, getHeight(), Color.YELLOW);
- GradientPaint p2 = new GradientPaint(getWidth() / 2, 0, Color.YELLOW, getWidth(), getHeight(), Color.GREEN);
-
- //double d = 100.0 - Math.abs(avg ? ap.getAverageSignalLevel() : ap.getLastSignalLevel());
- double d = MeasurementUtils.signalLevelToStrength(this.avg ? this.ap.getAverageSignalLevel() : this.ap
- .getLastSignalLevel());
-
- g2.setPaint(p1);
- int w = (int) (getWidth() * d / Constants.MIN_SIGNALLEVEL);
- g2.setClip(0, 2, w, getHeight() - 6);
- g2.fillRect(0, 0, getWidth() / 2, getHeight());
- g2.setPaint(p2);
- g2.fillRect(getWidth() / 2, 0, getWidth() / 2, getHeight());
- g2.setPaintMode();
- g2.setClip(0, 0, getWidth(), getHeight());
- g2.setBackground(UIManager.getColor("Button.darkShadow"));
- g2.setColor(UIManager.getColor("Button.highlight"));
- g2.draw3DRect(0, 2, w, getHeight() - 6, true);
-
- }
- }
}
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MeasurementView.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MeasurementView.java 2007-01-14 20:56:16 UTC (rev 508)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MeasurementView.java 2007-01-15 23:51:04 UTC (rev 509)
@@ -4,81 +4,72 @@
package net.sf.magicmap.client.gui.views;
-import java.awt.Insets;
-
-import javax.swing.JComponent;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.magicmap.client.controller.Controller;
import net.sf.magicmap.client.gui.utils.GUIBuilder;
import net.sf.magicmap.client.gui.utils.GUIConstants;
import net.sf.magicmap.client.gui.utils.GUIUtils;
-import net.sf.magicmap.client.model.measurement.MeasurementTableModel;
import net.sf.magicmap.client.model.measurement.IMeasurementModel;
-import net.sf.magicmap.client.model.node.AccessPointSeerNode;
-import net.sf.magicmap.client.model.node.INodeModel;
-import net.sf.magicmap.client.model.node.Node;
-import net.sf.magicmap.client.model.node.NodeModelSelectionEvent;
-import net.sf.magicmap.client.model.node.NodeModelSelectionListener;
+import net.sf.magicmap.client.model.measurement.MeasurementTableModel;
+import net.sf.magicmap.client.model.measurement.SeenAccessPoint;
+import net.sf.magicmap.client.model.node.*;
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import java.awt.*;
+
/**
* @author thuebner
*/
public class MeasurementView extends View implements NodeModelSelectionListener {
- /**
- * serial version id
- */
- private static final long serialVersionUID = 7568742160250506631L;
+ /**
+ * serial version id
+ */
+ private static final long serialVersionUID = 7568742160250506631L;
- private JTable table;
- private MeasurementTableModel tableModel;
- private MeasurementTableModel tableModelOther;
+ private JTable table;
+ private MeasurementTableModel tableModel;
+ private MeasurementTableModel tableModelOther;
- public MeasurementView(IMeasurementModel model, INodeModel nodeModel) {
- super(GUIUtils.i18n("measurement"));
- this.setFrameIcon(GUIBuilder.getToolIcon(GUIConstants.ICON_MEASUREMENT));
+ public MeasurementView(IMeasurementModel model, INodeModel nodeModel) {
+ super(GUIUtils.i18n("measurement"));
+ this.setFrameIcon(GUIBuilder.getToolIcon(GUIConstants.ICON_MEASUREMENT));
- this.table = new MeasurementTable(new MeasurementTableModel(model));
- this.tableModel = (MeasurementTableModel) this.table.getModel();
+ this.table = new MeasurementTable(new MeasurementTableModel(model));
+ this.tableModel = (MeasurementTableModel) this.table.getModel();
+ this.table.setDefaultRenderer(SeenAccessPoint.class, new MeasureTableCellRenderer(true));
+ this.table.getColumnModel().getColumn(3).setCellRenderer(new MeasureTableCellRenderer(false));
+ this.table.getColumnModel().getColumn(4).setCellRenderer(new MeasureTableCellRenderer(true));
+
+ nodeModel.addNodeModelSelectionListener((MeasurementTableModel) this.table.getModel());
+ setContent(buildViewComponent());
+ nodeModel.addNodeModelSelectionListener(this);
+ }
- nodeModel.addNodeModelSelectionListener((MeasurementTableModel) this.table.getModel());
- setContent(buildViewComponent());
- nodeModel.addNodeModelSelectionListener(this);
- }
+ /* (non-Javadoc)
+ * @see java.awt.Component#getName()
+ */
+ @Override
+ public String getName(){
+ return GUIUtils.i18n("measurement", false);
+ }
- /* (non-Javadoc)
- * @see java.awt.Component#getName()
- */
- @Override
- public String getName(){
- return GUIUtils.i18n("measurement", false);
- }
+ /* (non-Javadoc)
+ * @see net.sf.magicmap.client.views.View#buildViewComponent()
+ */
+ @Override
+ protected JComponent buildViewComponent(){
+ this.table.setBorder(new EmptyBorder(new Insets(3, 3, 3, 3)));
+ this.table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
- /* (non-Javadoc)
- * @see net.sf.magicmap.client.views.View#buildViewComponent()
- */
- @Override
- protected JComponent buildViewComponent(){
- this.table.setBorder(new EmptyBorder(new Insets(3, 3, 3, 3)));
- this.table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
+ JScrollPane pane = new JScrollPane(this.table);
- JScrollPane pane = new JScrollPane(this.table);
+ return pane;
+ }
- return pane;
- }
-
- public void selectionChanged(NodeModelSelectionEvent selectEvent){
- Node selectedNode = selectEvent.getSelectedNode();
- if (selectedNode instanceof AccessPointSeerNode) {
- setTitle(selectedNode.getDisplayName());
- if (selectedNode == Controller.getInstance().getClient())
- this.table.setModel(this.tableModel);
- else
- this.table.setModel(this.tableModelOther);
- }
-
- }
+ public void selectionChanged(NodeModelSelectionEvent selectEvent){
+ Node selectedNode = selectEvent.getSelectedNode();
+ if (selectedNode instanceof AccessPointSeerNode) {
+ setTitle(selectedNode.getDisplayName());
+ }
+ }
}
\ No newline at end of file
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/model/measurement/IMeasurementModel.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/model/measurement/IMeasurementModel.java 2007-01-14 20:56:16 UTC (rev 508)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/model/measurement/IMeasurementModel.java 2007-01-15 23:51:04 UTC (rev 509)
@@ -1,17 +1,12 @@
package net.sf.magicmap.client.model.measurement;
-import net.sf.magicmap.client.model.node.ClientNode;
+import net.sf.magicmap.client.interfaces.MeasurementModelListener;
import net.sf.magicmap.client.model.node.AccessPointSeerNode;
-import net.sf.magicmap.client.interfaces.MeasurementModelListener;
import java.util.Collection;
/**
- * Created by IntelliJ IDEA.
- * User: jan
- * Date: 14.01.2007
- * Time: 18:49:41
- * To change this template use File | Settings | File Templates.
+ *
*/
public interface IMeasurementModel {
@@ -22,5 +17,19 @@
public void removeMeasurementModelListener(MeasurementModelListener l);
public Collection<SeenAccessPoint> get(AccessPointSeerNode forNode);
- SeenAccessPoint getAccessPoint(ClientNode client, String mac);
+ /**
+ * Add a scanresult.
+ * @param client the client seeing the access point
+ * @param apMac the accesspoints mac
+ * @param signalLevel the signal level.
+ */
+ void updateScanResult(AccessPointSeerNode client, String apMac, double signalLevel);
+
+ /**
+ * Gets the SeenAccessPoint for a given seer.
+ * @param client the seer of the ap.
+ * @param mac th aps mac
+ * @return the SeenAccessPoint
+ */
+ SeenAccessPoint getAccessPoint(AccessPointSeerNode client, String mac);
}
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/model/measurement/MeasurementModel.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/model/measurement/MeasurementModel.java 2007-01-14 20:56:16 UTC (rev 508)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/model/measurement/MeasurementModel.java 2007-01-15 23:51:04 UTC (rev 509)
@@ -1,13 +1,11 @@
package net.sf.magicmap.client.model.measurement;
-import net.sf.magicmap.client.model.node.ClientNode;
+import net.sf.magicmap.client.interfaces.MeasurementModelListener;
import net.sf.magicmap.client.model.node.AccessPointSeerNode;
-import net.sf.magicmap.client.interfaces.MeasurementModelListener;
import javax.swing.event.EventListenerList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.LinkedList;
import java.util.Map;
/**
@@ -18,6 +16,7 @@
private final EventListenerList listeners = new EventListenerList();
private final MeasurementMap apMap = new MeasurementMap();
+
public MeasurementModel(){
}
@@ -35,6 +34,17 @@
}
}
+ public void updateScanResult(AccessPointSeerNode client, String apMac, double signalLevel){
+ SeenAccessPoint accessPoint = getAccessPoint(client, apMac);
+ if (accessPoint == null) {
+ accessPoint = new SeenAccessPoint(apMac, signalLevel);
+ addAccessPoint(client, accessPoint);
+ }else{
+ accessPoint.addSignalLevel(signalLevel);
+ updateAccessPoint(client, accessPoint);
+ }
+
+ }
/**
* Returns a list of seen access points for a given client.
* @param forNode
@@ -80,7 +90,7 @@
}
}
- p...
[truncated message content] |