From: <fle...@us...> - 2007-02-17 00:06:57
|
Revision: 541 http://svn.sourceforge.net/magicmap/?rev=541&view=rev Author: flederohr Date: 2007-02-16 16:06:55 -0800 (Fri, 16 Feb 2007) Log Message: ----------- refractoring and cleaning the source lots of changes in model behavior fixed some bugs Modified Paths: -------------- trunk/magicmapclient/src/net/sf/magicmap/client/controller/Controller.java trunk/magicmapclient/src/net/sf/magicmap/client/controller/IController.java trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/AbstractMapView.java trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MapView.java trunk/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java trunk/magicmapclient/src/net/sf/magicmap/client/model/location/jung/handler/NotSeeAccessPointHandler.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/AccessPointNode.java trunk/magicmapclient/src/net/sf/magicmap/client/model/node/AccessPointSeerNode.java trunk/magicmapclient/src/net/sf/magicmap/client/model/node/NodeModel.java Modified: trunk/magicmapclient/src/net/sf/magicmap/client/controller/Controller.java =================================================================== --- trunk/magicmapclient/src/net/sf/magicmap/client/controller/Controller.java 2007-02-16 20:47:06 UTC (rev 540) +++ trunk/magicmapclient/src/net/sf/magicmap/client/controller/Controller.java 2007-02-17 00:06:55 UTC (rev 541) @@ -4,12 +4,24 @@ package net.sf.magicmap.client.controller; +import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.Collection; + import net.sf.magicmap.client.gui.utils.GUIUtils; import net.sf.magicmap.client.gui.views.ConsoleView; import net.sf.magicmap.client.gui.views.MapView; import net.sf.magicmap.client.gui.views.MeasurementView; import net.sf.magicmap.client.gui.views.OutlineView; -import net.sf.magicmap.client.interfaces.*; +import net.sf.magicmap.client.interfaces.CreateNewMapCallback; +import net.sf.magicmap.client.interfaces.CreatePositionCallback; +import net.sf.magicmap.client.interfaces.DeletePositionCallback; +import net.sf.magicmap.client.interfaces.MapCallback; +import net.sf.magicmap.client.interfaces.MapNamesCallback; +import net.sf.magicmap.client.interfaces.MovePositionCallback; +import net.sf.magicmap.client.interfaces.PositionCallback; +import net.sf.magicmap.client.interfaces.ServerConnectCallback; +import net.sf.magicmap.client.interfaces.ServerDisconnectCallback; import net.sf.magicmap.client.measurement.ScannerAllocator; import net.sf.magicmap.client.measurement.interfaces.AbstractScanResult; import net.sf.magicmap.client.measurement.interfaces.AbstractScanner; @@ -17,15 +29,17 @@ import net.sf.magicmap.client.meta.MapInfo; import net.sf.magicmap.client.model.measurement.IMeasurementModel; import net.sf.magicmap.client.model.measurement.MeasurementModel; -import net.sf.magicmap.client.model.node.*; +import net.sf.magicmap.client.model.node.ClientNode; +import net.sf.magicmap.client.model.node.GeoPos; +import net.sf.magicmap.client.model.node.INodeModel; +import net.sf.magicmap.client.model.node.InfoObject; +import net.sf.magicmap.client.model.node.Node; +import net.sf.magicmap.client.model.node.NodeModel; import net.sf.magicmap.client.plugin.PluginManager; import net.sf.magicmap.client.utils.Settings; + import org.apache.log4j.xml.DOMConfigurator; -import java.net.MalformedURLException; -import java.util.ArrayList; -import java.util.Collection; - /** * Kann \xC4nderungen an View und am Modell vornehmen und zieht alle F\xE4den * der Anwendung. @@ -34,47 +48,47 @@ */ public class Controller implements IController { - private static int numCalled = 0; + private static int numCalled = 0; /** * Die Instanz. */ - private static Controller controller = null; + private static Controller controller = null; /** * Das Knotenmodel. */ - private INodeModel nodeModel; // Model f\xFCr Graphen + private INodeModel nodeModel; // Model f\xFCr Graphen - private IMeasurementModel measurementModel; // Model f\xFCr Messungen + private IMeasurementModel measurementModel; // Model f\xFCr Messungen - private ClientNode client; // Ausgezeichneter Knoten + private ClientNode client; // Ausgezeichneter Knoten - private ServerPoller poller; // Server st\xE4ndig nach \xC4nderungen fragen + private ServerPoller poller; // Server st\xE4ndig nach \xC4nderungen fragen - private PollHandler pollhandler; // Klasse zur Verarbeitung der Pollergebnisse + private PollHandler pollhandler; // Klasse zur Verarbeitung der Pollergebnisse - private ServerManager serverManager; // Manager f\xFCr die Verbindung zum Server + private ServerManager serverManager; // Manager f\xFCr die Verbindung zum Server // private CallbackHandler callbackHandler; // S\xE4mtliche callbacks werden dort behandelt - private MapInfo currentMap; + private MapInfo currentMap; - private OutlineView outlineView; + private OutlineView outlineView; - private ConsoleView consoleView; + private ConsoleView consoleView; - private MapView mapView; + private MapView mapView; - private MeasurementView measurementView; + private MeasurementView measurementView; - private boolean invisble; // Invisible-Modus (keine Daten an Server) + private boolean invisble; // Invisible-Modus (keine Daten an Server) // pseudo server items - private Collection<InfoObject> infoObjects; + private Collection<InfoObject> infoObjects; - private ScannerAllocator scannerAllocator; - private final PluginManager pluginManager; + private ScannerAllocator scannerAllocator; + private final PluginManager pluginManager; /** * Private constructor for singleton instance @@ -129,7 +143,6 @@ this.measurementView = new MeasurementView(getMeasurementModel(), this.nodeModel); // registerMeasurementModelListener(measurementView); setMeasurementViewLocal(true); - this.nodeModel.addNodeModelListener(this.mapView); //registerNodeModelListener(outlineView); } @@ -192,23 +205,6 @@ } /** - * Baut das MeasurementModelOther neu auf. - * - * @param ap - - * the access point seer node - */ - public void buildOtherMeasurement(AccessPointSeerNode ap){ - // System.out.println("Building measurement model..."); - // this.measurementModelOther.clear(); - // ArrayList aes = ap.getApEdges(); - // for (int i = 0; i < aes.size(); i++) { - // AccessPointEdge ae = (AccessPointEdge) aes.get(i); - // SeenAccessPoint sp = new SeenAccessPoint(ae.getAccessPoint().getMacAddress(), ae.getSignalLevel()); - // this.measurementModelOther.addAccessPoint(sp); - // } - } - - /** * \xC4nndert die Anzeige des Measurement-Views * * @param local @@ -270,7 +266,6 @@ closeMap(); } if (isMapLoaded() && isConnected()) { - this.nodeModel.addNodeModelListener(this.mapView); this.serverManager.resetTimestamp(); setMeasurementViewLocal(true); this.poller.start(); @@ -322,7 +317,6 @@ this.poller.stop(); this.measurementModel.clear(); this.nodeModel.clear(); - this.nodeModel.removeNodeModelListener(this.mapView); this.client = null; } @@ -428,40 +422,40 @@ } } -// /** -// * Creates an InfoObject on the current map with the supplied parameters -// * @param x -// * @param y -// * @param z -// * @param infoObject -// * @param mapName -// * @param fixed -// * @param callback -// */ -// public void createInfoObject(int x, int y, int z, InfoObject infoObject, String mapName, boolean fixed, -// CreatePositionCallback callback){ -// if (!isConnected() || !isMapLoaded()) -// callback.positionCreationError(new Exception("Nicht verbunden oder keine Karte geladen.")); -// else { -// // serverManager.createInfoObject(x, y, z, fixed, infoObject, -// // mapName, callback); -// INodeModel model = Controller.getInstance().getNodeModel(); -// if (infoObject instanceof InfoObjectNode) { -// InfoObjectNode node = (InfoObjectNode) infoObject; -// model.addNode(node); -// node.setPosition(x, y, z); -// node.setFix(false); -// System.out.println("Added Info:\n -> " + node.toString()); -// } else { -// InfoObjectNode node = new InfoObjectNode(model, infoObject); -// model.addNode(node); -// node.setPosition(x, y, z); -// node.setFix(false); -// System.out.println("Added Info:\n -> " + node.toString()); -// } -// -// } -// } + // /** + // * Creates an InfoObject on the current map with the supplied parameters + // * @param x + // * @param y + // * @param z + // * @param infoObject + // * @param mapName + // * @param fixed + // * @param callback + // */ + // public void createInfoObject(int x, int y, int z, InfoObject infoObject, String mapName, boolean fixed, + // CreatePositionCallback callback){ + // if (!isConnected() || !isMapLoaded()) + // callback.positionCreationError(new Exception("Nicht verbunden oder keine Karte geladen.")); + // else { + // // serverManager.createInfoObject(x, y, z, fixed, infoObject, + // // mapName, callback); + // INodeModel model = Controller.getInstance().getNodeModel(); + // if (infoObject instanceof InfoObjectNode) { + // InfoObjectNode node = (InfoObjectNode) infoObject; + // model.addNode(node); + // node.setPosition(x, y, z); + // node.setFix(false); + // System.out.println("Added Info:\n -> " + node.toString()); + // } else { + // InfoObjectNode node = new InfoObjectNode(model, infoObject); + // model.addNode(node); + // node.setPosition(x, y, z); + // node.setFix(false); + // System.out.println("Added Info:\n -> " + node.toString()); + // } + // + // } + // } /** * Modified: trunk/magicmapclient/src/net/sf/magicmap/client/controller/IController.java =================================================================== --- trunk/magicmapclient/src/net/sf/magicmap/client/controller/IController.java 2007-02-16 20:47:06 UTC (rev 540) +++ trunk/magicmapclient/src/net/sf/magicmap/client/controller/IController.java 2007-02-17 00:06:55 UTC (rev 541) @@ -21,7 +21,6 @@ import net.sf.magicmap.client.measurement.interfaces.AbstractScannerHandler; import net.sf.magicmap.client.meta.MapInfo; import net.sf.magicmap.client.model.measurement.IMeasurementModel; -import net.sf.magicmap.client.model.node.AccessPointSeerNode; import net.sf.magicmap.client.model.node.ClientNode; import net.sf.magicmap.client.model.node.GeoPos; import net.sf.magicmap.client.model.node.INodeModel; @@ -74,13 +73,6 @@ */ INodeModel getNodeModel(); - /** - * Baut das MeasurementModelOther neu auf. - * - * @param ap - - * the access point seer node - */ - void buildOtherMeasurement(AccessPointSeerNode ap); /** * \xC4nndert die Anzeige des Measurement-Views Modified: trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java =================================================================== --- trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java 2007-02-16 20:47:06 UTC (rev 540) +++ trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java 2007-02-17 00:06:55 UTC (rev 541) @@ -4,15 +4,31 @@ package net.sf.magicmap.client.controller; +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.measurement.IMeasurementModel; -import net.sf.magicmap.client.model.node.*; -import net.sf.magicmap.server.dto.*; +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; -import javax.swing.*; -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; - /** * Wertet die Ergebnisse des Pollers aus und gibt sie in geeigneter Weise an den * Client weiter. @@ -21,425 +37,422 @@ */ 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 - */ - 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 = - 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(); - } - } + 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 + controller.getMeasurementModel().removeAccessPointSeerNode((LocationNode) node); + 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(); + } + } - /** - * - * @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); + /** + * + * @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()); - location.setName(position.getName()); - nodeModel.addNode(location); + location.setId(position.getId()); + location.setName(position.getName()); + nodeModel.addNode(location); - 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 (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); + } controller.getMeasurementModel().updateScanResult(location, mac, r.getSignalLevel()); - 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 + 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 (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()); - controller.getMeasurementModel().updateScanResult (location, mac, r.getSignalLevel()); - } - } + 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()); + controller.getMeasurementModel().updateScanResult(location, mac, r.getSignalLevel()); + } + } - // 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); - } - } - } + // 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); + } + } + } - /** - * 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."); - } - } + /** + * 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."); + } + } - /** - * Macht igrnedwass! - * @param nodeModel - * @param position - */ - private void handleClientXYZ(INodeModel nodeModel, PositionDTO position) { - ClientDTO clientdto = position.getClient(); - ClientNode client = (ClientNode) nodeModel.findNode(clientdto.getName()); + /** + * Macht igrnedwass! + * @param nodeModel + * @param position + */ + private void handleClientXYZ(INodeModel nodeModel, PositionDTO position){ + ClientDTO clientdto = position.getClient(); + ClientNode client = (ClientNode) nodeModel.findNode(clientdto.getName()); - // 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."); + // 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."); - // 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); - } + // 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); + } - System.out.println("Position f\xFCr Client " + client.getName() + " empfangen. fix = " - + position.isFixed()); - // client.setPosition(position.getPosX().intValue(), - // position.getPosY().intValue()); + System.out.println("Position f\xFCr Client " + client.getName() + " empfangen. fix = " + position.isFixed()); + // client.setPosition(position.getPosX().intValue(), + // position.getPosY().intValue()); - 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 (position.isFixed()) { + // Client wurde fixiert + client.setFix(true); + client.setPosition(position.getPosX(), position.getPosY(), position.getPosZ()); + } else + client.setFix(false); + client.setId(position.getId()); - // Signalst\xE4rken usw. verwaltet der scannende - // Client selbst - if (client == this.controller.getClient()) return; + // Signalst\xE4rken usw. verwaltet der scannende + // Client selbst + if (client == this.controller.getClient()) return; - // 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(); + // 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 (sr != null) { - IMeasurementModel measurementModel = Controller.getInstance().getMeasurementModel(); - double[] signalLevels = new double[sr.length]; - String[] macs = new String[sr.length]; - for (int i = 0; i < sr.length; ++i){ - signalLevels[i] = sr[i].getSignalLevel(); - macs[i] = sr[i].getMacAP(); - } - measurementModel.updateScanResult (client, macs, signalLevels); - } - } + if (sr != null) { + IMeasurementModel measurementModel = Controller.getInstance().getMeasurementModel(); + double[] signalLevels = new double[sr.length]; + String[] macs = new String[sr.length]; + for (int i = 0; i < sr.length; ++i) { + signalLevels[i] = sr[i].getSignalLevel(); + macs[i] = sr[i].getMacAP(); + } + measurementModel.updateScanResult(client, macs, signalLevels); + } + } - /* - * (non-Javadoc) - * - * @see net.sf.magicmap.client.interfaces.ServerPollerListener#mapCreatedOrUpdatedOrDeleted(net.sf.magicmap.server.dto.MapDTO) - */ - public void mapCreatedOrUpdatedOrDeleted(final MapDTO mapDTO){ + /* + * (non-Javadoc) + * + * @see net.sf.magicmap.client.interfaces.ServerPollerListener#mapCreatedOrUpdatedOrDeleted(net.sf.magicmap.server.dto.MapDTO) + */ + public void mapCreatedOrUpdatedOrDeleted(final MapDTO mapDTO){ - try { - SwingUtilities.invokeAndWait(new Runnable() { + try { + SwingUtilities.invokeAndWait(new Runnable() { - public void run(){ - try { - INodeModel nodeModel = PollHandler.this.controller.getNodeModel(); - Node node = nodeModel.findNode(mapDTO.getName()); + public void run(){ + try { + INodeModel nodeModel = PollHandler.this.controller.getNodeModel(); + Node node = nodeModel.findNode(mapDTO.getName()); - if (node == null) { - MapNode mapNode = new MapNode(nodeModel); - mapNode.setName(mapDTO.getName()); - mapNode.setMapInfo(mapDTO); - nodeModel.addNode(mapNode); - } + if (node == null) { + MapNode mapNode = new MapNode(nodeModel); + mapNode.setName(mapDTO.getName()); + mapNode.setMapInfo(mapDTO); + nodeModel.addNode(mapNode); + } - } 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(); - } - } + } 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#geoPosCreatedOrUpdatedOrDeleted(net.sf.magicmap.server.dto.GeoPointDTO) - */ - public void geoPosCreatedOrUpdatedOrDeleted(final GeoPointDTO pointDTO){ + /* + * (non-Javadoc) + * + * @see net.sf.magicmap.client.interfaces.ServerPollerListener#geoPosCreatedOrUpdatedOrDeleted(net.sf.magicmap.server.dto.GeoPointDTO) + */ + public void geoPosCreatedOrUpdatedOrDeleted(final GeoPointDTO pointDTO){ - try { - SwingUtilities.invokeAndWait(new Runnable() { + try { + SwingUtilities.invokeAndWait(new Runnable() { - public void run(){ - try { - INodeModel nodeModel = PollHandler.this.controller.getNodeModel(); - Node node = nodeModel.findNode(pointDTO.toString()); + public void run(){ + try { + INodeModel nodeModel = PollHandler.this.controller.getNodeModel(); + Node node = nodeModel.findNode(pointDTO.toString()); - 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); - } + 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); + } - } 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(); - } - } + } 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){ + /* + * (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() { + 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(); - } - } + 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(); + } + } } Modified: trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/AbstractMapView.java =================================================================== --- trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/AbstractMapView.java 2007-02-16 20:47:06 UTC (rev 540) +++ trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/AbstractMapView.java 2007-02-17 00:06:55 UTC (rev 541) @@ -5,7 +5,6 @@ import java.util.Collection; import net.sf.magicmap.client.interfaces.MapViewListener; -import net.sf.magicmap.client.interfaces.NodeModelListener; import net.sf.magicmap.client.model.node.INodeModel; import net.sf.magicmap.client.model.node.Node; import edu.uci.ics.jung.graph.event.VertexListener; @@ -16,7 +15,7 @@ * @author Jan Friderici * */ -public abstract class AbstractMapView extends View implements VertexListener, NodeModelListener { +public abstract class AbstractMapView extends View implements VertexListener { private final Collection<MapViewListener> listeners = new ArrayList<MapViewListener>(); private INodeModel model; Modified: trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MapView.java =================================================================== --- trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MapView.java 2007-02-16 20:47:06 UTC (rev 540) +++ trunk/magicmapclient/src/net/sf/magicmap/client/gui/views/MapView.java 2007-02-17 00:06:55 UTC (rev 541) @@ -4,43 +4,57 @@ package net.sf.magicmap.client.gui.views; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Image; +import java.awt.Insets; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Set; + +import javax.swing.Icon; +import javax.swing.ImageIcon; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.border.EmptyBorder; + +import net.sf.magicmap.client.gui.PACWGraphDraw; +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.gui.utils.NodeIcon; +import net.sf.magicmap.client.gui.utils.NodeIcons; +import net.sf.magicmap.client.meta.MapInfo; +import net.sf.magicmap.client.model.location.INodePlacer; +import net.sf.magicmap.client.model.location.jung.JungNodePlacer; +import net.sf.magicmap.client.model.location.jung.LayoutSettings; +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 org.apache.log4j.Logger; + import com.brunchboy.util.swing.relativelayout.AttributeConstraint; import com.brunchboy.util.swing.relativelayout.AttributeType; import com.brunchboy.util.swing.relativelayout.DependencyManager; import com.brunchboy.util.swing.relativelayout.RelativeLayout; + import edu.uci.ics.jung.graph.Edge; import edu.uci.ics.jung.graph.Vertex; import edu.uci.ics.jung.graph.decorators.EdgeColorFunction; import edu.uci.ics.jung.graph.decorators.StringLabeller; -import edu.uci.ics.jung.graph.decorators.StringLabeller.UniqueLabelException; import edu.uci.ics.jung.graph.decorators.VertexColorFunction; +import edu.uci.ics.jung.graph.decorators.StringLabeller.UniqueLabelException; import edu.uci.ics.jung.graph.event.GraphEvent; import edu.uci.ics.jung.graph.event.GraphEventListener; import edu.uci.ics.jung.graph.event.GraphEventType; import edu.uci.ics.jung.graph.impl.DirectedSparseGraph; import edu.uci.ics.jung.visualization.SpringLayout; -import net.sf.magicmap.client.gui.PACWGraphDraw; -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.gui.utils.NodeIcon; -import net.sf.magicmap.client.gui.utils.NodeIcons; -import net.sf.magicmap.client.meta.MapInfo; -import net.sf.magicmap.client.model.location.INodePlacer; -import net.sf.magicmap.client.model.location.jung.JungNodePlacer; -import net.sf.magicmap.client.model.location.jung.LayoutSettings; -import net.sf.magicmap.client.model.node.*; -import org.apache.log4j.Logger; -import javax.swing.*; -import javax.swing.border.EmptyBorder; -import java.awt.*; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.Set; - /** * Kapselt das JUNG-Framework sowie die Karte * @@ -105,7 +119,7 @@ ni = NodeIcons.getInstance(); initializeGraph(); -// model.addNodeModelListener(this.layoutModel); + // model.addNodeModelListener(this.layoutModel); this.getModel().addNodeModelSelectionListener(this); } @@ -141,25 +155,25 @@ return null; } //break; - // TODO: InfonodeIcon in NodeIcons behandeln -// case INodeModel.NODETYPE_INFO : -// if (((InfoObjectNode) node).getDepiction() != null) { -// ImageIcon icon; -// try { -// icon = new ImageIcon(new URL(((InfoObjectNode) node).getDepiction()), "<Depiction>"); -// if (icon != null && icon.getIconHeight() > 0) { -// return icon; -// } -// } catch (MalformedURLException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// } + // TODO: InfonodeIcon in NodeIcons behandeln + // case INodeModel.NODETYPE_INFO : + // if (((InfoObjectNode) node).getDepiction() != null) { + // ImageIcon icon; + // try { + // icon = new ImageIcon(new URL(((InfoObjectNode) node).getDepiction()), "<Depiction>"); + // if (icon != null && icon.getIconHeight() > 0) { + // return icon; + // } + // } catch (MalformedURLException e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // } + // } break; } log.debug("Nodename: " + node.getClass().getSimpleName()); final NodeIcon nodeIcon = NodeIcons.getInstance().getNodeIcon(node); - if (nodeIcon != null)return nodeIcon.getIcon(node); + if (nodeIcon != null) return nodeIcon.getIcon(node); return ni.getIconForNode(node); } @@ -233,7 +247,7 @@ */ public void initializeGraph(){ layoutModel = (JungNodePlacer) getModel().getNodePlacer(); - graph = layoutModel;// new DirectedSparseGraph(); + graph = layoutModel;// new DirectedSparseGraph(); graphdraw = new PACWGraphDraw(layoutModel); graphdraw.setVisible(false); labeller = StringLabeller.getLabeller(graph); @@ -354,7 +368,7 @@ } }); graphdraw.getVisualizationViewer().addVertexListener(this); - layoutModel.start(); + layoutModel.startNodePlacer(); // pane.add(graphdraw); RelativeLayout rl = new RelativeLayout(); @@ -426,14 +440,14 @@ fireRightClicked(x, y); } - /** - * remove an edge - * @param node1 node 1 - * @param node2 node 2 - */ - //@TODO PLEASE DONT PUT LOGIC IN THE VIEWS!!!!!!!!!!!!!!!! - @Deprecated - public void removeEdge(Node node1, Node node2){ + /** + * remove an edge + * @param node1 node 1 + * @param node2 node 2 + */ + //@TODO PLEASE DONT PUT LOGIC IN THE VIEWS!!!!!!!!!!!!!!!! + @Deprecated + public void removeEdge(Node node1, Node node2){ Vertex v = findVertex(node1); Vertex w = findVertex(node2); if (v != null && w != null) { @@ -478,25 +492,6 @@ } } - /** - * Entfernt Knoten aus dem Graph und eventuelle Kanten - * - * @param node - */ - public void removeVertex(Node node){ - // removeEdges(node); - // Vertex v = findVertex(node); - // if (v != null){ - // // Finde alle Kanten die beteiligt sind - // stopGraph(); - // labeller.removeLabel(node.getDisplayName()); - // graph.removeVertex(v); - // ((SpringLayout) graphdraw.getGraphLayout()).update(); - // resumeGraph(); - // - // } - } - public Vertex findVertex(Node node){ return (Vertex) layoutModel.findVertex(node); } @@ -506,35 +501,6 @@ return node; } - /** - * - * - */ - public void nodeAddedEvent(Node node){ - // TODO auch unn\xF6tig oder? - layoutModel.nodeAddedEvent(node); - } - - /* - * (non-Javadoc) - * - * @see net.sf.magicmap.client.interfaces.NodeModelListener#nodeRemovedEvent(net.sf.magicmap.client.model.Node) - */ - public void nodeRemovedEvent(Node node){ - removeVertex(node); - } - - /* - * (non-Javadoc) - * - * @see net.sf.magicmap.client.interfaces.NodeModelListener#nodeUpdatedEvent(net.sf.magicmap.client.model.Node, - * int, java.lang.Object) - */ - // TODO refactor me - das geh\xF6rt hier beim besten willen nicht hin! - public void nodeUpdatedEvent(Node node, int type, Object data){ - // System.out.println(getClass() + "::nodeUpdatedEvent"); - } - public int getMapOffsetX(){ int ox = (getWidth() - graphdraw.getWidth()) / 2; return (ox >= 0 ? ox : 0); Modified: trunk/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java =================================================================== --- trunk/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java 2007-02-16 20:47:06 UTC (rev 540) +++ trunk/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java 2007-02-17 00:06:55 UTC (rev 541) @@ -1,27 +1,41 @@ package net.sf.magicmap.client.model.location.jung; -import edu.uci.ics.jung.graph.Edge; -import edu.uci.ics.jung.graph.Vertex; -import edu.uci.ics.jung.graph.decorators.StringLabeller; -import edu.uci.ics.jung.graph.impl.DirectedSparseEdge; -import edu.uci.ics.jung.graph.impl.DirectedSparseGraph; -import edu.uci.ics.jung.graph.impl.DirectedSparseVertex; -import edu.uci.ics.jung.utils.UserData; -import edu.uci.ics.jung.visualization.SpringLayout; +import java.awt.Dimension; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + import net.sf.magicmap.client.algorithms.MagicMetric; import net.sf.magicmap.client.algorithms.NodeMetricManager; import net.sf.magicmap.client.algorithms.NodeModelMetric; -import net.sf.magicmap.client.interfaces.NodeModelListener; import net.sf.magicmap.client.model.location.INodePlacer; import net.sf.magicmap.client.model.location.NodeUpdateHandler; -import net.sf.magicmap.client.model.location.jung.handler.*; -import net.sf.magicmap.client.model.node.*; +import net.sf.magicmap.client.model.location.jung.handler.AccessPointHiddenStateHandler; +import net.sf.magicmap.client.model.location.jung.handler.FixStateHandler; +import net.sf.magicmap.client.model.location.jung.handler.LabelChangeHandler; +import net.sf.magicmap.client.model.location.jung.handler.NotSeeAccessPointHandler; +import net.sf.magicmap.client.model.location.jung.handler.PositionUpdateHandler; +import net.sf.magicmap.client.model.location.jung.handler.SeeAccessPointHandler; +import net.sf.magicmap.client.model.node.ClientNode; +import net.sf.magicmap.client.model.node.IMagicEdge; +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 org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.*; -import java.util.*; +import edu.uci.ics.jung.graph.Edge; +import edu.uci.ics.jung.graph.Vertex; +import edu.uci.ics.jung.graph.decorators.StringLabeller; +import edu.uci.ics.jung.graph.impl.DirectedSparseGraph; +import edu.uci.ics.jung.graph.impl.DirectedSparseVertex; +import edu.uci.ics.jung.utils.UserData; +import edu.uci.ics.jung.visualization.SpringLayout; /** * Dieses Model benutzt die Layoutfunktionen von Jung und einige Angepasste @@ -89,28 +103,28 @@ */ private final NodeHandlerFactory nodeHandler = new NodeHandlerFactory(); - private final NodeMetricManager metricManager; + private final NodeMetricManager metricManager; - public JungNodePlacer() { + public JungNodePlacer() { this(JungNodePlacer.DEFAULT_SETTINGS, new MagicMetric()); } - /** - * - * @return - */ - public NodeMetricManager getMetricManager() { - return metricManager; - } + /** + * + * @return + */ + public NodeMetricManager getMetricManager(){ + return metricManager; + } - /** + /** * * @param settings * @param metric */ public JungNodePlacer(LayoutSettings settings, NodeModelMetric metric) { super(); - this.metricManager = new NodeMetricManager(metric); + this.metricManager = new NodeMetricManager(metric); this.c... [truncated message content] |