Procházet zdrojové kódy

Merge remote-tracking branch 'origin/Jascha'

Jan Enders před 8 roky
rodič
revize
614fdd475d

+ 18 - 3
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/GraphMLExporter.java

@@ -1,20 +1,35 @@
 package de.tu_darmstadt.informatik.tk.scopviz;
 
+import java.io.FileOutputStream;
+import java.io.IOException;
 import org.graphstream.graph.Graph;
 import org.graphstream.stream.file.FileSinkGraphML;
 
-import java.io.FileOutputStream;
-import java.io.IOException;
+/**
+ * @version 1.0
+ * @author jascha-b
+ * 
+ */
+public class GraphMLExporter {
 
 import org.graphstream.*;
 
 public class GraphMLExporter {
 	public void writeGraph(Graph g, String fileName) {
+	/**
+	 * Exports the current state of the Graph to a GraphML file.
+	 * 
+	 * @param g
+	 *            The Graphstream-Graph to be exported
+	 * @param fileName
+	 *            The Location on disk the File will be saved on
+	 */
+	public void writeGraph(final Graph g, final String fileName) {
 		FileSinkGraphML writer = new FileSinkGraphML();
 		try {
 			writer.writeAll(g, new FileOutputStream(fileName));
 		} catch (IOException e) {
-			// TODO Auto-generated catch block
+			System.out.println("cannot Acces File or invalid path");
 			e.printStackTrace();
 		}
 	}

+ 22 - 4
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/GraphMLImporter.java

@@ -1,21 +1,39 @@
 package de.tu_darmstadt.informatik.tk.scopviz;
 
-import java.io.BufferedReader;
-import java.io.FileReader;
 import java.io.IOException;
 
-import org.graphstream.graph.*;
+import org.graphstream.graph.Graph;
 import org.graphstream.graph.implementations.DefaultGraph;
-import org.graphstream.stream.file.*;
+import org.graphstream.stream.file.FileSource;
+import org.graphstream.stream.file.FileSourceGraphML;
 
+/**
+ * @version 1.1
+ * @author jascha-b
+ *
+ */
 public class GraphMLImporter {
 
 	public Graph readGraph(String fileName) throws IOException {
+	/**
+	 * Imports a GraphML file.
+	 * 
+	 * @param fileName
+	 *            path to the file on disk
+	 * @return the imported Graphstream-Graph
+	 */
+	public Graph readGraph(final String fileName) {
 		Graph g = new DefaultGraph("g");
 		FileSource fs = new FileSourceGraphML();
 		fs.addSink(g);
 		fs.readAll(fileName);
 		fs.removeSink(g);
+		try {
+			fs.readAll(fileName);
+		} catch (IOException e) {
+			System.out.println("GraphML File doesn't exist or can't be opened");
+			e.printStackTrace();
+		}
 		return g;
 	}
 }

+ 25 - 0
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/Visualizer.java

@@ -0,0 +1,25 @@
+package de.tu_darmstadt.informatik.tk.scopviz;
+
+import org.graphstream.graph.*;
+import org.graphstream.ui.view.*;
+
+/**
+ * Interface between GUI and internal Graph representation.
+ * @version 1.0.0.0
+ * @author jascha-b
+ *
+ */
+public class Visualizer {
+  
+  /**
+   * returns a View of the Graph. 
+   * The View is in the Swing Thread and the Graph in the Main thread.
+   * @param g the Graph that the view is based on
+   * @return a View of the Graph, inheriting from JPanel
+   */
+  public View getView (final Graph g){
+    Viewer viewer = new Viewer(g, Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD);
+    View view = viewer.addDefaultView(false);
+    return view;
+  }
+}

+ 46 - 0
scopviz/src/main/resources/Example.graphml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
+	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	 xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
+	   http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
+	<key id="attr0000" for="node" attr.name="Eigenschaft" attr.type="string"/>
+	<key id="attr0001" for="node" attr.name="ui.label" attr.type="string"/>
+	<key id="attr0002" for="node" attr.name="y" attr.type="int"/>
+	<key id="attr0003" for="node" attr.name="x" attr.type="int"/>
+	<graph id="Example" edgedefault="undirected">
+		<node id="A">
+			<data key="attr0000">test</data>
+			<data key="attr0001">A</data>
+			<data key="attr0002">100</data>
+			<data key="attr0003">100</data>
+		</node>
+		<node id="B">
+			<data key="attr0001">B</data>
+			<data key="attr0002">200</data>
+			<data key="attr0003">100</data>
+		</node>
+		<node id="C">
+			<data key="attr0001">C</data>
+			<data key="attr0002">100</data>
+			<data key="attr0003">200</data>
+		</node>
+		<node id="D">
+			<data key="attr0001">D</data>
+			<data key="attr0002">200</data>
+			<data key="attr0003">200</data>
+		</node>
+		<node id="E">
+			<data key="attr0001">E</data>
+			<data key="attr0002">185</data>
+			<data key="attr0003">135</data>
+		</node>
+		<edge id="AB" source="A" target="B" directed="false">
+		</edge>
+		<edge id="BC" source="B" target="C" directed="false">
+		</edge>
+		<edge id="CD" source="C" target="D" directed="false">
+		</edge>
+		<edge id="DB" source="D" target="B" directed="false">
+		</edge>
+	</graph>
+</graphml>