You can subscribe to this list here.
| 2005 |
Jan
|
Feb
(14) |
Mar
|
Apr
(4) |
May
(57) |
Jun
(14) |
Jul
(15) |
Aug
(5) |
Sep
(29) |
Oct
(13) |
Nov
(44) |
Dec
(3) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 |
Jan
(14) |
Feb
(78) |
Mar
(55) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
(12) |
Dec
(9) |
| 2007 |
Jan
(21) |
Feb
(67) |
Mar
(39) |
Apr
(28) |
May
(7) |
Jun
|
Jul
(6) |
Aug
(2) |
Sep
(1) |
Oct
(18) |
Nov
(8) |
Dec
(11) |
| 2008 |
Jan
(16) |
Feb
(12) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <jan...@us...> - 2008-01-01 23:15:17
|
Revision: 708
http://magicmap.svn.sourceforge.net/magicmap/?rev=708&view=rev
Author: jan_fride
Date: 2008-01-01 15:14:33 -0800 (Tue, 01 Jan 2008)
Log Message:
-----------
Infoobject branch....
Modified Paths:
--------------
branches/info/magicmapclient/build.xml
branches/info/magicmapclient/magicmapclient.iml
branches/info/magicmapclient/src/com/jgoodies/uif_lite/panel/SimpleInternalFrame.java
branches/info/magicmapclient/src/edu/uci/ics/jung/visualization/VisualizationViewer.java
branches/info/magicmapclient/src/net/sf/magicmap/client/gui/utils/GUIUtils.java
branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/INode.java
branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/INodeModel.java
branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/Node.java
Added Paths:
-----------
branches/info/magicmapclient/
branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java
branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java
branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java
branches/info/magicmapclient/src/net/sf/magicmap/core/
branches/info/magicmapclient/src/net/sf/magicmap/core/model/
branches/info/magicmapclient/src/net/sf/magicmap/core/model/graph/
branches/info/magicmapclient/src/net/sf/magicmap/core/model/graph/IGraphEdge.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/graph/IGraphElement.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/graph/IGraphNode.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/graph/INodeGraph.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/graph/impl/
branches/info/magicmapclient/src/net/sf/magicmap/core/model/graph/impl/BaseGraphElement.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/graph/impl/BaseGraphNode.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/graph/impl/BaseNodeGraph.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/graph/jung/
branches/info/magicmapclient/src/net/sf/magicmap/core/model/location/
branches/info/magicmapclient/src/net/sf/magicmap/core/model/location/ForwardingNodePlacer.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/node/
branches/info/magicmapclient/src/net/sf/magicmap/core/model/node/InterceptableNodeModel.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/node/KeyGenerator.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/node/NodeFilter.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/node/NodeIndex.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/node/NodeModelInterceptor.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/node/SearchableNodeIndex.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/node/SearchableNodeModel.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/node/impl/
branches/info/magicmapclient/src/net/sf/magicmap/core/model/node/impl/BaseNodeIndex.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/node/impl/MacNodeKeyGenerator.java
branches/info/magicmapclient/src/net/sf/magicmap/core/model/node/impl/NodeIndexFactory.java
Removed Paths:
-------------
branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java
branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java
branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java
Copied: branches/info/magicmapclient (from rev 704, trunk/magicmapclient)
Modified: branches/info/magicmapclient/build.xml
===================================================================
--- trunk/magicmapclient/build.xml 2007-12-21 12:06:47 UTC (rev 704)
+++ branches/info/magicmapclient/build.xml 2008-01-01 23:14:33 UTC (rev 708)
@@ -8,7 +8,7 @@
<property name="main.class" value="net.sf.magicmap.client.core.MagicMapApplication" />
<!-- Setting for maven path-->
- <property name="maven.home" value="D:\_development\_Tools\maven-2.0.5"/>
+ <property name="maven.home" value="/usr/local/maven"/>
@@ -156,7 +156,7 @@
<!-- Setting for maven path must be checked.-->
<target name="maven-install">
- <exec executable="${maven.home}/bin/mvn.bat">
+ <exec executable="${maven.home}/bin/mvn">
<arg value="install:install-file"/>
<arg value="-Dfile=magicmap.jar"/>
<arg value="-DgroupId=net.sf.magicmap"/>
Modified: branches/info/magicmapclient/magicmapclient.iml
===================================================================
--- trunk/magicmapclient/magicmapclient.iml 2007-12-21 12:06:47 UTC (rev 704)
+++ branches/info/magicmapclient/magicmapclient.iml 2008-01-01 23:14:33 UTC (rev 708)
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<module version="4" relativePaths="false" type="JAVA_MODULE">
- <component name="ModuleRootManager" />
- <component name="NewModuleRootManager" inherit-compiler-output="false">
+<module relativePaths="true" type="JAVA_MODULE" version="4">
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
<output url="file://$MODULE_DIR$/build" />
<exclude-output />
<output-test url="file://$MODULE_DIR$/build-test" />
@@ -9,35 +8,34 @@
<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$/build" />
- <excludeFolder url="file://$MODULE_DIR$/build-test" />
- <excludeFolder url="file://$MODULE_DIR$/target" />
+ <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="false" />
</content>
- <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://X:/maven/junit/junit/3.8.1/junit-3.8.1.jar!/" />
+ <root url="jar://$MODULE_DIR$/../magicmapserver/dist/magicmap-server.jar!/" />
</CLASSES>
<JAVADOC />
- <SOURCES />
+ <SOURCES>
+ <root url="file://$MODULE_DIR$/../magicmapserver/src" />
+ </SOURCES>
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/dom4j-1.6.1.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/commons-httpclient-3.0-rc3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
+ <orderEntry type="inheritedJdk" />
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/forms-1.0.5.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/colt.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -55,7 +53,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/foxtrot.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/concurrent.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -64,7 +62,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/jaxrpc.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/xercesImpl.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -73,7 +71,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/ostermillerutils_1_05_00.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/xml-apis.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -82,7 +80,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/commons-codec-1.3.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/xmlParserAPIs.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -91,7 +89,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/concurrent.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/RelativeLayout.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -100,7 +98,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/colt.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/forms-1.0.5.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -109,7 +107,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/nekohtml.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/activation.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -118,7 +116,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/commons-logging.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/mail.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -127,7 +125,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/jung-1.5.2.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/commons-discovery.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -136,7 +134,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/saaj.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/commons-logging.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -145,7 +143,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/xmlParserAPIs.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/jaxrpc.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -154,7 +152,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/derby.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/saaj.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -163,7 +161,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/RelativeLayout.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/wsdl4j.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -172,7 +170,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/xercesImpl.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/axis.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -181,7 +179,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/xml-apis.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/jung-1.5.2.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -190,7 +188,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/mail.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/derby.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -199,7 +197,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/jaxen-1.1-beta-9.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/jpox-20041204.032009.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -208,7 +206,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/commons-httpclient-3.0-rc3.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/log4j-1.2.8.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -217,7 +215,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/jpox-20041204.032009.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/ostermillerutils_1_05_00.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -226,7 +224,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/looks-1.2.2.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/dom4j-1.6.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -235,7 +233,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/log4j-1.2.8.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/commons-codec-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -244,7 +242,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/axis.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/jaxen-1.1-beta-9.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -253,7 +251,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/activation.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/foxtrot.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -262,7 +260,7 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/wsdl4j.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/nekohtml.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -271,15 +269,6 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib/commons-discovery.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- <orderEntry type="module-library">
- <library>
- <CLASSES>
<root url="jar://$MODULE_DIR$/lib-dev/junit.jar!/" />
</CLASSES>
<JAVADOC />
@@ -289,13 +278,12 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/lib-dev/axis-ant.jar!/" />
+ <root url="jar://$MODULE_DIR$/lib/looks-2.1.4.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
- <orderEntry type="module" module-name="magicmapserver" />
<orderEntryProperties />
</component>
</module>
Modified: branches/info/magicmapclient/src/com/jgoodies/uif_lite/panel/SimpleInternalFrame.java
===================================================================
--- trunk/magicmapclient/src/com/jgoodies/uif_lite/panel/SimpleInternalFrame.java 2007-12-21 12:06:47 UTC (rev 704)
+++ branches/info/magicmapclient/src/com/jgoodies/uif_lite/panel/SimpleInternalFrame.java 2008-01-01 23:14:33 UTC (rev 708)
@@ -30,30 +30,13 @@
package com.jgoodies.uif_lite.panel;
-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 java.awt.Insets;
-import java.awt.LayoutManager;
-import java.awt.Paint;
+import com.jgoodies.looks.LookUtils;
+import net.sf.magicmap.client.gui.utils.ShadowBorder;
-import javax.swing.BorderFactory;
-import javax.swing.Icon;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JToolBar;
-import javax.swing.SwingConstants;
-import javax.swing.UIManager;
+import javax.swing.*;
import javax.swing.border.AbstractBorder;
+import java.awt.*;
-import net.sf.magicmap.client.gui.utils.ShadowBorder;
-
-import com.jgoodies.plaf.LookUtils;
-
/**
* A <code>JPanel</code> subclass that has a drop shadow border and
* that provides a header with icon, title and tool bar.<p>
Modified: branches/info/magicmapclient/src/edu/uci/ics/jung/visualization/VisualizationViewer.java
===================================================================
--- trunk/magicmapclient/src/edu/uci/ics/jung/visualization/VisualizationViewer.java 2007-12-21 12:06:47 UTC (rev 704)
+++ branches/info/magicmapclient/src/edu/uci/ics/jung/visualization/VisualizationViewer.java 2008-01-01 23:14:33 UTC (rev 708)
@@ -24,7 +24,6 @@
import java.awt.geom.AffineTransform;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Map;
import javax.swing.JPanel;
Modified: branches/info/magicmapclient/src/net/sf/magicmap/client/gui/utils/GUIUtils.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/gui/utils/GUIUtils.java 2007-12-21 12:06:47 UTC (rev 704)
+++ branches/info/magicmapclient/src/net/sf/magicmap/client/gui/utils/GUIUtils.java 2008-01-01 23:14:33 UTC (rev 708)
@@ -5,32 +5,23 @@
package net.sf.magicmap.client.gui.utils;
-import java.awt.Dimension;
-import java.awt.Window;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
+import com.jgoodies.looks.Options;
+import com.jgoodies.looks.plastic.Plastic3DLookAndFeel;
+import com.jgoodies.looks.plastic.PlasticLookAndFeel;
+import com.jgoodies.looks.plastic.theme.ExperienceBlue;
+import net.sf.magicmap.client.gui.MainGUI;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.SwingConstants;
-import javax.swing.UIManager;
-import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.plaf.metal.MetalLookAndFeel;
+import java.awt.*;
+import java.util.*;
-import net.sf.magicmap.client.gui.MainGUI;
+import apple.laf.AquaLookAndFeel;
-import com.jgoodies.plaf.FontSizeHints;
-import com.jgoodies.plaf.Options;
-import com.jgoodies.plaf.plastic.Plastic3DLookAndFeel;
-import com.jgoodies.plaf.plastic.theme.ExperienceBlue;
-
/**
* @author msc
- *
+ *
*/
public class GUIUtils {
@@ -39,22 +30,33 @@
private static Map<String, ResourceBundle> bundles = null;
public static void setPlasticLookAndFeel(){
+
try {
- UIManager.setLookAndFeel(new Plastic3DLookAndFeel());
+ if (!isOsX()) {
+ UIManager.setLookAndFeel(new Plastic3DLookAndFeel());
+
+ }
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
- UIManager.put("Application.useSystemFontSettings", Boolean.TRUE);
- UIManager.put(Options.USE_SYSTEM_FONTS_APP_KEY, Boolean.TRUE);
- UIManager.put(com.jgoodies.plaf.Options.DEFAULT_ICON_SIZE_KEY, new Dimension(18, 18));
- Options.setGlobalFontSizeHints(FontSizeHints.MIXED);
- // PlasticLookAndFeel.setFontSizeHints(FontSizeHints.SYSTEM);
- MetalLookAndFeel.setCurrentTheme(new ExperienceBlue());
- Options.setGlobalFontSizeHints(FontSizeHints.MIXED);
+ if (!isOsX()) {
+ UIManager.put("Application.useSystemFontSettings", Boolean.TRUE);
+ UIManager.put(Options.USE_SYSTEM_FONTS_APP_KEY, Boolean.TRUE);
+ //UIManager.put(com.jgoodies.plaf.Options.DEFAULT_ICON_SIZE_KEY, new Dimension(18, 18));
+ // Options.setGlobalFontSizeHints(FontSizeHints.MIXED);
+ // PlasticLookAndFeel.setFontSizeHints(FontSizeHints.SYSTEM);
+ MetalLookAndFeel.setCurrentTheme(new ExperienceBlue());
+ //Options.setGlobalFontSizeHints(FontSizeHints.MIXED);
+ }
}
+ private static boolean isOsX() {
+ String lcOSName = System.getProperty("os.name").toLowerCase();
+ return lcOSName.startsWith("mac os x");
+ }
+
public static void locateOnScreen(Window frame){
Dimension paneSize = frame.getSize();
Dimension screenSize = frame.getToolkit().getScreenSize();
@@ -155,14 +157,14 @@
return JOptionPane.showOptionDialog(MainGUI.getInstance().getMainFrame(), GUIUtils.i18n("serverresponse")
+ "\n" + message, GUIUtils.i18n("authentificationerror"), JOptionPane.OK_CANCEL_OPTION,
JOptionPane.ERROR_MESSAGE, null, new String[]{GUIUtils.i18n("retry"), GUIUtils.i18n("no")}, GUIUtils
- .i18n("retry")) == JOptionPane.YES_OPTION;
+ .i18n("retry")) == JOptionPane.YES_OPTION;
}
public static boolean showConnectionError(){
return JOptionPane.showOptionDialog(MainGUI.getInstance().getMainFrame(), GUIUtils
.i18n("connectionsproblemsreconnect"), GUIUtils.i18n("connectionproblems"),
JOptionPane.OK_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE, null, new String[]{GUIUtils.i18n("yes"),
- GUIUtils.i18n("no")}, GUIUtils.i18n("yes")) == JOptionPane.YES_OPTION;
+ GUIUtils.i18n("no")}, GUIUtils.i18n("yes")) == JOptionPane.YES_OPTION;
}
public static void showErrorDialog(String message){
Deleted: branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java 2007-12-21 12:06:47 UTC (rev 704)
+++ branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java 2008-01-01 23:14:33 UTC (rev 708)
@@ -1,128 +0,0 @@
-
-package net.sf.magicmap.client.model.location;
-
-import java.util.HashMap;
-
-import net.sf.magicmap.client.algorithms.NodeMetricManager;
-import net.sf.magicmap.client.model.node.IMagicEdge;
-import net.sf.magicmap.client.model.node.Node;
-
-/**
- * Berechnet die Orte von Knoten. Um einem Model ein INodePlacer hinzuzfügen
- * muss man nur
- * </ul>
- * <li>das Model dem Konstruktor übergeben (wenn der OPlacer dies unterstüzt) oder</li>
- * <li>Den Nodeplacer zusätzlich das ModelListener Interface implementieren lassen und
- * sich beim Model registrieren.</li>
- * </ul>
- * @author Jan Friderici
- *
- */
-public interface INodePlacer {
-
- /**
- * Fügt einen neuen Knoten ein.
- *
- * @param node der neue Knoten.
- */
- public void insertNode(Node node);
-
- /**
- * Löscht einen Knoten.
- * @param node
- */
- public void deleteNode(Node node);
-
- /**
- * Legt eine gerichtete Kante zwischen den beiden Knoten an.
- *
- * @param n1 die Quelle der Kante
- * @param n2 das Ziel der Kante
- * @return
- */
- public IMagicEdge addEdge(Node n1, Node n2);
-
- /**
- * Löscht eine gerichtete Kante. (also nur eine Richtung).
- * @param n1
- * @param n2
- */
- public void removeEdge(Node n1, Node n2);
-
- /**
- * Die Größe des Layoutalgorithmus sollte der der Karte
- * entsprechen.
- *
- * @param width die Breite (der Karte).
- * @param height die Höhe (der Karte).
- */
- public void setSize(int width, int height);
-
- /**
- * Starts the algorithm.
- *
- */
- public abstract void startNodePlacer();
-
- /**
- * Stops the algorithm
- *
- */
- public abstract void stopNodePlacer();
-
- /**
- *
- * @param pause
- */
- public abstract void pauseNodePlacer(boolean pause);
-
- /**
- *
- * @return
- */
- public boolean isPaused();
-
- /**
- * Adds a handler for node updates.
- * @param handler
- */
- public void addNodeUpdateHandler(NodeUpdateHandler handler);
-
- public NodeMetricManager getMetricManager();
-
- public void updateNode(Node node, int type, Object data);
- static final class NodeHandlerFactory {
-
- public final HashMap<Integer, NodeUpdateHandler> handlerMap;
-
- public NodeHandlerFactory() {
- this.handlerMap = new HashMap<Integer, NodeUpdateHandler>();
- }
-
- public void addNodeUpdateHandler(NodeUpdateHandler handler){
- this.handlerMap.put(handler.getType(), handler);
- }
-
- /**
- *
- * @param node
- * @param type
- * @param data
- * @param placer
- * @return
- */
- public boolean handleNodeUpdated(Node node, int type, Object data, INodePlacer placer){
- NodeUpdateHandler handler = getHandler(type);
- if (handler != null) {
- handler.handleNodeUpdated(node, type, data, placer);
- return true;
- }
- return false;
- }
-
- public NodeUpdateHandler getHandler(int type){
- return this.handlerMap.get(type);
- }
- }
- public void clear();;
-}
Copied: branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java (from rev 706, trunk/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java)
===================================================================
--- branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java (rev 0)
+++ branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java 2008-01-01 23:14:33 UTC (rev 708)
@@ -0,0 +1,155 @@
+
+package net.sf.magicmap.client.model.location;
+
+import java.util.HashMap;
+
+import net.sf.magicmap.client.algorithms.NodeMetricManager;
+import net.sf.magicmap.client.model.node.IMagicEdge;
+import net.sf.magicmap.client.model.node.Node;
+
+/**
+ * Berechnet die Orte von Knoten. Um einem Model ein INodePlacer hinzuzfügen
+ * muss man nur
+ * </ul>
+ * <li>das Model dem Konstruktor übergeben (wenn der OPlacer dies unterstüzt) oder</li>
+ * <li>Den Nodeplacer zusätzlich das ModelListener Interface implementieren lassen und
+ * sich beim Model registrieren.</li>
+ * </ul>
+ * @author Jan Friderici
+ *
+ */
+public interface INodePlacer extends Iterable<IMagicEdge>{
+
+ /**
+ * Fügt einen neuen Knoten ein.
+ *
+ * @param node der neue Knoten.
+ */
+ void insertNode(Node node);
+
+ /**
+ * Löscht einen Knoten.
+ * @param node
+ */
+ void deleteNode(Node node);
+
+ /**
+ * Legt eine gerichtete Kante zwischen den beiden Knoten an.
+ *
+ * @param n1 die Quelle der Kante
+ * @param n2 das Ziel der Kante
+ * @return
+ */
+ IMagicEdge addEdge(Node n1, Node n2);
+
+ /**
+ * <p>Find the ege connecting the two given nodes.</p>
+ * @param n1 first node
+ * @param n2 secnd node
+ * @return the connecting edge or null.
+ */
+ IMagicEdge getEdge(Node n1, Node n2);
+
+ /**
+ * Löscht eine gerichtete Kante. (also nur eine Richtung).
+ * @param n1 first node
+ * @param n2 second node
+ */
+ void removeEdge(Node n1, Node n2);
+
+ /**
+ * Die Größe des Layoutalgorithmus sollte der der Karte
+ * entsprechen.
+ *
+ * @param width die Breite (der Karte).
+ * @param height die Höhe (der Karte).
+ */
+ void setSize(int width, int height);
+
+ /**
+ * Starts the algorithm.
+ *
+ */
+ void startNodePlacer();
+
+ /**
+ * Stops the algorithm
+ *
+ */
+ void stopNodePlacer();
+
+ /**
+ *
+ * @param pause
+ */
+ void pauseNodePlacer(boolean pause);
+
+ /**
+ *
+ * @return
+ */
+ boolean isPaused();
+
+ /**
+ * Adds a handler for node updates.
+ * @param handler
+ */
+ void addNodeUpdateHandler(NodeUpdateHandler handler);
+
+ /**
+ *
+ * @return the metric manager for this layout.
+ */
+ NodeMetricManager getMetricManager();
+
+ /**
+ *
+ * @param node
+ * @param type
+ * @param data
+ */
+ void updateNode(Node node, int type, Object data);
+
+
+ /**
+ *
+ */
+ static final class NodeHandlerFactory {
+
+ public final HashMap<Integer, NodeUpdateHandler> handlerMap;
+
+ public NodeHandlerFactory() {
+ this.handlerMap = new HashMap<Integer, NodeUpdateHandler>();
+ }
+
+ public void addNodeUpdateHandler(NodeUpdateHandler handler){
+ this.handlerMap.put(handler.getType(), handler);
+ }
+
+ /**
+ *
+ * @param node
+ * @param type
+ * @param data
+ * @param placer
+ * @return
+ */
+ public boolean handleNodeUpdated(Node node, int type, Object data, INodePlacer placer){
+ NodeUpdateHandler handler = getHandler(type);
+ if (handler != null) {
+ handler.handleNodeUpdated(node, type, data, placer);
+ return true;
+ }
+ return false;
+ }
+
+ public NodeUpdateHandler getHandler(int type){
+ return this.handlerMap.get(type);
+ }
+ }
+
+ /**
+ * <p>Remove all nodes and edges...</p>
+ */
+ void clear();
+}
Deleted: branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java 2007-12-21 12:06:47 UTC (rev 704)
+++ branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java 2008-01-01 23:14:33 UTC (rev 708)
@@ -1,402 +0,0 @@
-
-package net.sf.magicmap.client.model.location.jung;
-
-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.controller.Controller;
-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.AccessPointHiddenStateHandler;
-import net.sf.magicmap.client.model.location.jung.handler.CalculationStateHandler;
-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 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
- * Layoutalgorithmen um die Knotenposition zu berechnen.
- *
- * @author Jan
- *
- */
-public class JungNodePlacer extends DirectedSparseGraph implements INodePlacer, NodeModelConstants {
-
- /**
- * Logger
- */
- private static final Log log = LogFactory.getLog(JungNodePlacer.class);
-
- /**
- * Used to find the Vertex representing a node.
- */
- private final Map<Node, Vertex> nodeVertexMapping = new HashMap<Node, Vertex>();
-
- /**
- *
- */
- private final SpringLayout layout;
-
- /**
- * Calculates the layout in a background thread.
- */
- private final LayoutWorker worker;
-
- private boolean workerPaused;
-
- private boolean workerRunning;
-
- /**
- * Werden f\xFCr die Handler ben\xF6tigt
- */
- private HashMap<ClientNode, HashSet<LocationNode>> clientLocationMap;
-
- /**
- * Werden f\xFCr die Handler ben\xF6tigt
- */
- private HashMap<LocationNode, HashSet<LocationNode>> locationLocationMap;
-
- /**
- * Werden f\xFCr die Handler ben\xF6tigt
- */
- private StringLabeller labeller;
-
- /**
- * A Factory for the NodeUpdateHandler.
- * @see NodeUpdateHandler
- */
- private final NodeHandlerFactory nodeHandler = new NodeHandlerFactory();
-
- private final NodeMetricManager metricManager;
-
- private final Object edgeLock = new Object();
- private final Object vertexLock = new Object();
-
- public JungNodePlacer() {
- this(new MagicMetric());
- }
-
- /**
- *
- * @return
- */
- public NodeMetricManager getMetricManager(){
- return metricManager;
- }
-
- /**
- *
- * @param settings
- * @param metric
- */
- public JungNodePlacer(NodeModelMetric metric) {
- super();
- this.metricManager = new NodeMetricManager(metric);
- this.clientLocationMap = new HashMap<ClientNode, HashSet<LocationNode>>();
- this.locationLocationMap = new HashMap<LocationNode, HashSet<LocationNode>>();
- this.layout = new MagicLayout(this, metricManager);
- this.worker = new LayoutWorker(this.layout, new Dimension(800, 600));
- this.workerRunning = false;
- this.workerPaused = false;
-
- this.labeller = StringLabeller.getLabeller(this);
-
- initNodeHandler();
- }
-
- /**
- * Initilisiert die Handler
- *
- */
- private void initNodeHandler(){
- addNodeUpdateHandler(new FixStateHandler(this.nodeVertexMapping, this.layout));
- addNodeUpdateHandler(new LabelChangeHandler(this.labeller, this.nodeVertexMapping));
- addNodeUpdateHandler(new PositionUpdateHandler(this.nodeVertexMapping, this.layout));
- addNodeUpdateHandler(new SeeAccessPointHandler(this.clientLocationMap, this.locationLocationMap));
- addNodeUpdateHandler(new NotSeeAccessPointHandler(this.clientLocationMap, this.locationLocationMap));
- addNodeUpdateHandler(new CalculationStateHandler(this.nodeVertexMapping, this.layout));
- addNodeUpdateHandler(new AccessPointHiddenStateHandler());
- }
-
- /**
- * Den Hintergrundthread zum Berechnen der Positionen starten! ;-)
- *
- */
- private void start(){
- this.worker.init();
- this.workerRunning = true;
- this.workerPaused = false;
- }
-
- /**
- * Sets the size of our layout. should be the same as the current map.
- * @param width shoulde be the maps width.
- * @param height
- */
- public void setSize(int width, int height){
- this.layout.resize(new Dimension(width, height));
- }
-
- /**
- * F\xFCgt einen neuen Knoten ein.
- */
- public void insertNode(Node node){
- if (node.getClass().equals(MapNode.class)) return;
-
- Vertex v = addVertex(node);
- if (v != null) {
- if (node.isFix())
- this.layout.setFix(v);
- else
- this.layout.unsetFix(v);
- }
-
- }
-
- public void deleteNode(Node node){
- removeVertex(node);
- }
-
- public SpringLayout getLayout(){
- return this.layout;
- }
-
- /**
- * Reagiert auf ver\xE4nderungen in den Knoten oder im Model.
- * Leitet die Anfragen an einen nodeHandler weiter. Wird vom NodeModel aufgerufen.
- *
- * @param node der neue oder ge\xE4nderte Knoten
- * @param type der Typ des Events. (Enum nutzen)?
- * @param data ---?
- * @see NodeModelListener, INodeModel, NodeModel
- */
- public void updateNode(Node node, int type, Object data){
- // first try if we have a handler for this event.
- if (!this.nodeHandler.handleNodeUpdated(node, type, data, this)) {
- if (type == NodeModelConstants.UPDATE_CLEAR) {
- this.worker.suspend(); // stopGraph();
- // this.CALIBRATION_FACTOR_AP = 1.0;
- // this.CALIBRATION_FACTOR_LC = 1.0;
- this.clientLocationMap.clear();
- this.removeAllEdges();
- this.removeAllVertices();
- this.layout.update();
- this.nodeVertexMapping.clear();
- this.worker.unsuspend();
- } else if (type == NodeModelConstants.UPDATE_RESCAN)
- this.layout.update();
- else
- JungNodePlacer.log.debug("Event von typ: " + type + " ist unbekannt");
- }
- }
-
- public Vertex findVertex(Node node){
- return this.nodeVertexMapping.get(node);
- }
-
- /**
- * Verwandelt Node in Vertex und fuegt diesen in den Graphen ein. Es wird
- * keine Ruecksicht auf den Typ des Knotens genommen. Eventuelle implizite
- * Kanten muss der Aufrufer erstellen.
- *
- * @param node
- * @return
- */
- private Vertex addVertex(Node node){
- if (findVertex(node) == null) {
-
- log.debug("Adding " + node.getDisplayName());
-
- Vertex v = new DirectedSparseVertex();
- synchronized (vertexLock) {
- this.worker.suspend();
- this.nodeVertexMapping.put(node, v);
- v.addUserDatum(LayoutSettings.NODE_KEY, node, UserData.SHARED);
-
- addVertex(v);
-
- ((SpringLayout) this.worker.getGraphLayout()).update();
- if (node.getX() >= 0 && node.getY() >= 0) this.layout.forceMove(v, node.getX(), node.getY());
- this.worker.unsuspend();
-
- }
- log.debug("Added " + node.getDisplayName());
- return v;
- } else {
- System.err.print("Vertex exists:");
- return null;
- }
-
- }
-
- /**
- *
- */
- public void startNodePlacer(){
- start();
- }
-
- /**
- *
- */
- public void stopNodePlacer(){
- this.worker.stop();
-
- }
-
- /**
- *
- */
- public void pauseNodePlacer(boolean pause){
- if (pause && !isPaused()) {
- this.worker.suspend();
- this.workerPaused = true;
- } else if (!pause && isPaused()) {
- this.worker.unsuspend();
- this.workerPaused = false;
-
- }
- }
-
- public boolean isPaused(){
- return this.workerRunning && this.workerPaused;
- }
-
- /**
- * F\xFCgt eine gerichtete Kante von Knoten node1 zu node2 hinzu.
- *
- * Das Gewicht der Kante
- * @param node1
- * @param node2
- * @return
- */
- public IMagicEdge addEdge(Node node1, Node node2){
- if (node1 == node2) return null;
- Vertex v = findVertex(node1);
- Vertex w = findVertex(node2);
-
- return addEdge(v, w);
- }
-
- /**
- * F\xFCgt eine Jungkante hinzu. wird intern verwendet.
- *
- * @param v1
- * @param v2
- * @return
- */
- private IMagicEdge addEdge(Vertex v1, Vertex v2){
- log.debug("Adding Edge : " + v1 + " -> " + v2);
- if (v1 == v2) return null;
- synchronized (edgeLock) {
- Edge e = v1.findEdge(v2);
- if (e != null)
- return (IMagicEdge) e;
- else {
- JungEdge edge = new JungEdge(v1, v2);
- this.worker.suspend(); // stopGraph();
- addEdge(edge);
- this.layout.update();
- ((SpringLayout) this.worker.getGraphLayout()).update();
- this.worker.unsuspend(); // resumeGraph();
-
- return edge;
- }
-
- }
- }
-
- /**
- * L\xF6scht eine Kantew zwischen den beiden Knoten.
- * @param node1 Quelle der Kante.
- * @param node2 Ziel der Kante.
- */
- public void removeEdge(Node node1, Node node2){
- Vertex v = findVertex(node1);
- Vertex w = findVertex(node2);
- if (v != null && w != null) {
- this.worker.suspend();
- Set edges = getEdges();
- for (Object edge : edges) {
- Edge e = (Edge) edge;
- if (e.getIncidentVertices().contains(v) && e.getIncidentVertices().contains(w)) {
- removeEdge(e);
- break;
- }
- }
- this.layout.update();
- this.worker.unsuspend(); // resumeGraph();
- }
- }
-
- /**
- * Entfernt Knoten aus dem Graph und eventuelle Kanten
- *
- * @param node
- */
- private void removeVertex(Node node){
- Vertex v = findVertex(node);
- if (v != null) {
- this.worker.suspend();
- Set edges = getEdges();
- // Kein Iterator direkt auf die Sets des
- // Graphen => Concurrent modification!
- ArrayList list = new ArrayList(edges);
- for (Object aList : list) {
- Edge e = (Edge) aList;
- if (e.getIncidentVertices().contains(v)) {
- super.removeEdge(e);
- }
- }
- nodeVertexMapping.remove(node);
- this.labeller.removeLabel(node.getDisplayName());
- super.removeVertex(v);
- this.layout.update();
- this.worker.unsuspend();
- }
- }
-
- /**
- *
- * @param handler
- */
-
- public void addNodeUpdateHandler(NodeUpdateHandler handler){
- this.nodeHandler.addNodeUpdateHandler(handler);
-
- }
-
- public void clear(){
- stopNodePlacer();
- this.removeAllEdges();
- this.removeAllVertices();
- nodeVertexMapping.clear();
- }
-
-}
Copied: branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java (from rev 706, trunk/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java)
===================================================================
--- branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java (rev 0)
+++ branches/info/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java 2008-01-01 23:14:33 UTC (rev 708)
@@ -0,0 +1,424 @@
+
+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.DirectedSparseGraph;
+import edu.uci.ics.jung.graph.impl.DirectedSparseVertex;
+import edu.uci.ics.jung.utils.UserData;
+import edu.uci.ics.jung.visualization.SpringLayout;
+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.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 org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.*;
+import java.util.*;
+
+/**
+ * Dieses Model benutzt die Layoutfunktionen von Jung und einige Angepasste
+ * Layoutalgorithmen um die Knotenposition zu berechnen.
+ *
+ * @author Jan Friderici
+ *
+ */
+public class JungNodePlacer extends DirectedSparseGraph implements INodePlacer, NodeModelConstants {
+
+ /**
+ * Logger
+ */
+ private static final Log log = LogFactory.getLog(JungNodePlacer.class);
+
+ /**
+ * Used to find the Vertex representing a node.
+ */
+ private final Map<Node, Vertex> nodeVertexMapping = new HashMap<Node, Vertex>();
+
+ /**
+ *
+ */
+ private final SpringLayout layout;
+
+ /**
+ * Calculates the layout in a background thread.
+ */
+ private final LayoutWorker worker;
+
+ private boolean workerPaused;
+
+ private boolean workerRunning;
+
+ /**
+ * Werden f\xFCr die Handler ben\xF6tigt
+ */
+ private HashMap<ClientNode, HashSet<LocationNode>> clientLocationMap;
+
+ /**
+ * Werden f\xFCr die Handler ben\xF6tigt
+ */
+ private HashMap<LocationNode, HashSet<LocationNode>> locationLocationMap;
+
+ /**
+ * Werden f\xFCr die Handler ben\xF6tigt
+ */
+ private StringLabeller labeller;
+
+ /**
+ * A Factory for the NodeUpdateHandler.
+ * @see NodeUpdateHandler
+ */
+ private final NodeHandlerFactory nodeHandler = new NodeHandlerFactory();
+
+ private final NodeMetricManager metricManager;
+
+ private final Object edgeLock = new Object();
+ private final Object vertexLock = new Object();
+
+ private final Map<Edge, IMagicEdge> magicEdges = new HashMap<Edge, IMagicEdge>();
+
+ public JungNodePlacer() {
+ this(new MagicMetric());
+ }
+
+ /**
+ *
+ * @return
+ */
+ public NodeMetricManager getMetricManager(){
+ return metricManager;
+ }
+
+ /**
+ *
+ * @param metric the metrics to use.
+ */
+ public JungNodePlacer(NodeModelMetric metric) {
+ super();
+ this.metricManager = new NodeMetricManager(metric);
+ this.clientLocationMap = new HashMap<ClientNode, HashSet<LocationNode>>();
+ this.locationLocationMap = new HashMap<LocationNode, HashSet<LocationNode>>();
+ this.layout = new MagicLayout(this, metricManager);
+ this.worker = new LayoutWorker(this.layout, new Dimension(800, 600));
+ this.workerRunning = false;
+ this.workerPaused = false;
+
+ this.labeller = StringLabeller.getLabeller(this);
+
+ initNodeHandler();
+ }
+
+ /**
+ * Initilisiert die Handler
+ *
+ */
+ private void initNodeHandler(){
+ addNodeUpdateHandler(new FixStateHandler(this.nodeVertexMapping, this.layout));
+ addNodeUpdateHandler(new LabelChangeHandler(this.labeller, this.nodeVertexMapping));
+ addNodeUpdateHandler(new PositionUpdateHandler(this.nodeVertexMapping, this.layout));
+ addNodeUpdateHandler(new SeeAccessPointHandler(this.clientLocationMap, this.locationLocationMap));
+ addNodeUpdateHandler(new NotSeeAccessPointHandler(this.clientLocationMap, this.locationLocationMap));
+ addNodeUpdateHandler(new CalculationStateHandler(this.nodeVertexMapping, this.layout));
+ addNodeUpdateHandler(new AccessPointHiddenStateHandler());
+ }
+
+ /**
+ * Den Hintergrundthread zum Berechnen der Positionen starten! ;-)
+ *
+ */
+ private void start(){
+ this.worker.init();
+ this.workerRunning = true;
+ this.workerPaused = false;
+ }
+
+ /**
+ * Sets the size of our layout. should be the same as the current map.
+ * @param width shoulde be the maps width.
+ * @param height
+ */
+ public void setSize(int width, int height){
+ this.layout.resize(new Dimension(width, height));
+ }
+
+ /**
+ * F\xFCgt einen neuen Knoten ein.
+ */
+ public void insertNode(Node node){
+ if (node.getClass().equals(MapNode.class)) return;
+
+ Vertex v = addVertex(node);
+ if (v != null) {
+ if (node.isFix())
+ this.layout.setFix(v);
+ else
+ this.layout.unsetFix(v);
+ }
+
+ }
+
+ /**
+ *
+ * @param node
+ */
+ public void deleteNode(Node node){
+ removeVertex(node);
+ }
+
+ /**
+ *
+ * @return
+ */
+ public SpringLayout getLayout(){
+ return this.layout;
+ }
+
+ /**
+ * Reagiert auf ver\xE4nderungen in den Knoten oder im Model.
+ * Leitet die Anfragen an einen nodeHandler weiter. Wird vom NodeModel aufgerufen.
+ *
+ * @param node der neue oder ge\xE4nderte Knoten
+ * @param type der Typ des Events. (Enum nutzen)?
+ * @param data ---?
+ * @see net.sf.magicmap.client.interfaces.NodeModelListener , INodeModel, NodeModel
+ */
+ public void updateNode(Node node, int type, Object data){
+ // first try if we have a handler for this event.
+ if (!this.nodeHandler.handleNodeUpdated(node, type, data, this)) {
+ if (type == NodeModelConstants.UPDATE_CLEAR) {
+ this.worker.suspend(); // stopGraph();
+ // this.CALIBRATION_FACTOR_AP = 1.0;
+ // this.CALIBRATION_FACTOR_LC = 1.0;
+ this.clientLocationMap.clear();
+ this.removeAllEdges();
+ this.removeAllVertices();
+ this.layout.update();
+ this.nodeVertexMapping.clear();
+ this.worker.unsuspend();
+ } else if (type == NodeModelConstants.UPDATE_RESCAN)
+ this.layout.update();
+ else
+ JungNodePlacer.log.debug("Event von typ: " + type + " ist unbekannt");
+ }
+ }
+
+ /**
+ *
+ * @param node
+ * @return
+ */
+ public Vertex findVertex(Node node){
+ return this.nodeVertexMapping.get(node);
+ }
+
+ /**
+ * Verwandelt Node in Vertex und fuegt diesen in den Graphen ein. Es wird
+ * keine Ruecksicht auf den Typ des Knotens genommen. Eventuelle implizite
+ * Kanten muss der Aufrufer erstellen.
+ *
+ * @param node
+ * @return
+ */
+ private Vertex addVertex(Node node){
+ if (findVertex(node) == null) {
+
+ log.debug("Adding " + node.getDisplayName());
+
+ Vertex v = new DirectedSparseVertex();
+ synchronized (vertexLock) {
+ this.worker.suspend();
+ this.nodeVertexMapping.put(node, v);
+ v.addUserDatum(LayoutSettings.NODE_KEY, node, UserData.SHARED);
+
+ addVertex(v);
+
+ ((SpringLayout) this.worker.getGraphLayout()).update();
+ if (node.getX() >= 0 && node.getY() >= 0) this.layout.forceMove(v, node.getX(), node.getY());
+ this.worker.unsuspend();
+
+ }
+ log.debug("Added " + node.getDisplayName());
+ return v;
+ } else {
+ System.err.print("Vertex exists:");
+ return null;
+ }
+
+ }
+
+ /**
+ *
+ */
+ public void startNodePlacer(){
+ start();
+ }
+
+ /**
+ *
+ */
+ public void stopNodePlacer(){
+ this.worker.stop();
+
+ }
+
+ /**
+ *
+ */
+ public void pauseNodePlacer(boolean pause){
+ if (pause && !isPaused()) {
+ this.worker.suspend();
+ this.workerPaused = true;
+ } else if (!pause && isPaused()) {
+ this.worker.unsuspend();
+ this.workerPaused = false;
+
+ }
+ }
+
+ public boolean isPaused(){
+ return this.workerRunning && this.workerPaused;
+ }
+
+ /**
+ * F\xFCgt eine gerichtete Kante von Knoten node1 zu node2 hinzu.
+ *
+ * Das Gewicht der Kante
+ * @param node1 first node.
+ * @param node2 second node.
+ * @return a new or old edge between the two nodes.
+ */
+ public IMagicEdge addEdge(Node node1, Node node2){
+ if (node1 == node2) return null;
+ Vertex v = findVertex(node1);
+ Vertex w = findVertex(node2);
+
+ return addEdge(v, w);
+ }
+
+ /**
+ * F\xFCgt eine Jungkante hinzu. wird intern verwendet.
+ *
+ * @param v1 first vertex
+ * @param v2 second vertex.
+ * @return
+ */
+ private IMagicEdge addEdge(Vertex v1, Vertex v2){
+ log.debug("Adding Edge : " + v1 + " -> " + v2);
+ if (v1 == v2) return null;
+ synchronized (edgeLock) {
+ Edge e = v1.findEdge(v2);
+ if (e != null)
+ return (IMagicEdge) e;
+ else {
+ JungEdge edge = new JungEdge(v1, v2);
+ this.worker.suspend(); // stopGraph();
+ addEdge(edge);
+ this.layout.update();
+ ((SpringLayout) this.worker.getGraphLayout()).update();
+ this.worker.unsuspend(); // resumeGraph();
+
+ magicEdges.put(e,edge);
+ return edge;
+ }
+
+ }
+ }
+
+ /**
+ * @see INodePlacer
+ * @param n1 first node.
+ * @param n2 second node.
+ * @return an JungEdge or null.
+ */
+ public JungEdge getEdge(Node n1, Node n2){
+ Vertex v = findVertex(n1);
+ Vertex w = findVertex(n2);
+ if (v != null && w != null) {
+ return (JungEdge)v.findEdge(w);
+ }
+ else return null;
+
+ }
+
+ /**
+ * L\xF6scht eine Kantew zwischen den beiden Knoten.
+ * @param node1 Quelle der Kante.
+ * @param node2 Ziel der Kante.
+ */
+ public void removeEdge(Node node1, Node node2){
+ Vertex v = findVertex(node1);
+ Vertex w = findVertex(node2);
+ if (v != null && w != null) {
+ this.worker.suspend();
+ Set edges = getEdges();
+ for (Object edge : edges) {
+ Edge e = (Edge) edge;
+ if (e.getIncidentVertices().contains(v) && e.getIncidentVertices().contains(w)) {
+ removeEdge(e);
+ magicEdges.remove(e);
+ break;
+ }
+ }
+ this.layout.update();
+ this.worker.unsuspend(); // resumeGraph();
+ }
+ }
+
+ /**
+ * Entfernt Knoten aus dem Graph und eventuelle Kanten
+ *
+ * @param node
+ */
+ private void removeVertex(Node node){
+ Vertex v = findVertex(node);
+ if (v != null) {
+ this.worker.suspend();
+ // Kein Iterator direkt auf die Sets des
+ // Graphen => Concurrent modification!
+ ArrayList<Edge> list = new ArrayList<Edge>(getEdges());
+ for (Edge e : list) {
+ if (e.getIncidentVertices().contains(v)) {
+ super.removeEdge(e);
+ }
+ }
+ nodeVertexMapping.remove(node);
+ this.labeller.removeLabel(node.getDisplayName());
+ super.removeVertex(v);
+ this.layout.update();
+ this.worker.unsuspend();
+ }
+ }
+
+ /**
+ *
+ * @param handler
+ */
+
+ public void addNodeUpdateHandler(NodeUpdateHandler handler){
+ this.nodeHandler.addNodeUpdateHandler(handler);
+
+ }
+
+ public void clear(){
+ stopNodePlacer();
+ this.removeAllEdges();
+ this.removeAllVertices();
+ nodeVertexMapping.clear();
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Iterator<IMagicEdge> iterator() {
+ synchronized (edgeLock) {
+ ArrayList<IMagicEdge> edgeCopy = new ArrayList<IMagicEdge>(magicEdges.values());
+ return edgeCopy.iterator();
+ }
+ }
+}
Deleted: branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java 2007-12-21 12:06:47 UTC (rev 704)
+++ branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java 2008-01-01 23:14:33 UTC (rev 708)
@@ -1,18 +0,0 @@
-package net.sf.magicmap.client.model.node;
-
-
-/**
- * An edge connects two Nodes.
- *
- *
- * @author Jan Friderici
- *
- */
-public interface IMagicEdge {
- public Node getSourceNode();
- public Node getTargetNode();
-
- public enum EdgeType{
- NONE, PARENT_EDGE, DISTANCE_EDGE;
- }
-}
Copied: branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java (from rev 705, trunk/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java)
===================================================================
--- branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java (rev 0)
+++ branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java 2008-01-01 23:14:33 UTC (rev 708)
@@ -0,0 +1,31 @@
+package net.sf.magicmap.client.model.node;
+
+
+/**
+ * An edge connects two Nodes.
+ *
+ *
+ * @author Jan Friderici
+ *
+ */
+public interface IMagicEdge {
+
+ /**
+ *
+ * @return
+ */
+ Node getSourceNode();
+
+ /**
+ *
+ * @return
+ */
+ Node getTargetNode();
+
+ /**
+ *
+ */
+ public enum EdgeType{
+ NONE, PARENT_EDGE, DISTANCE_EDGE;
+ }
+}
Modified: branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/INode.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/model/node/INode.java 2007-12-21 12:06:47 UTC (rev 704)
+++ branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/INode.java 2008-01-01 23:14:33 UTC (rev 708)
@@ -3,15 +3,19 @@
import java.util.List;
/**
- * Created by IntelliJ IDEA.
- * User: Jan
- * Date: 08.02.2007
- * Time: 09:22:33
- * To change this template use File | Settings | File Templates.
+ * <p>
+ * Interface for all nodes.
+ * </p>
+ * @author Jan Friderici
*/
public interface INode {
- String getDisplayName();
+ /**
+ *
+ * @return
+ */
+ String getDisplayName();
+
void setDisplayName(String displayName);
boolean isUpdate();
Modified: branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/INodeModel.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/model/node/INodeModel.java 2007-12-21 12:06:47 UTC (rev 704)
+++ branches/info/magicmapclient/src/net/sf/magicmap/client/model/node/INodeModel.java 2008-01-01 23:14:33 UTC (rev 708)
@@ -24,13 +24,13 @@
*
* @param node the node to add
*/
- public abstract void addNode(Node node);
+ void addNode(Node node);
/**
* Remove a node
* @param node removes a node from the model
*/
- public abstract void removeNode(Node node);
+ void removeNode(Node node);
/**
* Notifies all listeners that the state of a given node
@@ -42,7 +42,7 @@
* @param data new data, may be null.
* @see NodeModelListener
*/
- public abstract void updateNode(Node node, int type, Object data);
+ void updateNode(Node node, int type, Object data);
/**
* Aktualisiert den Hash-Schl\xFCssel f\xFCr einen Knoten.
@@ -51,7 +51,7 @@
* @param node Knoten der aktualisiert werden soll
* @param name Alter Hash-Wert
*/
- public abstract void rehashNode(Node node, String name);
+ void rehashNode(Node node, String name);
/**
* returns all neighbours for the given node.
@@ -59,7 +59,7 @@
* @param node the node
* @return all neighbours of the given node.
*/
- public abstract ArrayList<? extends Node> findNeighbors(Node node);
+ ArrayList<? extends Node> findNeighbors(Node node);
/**
* what for?
@@ -67,27 +67,27 @@
* @return
*/
@Deprecated
- public abstract ArrayList<? extends ...
[truncated message content] |
|
From: <jan...@us...> - 2008-01-01 23:14:47
|
Revision: 707
http://magicmap.svn.sourceforge.net/magicmap/?rev=707&view=rev
Author: jan_fride
Date: 2008-01-01 15:14:01 -0800 (Tue, 01 Jan 2008)
Log Message:
-----------
Infoobject branch....
Added Paths:
-----------
branches/info/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jan...@us...> - 2008-01-01 15:05:09
|
Revision: 706
http://magicmap.svn.sourceforge.net/magicmap/?rev=706&view=rev
Author: jan_fride
Date: 2008-01-01 07:04:39 -0800 (Tue, 01 Jan 2008)
Log Message:
-----------
added get method and iterator for edges.
Modified Paths:
--------------
trunk/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java
trunk/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java 2007-12-31 17:59:57 UTC (rev 705)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/model/location/INodePlacer.java 2008-01-01 15:04:39 UTC (rev 706)
@@ -18,20 +18,20 @@
* @author Jan Friderici
*
*/
-public interface INodePlacer {
+public interface INodePlacer extends Iterable<IMagicEdge>{
/**
* Fügt einen neuen Knoten ein.
*
* @param node der neue Knoten.
*/
- public void insertNode(Node node);
+ void insertNode(Node node);
/**
* Löscht einen Knoten.
* @param node
*/
- public void deleteNode(Node node);
+ void deleteNode(Node node);
/**
* Legt eine gerichtete Kante zwischen den beiden Knoten an.
@@ -40,14 +40,22 @@
* @param n2 das Ziel der Kante
* @return
*/
- public IMagicEdge addEdge(Node n1, Node n2);
+ IMagicEdge addEdge(Node n1, Node n2);
/**
+ * <p>Find the ege connecting the two given nodes.</p>
+ * @param n1 first node
+ * @param n2 secnd node
+ * @return the connecting edge or null.
+ */
+ IMagicEdge getEdge(Node n1, Node n2);
+
+ /**
* Löscht eine gerichtete Kante. (also nur eine Richtung).
- * @param n1
- * @param n2
+ * @param n1 first node
+ * @param n2 second node
*/
- public void removeEdge(Node n1, Node n2);
+ void removeEdge(Node n1, Node n2);
/**
* Die Größe des Layoutalgorithmus sollte der der Karte
@@ -56,43 +64,58 @@
* @param width die Breite (der Karte).
* @param height die Höhe (der Karte).
*/
- public void setSize(int width, int height);
+ void setSize(int width, int height);
/**
* Starts the algorithm.
*
*/
- public abstract void startNodePlacer();
+ void startNodePlacer();
/**
* Stops the algorithm
*
*/
- public abstract void stopNodePlacer();
+ void stopNodePlacer();
/**
*
* @param pause
*/
- public abstract void pauseNodePlacer(boolean pause);
+ void pauseNodePlacer(boolean pause);
/**
*
* @return
*/
- public boolean isPaused();
+ boolean isPaused();
/**
* Adds a handler for node updates.
* @param handler
*/
- public void addNodeUpdateHandler(NodeUpdateHandler handler);
+ void addNodeUpdateHandler(NodeUpdateHandler handler);
- public NodeMetricManager getMetricManager();
-
- public void updateNode(Node node, int type, Object data);
- static final class NodeHandlerFactory {
+ /**
+ *
+ * @return the metric manager for this layout.
+ */
+ NodeMetricManager getMetricManager();
+ /**
+ *
+ * @param node
+ * @param type
+ * @param data
+ */
+ void updateNode(Node node, int type, Object data);
+
+
+ /**
+ *
+ */
+ static final class NodeHandlerFactory {
+
public final HashMap<Integer, NodeUpdateHandler> handlerMap;
public NodeHandlerFactory() {
@@ -124,5 +147,9 @@
return this.handlerMap.get(type);
}
}
- public void clear();;
+
+ /**
+ * <p>Remove all nodes and edges...</p>
+ */
+ void clear();
}
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-12-31 17:59:57 UTC (rev 705)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java 2008-01-01 15:04:39 UTC (rev 706)
@@ -1,49 +1,31 @@
package net.sf.magicmap.client.model.location.jung;
-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 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;
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.controller.Controller;
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.AccessPointHiddenStateHandler;
-import net.sf.magicmap.client.model.location.jung.handler.CalculationStateHandler;
-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 net.sf.magicmap.client.model.location.jung.handler.*;
+import net.sf.magicmap.client.model.node.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-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;
+import java.awt.*;
+import java.util.*;
/**
* Dieses Model benutzt die Layoutfunktionen von Jung und einige Angepasste
* Layoutalgorithmen um die Knotenposition zu berechnen.
*
- * @author Jan
+ * @author Jan Friderici
*
*/
public class JungNodePlacer extends DirectedSparseGraph implements INodePlacer, NodeModelConstants {
@@ -98,6 +80,8 @@
private final Object edgeLock = new Object();
private final Object vertexLock = new Object();
+ private final Map<Edge, IMagicEdge> magicEdges = new HashMap<Edge, IMagicEdge>();
+
public JungNodePlacer() {
this(new MagicMetric());
}
@@ -112,8 +96,7 @@
/**
*
- * @param settings
- * @param metric
+ * @param metric the metrics to use.
*/
public JungNodePlacer(NodeModelMetric metric) {
super();
@@ -179,10 +162,18 @@
}
+ /**
+ *
+ * @param node
+ */
public void deleteNode(Node node){
removeVertex(node);
}
+ /**
+ *
+ * @return
+ */
public SpringLayout getLayout(){
return this.layout;
}
@@ -194,7 +185,7 @@
* @param node der neue oder ge\xE4nderte Knoten
* @param type der Typ des Events. (Enum nutzen)?
* @param data ---?
- * @see NodeModelListener, INodeModel, NodeModel
+ * @see net.sf.magicmap.client.interfaces.NodeModelListener , INodeModel, NodeModel
*/
public void updateNode(Node node, int type, Object data){
// first try if we have a handler for this event.
@@ -216,6 +207,11 @@
}
}
+ /**
+ *
+ * @param node
+ * @return
+ */
public Vertex findVertex(Node node){
return this.nodeVertexMapping.get(node);
}
@@ -292,9 +288,9 @@
* F\xFCgt eine gerichtete Kante von Knoten node1 zu node2 hinzu.
*
* Das Gewicht der Kante
- * @param node1
- * @param node2
- * @return
+ * @param node1 first node.
+ * @param node2 second node.
+ * @return a new or old edge between the two nodes.
*/
public IMagicEdge addEdge(Node node1, Node node2){
if (node1 == node2) return null;
@@ -307,8 +303,8 @@
/**
* F\xFCgt eine Jungkante hinzu. wird intern verwendet.
*
- * @param v1
- * @param v2
+ * @param v1 first vertex
+ * @param v2 second vertex.
* @return
*/
private IMagicEdge addEdge(Vertex v1, Vertex v2){
@@ -326,6 +322,7 @@
((SpringLayout) this.worker.getGraphLayout()).update();
this.worker.unsuspend(); // resumeGraph();
+ magicEdges.put(e,edge);
return edge;
}
@@ -333,6 +330,22 @@
}
/**
+ * @see INodePlacer
+ * @param n1 first node.
+ * @param n2 second node.
+ * @return an JungEdge or null.
+ */
+ public JungEdge getEdge(Node n1, Node n2){
+ Vertex v = findVertex(n1);
+ Vertex w = findVertex(n2);
+ if (v != null && w != null) {
+ return (JungEdge)v.findEdge(w);
+ }
+ else return null;
+
+ }
+
+ /**
* L\xF6scht eine Kantew zwischen den beiden Knoten.
* @param node1 Quelle der Kante.
* @param node2 Ziel der Kante.
@@ -347,6 +360,7 @@
Edge e = (Edge) edge;
if (e.getIncidentVertices().contains(v) && e.getIncidentVertices().contains(w)) {
removeEdge(e);
+ magicEdges.remove(e);
break;
}
}
@@ -364,12 +378,10 @@
Vertex v = findVertex(node);
if (v != null) {
this.worker.suspend();
- Set edges = getEdges();
// Kein Iterator direkt auf die Sets des
// Graphen => Concurrent modification!
- ArrayList list = new ArrayList(edges);
- for (Object aList : list) {
- Edge e = (Edge) aList;
+ ArrayList<Edge> list = new ArrayList<Edge>(getEdges());
+ for (Edge e : list) {
if (e.getIncidentVertices().contains(v)) {
super.removeEdge(e);
}
@@ -399,4 +411,14 @@
nodeVertexMapping.clear();
}
+ /**
+ *
+ * @return
+ */
+ public Iterator<IMagicEdge> iterator() {
+ synchronized (edgeLock) {
+ ArrayList<IMagicEdge> edgeCopy = new ArrayList<IMagicEdge>(magicEdges.values());
+ return edgeCopy.iterator();
+ }
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jan...@us...> - 2007-12-31 19:01:11
|
Revision: 705
http://magicmap.svn.sourceforge.net/magicmap/?rev=705&view=rev
Author: jan_fride
Date: 2007-12-31 09:59:57 -0800 (Mon, 31 Dec 2007)
Log Message:
-----------
removed redundant "public" in interface
Modified Paths:
--------------
trunk/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java 2007-12-21 12:06:47 UTC (rev 704)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/model/node/IMagicEdge.java 2007-12-31 17:59:57 UTC (rev 705)
@@ -9,10 +9,23 @@
*
*/
public interface IMagicEdge {
- public Node getSourceNode();
- public Node getTargetNode();
- public enum EdgeType{
+ /**
+ *
+ * @return
+ */
+ Node getSourceNode();
+
+ /**
+ *
+ * @return
+ */
+ Node getTargetNode();
+
+ /**
+ *
+ */
+ public enum EdgeType{
NONE, PARENT_EDGE, DISTANCE_EDGE;
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-12-21 12:07:05
|
Revision: 704
http://magicmap.svn.sourceforge.net/magicmap/?rev=704&view=rev
Author: anweiss
Date: 2007-12-21 04:06:47 -0800 (Fri, 21 Dec 2007)
Log Message:
-----------
Added Paths:
-----------
tags/V20071221_0_9_2/magicmapserver/
Copied: tags/V20071221_0_9_2/magicmapserver (from rev 703, trunk/magicmapserver)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-12-21 12:00:59
|
Revision: 703
http://magicmap.svn.sourceforge.net/magicmap/?rev=703&view=rev
Author: anweiss
Date: 2007-12-21 04:00:40 -0800 (Fri, 21 Dec 2007)
Log Message:
-----------
Added Paths:
-----------
tags/V20071221_0_9_2/magicmapclient/
Copied: tags/V20071221_0_9_2/magicmapclient (from rev 698, trunk/magicmapclient)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-12-21 11:59:35
|
Revision: 702
http://magicmap.svn.sourceforge.net/magicmap/?rev=702&view=rev
Author: anweiss
Date: 2007-12-21 03:59:07 -0800 (Fri, 21 Dec 2007)
Log Message:
-----------
Version 0.9.2
Added Paths:
-----------
tags/V20071221_0_9_2/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-12-21 11:48:50
|
Revision: 701
http://magicmap.svn.sourceforge.net/magicmap/?rev=701&view=rev
Author: anweiss
Date: 2007-12-21 03:48:21 -0800 (Fri, 21 Dec 2007)
Log Message:
-----------
can't access the server directory
delete&retry
Removed Paths:
-------------
tags/V20071221_0_9_2/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-12-21 11:39:38
|
Revision: 700
http://magicmap.svn.sourceforge.net/magicmap/?rev=700&view=rev
Author: anweiss
Date: 2007-12-21 03:39:04 -0800 (Fri, 21 Dec 2007)
Log Message:
-----------
Server 9.2.0
Added Paths:
-----------
tags/V20071221_0_9_2/magicmapserver/
Copied: tags/V20071221_0_9_2/magicmapserver (from rev 699, trunk/magicmapserver)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-12-21 11:37:55
|
Revision: 699
http://magicmap.svn.sourceforge.net/magicmap/?rev=699&view=rev
Author: anweiss
Date: 2007-12-21 03:37:52 -0800 (Fri, 21 Dec 2007)
Log Message:
-----------
Version 9.2.0
Added Paths:
-----------
tags/V20071221_0_9_2/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fle...@us...> - 2007-12-20 14:43:04
|
Revision: 698
http://magicmap.svn.sourceforge.net/magicmap/?rev=698&view=rev
Author: flederohr
Date: 2007-12-20 06:42:56 -0800 (Thu, 20 Dec 2007)
Log Message:
-----------
changed release Filename
Modified Paths:
--------------
trunk/magicmapclient/MagicMapSetup.nsi
Modified: trunk/magicmapclient/MagicMapSetup.nsi
===================================================================
--- trunk/magicmapclient/MagicMapSetup.nsi 2007-12-20 14:32:48 UTC (rev 697)
+++ trunk/magicmapclient/MagicMapSetup.nsi 2007-12-20 14:42:56 UTC (rev 698)
@@ -46,7 +46,7 @@
!insertmacro MUI_LANGUAGE German
# Installer attributes
-OutFile dist\MagicMap-${VERSION}-${APPENDIX}.exe
+OutFile dist\MagicMapSetup-${VERSION}-${APPENDIX}.exe
InstallDir $PROGRAMFILES\MagicMap
CRCCheck on
XPStyle on
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fle...@us...> - 2007-12-20 14:32:53
|
Revision: 697
http://magicmap.svn.sourceforge.net/magicmap/?rev=697&view=rev
Author: flederohr
Date: 2007-12-20 06:32:48 -0800 (Thu, 20 Dec 2007)
Log Message:
-----------
version incremented
improved building scripts
Modified Paths:
--------------
trunk/magicmapclient/MagicMapSetup.nsi
trunk/magicmapclient/build.xml
Modified: trunk/magicmapclient/MagicMapSetup.nsi
===================================================================
--- trunk/magicmapclient/MagicMapSetup.nsi 2007-12-20 12:59:48 UTC (rev 696)
+++ trunk/magicmapclient/MagicMapSetup.nsi 2007-12-20 14:32:48 UTC (rev 697)
@@ -7,7 +7,8 @@
# Defines
!define REGKEY "SOFTWARE\$(^Name)"
-!define VERSION 0.9.0
+!define VERSION 0.9.2
+!define APPENDIX "beta1"
!define COMPANY "Humboldt Universit\xE4t zu Berlin"
!define URL http://www2.informatik.hu-berlin.de/rok/MagicMap
@@ -45,7 +46,7 @@
!insertmacro MUI_LANGUAGE German
# Installer attributes
-OutFile MagicMapsetup.exe
+OutFile dist\MagicMap-${VERSION}-${APPENDIX}.exe
InstallDir $PROGRAMFILES\MagicMap
CRCCheck on
XPStyle on
Modified: trunk/magicmapclient/build.xml
===================================================================
--- trunk/magicmapclient/build.xml 2007-12-20 12:59:48 UTC (rev 696)
+++ trunk/magicmapclient/build.xml 2007-12-20 14:32:48 UTC (rev 697)
@@ -2,8 +2,8 @@
<project name="magicmapclient" default="jar" basedir=".">
<property name="application" value="magicmap" />
<!-- Version Information -->
- <property name="version.number" value="0.9.1" />
- <property name="version.appendix" value="beta 5" />
+ <property name="version.number" value="0.9.2" />
+ <property name="version.appendix" value="beta 1" />
<property name="jar.name" value="${application}.jar" />
<property name="main.class" value="net.sf.magicmap.client.core.MagicMapApplication" />
@@ -132,7 +132,7 @@
</target>
<target name="dist" depends="jar">
- <zip destfile="dist/${application}-${version.number}.zip">
+ <zip destfile="dist/${application}-${version.number}-${version.appendix}.zip">
<fileset dir="." includes="lib/*" />
<fileset dir="." includes="plugins/*" />
<fileset dir="." includes="${jar.name}" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fle...@us...> - 2007-12-20 12:59:54
|
Revision: 696
http://magicmap.svn.sourceforge.net/magicmap/?rev=696&view=rev
Author: flederohr
Date: 2007-12-20 04:59:48 -0800 (Thu, 20 Dec 2007)
Log Message:
-----------
introduced optional distributed computation of the client positions
Modified Paths:
--------------
trunk/magicmapclient/res/screentext.properties
trunk/magicmapclient/res/screentext_de_DE.properties
trunk/magicmapclient/src/edu/uci/ics/jung/visualization/AbstractLayout.java
trunk/magicmapclient/src/edu/uci/ics/jung/visualization/SpringLayout.java
trunk/magicmapclient/src/net/sf/magicmap/client/controller/Controller.java
trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java
trunk/magicmapclient/src/net/sf/magicmap/client/gui/MapPanel.java
trunk/magicmapclient/src/net/sf/magicmap/client/model/location/jung/JungNodePlacer.java
trunk/magicmapclient/src/net/sf/magicmap/client/model/node/ClientNode.java
trunk/magicmapclient/src/net/sf/magicmap/client/model/node/NodeModelConstants.java
Added Paths:
-----------
trunk/magicmapclient/src/net/sf/magicmap/client/model/location/jung/handler/CalculationStateHandler.java
Modified: trunk/magicmapclient/res/screentext.properties
===================================================================
--- trunk/magicmapclient/res/screentext.properties 2007-12-20 12:51:48 UTC (rev 695)
+++ trunk/magicmapclient/res/screentext.properties 2007-12-20 12:59:48 UTC (rev 696)
@@ -113,19 +113,22 @@
message.dialog.wrong.height = Error! The Node's height wasn't updated!
map.panel.context.hide.ap = hide accesspoint
map.panel.context.hide.ap.off = compute accesspoint
+map.panel.context.calculate.client = calculate client
node.accesspoint.is.hide = OFF
continue=C&ontinue
plugins.show=Plugins
plugins.show.tooltip=Shows all plugins
plugins.installed=Installed Plugins
-plugins.load=Show Plugins
+plugins.load=Reload Repository
plugins.install=Install Plugins
plugins.uninstall=Deinstall Plugins
-plugins.load.tooltip=Load the Plugin List
+plugins.uninstall.dialog=The plugin $pluginname can only be deleted after a restart.\nDo you want to restart MagicMap now?
+plugins.load.tooltip=Reloads the Plugin List from the repository
plugins.install.tooltip=Installs the selected Plugin
plugins.uninstall.tooltip=Deinstalls the selected Plugin
plugins.available=Additional Plugins
plugins.dependencies=Dependencies
+plugins.description=Description
plugins.detailview=Detail View
plugins.name=Name
plugins.version=Version
Modified: trunk/magicmapclient/res/screentext_de_DE.properties
===================================================================
--- trunk/magicmapclient/res/screentext_de_DE.properties 2007-12-20 12:51:48 UTC (rev 695)
+++ trunk/magicmapclient/res/screentext_de_DE.properties 2007-12-20 12:59:48 UTC (rev 696)
@@ -113,19 +113,22 @@
message.dialog.wrong.height = H\xF6he wurde nicht ge\xE4ndert!
map.panel.context.hide.ap = Accesspoint bei Berechnung ausblenden
map.panel.context.hide.ap.off = Accesspoint bei Berechnung ber\xFCcksichtigen
+map.panel.context.calculate.client = Berechne Client
node.accesspoint.is.hide = AUS
continue=&Weiter
plugins.show=Plugins
plugins.show.tooltip=Zeige alle Plugins
plugins.installed=Installierte Plugins
-plugins.load=Zeige Plugins
+plugins.load=Erneuere Repository
plugins.install=Installiere Plugin
plugins.uninstall=Deinstalliere Plugin
-plugins.load.tooltip=L\xE4dt die Pluginliste
+plugins.uninstall.dialog=Das Plugin $pluginname kann erst nach einem Neustart gel\xF6scht werden.\nM\xF6chten sie MagicMap jetzt neu starten?
+plugins.load.tooltip=L\xE4dt erneut den Inhalt des Plugin-Repositories
plugins.install.tooltip=Installiert ausgew\xE4hltes Plugin
plugins.uninstall.tooltip=Deinstalliert ausgew\xE4hltes Plugin
plugins.available=Weitere Plugins
plugins.dependencies=Abh\xE4ngigkeiten
+plugins.description=Beschreibung
plugins.detailview=Detailansicht
plugins.name=Name
plugins.version=Version
Modified: trunk/magicmapclient/src/edu/uci/ics/jung/visualization/AbstractLayout.java
===================================================================
--- trunk/magicmapclient/src/edu/uci/ics/jung/visualization/AbstractLayout.java 2007-12-20 12:51:48 UTC (rev 695)
+++ trunk/magicmapclient/src/edu/uci/ics/jung/visualization/AbstractLayout.java 2007-12-20 12:59:48 UTC (rev 696)
@@ -1,14 +1,11 @@
/*
* Copyright (c) 2003, the JUNG Project and the Regents of the University of
- * California All rights reserved.
- *
- * This software is open-source under the BSD license; see either "license.txt"
- * or http://jung.sourceforge.net/license.txt for a description.
+ * California All rights reserved. This software is open-source under the BSD
+ * license; see either "license.txt" or http://jung.sourceforge.net/license.txt
+ * for a description.
*/
/*
- * Created on Jul 7, 2003
- *
- * To change the template for this generated file go to
+ * Created on Jul 7, 2003 To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
@@ -36,479 +33,515 @@
*/
abstract public class AbstractLayout implements Layout {
- /**
- * The set of vertices that have been locked. When running layout, it is
- * important to check
- *
- * <pre>
- * if (dontmove( v )) { ... }
- * </pre>
- *
- * @return whether this vertex may be legally moved or not
- */
- public boolean dontMove(Vertex v){
- return dontmove.contains(v);
- }
+ /**
+ * The set of vertices that have been locked. When running layout, it is
+ * important to check
+ *
+ * <pre>
+ * if (dontmove( v )) { ... }
+ * </pre>
+ *
+ * @return whether this vertex may be legally moved or not
+ */
+ public boolean dontMove(Vertex v){
+ return dontmove.contains(v);
+ }
- /**
- * Support for explicit fix nodes.
- * @param v
- * @return
- */
- public boolean fix(Vertex v){
- return fix.contains(v);
- }
+ /**
+ * Support for explicit fix nodes.
+ * @param v
+ * @return
+ */
+ public boolean fix(Vertex v){
+ return fix.contains(v);
+ }
- // private boolean initialized = false;
+ // private boolean initialized = false;
- private Set dontmove;
- private Set fix;
+ private Set dontmove;
+ private Set fix;
- private static final Object BASE_KEY = "edu.uci.ics.jung.Base_Visualization_Key";
+ private static final Object BASE_KEY = "edu.uci.ics.jung.Base_Visualization_Key";
- private Dimension currentSize;
- private Graph baseGraph;
- private Graph visibleGraph;
+ private Dimension currentSize;
+ private Graph baseGraph;
+ private Graph visibleGraph;
- /**
- * Constructor. Initializes the current size to be 100x100, both the graph
- * and the showing graph to the argument, and creates the <tt>dontmove</tt>
- * set.
- *
- * @param g
- */
- public AbstractLayout(Graph g) {
- // this.currentSize = new Dimension(100, 100);
- this.baseGraph = g;
- this.visibleGraph = g;
- this.visibleEdges = g.getEdges();
- this.visibleVertices = g.getVertices();
- this.dontmove = new HashSet();
- this.fix = new HashSet();
- }
+ /**
+ * Constructor. Initializes the current size to be 100x100, both the graph
+ * and the showing graph to the argument, and creates the <tt>dontmove</tt>
+ * set.
+ *
+ * @param g
+ */
+ public AbstractLayout(Graph g) {
+ // this.currentSize = new Dimension(100, 100);
+ this.baseGraph = g;
+ this.visibleGraph = g;
+ this.visibleEdges = g.getEdges();
+ this.visibleVertices = g.getVertices();
+ this.notCalculatedVertices = new HashSet(); //FLAW
+ this.dontmove = new HashSet();
+ this.fix = new HashSet();
+ }
- /**
- * Initializer, calls <tt>intialize_local</tt> and <tt>initializeLocations</tt>
- * to start construction process.
- */
- public void initialize(Dimension size){
- // System.out.println("Initialize " + this + size );
- this.currentSize = size;
- initialize_local();
- initializeLocations();
- // this.initialized = true;
- }
+ /**
+ * Initializer, calls <tt>intialize_local</tt> and <tt>initializeLocations</tt>
+ * to start construction process.
+ */
+ public void initialize(Dimension size){
+ // System.out.println("Initialize " + this + size );
+ this.currentSize = size;
+ initialize_local();
+ initializeLocations();
+ // this.initialized = true;
+ }
- /**
- * Initializes all local information, and is called immediately within the
- * <tt>initialize()</tt> process. The user is responsible for overriding
- * this method to do any construction that may be necessary: for example,
- * to initialize local per-edge or graph-wide data.
- */
- protected abstract void initialize_local();
+ /**
+ * Initializes all local information, and is called immediately within the
+ * <tt>initialize()</tt> process. The user is responsible for overriding
+ * this method to do any construction that may be necessary: for example,
+ * to initialize local per-edge or graph-wide data.
+ */
+ protected abstract void initialize_local();
- /**
- * Initializes the local information on a single vertex. The user is
- * responsible for overriding this method to do any vertex-level
- * construction that may be necessary: for example, to attach vertex-level
- * information to each vertex.
- */
- protected abstract void initialize_local_vertex(Vertex v);
+ /**
+ * Initializes the local information on a single vertex. The user is
+ * responsible for overriding this method to do any vertex-level
+ * construction that may be necessary: for example, to attach vertex-level
+ * information to each vertex.
+ */
+ protected abstract void initialize_local_vertex(Vertex v);
- private Object key;
+ private Object key;
- private Set visibleVertices;
- private Set visibleEdges;
+ private Set visibleVertices;
+ private Set visibleEdges;
- /**
- * Returns a visualization-specific key (that is, specific both to this
- * instance and <tt>AbstractLayout</tt>) that can be used to access
- * UserData related to the <tt>AbstractLayout</tt>.
- */
- public Object getBaseKey(){
- if (key == null) key = new Pair(this, BASE_KEY);
- return key;
- }
+ private Set notCalculatedVertices; //FLAW
- /**
- * This method calls <tt>initialize_local_vertex</tt> for each vertex,
- * and also adds initial coordinate information for each vertex. (The
- * vertex's initial location is set by calling <tt>initializeLocation</tt>.
- */
- protected void initializeLocations(){
- for (Iterator iter = baseGraph.getVertices().iterator(); iter.hasNext();){
- Vertex v = (Vertex) iter.next();
+ /**
+ * Returns a visualization-specific key (that is, specific both to this
+ * instance and <tt>AbstractLayout</tt>) that can be used to access
+ * UserData related to the <tt>AbstractLayout</tt>.
+ */
+ public Object getBaseKey(){
+ if (key == null) key = new Pair(this, BASE_KEY);
+ return key;
+ }
- Coordinates coord = (Coordinates) v.getUserDatum(getBaseKey());
- if (coord == null){
- coord = new Coordinates();
- v.addUserDatum(getBaseKey(), coord, UserData.REMOVE);
- }
- if (!dontmove.contains(v)) initializeLocation(v, coord, currentSize);
- initialize_local_vertex(v);
+ /**
+ * This method calls <tt>initialize_local_vertex</tt> for each vertex,
+ * and also adds initial coordinate information for each vertex. (The
+ * vertex's initial location is set by calling <tt>initializeLocation</tt>.
+ */
+ protected void initializeLocations(){
+ for (Iterator iter = baseGraph.getVertices().iterator(); iter.hasNext();) {
+ Vertex v = (Vertex) iter.next();
+
+ Coordinates coord = (Coordinates) v.getUserDatum(getBaseKey());
+ if (coord == null) {
+ coord = new Coordinates();
+ v.addUserDatum(getBaseKey(), coord, UserData.REMOVE);
+ }
+ if (!dontmove.contains(v)) initializeLocation(v, coord, currentSize);
+ initialize_local_vertex(v);
+ }
}
- }
- /* ------------------------- */
+ /* ------------------------- */
- /**
- * Sets random locations for a vertex within the dimensions of the space.
- * If you want to initialize in some different way, override this method.
- *
- * @param coord
- * @param d
- */
- protected void initializeLocation(Vertex v, Coordinates coord, Dimension d){
- double x = Math.random() * d.getWidth();
- double y = Math.random() * d.getHeight();
- coord.setX(x);
- coord.setY(y);
- }
+ /**
+ * Sets random locations for a vertex within the dimensions of the space.
+ * If you want to initialize in some different way, override this method.
+ *
+ * @param coord
+ * @param d
+ */
+ protected void initializeLocation(Vertex v, Coordinates coord, Dimension d){
+ double x = Math.random() * d.getWidth();
+ double y = Math.random() * d.getHeight();
+ coord.setX(x);
+ coord.setY(y);
+ }
- /**
- * {@inheritDoc}By default, an <tt>AbstractLayout</tt> returns null for
- * its status.
- */
- public String getStatus(){
- return null;
- }
+ /**
+ * {@inheritDoc}By default, an <tt>AbstractLayout</tt> returns null for
+ * its status.
+ */
+ public String getStatus(){
+ return null;
+ }
- /**
- * Implementors must override this method in order to create a Layout. If
- * the Layout is the sort that only calculates locations once, this method
- * may be overridden with an empty method.
- * <p>
- * Note that "locked" vertices are not to be moved; however, it is the
- * policy of the visualization to decide how to handle them, and what to do
- * with the vertices around them. Prototypical code might include a
- * clipping like
- *
- * <pre>
- * for (Iterator i = getVertices().iterator(); i.hasNext() ) { Vertex v = (Vertex) i.next(); if (! dontmove.contains( v ) ) { ... // handle the node } else { // ignore the node } }
- * </pre>
- *
- * @see Layout#advancePositions()
- */
- public abstract void advancePositions();
+ /**
+ * Implementors must override this method in order to create a Layout. If
+ * the Layout is the sort that only calculates locations once, this method
+ * may be overridden with an empty method.
+ * <p>
+ * Note that "locked" vertices are not to be moved; however, it is the
+ * policy of the visualization to decide how to handle them, and what to do
+ * with the vertices around them. Prototypical code might include a
+ * clipping like
+ *
+ * <pre>
+ * for (Iterator i = getVertices().iterator(); i.hasNext() ) { Vertex v = (Vertex) i.next(); if (! dontmove.contains( v ) ) { ... // handle the node } else { // ignore the node } }
+ * </pre>
+ *
+ * @see Layout#advancePositions()
+ */
+ public abstract void advancePositions();
- /**
- * Accessor for the graph that represets all visible vertices. <b>Warning:
- * </b> This graph consists of vertices that are equivalent to, but are <b>
- * not the same as</b> the vertices in <tt>getGraph()</tt>, nor the
- * vertices in <tt>getAllVertices()</tt>. Rather, it returns the
- * vertices and edges that were passed in during a call to <tt>applyFilter</tt>.
- * The call <tt>getVisibleGraph().getVertices()</tt>, is almost
- * indubitably incorrect.
- * <p>
- *
- * @return the current visible graph.
- * @see #getVisibleEdges
- * @see #getVisibleVertices
- */
- protected Graph getVisibleGraph(){
- return visibleGraph;
- }
+ /**
+ * Accessor for the graph that represets all visible vertices. <b>Warning:
+ * </b> This graph consists of vertices that are equivalent to, but are <b>
+ * not the same as</b> the vertices in <tt>getGraph()</tt>, nor the
+ * vertices in <tt>getAllVertices()</tt>. Rather, it returns the
+ * vertices and edges that were passed in during a call to <tt>applyFilter</tt>.
+ * The call <tt>getVisibleGraph().getVertices()</tt>, is almost
+ * indubitably incorrect.
+ * <p>
+ *
+ * @return the current visible graph.
+ * @see #getVisibleEdges
+ * @see #getVisibleVertices
+ */
+ protected Graph getVisibleGraph(){
+ return visibleGraph;
+ }
- /**
- * Returns the current size of the visualization space, accoring to the
- * last call to resize().
- *
- * @return the current size of the screen
- */
- public Dimension getCurrentSize(){
- return currentSize;
- }
+ /**
+ * Returns the current size of the visualization space, accoring to the
+ * last call to resize().
+ *
+ * @return the current size of the screen
+ */
+ public Dimension getCurrentSize(){
+ return currentSize;
+ }
- /**
- * Utility method, gets a single vertex from this edge. The utility's
- * implementation is to get the iterator from the edge's <tt>getIncidentVertices()</tt>
- * and then return the first element.
- */
- protected Vertex getAVertex(Edge e){
- Vertex v = (Vertex) e.getIncidentVertices().iterator().next();
- return v;
- }
+ /**
+ * Utility method, gets a single vertex from this edge. The utility's
+ * implementation is to get the iterator from the edge's <tt>getIncidentVertices()</tt>
+ * and then return the first element.
+ */
+ protected Vertex getAVertex(Edge e){
+ Vertex v = (Vertex) e.getIncidentVertices().iterator().next();
+ return v;
+ }
- /**
- * Returns the Coordinates object that stores the vertex' x and y location.
- *
- * @param v
- * A Vertex that is a part of the Graph being visualized.
- * @return A Coordinates object with x and y locations.
- */
- public Coordinates getCoordinates(Vertex v){
- return (Coordinates) v.getUserDatum(getBaseKey());
- }
+ /**
+ * Returns the Coordinates object that stores the vertex' x and y location.
+ *
+ * @param v
+ * A Vertex that is a part of the Graph being visualized.
+ * @return A Coordinates object with x and y locations.
+ */
+ public Coordinates getCoordinates(Vertex v){
+ return (Coordinates) v.getUserDatum(getBaseKey());
+ }
- /**
- * Returns the x coordinate of the vertex from the Coordiantes object.
- *
- * @see edu.uci.ics.jung.visualization.Layout#getX(edu.uci.ics.jung.graph.Vertex)
- */
- public double getX(Vertex v){
- return ((Coordinates) v.getUserDatum(getBaseKey())).getX();
- }
+ /**
+ * Returns the x coordinate of the vertex from the Coordiantes object.
+ *
+ * @see edu.uci.ics.jung.visualization.Layout#getX(edu.uci.ics.jung.graph.Vertex)
+ */
+ public double getX(Vertex v){
+ return ((Coordinates) v.getUserDatum(getBaseKey())).getX();
+ }
- /**
- * Returns the y coordinate of the vertex from the Coordiantes object.
- *
- * @see edu.uci.ics.jung.visualization.Layout#getX(edu.uci.ics.jung.graph.Vertex)
- */
- public double getY(Vertex v){
- return ((Coordinates) v.getUserDatum(getBaseKey())).getY();
- }
+ /**
+ * Returns the y coordinate of the vertex from the Coordiantes object.
+ *
+ * @see edu.uci.ics.jung.visualization.Layout#getX(edu.uci.ics.jung.graph.Vertex)
+ */
+ public double getY(Vertex v){
+ return ((Coordinates) v.getUserDatum(getBaseKey())).getY();
+ }
- // TH:
- /**
- * Returns the x coordinate of the vertex from the Coordiantes object.
- *
- * @see edu.uci.ics.jung.visualization.Layout#getX(edu.uci.ics.jung.graph.Vertex)
- */
- public void setX(Vertex v, double x){
- ((Coordinates) v.getUserDatum(getBaseKey())).setX(x);
- }
+ // TH:
+ /**
+ * Returns the x coordinate of the vertex from the Coordiantes object.
+ *
+ * @see edu.uci.ics.jung.visualization.Layout#getX(edu.uci.ics.jung.graph.Vertex)
+ */
+ public void setX(Vertex v, double x){
+ ((Coordinates) v.getUserDatum(getBaseKey())).setX(x);
+ }
- /**
- * Returns the y coordinate of the vertex from the Coordiantes object.
- *
- * @see edu.uci.ics.jung.visualization.Layout#getX(edu.uci.ics.jung.graph.Vertex)
- */
- public void setY(Vertex v, double y){
- ((Coordinates) v.getUserDatum(getBaseKey())).setY(y);
- }
+ /**
+ * Returns the y coordinate of the vertex from the Coordiantes object.
+ *
+ * @see edu.uci.ics.jung.visualization.Layout#getX(edu.uci.ics.jung.graph.Vertex)
+ */
+ public void setY(Vertex v, double y){
+ ((Coordinates) v.getUserDatum(getBaseKey())).setY(y);
+ }
- /**
- * When a visualizetion is resized, it presumably wants to fix the
- * locations of the vertices and possibly to reinitialize its data. The
- * current method calls <tt>initializeLocations</tt> followed by <tt>initialize_local</tt>.
- * TODO: A better implementation wouldn't destroy the current information,
- * but would either scale the current visualization, or move the nodes
- * toward the new center.
- */
- public void resize(Dimension size){
- // are we initialized yet?
+ /**
+ * When a visualizetion is resized, it presumably wants to fix the
+ * locations of the vertices and possibly to reinitialize its data. The
+ * current method calls <tt>initializeLocations</tt> followed by <tt>initialize_local</tt>.
+ * TODO: A better implementation wouldn't destroy the current information,
+ * but would either scale the current visualization, or move the nodes
+ * toward the new center.
+ */
+ public void resize(Dimension size){
+ // are we initialized yet?
- if (currentSize == null){
- currentSize = size;
- return;
+ if (currentSize == null) {
+ currentSize = size;
+ return;
+ }
+
+ Dimension oldSize;
+ synchronized (currentSize) {
+ if (currentSize.equals(size)) return;
+ oldSize = currentSize;
+ this.currentSize = size;
+ }
+
+ int xOffset = (size.width - oldSize.width) / 2;
+ int yOffset = (size.height - oldSize.height) / 2;
+
+ // now, move each vertex to be at the new screen center
+ for (Iterator iter = getVisibleVertices().iterator(); iter.hasNext();) {
+ Vertex e = (Vertex) iter.next();
+ offsetVertex(e, xOffset, yOffset);
+ }
+ // optionally, we may want to restart
}
- Dimension oldSize;
- synchronized (currentSize){
- if (currentSize.equals(size)) return;
- oldSize = currentSize;
- this.currentSize = size;
+ /**
+ * @param v
+ * @param xOffset
+ * @param yOffset
+ */
+ protected void offsetVertex(Vertex v, int xOffset, int yOffset){
+ Coordinates c = getCoordinates(v);
+ c.add(xOffset, yOffset);
+ forceMove(v, (int) c.getX(), (int) c.getY());
}
- int xOffset = (size.width - oldSize.width) / 2;
- int yOffset = (size.height - oldSize.height) / 2;
+ /**
+ * Restarts the visualization entirely, as if the the user had pressed the
+ * "scramble" button. Calls <tt>initializeLocation</tt> for each vertex.
+ * TODO: Is this enough? Should it call the whole initialization process?
+ * Why does resize do more?
+ */
+ public void restart(){
+ initializeLocations();
+ initialize_local();
+ }
- // now, move each vertex to be at the new screen center
- for (Iterator iter = getVisibleVertices().iterator(); iter.hasNext();){
- Vertex e = (Vertex) iter.next();
- offsetVertex(e, xOffset, yOffset);
+ // /**
+ // * Returns the set of all visible vertices known to the
+ // * visualization.
+ // * @return the list of all vertices in the visible graph
+ // */
+ // protected Set getAllVertices() {
+ // return getVisibleGraph().getVertices();
+ // }
+
+ /**
+ * Gets the vertex nearest to the location of the (x,y) location selected.
+ * Calls the longer form of the call.
+ */
+ public Vertex getVertex(double x, double y){
+ return getVertex(x, y, Math.sqrt(Double.MAX_VALUE - 1000));
}
- // optionally, we may want to restart
- }
- /**
- * @param v
- * @param xOffset
- * @param yOffset
- */
- protected void offsetVertex(Vertex v, int xOffset, int yOffset){
- Coordinates c = getCoordinates(v);
- c.add(xOffset, yOffset);
- forceMove(v, (int) c.getX(), (int) c.getY());
- }
+ /**
+ * Gets the vertex nearest to the location of the (x,y) location selected,
+ * within a distance of <tt>maxDistance</tt>. Iterates through all
+ * visible vertices and checks their distance from the click. Override this
+ * method to provde a more efficient implementation.
+ */
+ public Vertex getVertex(double x, double y, double maxDistance){
+ double minDistance = maxDistance * maxDistance;
+ Vertex closest = null;
+ for (Iterator iter = getVisibleVertices().iterator(); iter.hasNext();) {
+ Vertex v = (Vertex) iter.next();
+ double dx = getX(v) - x;
+ double dy = getY(v) - y;
+ double dist = dx * dx + dy * dy;
+ if (dist < minDistance) {
+ minDistance = dist;
+ closest = v;
+ }
+ }
+ return closest;
+ }
- /**
- * Restarts the visualization entirely, as if the the user had pressed the
- * "scramble" button. Calls <tt>initializeLocation</tt> for each vertex.
- * TODO: Is this enough? Should it call the whole initialization process?
- * Why does resize do more?
- */
- public void restart(){
- initializeLocations();
- initialize_local();
- }
+ /**
+ * Gets the edge nearest to the location of the (x,y) location selected.
+ * Calls the longer form of the call.
+ */
+ public Edge getEdge(double x, double y){
+ return getEdge(x, y, Math.sqrt(Double.MAX_VALUE - 1000));
+ }
- // /**
- // * Returns the set of all visible vertices known to the
- // * visualization.
- // * @return the list of all vertices in the visible graph
- // */
- // protected Set getAllVertices() {
- // return getVisibleGraph().getVertices();
- // }
+ /**
+ * Gets the edge nearest to the location of the (x,y) location selected,
+ * within a distance of <tt>maxDistance</tt>, Iterates through all
+ * visible edges and checks their distance from the click. Override this
+ * method to provide a more efficient implementation.
+ *
+ * @param x
+ * @param y
+ * @param maxDistance
+ * @return Edge closest to the click.
+ */
+ public Edge getEdge(double x, double y, double maxDistance){
+ double minDistance = maxDistance * maxDistance;
+ Edge closest = null;
+ for (Iterator iter = getVisibleEdges().iterator(); iter.hasNext();) {
+ Edge e = (Edge) iter.next();
+ // if anyone uses a hyperedge, this is too complex.
+ if (e.numVertices() != 2) continue;
+ // Could replace all this set stuff with getFrom_internal() etc.
+ Set vertices = e.getIncidentVertices();
+ Iterator vertexIterator = vertices.iterator();
+ Vertex v1 = (Vertex) vertexIterator.next();
+ Vertex v2 = (Vertex) vertexIterator.next();
+ // Get coords
+ double x1 = getX(v1);
+ double y1 = getY(v1);
+ double x2 = getX(v2);
+ double y2 = getY(v2);
+ // Calculate location on line closest to (x,y)
+ // First, check that v1 and v2 are not coincident.
+ if (x1 == x2 && y1 == y2) continue;
+ double b = ((y - y1) * (y2 - y1) + (x - x1) * (x2 - x1)) / ((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
+ //
+ double distance2; // square of the distance
+ if (b <= 0)
+ distance2 = (x - x1) * (x - x1) + (y - y1) * (y - y1);
+ else if (b >= 1)
+ distance2 = (x - x2) * (x - x2) + (y - y2) * (y - y2);
+ else {
+ double x3 = x1 + b * (x2 - x1);
+ double y3 = y1 + b * (y2 - y1);
+ distance2 = (x - x3) * (x - x3) + (y - y3) * (y - y3);
+ }
- /**
- * Gets the vertex nearest to the location of the (x,y) location selected.
- * Calls the longer form of the call.
- */
- public Vertex getVertex(double x, double y){
- return getVertex(x, y, Math.sqrt(Double.MAX_VALUE - 1000));
- }
+ if (distance2 < minDistance) {
+ minDistance = distance2;
+ closest = e;
+ }
+ }
+ return closest;
+ }
- /**
- * Gets the vertex nearest to the location of the (x,y) location selected,
- * within a distance of <tt>maxDistance</tt>. Iterates through all
- * visible vertices and checks their distance from the click. Override this
- * method to provde a more efficient implementation.
- */
- public Vertex getVertex(double x, double y, double maxDistance){
- double minDistance = maxDistance * maxDistance;
- Vertex closest = null;
- for (Iterator iter = getVisibleVertices().iterator(); iter.hasNext();){
- Vertex v = (Vertex) iter.next();
- double dx = getX(v) - x;
- double dy = getY(v) - y;
- double dist = dx * dx + dy * dy;
- if (dist < minDistance){
- minDistance = dist;
- closest = v;
- }
+ /**
+ * Accessor for the graph that represets all vertices.
+ *
+ * @return the graph that contains all vertices.
+ */
+ public Graph getGraph(){
+ return baseGraph;
}
- return closest;
- }
- /**
- * Gets the edge nearest to the location of the (x,y) location selected.
- * Calls the longer form of the call.
- */
- public Edge getEdge(double x, double y){
- return getEdge(x, y, Math.sqrt(Double.MAX_VALUE - 1000));
- }
+ /**
+ * Returns the set of edges from the original <tt>getGraph</tt> that are
+ * now visible. These edges are equivalent to the ones passed in from the
+ * <tt>Graph</tt> argument to <tt>applyFilter()</tt>.
+ */
+ public Set getVisibleEdges(){
+ return visibleEdges;
+ }
- /**
- * Gets the edge nearest to the location of the (x,y) location selected,
- * within a distance of <tt>maxDistance</tt>, Iterates through all
- * visible edges and checks their distance from the click. Override this
- * method to provide a more efficient implementation.
- *
- * @param x
- * @param y
- * @param maxDistance
- * @return Edge closest to the click.
- */
- public Edge getEdge(double x, double y, double maxDistance){
- double minDistance = maxDistance * maxDistance;
- Edge closest = null;
- for (Iterator iter = getVisibleEdges().iterator(); iter.hasNext();){
- Edge e = (Edge) iter.next();
- // if anyone uses a hyperedge, this is too complex.
- if (e.numVertices() != 2) continue;
- // Could replace all this set stuff with getFrom_internal() etc.
- Set vertices = e.getIncidentVertices();
- Iterator vertexIterator = vertices.iterator();
- Vertex v1 = (Vertex) vertexIterator.next();
- Vertex v2 = (Vertex) vertexIterator.next();
- // Get coords
- double x1 = getX(v1);
- double y1 = getY(v1);
- double x2 = getX(v2);
- double y2 = getY(v2);
- // Calculate location on line closest to (x,y)
- // First, check that v1 and v2 are not coincident.
- if (x1 == x2 && y1 == y2) continue;
- double b = ((y - y1) * (y2 - y1) + (x - x1) * (x2 - x1)) / ((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
- //
- double distance2; // square of the distance
- if (b <= 0)
- distance2 = (x - x1) * (x - x1) + (y - y1) * (y - y1);
- else if (b >= 1)
- distance2 = (x - x2) * (x - x2) + (y - y2) * (y - y2);
- else{
- double x3 = x1 + b * (x2 - x1);
- double y3 = y1 + b * (y2 - y1);
- distance2 = (x - x3) * (x - x3) + (y - y3) * (y - y3);
- }
+ /**
+ * Returns the set of vertices from the original <tt>getGraph</tt> that
+ * are now visible. These vertices are equivalent to the ones passed in
+ * from the <tt>Graph</tt> argument to <tt>applyFilter()</tt>.
+ */
+ public Set getVisibleVertices(){
+ return visibleVertices;
+ }
- if (distance2 < minDistance){
- minDistance = distance2;
- closest = e;
- }
+ /**
+ * Forcibly moves a vertex to the (x,y) location by setting its x and y
+ * locations to the inputted location. Does not add the vertex to the
+ * "dontmove" list, and (in the default implementation) does not make any
+ * adjustments to the rest of the graph.
+ */
+ public void forceMove(Vertex picked, int x, int y){
+ if (!fix(picked)) {
+ Coordinates coord = getCoordinates(picked);
+ coord.setX(x);
+ coord.setY(y);
+ }
}
- return closest;
- }
- /**
- * Accessor for the graph that represets all vertices.
- *
- * @return the graph that contains all vertices.
- */
- public Graph getGraph(){
- return baseGraph;
- }
+ /**
+ * Adds the vertex to the DontMove list
+ */
+ public void lockVertex(Vertex v){
+ dontmove.add(v);
+ }
- /**
- * Returns the set of edges from the original <tt>getGraph</tt> that are
- * now visible. These edges are equivalent to the ones passed in from the
- * <tt>Graph</tt> argument to <tt>applyFilter()</tt>.
- */
- public Set getVisibleEdges(){
- return visibleEdges;
- }
+ /**
+ * Removes the vertex from the DontMove list
+ */
+ public void unlockVertex(Vertex v){
+ if (!fix(v)) {
+ dontmove.remove(v);
+ }
+ }
- /**
- * Returns the set of vertices from the original <tt>getGraph</tt> that
- * are now visible. These vertices are equivalent to the ones passed in
- * from the <tt>Graph</tt> argument to <tt>applyFilter()</tt>.
- */
- public Set getVisibleVertices(){
- return visibleVertices;
- }
+ public void setFix(Vertex v){
+ fix.add(v);
+ dontmove.add(v);
+ }
- /**
- * Forcibly moves a vertex to the (x,y) location by setting its x and y
- * locations to the inputted location. Does not add the vertex to the
- * "dontmove" list, and (in the default implementation) does not make any
- * adjustments to the rest of the graph.
- */
- public void forceMove(Vertex picked, int x, int y){
- if (!fix(picked)){
- Coordinates coord = getCoordinates(picked);
- coord.setX(x);
- coord.setY(y);
+ public void unsetFix(Vertex v){
+ fix.remove(v);
+ dontmove.remove(v);
}
- }
- /**
- * Adds the vertex to the DontMove list
- */
- public void lockVertex(Vertex v){
- dontmove.add(v);
- }
+ /**
+ * Applies the filter to the current graph. The default implementation
+ * merely makes fewer vertices available to the <tt>getVisibleVertices</tt>
+ * and <tt>getVisibleEdges</tt> methods.
+ *
+ * @see Layout#applyFilter(Graph g)
+ */
+ public synchronized void applyFilter(Graph g){
+ this.visibleGraph = g;
+ this.visibleVertices = GraphUtils.getEqualVertices(g.getVertices(), baseGraph);
+ this.visibleEdges = GraphUtils.getEqualEdges(g.getEdges(), baseGraph);
+ }
- /**
- * Removes the vertex from the DontMove list
- */
- public void unlockVertex(Vertex v){
- if (!fix(v)){
- dontmove.remove(v);
+ /**
+ * @author FLAW
+ * @return the notCalculatedVertices
+ */
+ public Set getNotCalculatedVertices(){
+ return notCalculatedVertices;
}
- }
- public void setFix(Vertex v){
- fix.add(v);
- dontmove.add(v);
- }
+ /**
+ * @author FLAW
+ * @param v
+ * @return is Vertex not calculated
+ */
+ public boolean isNotCalculatedVertx(Vertex v){
+ return notCalculatedVertices.contains(v);
+ }
- public void unsetFix(Vertex v){
- fix.remove(v);
- dontmove.remove(v);
- }
+ /**
+ * @author FLAW
+ * @param v
+ */
+ public void addNotCalculatedVertex(Vertex v){
+ notCalculatedVertices.add(v);
+ }
- /**
- * Applies the filter to the current graph. The default implementation
- * merely makes fewer vertices available to the <tt>getVisibleVertices</tt>
- * and <tt>getVisibleEdges</tt> methods.
- *
- * @see Layout#applyFilter(Graph g)
- */
- public synchronized void applyFilter(Graph g){
- this.visibleGraph = g;
- this.visibleVertices = GraphUtils.getEqualVertices(g.getVertices(), baseGraph);
- this.visibleEdges = GraphUtils.getEqualEdges(g.getEdges(), baseGraph);
- }
+ /**
+ * @author FLAW
+ * @param v
+ */
+ public void removeNotCalculatedVertex(Vertex v){
+ notCalculatedVertices.remove(v);
+ }
}
\ No newline at end of file
Modified: trunk/magicmapclient/src/edu/uci/ics/jung/visualization/SpringLayout.java
===================================================================
--- trunk/magicmapclient/src/edu/uci/ics/jung/visualization/SpringLayout.java 2007-12-20 12:51:48 UTC (rev 695)
+++ trunk/magicmapclient/src/edu/uci/ics/jung/visualization/SpringLayout.java 2007-12-20 12:59:48 UTC (rev 696)
@@ -1,9 +1,8 @@
/*
* Copyright (c) 2003, the JUNG Project and the Regents of the University of
- * California All rights reserved.
- *
- * This software is open-source under the BSD license; see either "license.txt"
- * or http://jung.sourceforge.net/license.txt for a description.
+ * California All rights reserved. This software is open-source under the BSD
+ * license; see either "license.txt" or http://jung.sourceforge.net/license.txt
+ * for a description.
*/
package edu.uci.ics.jung.visualization;
@@ -34,508 +33,521 @@
*/
public class SpringLayout extends AbstractLayout implements LayoutMutable {
- private static final Object SPRING_KEY = "temp_edu.uci.ics.jung.Spring_Visualization_Key";
- protected double stretch = 85.0; //70; // 0.70;
+ private static final Object SPRING_KEY = "temp_edu.uci.ics.jung.Spring_Visualization_Key";
+ protected double stretch = 85.0; //70; // 0.70;
- protected LengthFunction lengthFunction;
- protected RepulsionFunction repulsionFunction; // TH
- protected ForceFunction forceFunction; //TH
- protected CanLeaveMapFunction leaveFunction;
+ protected LengthFunction lengthFunction;
+ protected RepulsionFunction repulsionFunction; // TH
+ protected ForceFunction forceFunction; //TH
+ protected CanLeaveMapFunction leaveFunction;
- //protected int repulsion_range = 100;
- //protected double force_multiplier = 1.0 / 3.0;
+ //protected int repulsion_range = 100;
+ //protected double force_multiplier = 1.0 / 3.0;
- /**
- * Returns the status.
- */
- public String getStatus(){
- return null;
- }
+ /**
+ * Returns the status.
+ */
+ public String getStatus(){
+ return null;
+ }
- /**
- * Constructor for a SpringLayout for a raw graph with associated
- * dimension--the input knows how big the graph is. Defaults to the unit
- * length function.
- */
- public SpringLayout(Graph g) {
- this(g, UNITLENGTHFUNCTION, NoRepulsionFunction);
- }
+ /**
+ * Constructor for a SpringLayout for a raw graph with associated
+ * dimension--the input knows how big the graph is. Defaults to the unit
+ * length function.
+ */
+ public SpringLayout(Graph g) {
+ this(g, UNITLENGTHFUNCTION, NoRepulsionFunction);
+ }
- /**
- * Constructor for a SpringLayout for a raw graph with associated component.
- *
- * @param g
- * the input Graph
- * @param f
- * the length function
- */
- public SpringLayout(Graph g, LengthFunction f) {
- this(g,f,NoRepulsionFunction);
- }
+ /**
+ * Constructor for a SpringLayout for a raw graph with associated component.
+ *
+ * @param g
+ * the input Graph
+ * @param f
+ * the length function
+ */
+ public SpringLayout(Graph g, LengthFunction f) {
+ this(g, f, NoRepulsionFunction);
+ }
- /**
- * Constructor for a SpringLayout for a raw graph with associated component.
- *
- * @param g
- * the input Graph
- * @param f
- * the length function
- * @param r
- * the repulsion function
- */
- public SpringLayout(Graph g, LengthFunction f, RepulsionFunction r) {
- super(g);
- this.lengthFunction = f;
- this.repulsionFunction = r;
- this.forceFunction = DefaultForceFunction;
- this.leaveFunction = new CanLeaveMapFunction() {
+ /**
+ * Constructor for a SpringLayout for a raw graph with associated component.
+ *
+ * @param g
+ * the input Graph
+ * @param f
+ * the length function
+ * @param r
+ * the repulsion function
+ */
+ public SpringLayout(Graph g, LengthFunction f, RepulsionFunction r) {
+ super(g);
+ this.lengthFunction = f;
+ this.repulsionFunction = r;
+ this.forceFunction = DefaultForceFunction;
+ this.leaveFunction = new CanLeaveMapFunction() {
- public boolean canLeave(Vertex v){
- return false;
- }
- };
- }
+ public boolean canLeave(Vertex v){
+ return false;
+ }
+ };
+ }
- /**
- * @return the current value for the stretch parameter
- * @see #setStretch(double)
- */
- public double getStretch(){
- return stretch;
- }
+ /**
+ * @return the current value for the stretch parameter
+ * @see #setStretch(double)
+ */
+ public double getStretch(){
+ return stretch;
+ }
- /**
- * <p>Sets the stretch parameter for this instance. This value
- * specifies how much the degrees of an edge's incident vertices
- * should influence how easily the endpoints of that edge
- * can move (that is, that edge's tendency to change its length).</p>
- *
- * <p>The default value is 0.70. Positive values less than 1 cause
- * high-degree vertices to move less than low-degree vertices, and
- * values > 1 cause high-degree vertices to move more than
- * low-degree vertices. Negative values will have unpredictable
- * and inconsistent results.</p>
- * @param stretch
- */
- public void setStretch(double stretch){
- this.stretch = stretch;
- }
+ /**
+ * <p>Sets the stretch parameter for this instance. This value
+ * specifies how much the degrees of an edge's incident vertices
+ * should influence how easily the endpoints of that edge
+ * can move (that is, that edge's tendency to change its length).</p>
+ *
+ * <p>The default value is 0.70. Positive values less than 1 cause
+ * high-degree vertices to move less than low-degree vertices, and
+ * values > 1 cause high-degree vertices to move more than
+ * low-degree vertices. Negative values will have unpredictable
+ * and inconsistent results.</p>
+ * @param stretch
+ */
+ public void setStretch(double stretch){
+ this.stretch = stretch;
+ }
- public CanLeaveMapFunction getLeaveFunction(){
- return leaveFunction;
- }
+ public CanLeaveMapFunction getLeaveFunction(){
+ return leaveFunction;
+ }
- public void setLeaveFunction(CanLeaveMapFunction leaveFunction){
- this.leaveFunction = leaveFunction;
- }
+ public void setLeaveFunction(CanLeaveMapFunction leaveFunction){
+ this.leaveFunction = leaveFunction;
+ }
- protected void initialize_local(){
- for (Iterator iter = getGraph().getEdges().iterator(); iter.hasNext();){
- Edge e = (Edge) iter.next();
- SpringEdgeData sed = getSpringData(e);
- if (sed == null){
- sed = new SpringEdgeData(e);
- e.addUserDatum(getSpringKey(), sed, UserData.REMOVE);
- }
- calcEdgeLength(sed, lengthFunction);
+ protected void initialize_local(){
+ for (Iterator iter = getGraph().getEdges().iterator(); iter.hasNext();) {
+ Edge e = (Edge) iter.next();
+ SpringEdgeData sed = getSpringData(e);
+ if (sed == null) {
+ sed = new SpringEdgeData(e);
+ e.addUserDatum(getSpringKey(), sed, UserData.REMOVE);
+ }
+ calcEdgeLength(sed, lengthFunction);
+ }
}
- }
- Object key = null;
+ Object key = null;
- public Object getSpringKey(){
- if (key == null) key = new Pair(this, SPRING_KEY);
- return key;
- }
+ public Object getSpringKey(){
+ if (key == null) key = new Pair(this, SPRING_KEY);
+ return key;
+ }
- /**
- * (non-Javadoc)
- *
- * @see edu.uci.ics.jung.visualization.AbstractLayout#initialize_local_vertex(edu.uci.ics.jung.graph.Vertex)
- */
- protected void initialize_local_vertex(Vertex v){
- SpringVertexData vud = getSpringData(v);
- if (vud == null){
- vud = new SpringVertexData();
- v.addUserDatum(getSpringKey(), vud, UserData.REMOVE);
+ /**
+ * (non-Javadoc)
+ *
+ * @see edu.uci.ics.jung.visualization.AbstractLayout#initialize_local_vertex(edu.uci.ics.jung.graph.Vertex)
+ */
+ protected void initialize_local_vertex(Vertex v){
+ SpringVertexData vud = getSpringData(v);
+ if (vud == null) {
+ vud = new SpringVertexData();
+ v.addUserDatum(getSpringKey(), vud, UserData.REMOVE);
+ }
}
- }
- /* ------------------------- */
+ /* ------------------------- */
- protected void calcEdgeLength(SpringEdgeData sed, LengthFunction f){
- sed.length = f.getLength(sed.e);
- }
+ protected void calcEdgeLength(SpringEdgeData sed, LengthFunction f){
+ sed.length = f.getLength(sed.e);
+ }
- /* ------------------------- */
+ /* ------------------------- */
- /**
- * Relaxation step. Moves all nodes a smidge.
- */
- public void advancePositions(){
- for (Iterator iter = getVisibleVertices().iterator(); iter.hasNext();){
- Vertex v = (Vertex) iter.next();
- SpringVertexData svd = getSpringData(v);
- if (svd == null){
- System.out.println("How confusing!");
- continue;
- }
- svd.dx /= 4;
- svd.dy /= 4;
- svd.edgedx = svd.edgedy = 0;
- svd.repulsiondx = svd.repulsiondy = 0;
- }
+ /**
+ * Relaxation step. Moves all nodes a smidge.
+ */
+ public void advancePositions(){
+ for (Iterator iter = getVisibleVertices().iterator(); iter.hasNext();) {
+ Vertex v = (Vertex) iter.next();
+ if (isNotCalculatedVertx(v)) {
+ continue;
+ }
+ SpringVertexData svd = getSpringData(v);
+ if (svd == null) {
+ System.out.println("How confusing!");
+ continue;
+ }
+ svd.dx /= 4;
+ svd.dy /= 4;
+ svd.edgedx = svd.edgedy = 0;
+ svd.repulsiondx = svd.repulsiondy = 0;
+ }
- try{
- SwingUtilities.invokeAndWait(new Runnable() {
+ try {
+ SwingUtilities.invokeAndWait(new Runnable() {
- public void run(){
- relaxEdges();
- calculateRepulsion();
- moveNodes();
+ public void run(){
+ relaxEdges();
+ calculateRepulsion();
+ moveNodes();
+ }
+ });
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
- });
- } catch (InterruptedException e){
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (InvocationTargetException e){
- // TODO Auto-generated catch block
- e.printStackTrace();
+
}
- }
+ protected Vertex getAVertex(Edge e){
+ Vertex v = (Vertex) e.getIncidentVertices().iterator().next();
+ return v;
+ }
- protected Vertex getAVertex(Edge e){
- Vertex v = (Vertex) e.getIncidentVertices().iterator().next();
- return v;
- }
+ protected void relaxEdges(){
+ for (Iterator i = getVisibleEdges().iterator(); i.hasNext();) {
+ Edge e = (Edge) i.next();
- protected void relaxEdges(){
- for (Iterator i = getVisibleEdges().iterator(); i.hasNext();){
- Edge e = (Edge) i.next();
+ Vertex v1 = getAVertex(e);
+ Vertex v2 = e.getOpposite(v1);
- Vertex v1 = getAVertex(e);
- Vertex v2 = e.getOpposite(v1);
+ double vx = getX(v1) - getX(v2);
+ double vy = getY(v1) - getY(v2);
+ double len = Math.sqrt(vx * vx + vy * vy);
- double vx = getX(v1) - getX(v2);
- double vy = getY(v1) - getY(v2);
- double len = Math.sqrt(vx * vx + vy * vy);
+ double desiredLen = getLength(e);
- double desiredLen = getLength(e);
+ // round from zero, if needed [zero would be Bad.].
+ len = (len == 0) ? .0001 : len;
- // round from zero, if needed [zero would be Bad.].
- len = (len == 0) ? .0001 : len;
+ double force_multiplier = forceFunction.getForce(v1, v2);
- double force_multiplier = forceFunction.getForce(v1, v2);
+ double f = force_multiplier * (desiredLen - len) / len;
- double f = force_multiplier * (desiredLen - len) / len;
+ f = f * Math.pow(stretch / 100.0, (v1.degree() + v2.degree() - 2));
- f = f * Math.pow(stretch / 100.0, (v1.degree() + v2.degree() - 2));
+ // the actual movement distance 'dx' is the force multiplied by the
+ // distance to go.
+ double dx = f * vx;
+ double dy = f * vy;
+ SpringVertexData v1D, v2D;
+ v1D = getSpringData(v1);
+ v2D = getSpringData(v2);
- // the actual movement distance 'dx' is the force multiplied by the
- // distance to go.
- double dx = f * vx;
- double dy = f * vy;
- SpringVertexData v1D, v2D;
- v1D = getSpringData(v1);
- v2D = getSpringData(v2);
+ SpringEdgeData sed = getSpringData(e);
+ sed.f = f;
- SpringEdgeData sed = getSpringData(e);
- sed.f = f;
+ v1D.edgedx += dx;
+ v1D.edgedy += dy;
+ v2D.edgedx += -dx;
+ v2D.edgedy += -dy;
+ }
- v1D.edgedx += dx;
- v1D.edgedy += dy;
- v2D.edgedx += -dx;
- v2D.edgedy += -dy;
}
- }
+ protected void calculateRepulsion(){
+ for (Iterator iter = getVisibleVertices().iterator(); iter.hasNext();) {
+ Vertex v = (Vertex) iter.next();
+ if (isNotCalculatedVertx(v)) {
+ continue;
+ }
+ if (dontMove(v)) continue;
- protected void calculateRepulsion(){
- for (Iterator iter = getVisibleVertices().iterator(); iter.hasNext();){
- Vertex v = (Vertex) iter.next();
- if (dontMove(v)) continue;
+ SpringVertexData svd = getSpringData(v);
+ double dx = 0, dy = 0;
- SpringVertexData svd = getSpringData(v);
- double dx = 0, dy = 0;
+ double repulsion_range = 0;
- double repulsion_range = 0;
+ for (Iterator iter2 = getVisibleVertices().iterator(); iter2.hasNext();) {
- for (Iterator iter2 = getVisibleVertices().iterator(); iter2.hasNext();){
+ Vertex v2 = (Vertex) iter2.next();
+ if (v == v2) continue;
- Vertex v2 = (Vertex) iter2.next();
- if (v == v2) continue;
+ // TH
+ repulsion_range = this.repulsionFunction.getRepulsion(v, v2);
- // TH
- repulsion_range = this.repulsionFunction.getRepulsion(v, v2);
-
- double vx = getX(v) - getX(v2);
- double vy = getY(v) - getY(v2);
- double distance = vx * vx + vy * vy;
- if (distance == 0){
- dx += Math.random();
- dy += Math.random();
- } else if (distance < repulsion_range * repulsion_range){
- double factor = 1;
- dx += factor * vx / Math.pow(distance, 2);
- dy += factor * vy / Math.pow(distance, 2);
+ double vx = getX(v) - getX(v2);
+ double vy = getY(v) - getY(v2);
+ double distance = vx * vx + vy * vy;
+ if (distance == 0) {
+ dx += Math.random();
+ dy += Math.random();
+ } else if (distance < repulsion_range * repulsion_range) {
+ double factor = 1;
+ dx += factor * vx / Math.pow(distance, 2);
+ dy += factor * vy / Math.pow(distance, 2);
+ }
+ }
+ double dlen = dx * dx + dy * dy;
+ if (dlen > 0) {
+ dlen = Math.sqrt(dlen) / 2;
+ svd.repulsiondx += dx / dlen;
+ svd.repulsiondy += dy / dlen;
+ }
}
- }
- double dlen = dx * dx + dy * dy;
- if (dlen > 0){
- dlen = Math.sqrt(dlen) / 2;
- svd.repulsiondx += dx / dlen;
- svd.repulsiondy += dy / dlen;
- }
}
- }
- protected void moveNodes(){
+ protected void moveNodes(){
- synchronized (getCurrentSize()){
+ synchronized (getCurrentSize()) {
- for (Iterator i = getVisibleVertices().iterator(); i.hasNext();){
- Vertex v = (Vertex) i.next();
- if (dontMove(v)) continue;
- SpringVertexData vd = getSpringData(v);
- Coordinates xyd = getCoordinates(v);
+ for (Iterator i = getVisibleVertices().iterator(); i.hasNext();) {
+ Vertex v = (Vertex) i.next();
+ if (isNotCalculatedVertx(v)) {
+ continue;
+ }
+ if (dontMove(v)) continue;
+ SpringVertexData vd = getSpringData(v);
+ Coordinates xyd = getCoordinates(v);
- vd.dx += vd.repulsiondx + vd.edgedx;
- vd.dy += vd.repulsiondy + vd.edgedy;
+ vd.dx += vd.repulsiondx + vd.edgedx;
+ vd.dy += vd.repulsiondy + vd.edgedy;
- // keeps nodes from moving any faster than 5 per time unit
- xyd.addX(Math.max(-5, Math.min(5, vd.dx)));
- xyd.addY(Math.max(-5, Math.min(5, vd.dy)));
+ // keeps nodes from moving any faster than 5 per time unit
+ xyd.addX(Math.max(-5, Math.min(5, vd.dx)));
+ xyd.addY(Math.max(-5, Math.min(5, vd.dy)));
- int width = getCurrentSize().width;
- int height = getCurrentSize().height;
+ int width = getCurrentSize().width;
+ int height = getCurrentSize().height;
- // Bestimmte Knoten sollen die Karte verlassen dr\xFCfen
- if (!leaveFunction.canLeave(v)){
- if (xyd.getX() < 0){
- xyd.setX(0);
- } else if (xyd.getX() > width){
- xyd.setX(width);
- }
- if (xyd.getY() < 0){
- xyd.setY(0);
- } else if (xyd.getY() > height){
- xyd.setY(height);
- }
+ // Bestimmte Knoten sollen die Karte verlassen dr\xFCfen
+ if (!leaveFunction.canLeave(v)) {
+ if (xyd.getX() < 0) {
+ xyd.setX(0);
+ } else if (xyd.getX() > width) {
+ xyd.setX(width);
+ }
+ if (xyd.getY() < 0) {
+ xyd.setY(0);
+ } else if (xyd.getY() > height) {
+ xyd.setY(height);
+ }
+ }
+
+ }
}
- }
}
- }
+ public SpringVertexData getSpringData(Vertex v){
+ return (SpringVertexData) (v.getUserDatum(getSpringKey()));
+ }
- public SpringVertexData getSpringData(Vertex v){
- return (SpringVertexData) (v.getUserDatum(getSpringKey()));
- }
+ public SpringEdgeData getSpringData(Edge e){
+ try {
+ return (SpringEdgeData) (e.getUserDatum(getSpringKey()));
+ } catch (ClassCastException cce) {
+ System.out.println(e.getUserDatum(getSpringKey()).getClass());
+ throw cce;
+ }
+ }
- public SpringEdgeData getSpringData(Edge e){
- try{
- return (SpringEdgeData) (e.getUserDatum(getSpringKey()));
- } catch (ClassCastException cce){
- System.out.println(e.getUserDatum(getSpringKey()).getClass());
- throw cce;
+ public double getLength(Edge e){
+ double d = ((SpringEdgeData) e.getUserDatum(getSpringKey())).length;
+ return d;
}
- }
- public double getLength(Edge e){
- double d = ((SpringEdgeData) e.getUserDatum(getSpringKey())).length;
- return d;
- }
+ public void setLength(Edge e, double length){
+ ((SpringEdgeData) e.getUserDatum(getSpringKey())).length = length;
+ }
- public void setLength(Edge e, double length){
- ((SpringEdgeData) e.getUserDatum(getSpringKey())).length = length;
- }
+ /* --------------- Repulsion Function------------------ */
- /* --------------- Repulsion Function------------------ */
+ /**
+ * Extension for PACW: Make the Repulsion configurable.
+ *
+ *
+ * @author thuebner
+ */
+ public static interface RepulsionFunction {
- /**
- * Extension for PACW: Make the Repulsion configurable.
- *
- *
- * @author thuebner
- */
- public static interface RepulsionFunction {
+ public double getRepulsion(Vertex v1, Vertex v2);
+ }
+ public static RepulsionFunction NoRepulsionFunction = new RepulsionFunction() {
- public double getRepulsion(Vertex v1, Vertex v2);
- }
- public static RepulsionFunction NoRepulsionFunction = new RepulsionFunction(){
- public double getRepulsion(Vertex v1, Vertex v2) {
- return 0;
- }
- };
- /**
- * Extension for PACW: Make the Repulsion configurable.
- *
- *
- * @author thuebner
- */
- public static interface ForceFunction {
+ public double getRepulsion(Vertex v1, Vertex v2){
+ return 0;
+ }
+ };
/**
- * Sets the force multiplier for this instance. This value is used to
- * specify how strongly an edge "wants" to be its default length
- * (higher values indicate a greater attraction for the default length),
- * which affects how much its endpoints move at each timestep.
- * The default value is 1/3. A value of 0 turns off any attempt by the
- * layout to cause edges to conform to the default length. Negative
- * values cause long edges to get longer and short edges to get shorter; use
- * at your own risk.
- * @param v1
- * @param v2
+ * Extension for PACW: Make the Repulsion configurable.
+ *
+ *
+ * @author thuebner
*/
+ public static interface ForceFunction {
- public double getForce(Vertex v1, Vertex v2);
- }
+ /**
+ * Sets the force multiplier for this instance. This value is used to
+ * specify how strongly an edge "wants" to be its default length
+ * (higher values indicate a greater attraction for the default length),
+ * which affects how much its...
[truncated message content] |
|
From: <fle...@us...> - 2007-12-20 12:52:31
|
Revision: 695
http://magicmap.svn.sourceforge.net/magicmap/?rev=695&view=rev
Author: flederohr
Date: 2007-12-20 04:51:48 -0800 (Thu, 20 Dec 2007)
Log Message:
-----------
improved ServerDialog
Modified Paths:
--------------
trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java 2007-11-30 15:38:32 UTC (rev 694)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java 2007-12-20 12:51:48 UTC (rev 695)
@@ -11,7 +11,6 @@
import javax.swing.ButtonGroup;
import javax.swing.JButton;
-import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
@@ -54,11 +53,11 @@
private JRadioButton useServer;
- private JLabel useNoServerLabel;
+ private JLabel useNoServerLabel;
- private JSeparator seperator;
+ private JSeparator seperator;
- private ButtonGroup radioButtonGroup;
+ private ButtonGroup radioButtonGroup;
/**
* Static method to create and open a ConnectServerDialog
@@ -114,18 +113,18 @@
builder.setTopBottomDistance("noserver", "header", 20);
useNoServer.setActionCommand("USENOSERVER");
useNoServer.addActionListener(this);
-
+
// Label f\xFCr "lokale Verbindung"
useNoServerLabel = builder.addLabel(GUIUtils.i18n("nonserverconnect"), "noserverlabel");
builder.setLeftRightDistance("noserverlabel", "noserver", 10);
builder.setTopTopDistance("noserverlabel", "noserver", 0);
-
+
// Trennlinie
seperator = builder.addSeparator("seperator");
builder.setLeft("seperator", 3);
builder.setRightRightDistance("seperator", null, -3);
builder.setTopBottomDistance("seperator", "noserver,noserverlabel", 10);
-
+
// RadioButton f\xFCr "Server-Verbindung"
useServer = new JRadioButton();
builder.add(useServer, "server");
@@ -138,7 +137,7 @@
// Hostname
hostname = builder.addComboBox(Settings.getDefaultServerList(), "hostcombo");
builder.addLabel(GUIUtils.i18n("hostname"), "hostlabel", hostname);
- builder.setLeftLeftDistance("hostlabel","noserverlabel", 0);
+ builder.setLeftLeftDistance("hostlabel", "noserverlabel", 0);
hostname.setEditable(true);
builder.setLeftRightDistance("hostcombo", "hostlabel", 15);
builder.setRightLeftDistance("hostcombo", "hostcombo", 178);
@@ -151,7 +150,7 @@
// Port
port = builder.addTextField("portedit");
builder.addLabel(GUIUtils.i18n("port"), "portlabel", port);
- builder.setLeftRightDistance("portlabel","hostcombo", 10);
+ builder.setLeftRightDistance("portlabel", "hostcombo", 10);
builder.setLeftRightDistance("portedit", "portlabel", 5);
builder.setTopTopDistance("portlabel", "hostlabel,hostcombo", 0);
builder.setTopTopDistance("portedit", "hostlabel,hostcombo", 0);
@@ -161,8 +160,8 @@
// Clientname
clientname = builder.addTextField("clientname");
builder.addLabel(GUIUtils.i18n("clientname"), "clientlabel", clientname);
- builder.setLeftLeftDistance("clientlabel","hostlabel", 0);
- builder.setLeftLeftDistance("clientname","hostcombo", 0);
+ builder.setLeftLeftDistance("clientlabel", "hostlabel", 0);
+ builder.setLeftLeftDistance("clientname", "hostcombo", 0);
builder.setRightRightDistance("clientname", "hostcombo", 0);
builder.setTopBottomDistance("clientlabel", "hostlabel,hostcombo", 10);
builder.setTopBottomDistance("clientname", "hostlabel,hostcombo", 10);
@@ -172,8 +171,8 @@
password = new JPasswordField();
builder.add(password, "password");
builder.addLabel(GUIUtils.i18n("password"), "passwordlabel", password);
- builder.setLeftLeftDistance("passwordlabel","clientlabel", 0);
- builder.setLeftLeftDistance("password","clientname", 0);
+ builder.setLeftLeftDistance("passwordlabel", "clientlabel", 0);
+ builder.setLeftLeftDistance("password", "clientname", 0);
builder.setRightRightDistance("password", "hostcombo", 0);
builder.setTopBottomDistance("passwordlabel", "clientlabel,clientname", 10);
builder.setTopBottomDistance("password", "clientlabel,clientname", 10);
@@ -183,7 +182,7 @@
radioButtonGroup = new ButtonGroup();
radioButtonGroup.add(useNoServer);
radioButtonGroup.add(useServer);
-
+
// OK / Abbrechen
if (info.useNoServer)
ok = builder.createButton(GUIUtils.i18n("continue"), "OK", this);
@@ -197,7 +196,7 @@
builder.setBottomBottomDistance("okcancel", null, -10);
// Defaults setzen
- this.password.setText(serverConnectionInfo.password);
+ // this.password.setText(serverConnectionInfo.password);
this.clientname.setText(serverConnectionInfo.name);
this.hostname.setSelectedItem(serverConnectionInfo.hostname);
this.port.setText("" + serverConnectionInfo.port);
@@ -222,6 +221,10 @@
serverConnectionInfo.password = new String(this.password.getPassword());
serverConnectionInfo.name = this.clientname.getText();
serverConnectionInfo.useNoServer = this.useNoServer.isSelected();
+ if (useNoServer.isSelected()) {
+ if (serverConnectionInfo.name == "") serverConnectionInfo.name = System.getProperty("user.name");
+ serverConnectionInfo.password = System.getProperty("user.name");
+ }
try {
serverConnectionInfo.port = Integer.parseInt(this.port.getText());
} catch (NumberFormatException n) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fle...@us...> - 2007-11-30 16:18:04
|
Revision: 694
http://magicmap.svn.sourceforge.net/magicmap/?rev=694&view=rev
Author: flederohr
Date: 2007-11-30 07:38:32 -0800 (Fri, 30 Nov 2007)
Log Message:
-----------
Use of external positioninginformations for foreign clients.
Sending of local positioninginformations to the server.
Modified Paths:
--------------
trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java
trunk/magicmapclient/src/net/sf/magicmap/client/controller/SOAPServerManager.java
trunk/magicmapclient/src/net/sf/magicmap/client/controller/ServerPoller.java
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java 2007-11-19 14:49:58 UTC (rev 693)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/controller/PollHandler.java 2007-11-30 15:38:32 UTC (rev 694)
@@ -39,7 +39,7 @@
*/
public class PollHandler implements ServerPollerListener {
- private Controller controller;
+ private Controller controller;
private final static Collection<PollHandlerListener> listeners = new ArrayList<PollHandlerListener>();
@@ -100,7 +100,7 @@
return;
}
log.info("Position with id " + position.getId() + " was deleted but not handled.");
- firePositionCreatedOrUpdatedOrDeleted();
+ firePositionCreatedOrUpdatedOrDeleted();
return;
} else {
// Neues Positionsobjekt oder altes wurde
@@ -211,7 +211,7 @@
// Alle momentan gesehenen AccessPoints
// merken
- ArrayList <AccessPointNode> seenAps = location.getSeenAccessPoints();
+ ArrayList<AccessPointNode> seenAps = location.getSeenAccessPoints();
for (SimpleScanResultDTO r : sr) {
String mac = r.getMacAP();
// Gibt es ggf. einen AP mit der
@@ -301,6 +301,7 @@
client = new ClientNode(nodeModel);
client.setMacAddress(clientdto.getMac());
client.setName(clientdto.getName());
+ client.setId(position.getId());
nodeModel.addNode(client);
}
@@ -308,12 +309,12 @@
// 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);
+ // Position \xE4ndern
+ client.setPosition(position.getPosX(), position.getPosY(), position.getPosZ());
+ // FixierungsStatus setzen
+ client.setFix(position.isFixed());
+
+ // TODO: ist die id hier wirklich notwendig?
client.setId(position.getId());
// Signalst\xE4rken usw. verwaltet der scannende
@@ -327,7 +328,7 @@
SignalCharacterDTO sc = position.getCharacter();
SimpleScanResultDTO[] sr = sc.getSimpleScanResults();
// Alle momentan gesehenen AccessPoints merken
-
+
if (sr != null) {
double[] signalLevels = new double[sr.length];
String[] macs = new String[sr.length];
@@ -435,7 +436,7 @@
public static void addListener(PollHandlerListener listener){
listeners.add(listener);
}
-
+
public void removeListener(PollHandlerListener listener){
listeners.remove(listener);
}
@@ -478,5 +479,5 @@
phl.geoPosCreatedOrUpdatedOrDeleted();
}
}
-
+
}
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/controller/SOAPServerManager.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/controller/SOAPServerManager.java 2007-11-19 14:49:58 UTC (rev 693)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/controller/SOAPServerManager.java 2007-11-30 15:38:32 UTC (rev 694)
@@ -8,6 +8,9 @@
import java.rmi.RemoteException;
import java.util.Collection;
+import edu.uci.ics.jung.graph.Vertex;
+import edu.uci.ics.jung.visualization.SpringLayout;
+
import net.sf.magicmap.client.delegate.MapDelegate;
import net.sf.magicmap.client.delegate.PositionDelegate;
import net.sf.magicmap.client.delegate.SessionDelegate;
@@ -28,6 +31,8 @@
import net.sf.magicmap.client.interfaces.ServerConnectCallback;
import net.sf.magicmap.client.interfaces.ServerDisconnectCallback;
import net.sf.magicmap.client.meta.MapInfo;
+import net.sf.magicmap.client.model.location.jung.JungNodePlacer;
+import net.sf.magicmap.client.model.node.ClientNode;
import net.sf.magicmap.client.model.node.GeoPos;
import net.sf.magicmap.client.utils.Settings;
import net.sf.magicmap.client.utils.Version;
@@ -614,8 +619,12 @@
synchronized (SOAPServerManager.mutex) {
if (!isConnected()) return;
try {
- int x = SOAPServerManager.this.controller.getClientPosX();
- int y = SOAPServerManager.this.controller.getClientPosY();
+ // TODO: abfrage ist im moment nicht aus dem Nodemodel m\xF6glich, daher behelfsl\xF6sung direkt aus dem Layout
+ ClientNode client = Controller.getInstance().getClient();
+ Vertex clientVertex = ((JungNodePlacer) Controller.getInstance().getNodeModel().getNodePlacer()).findVertex(client);
+ SpringLayout layout = ((JungNodePlacer) Controller.getInstance().getNodeModel().getNodePlacer()).getLayout();
+ int x = (int) layout.getX(clientVertex);
+ int y = (int) layout.getY(clientVertex);
int z = SOAPServerManager.this.controller.getClientPosZ();
if (x < 0)
x = 0;
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/controller/ServerPoller.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/controller/ServerPoller.java 2007-11-19 14:49:58 UTC (rev 693)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/controller/ServerPoller.java 2007-11-30 15:38:32 UTC (rev 694)
@@ -40,8 +40,8 @@
}
public void start(){
- this.timer.scheduleAtFixedRate(builderTimerTask(), Settings.POLL_DELAY, Settings.getPollIntevall());
- this.timer.scheduleAtFixedRate(geoPointsTimerTask(), Settings.POLL_DELAY + 1000, 120000);
+ this.timer.scheduleAtFixedRate(pollPositionsTimerTask(), Settings.POLL_DELAY, Settings.getPollIntevall());
+ this.timer.scheduleAtFixedRate(pollGeoPointsTimerTask(), Settings.POLL_DELAY + 1000, 120000);
}
public void stop(){
@@ -54,7 +54,7 @@
* um nach \xC4nderungen zu fragen.
* @return
*/
- public TimerTask builderTimerTask(){
+ public TimerTask pollPositionsTimerTask(){
return new TimerTask() {
@Override
@@ -72,7 +72,7 @@
};
}
- public TimerTask geoPointsTimerTask(){
+ public TimerTask pollGeoPointsTimerTask(){
return new TimerTask() {
@Override
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-11-19 15:02:42
|
Revision: 692
http://magicmap.svn.sourceforge.net/magicmap/?rev=692&view=rev
Author: anweiss
Date: 2007-11-19 06:33:23 -0800 (Mon, 19 Nov 2007)
Log Message:
-----------
added i18n Strings for driver details
Modified Paths:
--------------
trunk/magicmapclient/res/screentext.properties
trunk/magicmapclient/res/screentext_de_DE.properties
Modified: trunk/magicmapclient/res/screentext.properties
===================================================================
--- trunk/magicmapclient/res/screentext.properties 2007-11-09 13:27:52 UTC (rev 691)
+++ trunk/magicmapclient/res/screentext.properties 2007-11-19 14:33:23 UTC (rev 692)
@@ -128,4 +128,13 @@
plugins.dependencies=Dependencies
plugins.detailview=Detail View
plugins.name=Name
-plugins.version=Version
\ No newline at end of file
+plugins.version=Version
+
+interface.Driver=Driver
+interface.Vendor=Vendor
+interface.Provider=Provider
+interface.Date=Date
+interface.Version=Version
+interface.INF=INF file
+interface.Type=Type
+interface.SupportedTypes=Radio types supported
\ No newline at end of file
Modified: trunk/magicmapclient/res/screentext_de_DE.properties
===================================================================
--- trunk/magicmapclient/res/screentext_de_DE.properties 2007-11-09 13:27:52 UTC (rev 691)
+++ trunk/magicmapclient/res/screentext_de_DE.properties 2007-11-19 14:33:23 UTC (rev 692)
@@ -128,4 +128,13 @@
plugins.dependencies=Abh\xE4ngigkeiten
plugins.detailview=Detailansicht
plugins.name=Name
-plugins.version=Version
\ No newline at end of file
+plugins.version=Version
+
+interface.Driver=Treiber
+interface.Vendor=Hersteller
+interface.Provider=Anbieter
+interface.Date=Datum
+interface.Version=Version
+interface.INF=INF-Datei
+interface.Type=Typ
+interface.SupportedTypes=Unterst\xFCtzte Funktypen
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-11-19 14:50:22
|
Revision: 693
http://magicmap.svn.sourceforge.net/magicmap/?rev=693&view=rev
Author: anweiss
Date: 2007-11-19 06:49:58 -0800 (Mon, 19 Nov 2007)
Log Message:
-----------
Added a class which stores the keys that should be used by stumblers in the infos hashmap.
Previous commit did not work?!?
Added Paths:
-----------
trunk/magicmapclient/src/net/sf/magicmap/client/utils/DriverInformations.java
Added: trunk/magicmapclient/src/net/sf/magicmap/client/utils/DriverInformations.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/utils/DriverInformations.java (rev 0)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/utils/DriverInformations.java 2007-11-19 14:49:58 UTC (rev 693)
@@ -0,0 +1,13 @@
+package net.sf.magicmap.client.utils;
+
+
+public final class DriverInformations {
+ public final static String DRIVER = "DRIVER";
+ public final static String VENDOR = "VENDOR";
+ public final static String PROVIDER= "PROVIDER";
+ public final static String DATE = "DATE";
+ public final static String VERSION = "VERSION";
+ public final static String INFFILE = "INFFILE";
+ public final static String TYPE = "TYPE";
+ public final static String SUPPORTEDTYPES = "SUPPORTEDTYPES";
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-11-09 13:27:54
|
Revision: 691
http://magicmap.svn.sourceforge.net/magicmap/?rev=691&view=rev
Author: anweiss
Date: 2007-11-09 05:27:52 -0800 (Fri, 09 Nov 2007)
Log Message:
-----------
fixed action for useServer in ConnectServerDialog
Modified Paths:
--------------
trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java 2007-11-09 11:56:27 UTC (rev 690)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java 2007-11-09 13:27:52 UTC (rev 691)
@@ -132,8 +132,8 @@
useServer.setSelected(!serverConnectionInfo.useNoServer);
builder.setLeftLeftDistance("server", "noserver", 0);
builder.setTopBottomDistance("server", "seperator", 10);
- useNoServer.setActionCommand("USESERVER");
- useNoServer.addActionListener(this);
+ useServer.setActionCommand("USESERVER");
+ useServer.addActionListener(this);
// Hostname
hostname = builder.addComboBox(Settings.getDefaultServerList(), "hostcombo");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fle...@us...> - 2007-11-09 11:56:30
|
Revision: 690
http://magicmap.svn.sourceforge.net/magicmap/?rev=690&view=rev
Author: flederohr
Date: 2007-11-09 03:56:27 -0800 (Fri, 09 Nov 2007)
Log Message:
-----------
Changed Connection-Dialog
Modified Paths:
--------------
trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java 2007-11-08 13:33:19 UTC (rev 689)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java 2007-11-09 11:56:27 UTC (rev 690)
@@ -9,13 +9,17 @@
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
+import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
+import javax.swing.JRadioButton;
+import javax.swing.JSeparator;
import javax.swing.JTextField;
import net.sf.magicmap.client.gui.MainGUI;
@@ -44,10 +48,18 @@
private JTextField clientname;
private JTextField port;
private JPasswordField password;
- private JCheckBox useNoServer;
+ private JRadioButton useNoServer;
private JButton ok;
private JButton cancel;
+ private JRadioButton useServer;
+
+ private JLabel useNoServerLabel;
+
+ private JSeparator seperator;
+
+ private ButtonGroup radioButtonGroup;
+
/**
* Static method to create and open a ConnectServerDialog
* @param owner - the owner frame for the dialog
@@ -78,52 +90,60 @@
}
});
- setSize(300, 300);
+ setSize(360, 300);
this.setResizable(false);
this.serverConnectionInfo = info;
RelativeLayout layout = new RelativeLayout();
RelativePanelBuilder builder = new RelativePanelBuilder(layout);
- // OK / Abbrechen
- if (info.useNoServer)
- ok = builder.createButton(GUIUtils.i18n("continue"), "OK", this);
- else
- ok = builder.createButton(GUIUtils.i18n("connect"), "OK", this);
- cancel = builder.createButton(GUIUtils.i18n("cancel"), "CANCEL", this);
+ // Kopf
+ builder
+ .addDialogHeader("<html><b>" + GUIUtils.i18n("createconnectiontopacwserver") + "</b><br>"
+ + GUIUtils.i18n("createconnectiontopacwserverhint") + "</html>", GUIConstants.ICON_SERVER_BIG,
+ "header");
+ builder.setTop("header", 0);
+ builder.setLeft("header", 0);
+ builder.setRightRightDistance("header", null, 0);
- builder.addOKCancelButtonBar(ok, cancel, "okcancel");
- builder.setLeftLeftDistance("okcancel", null, 10);
- builder.setRightRightDistance("okcancel", null, -10);
- builder.setBottomBottomDistance("okcancel", null, -10);
+ // RadioButton f\xFCr "lokale Verbindung"
+ useNoServer = new JRadioButton();
+ builder.add(useNoServer, "noserver");
+ useNoServer.setSelected(serverConnectionInfo.useNoServer);
+ builder.setLeft("noserver", 20);
+ builder.setTopBottomDistance("noserver", "header", 20);
+ useNoServer.setActionCommand("USENOSERVER");
+ useNoServer.addActionListener(this);
+
+ // Label f\xFCr "lokale Verbindung"
+ useNoServerLabel = builder.addLabel(GUIUtils.i18n("nonserverconnect"), "noserverlabel");
+ builder.setLeftRightDistance("noserverlabel", "noserver", 10);
+ builder.setTopTopDistance("noserverlabel", "noserver", 0);
+
+ // Trennlinie
+ seperator = builder.addSeparator("seperator");
+ builder.setLeft("seperator", 3);
+ builder.setRightRightDistance("seperator", null, -3);
+ builder.setTopBottomDistance("seperator", "noserver,noserverlabel", 10);
+
+ // RadioButton f\xFCr "Server-Verbindung"
+ useServer = new JRadioButton();
+ builder.add(useServer, "server");
+ useServer.setSelected(!serverConnectionInfo.useNoServer);
+ builder.setLeftLeftDistance("server", "noserver", 0);
+ builder.setTopBottomDistance("server", "seperator", 10);
+ useNoServer.setActionCommand("USESERVER");
+ useNoServer.addActionListener(this);
- // Clientname
- clientname = builder.addTextField("clientname");
- builder.addLabel(GUIUtils.i18n("clientname"), "clientlabel", clientname);
- builder.setLeft("clientlabel", 20);
- builder.setRightRightDistance("clientname", null, -20);
- builder.setTopBottomDistance("clientlabel", "header", 20);
- builder.setTopBottomDistance("clientname", "header", 20);
- clientname.setToolTipText(GUIUtils.i18n("clientnametooltip"));
-
- // Password
- password = new JPasswordField();
- builder.add(password, "password");
- builder.addLabel(GUIUtils.i18n("password"), "passwordlabel", password);
- builder.setLeft("passwordlabel", 20);
- builder.setRightRightDistance("password", null, -20);
- builder.setTopBottomDistance("passwordlabel", "clientlabel,clientname", 5);
- builder.setTopBottomDistance("password", "clientlabel,clientname", 5);
- password.setToolTipText(GUIUtils.i18n("passwordtooltip"));
-
// Hostname
hostname = builder.addComboBox(Settings.getDefaultServerList(), "hostcombo");
builder.addLabel(GUIUtils.i18n("hostname"), "hostlabel", hostname);
- builder.setLeft("hostlabel", 20);
+ builder.setLeftLeftDistance("hostlabel","noserverlabel", 0);
hostname.setEditable(true);
- builder.setRightRightDistance("hostcombo", null, -20);
- builder.setTopBottomDistance("hostlabel", "passwordlabel,password", 10);
- builder.setTopBottomDistance("hostcombo", "passwordlabel,password", 10);
+ builder.setLeftRightDistance("hostcombo", "hostlabel", 15);
+ builder.setRightLeftDistance("hostcombo", "hostcombo", 178);
+ builder.setTopTopDistance("hostcombo", "server", 0);
+ builder.setTopTopDistance("hostlabel", "server", 0);
hostname.setActionCommand("HOSTNAME");
hostname.addActionListener(this);
hostname.setToolTipText(GUIUtils.i18n("hostnametooltip"));
@@ -131,41 +151,58 @@
// Port
port = builder.addTextField("portedit");
builder.addLabel(GUIUtils.i18n("port"), "portlabel", port);
- builder.setLeft("portlabel", 20);
- builder.setTopBottomDistance("portlabel", "hostlabel,hostcombo", 5);
- builder.setRightRightDistance("portedit", null, -20);
- builder.setLeftRightDistance("portedit", "portlabel,hostlabel,clientlabel,passwordlabel", 5);
- builder.setTopBottomDistance("portedit", "hostlabel,hostcombo,clientlabel,passwordlabel", 5);
- builder.setLeftRightDistance("hostcombo", "portlabel,hostlabel,clientlabel,passwordlabel", 5);
- builder.setLeftRightDistance("clientname", "portlabel,hostlabel,clientlabel,passwordlabel", 5);
- builder.setLeftRightDistance("password", "portlabel,hostlabel,clientlabel,passwordlabel", 5);
+ builder.setLeftRightDistance("portlabel","hostcombo", 10);
+ builder.setLeftRightDistance("portedit", "portlabel", 5);
+ builder.setTopTopDistance("portlabel", "hostlabel,hostcombo", 0);
+ builder.setTopTopDistance("portedit", "hostlabel,hostcombo", 0);
+ builder.setRightRightDistance("portedit", null, -10);
port.setToolTipText(GUIUtils.i18n("porttooltip"));
- // CheckBox f\xFCr "lokale Verbindung"
- useNoServer = builder.addCheckBox(GUIUtils.i18n("nonserverconnect"), "nonserver",
- serverConnectionInfo.useNoServer);
- builder.setLeftLeftDistance("nonserver", "portedit", 0);
- builder.setTopBottomDistance("nonserver", "portlabel,portedit", 5);
- useNoServer.setActionCommand("USENOSERVER");
- useNoServer.addActionListener(this);
+ // Clientname
+ clientname = builder.addTextField("clientname");
+ builder.addLabel(GUIUtils.i18n("clientname"), "clientlabel", clientname);
+ builder.setLeftLeftDistance("clientlabel","hostlabel", 0);
+ builder.setLeftLeftDistance("clientname","hostcombo", 0);
+ builder.setRightRightDistance("clientname", "hostcombo", 0);
+ builder.setTopBottomDistance("clientlabel", "hostlabel,hostcombo", 10);
+ builder.setTopBottomDistance("clientname", "hostlabel,hostcombo", 10);
+ clientname.setToolTipText(GUIUtils.i18n("clientnametooltip"));
- // Kopf
- builder
- .addDialogHeader("<html><b>" + GUIUtils.i18n("createconnectiontopacwserver") + "</b><br>"
- + GUIUtils.i18n("createconnectiontopacwserverhint") + "</html>", GUIConstants.ICON_SERVER_BIG,
- "header");
- builder.setTop("header", 0);
- builder.setLeft("header", 0);
- builder.setRightRightDistance("header", null, 0);
+ // Password
+ password = new JPasswordField();
+ builder.add(password, "password");
+ builder.addLabel(GUIUtils.i18n("password"), "passwordlabel", password);
+ builder.setLeftLeftDistance("passwordlabel","clientlabel", 0);
+ builder.setLeftLeftDistance("password","clientname", 0);
+ builder.setRightRightDistance("password", "hostcombo", 0);
+ builder.setTopBottomDistance("passwordlabel", "clientlabel,clientname", 10);
+ builder.setTopBottomDistance("password", "clientlabel,clientname", 10);
+ password.setToolTipText(GUIUtils.i18n("passwordtooltip"));
+ // radioButtons
+ radioButtonGroup = new ButtonGroup();
+ radioButtonGroup.add(useNoServer);
+ radioButtonGroup.add(useServer);
+
+ // OK / Abbrechen
+ if (info.useNoServer)
+ ok = builder.createButton(GUIUtils.i18n("continue"), "OK", this);
+ else
+ ok = builder.createButton(GUIUtils.i18n("connect"), "OK", this);
+ cancel = builder.createButton(GUIUtils.i18n("cancel"), "CANCEL", this);
+
+ builder.addOKCancelButtonBar(ok, cancel, "okcancel");
+ builder.setLeftLeftDistance("okcancel", null, 10);
+ builder.setRightRightDistance("okcancel", null, -10);
+ builder.setBottomBottomDistance("okcancel", null, -10);
+
// Defaults setzen
this.password.setText(serverConnectionInfo.password);
this.clientname.setText(serverConnectionInfo.name);
this.hostname.setSelectedItem(serverConnectionInfo.hostname);
this.port.setText("" + serverConnectionInfo.port);
if (info.useNoServer) {
- this.hostname.setEnabled(false);
- this.port.setEnabled(false);
+ this.useNoServer.doClick();
}
mainPanel = builder.getPanel();
@@ -195,15 +232,24 @@
} else if ("CANCEL".equals(e.getActionCommand())) {
cancelConnect();
} else if ("USENOSERVER".equals(e.getActionCommand())) {
- // CheckBox angeklickt
+ // RadioButton angeklickt
boolean b = !useNoServer.isSelected();
this.hostname.setEnabled(b);
this.port.setEnabled(b);
- if (useNoServer.isSelected()) {
+ this.clientname.setEnabled(b);
+ this.password.setEnabled(b);
+ if (!b) {
this.ok.setText(GUIUtils.filterMnemonic(GUIUtils.i18n("continue")));
this.ok.setMnemonic(GUIUtils.getMnemonic(GUIUtils.i18n("continue")));
- } else {
- // GUIUtils.getMnemonic(title)
+ }
+ } else if ("USESERVER".equals(e.getActionCommand())) {
+ // RadioButton angeklickt
+ boolean b = useServer.isSelected();
+ this.hostname.setEnabled(b);
+ this.port.setEnabled(b);
+ this.clientname.setEnabled(b);
+ this.password.setEnabled(b);
+ if (b) {
this.ok.setText(GUIUtils.filterMnemonic(GUIUtils.i18n("connect")));
this.ok.setMnemonic(GUIUtils.getMnemonic(GUIUtils.i18n("connect")));
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-11-08 14:14:09
|
Revision: 688
http://magicmap.svn.sourceforge.net/magicmap/?rev=688&view=rev
Author: anweiss
Date: 2007-11-08 05:30:41 -0800 (Thu, 08 Nov 2007)
Log Message:
-----------
Tooltips for the connection dialogue.
Modified Paths:
--------------
trunk/magicmapclient/res/screentext.properties
trunk/magicmapclient/res/screentext_de_DE.properties
trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java
Modified: trunk/magicmapclient/res/screentext.properties
===================================================================
--- trunk/magicmapclient/res/screentext.properties 2007-11-06 11:59:40 UTC (rev 687)
+++ trunk/magicmapclient/res/screentext.properties 2007-11-08 13:30:41 UTC (rev 688)
@@ -25,8 +25,10 @@
connectserver=Connect with server
ok=&OK
cancel=&Cancel
-hostname=&Hostname
+hostname=&Server
+hostnametooltip=Please enter here the URL of the the server you want to connect to.
port=&Port
+porttooltip=The port for the MagicMap-Server.
createconnectiontopacwserver=Create connection with MagicMap server
createconnectiontopacwserverhint=Please enter connection settings
outline=Outline
@@ -44,7 +46,9 @@
avgsignallevel=Mean
avgstrength=Avg. Strength
password=P&assword
-clientname=C&lientname
+passwordtooltip=Please enter your password here. If you run MagicMap for the first time you can choose a new password here.
+clientname=&Login
+clientnametooltip=Please enter your username here. This will be your displayed name in MagicMap.
connected=Connected
connecting=Connecting...
disconnected=Disconnected
Modified: trunk/magicmapclient/res/screentext_de_DE.properties
===================================================================
--- trunk/magicmapclient/res/screentext_de_DE.properties 2007-11-06 11:59:40 UTC (rev 687)
+++ trunk/magicmapclient/res/screentext_de_DE.properties 2007-11-08 13:30:41 UTC (rev 688)
@@ -25,8 +25,10 @@
connectserver=Mit Server verbinden
ok=&OK
cancel=&Abbruch
-hostname=&Rechnername
+hostname=&Server
+hostnametooltip=Bitte geben Sie hier die URL f\xFCr den Server ein, zu dem Sie sich verbinden wollen.
port=&Port
+porttooltip=Tragen Sie hier den Port ein, \xFCber den der MagicMap-Server erreichbar ist.
createconnectiontopacwserver=Verbindung mit MagicMap-Server herstellen
createconnectiontopacwserverhint=Geben Sie bitte die Verbindungsoptionen an
outline=\xDCbersicht
@@ -44,7 +46,9 @@
avgsignallevel=Mittelwert
avgstrength=Durchschn. St\xE4rke
password=P&asswort
-clientname=C&lientname
+passwordtooltip=Geben Sie hier ihr Passwort ein. Sollten Sie MagicMap das erste mal benutzten, dann k\xF6nnen Sie hier ein beliebiges Passwort w\xE4hlen.
+clientname=&Login
+clientnametooltip=Geben Sie hier ihren Benutzernamen ein, mit dem Sie in MagicMap angezeigt werden.
connected=Verbunden
connecting=Verbinde...
disconnected=Nicht verbunden
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java 2007-11-06 11:59:40 UTC (rev 687)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/gui/dialogs/ConnectServerDialog.java 2007-11-08 13:30:41 UTC (rev 688)
@@ -104,6 +104,7 @@
builder.setRightRightDistance("clientname", null, -20);
builder.setTopBottomDistance("clientlabel", "header", 20);
builder.setTopBottomDistance("clientname", "header", 20);
+ clientname.setToolTipText(GUIUtils.i18n("clientnametooltip"));
// Password
password = new JPasswordField();
@@ -113,7 +114,8 @@
builder.setRightRightDistance("password", null, -20);
builder.setTopBottomDistance("passwordlabel", "clientlabel,clientname", 5);
builder.setTopBottomDistance("password", "clientlabel,clientname", 5);
-
+ password.setToolTipText(GUIUtils.i18n("passwordtooltip"));
+
// Hostname
hostname = builder.addComboBox(Settings.getDefaultServerList(), "hostcombo");
builder.addLabel(GUIUtils.i18n("hostname"), "hostlabel", hostname);
@@ -124,6 +126,7 @@
builder.setTopBottomDistance("hostcombo", "passwordlabel,password", 10);
hostname.setActionCommand("HOSTNAME");
hostname.addActionListener(this);
+ hostname.setToolTipText(GUIUtils.i18n("hostnametooltip"));
// Port
port = builder.addTextField("portedit");
@@ -136,6 +139,7 @@
builder.setLeftRightDistance("hostcombo", "portlabel,hostlabel,clientlabel,passwordlabel", 5);
builder.setLeftRightDistance("clientname", "portlabel,hostlabel,clientlabel,passwordlabel", 5);
builder.setLeftRightDistance("password", "portlabel,hostlabel,clientlabel,passwordlabel", 5);
+ port.setToolTipText(GUIUtils.i18n("porttooltip"));
// CheckBox f\xFCr "lokale Verbindung"
useNoServer = builder.addCheckBox(GUIUtils.i18n("nonserverconnect"), "nonserver",
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-11-08 14:08:10
|
Revision: 689
http://magicmap.svn.sourceforge.net/magicmap/?rev=689&view=rev
Author: anweiss
Date: 2007-11-08 05:33:19 -0800 (Thu, 08 Nov 2007)
Log Message:
-----------
Removed heigth and width in the map title.
Modified Paths:
--------------
trunk/magicmapclient/src/net/sf/magicmap/client/controller/Controller.java
Modified: trunk/magicmapclient/src/net/sf/magicmap/client/controller/Controller.java
===================================================================
--- trunk/magicmapclient/src/net/sf/magicmap/client/controller/Controller.java 2007-11-08 13:30:41 UTC (rev 688)
+++ trunk/magicmapclient/src/net/sf/magicmap/client/controller/Controller.java 2007-11-08 13:33:19 UTC (rev 689)
@@ -180,13 +180,13 @@
this.scannerAllocator.startAllScanner();
this.pluginManager.loadMap();
- if (this.currentMap.realheight > 0 && this.currentMap.realwidth > 0)
+// if (this.currentMap.realheight > 0 && this.currentMap.realwidth > 0)
// TODO: Interface f\xFCr GUI mit methode setMapTitle()
- ((MapView) MainGUI.getInstance().getJComponent("mapView")).setTitle(GUIUtils.i18n("map", false) + " - "
- + this.currentMap.name + " Gr\xF6\xDFe: " + this.currentMap.realwidth + " X "
- + this.currentMap.realheight + " cm");
+// ((MapView) MainGUI.getInstance().getJComponent("mapView")).setTitle(GUIUtils.i18n("map", false) + " - "
+// + this.currentMap.name + " Gr\xF6\xDFe: " + this.currentMap.realwidth + " X "
+// + this.currentMap.realheight + " cm");
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-11-06 13:07:45
|
Revision: 687
http://magicmap.svn.sourceforge.net/magicmap/?rev=687&view=rev
Author: anweiss
Date: 2007-11-06 03:59:40 -0800 (Tue, 06 Nov 2007)
Log Message:
-----------
"Verf?\195?\188gbare Plugins" in "Weitere Plugins" ge?\195?\164ndert
Modified Paths:
--------------
trunk/magicmapclient/res/screentext.properties
trunk/magicmapclient/res/screentext_de_DE.properties
Modified: trunk/magicmapclient/res/screentext.properties
===================================================================
--- trunk/magicmapclient/res/screentext.properties 2007-10-30 13:20:41 UTC (rev 686)
+++ trunk/magicmapclient/res/screentext.properties 2007-11-06 11:59:40 UTC (rev 687)
@@ -120,7 +120,7 @@
plugins.load.tooltip=Load the Plugin List
plugins.install.tooltip=Installs the selected Plugin
plugins.uninstall.tooltip=Deinstalls the selected Plugin
-plugins.available=Available Plugins
+plugins.available=Additional Plugins
plugins.dependencies=Dependencies
plugins.detailview=Detail View
plugins.name=Name
Modified: trunk/magicmapclient/res/screentext_de_DE.properties
===================================================================
--- trunk/magicmapclient/res/screentext_de_DE.properties 2007-10-30 13:20:41 UTC (rev 686)
+++ trunk/magicmapclient/res/screentext_de_DE.properties 2007-11-06 11:59:40 UTC (rev 687)
@@ -120,7 +120,7 @@
plugins.load.tooltip=L\xE4dt die Pluginliste
plugins.install.tooltip=Installiert ausgew\xE4hltes Plugin
plugins.uninstall.tooltip=Deinstalliert ausgew\xE4hltes Plugin
-plugins.available=Verf\xFCgbare Plugins
+plugins.available=Weitere Plugins
plugins.dependencies=Abh\xE4ngigkeiten
plugins.detailview=Detailansicht
plugins.name=Name
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-10-30 14:13:40
|
Revision: 686
http://magicmap.svn.sourceforge.net/magicmap/?rev=686&view=rev
Author: anweiss
Date: 2007-10-30 06:20:41 -0700 (Tue, 30 Oct 2007)
Log Message:
-----------
version 0.9.1
Added Paths:
-----------
tags/V20071030_0_9_1/magicmapclient/
Copied: tags/V20071030_0_9_1/magicmapclient (from rev 685, trunk/magicmapclient)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-10-30 14:12:06
|
Revision: 685
http://magicmap.svn.sourceforge.net/magicmap/?rev=685&view=rev
Author: anweiss
Date: 2007-10-30 06:19:32 -0700 (Tue, 30 Oct 2007)
Log Message:
-----------
version 0.9.1
Added Paths:
-----------
tags/V20071030_0_9_1/magicmapserver/
Copied: tags/V20071030_0_9_1/magicmapserver (from rev 684, trunk/magicmapserver)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <an...@us...> - 2007-10-30 14:12:01
|
Revision: 683
http://magicmap.svn.sourceforge.net/magicmap/?rev=683&view=rev
Author: anweiss
Date: 2007-10-30 06:14:37 -0700 (Tue, 30 Oct 2007)
Log Message:
-----------
Version 0.9.1
Added Paths:
-----------
tags/V20071030_0_9_1/
Copied: tags/V20071030_0_9_1 (from rev 682, trunk/magicmapserver)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|