From f453154938a0e1a3ba387ff1d7c0630e54b23855 Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Mon, 21 Mar 2016 17:28:53 +0100 Subject: Add personal graph --- structure/Graph.java | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 structure/Graph.java (limited to 'structure/Graph.java') diff --git a/structure/Graph.java b/structure/Graph.java new file mode 100644 index 0000000..fd26653 --- /dev/null +++ b/structure/Graph.java @@ -0,0 +1,108 @@ +package structure; + +import java.util.*; + +import org.graphstream.graph.Edge; +import org.graphstream.graph.Graph; +import org.graphstream.graph.Node; +import org.graphstream.graph.implementations.SingleGraph; +import org.graphstream.ui.layout.springbox.EdgeSpring; +import org.graphstream.ui.swingViewer.basicRenderer.EdgeRenderer; +import org.graphstream.ui.util.EdgePoints; + + +public class MyGraph extends SingleGraph{ + + + private Grid grid; + + public MyGraph(String title, Grid grid) { + super(title); + // Allow CSS on view + System.setProperty("org.graphstream.ui.renderer", "org.graphstream.ui.j2dviewer.J2DGraphRenderer"); + // Set graph CSS + this.addAttribute("ui.stylesheet", "url('resources/style.css')"); + + // Assign grid + this.grid=grid; + + // Build node + for(Router r : this.grid.getGrid()){ + this.addNode(r.name); + + } + + // Build Edges + this.buildEdges(); + + //Build bestLink + this.showBestLink(); + + } + + + + public void buildEdges(){ + + for(Router r : this.grid.getGrid()){ + + String current=r.name; + + + HashMap relier=r.getLinks(); + Set k=relier.keySet(); + Iterator i=k.iterator(); + while(i.hasNext()){ + Router currentRouter=i.next(); + String currentRouterName=currentRouter.name; + try{ + //graph.addEdge(current+currentRouter, current, currentRouter).addAttribute("ui.style", "fill-color: rgb(0,100,255);"); + + /* if(g.isEdgeOfLink(bestLink, r, currentRouter)){ + toAdd=graph.addEdge(current+currentRouterName, current, currentRouterName); + toAdd.setAttribute("ui.label", relier.get(currentRouter)); + toAdd.setAttribute("ui.style", "fill-color:red;"); + + }else{*/ + this.addEdge(current+currentRouterName, current, currentRouterName).setAttribute("ui.label", relier.get(currentRouter)); + + //} + + + + } + catch(Exception e){ + // System.out.println("Bug de merde."); + } + + } + + } + } + + public void showBestLink(){ + ArrayList bestLink=this.grid.getLinks().get(this.grid.getBestLinkIndex()); + for(int i=0;i nodes= this.getNodeIterator(); + while(nodes.hasNext()){ + Node node=nodes.next(); + Iterator edges=node.getEdgeIterator(); + while(edges.hasNext()){ + Edge edge=edges.next(); + + if(i<(bestLink.size()-1)){ + int destIndex=bestLink.get(i+1); + String src=this.grid.getGrid().get(bestLink.get(i)).name; + String dest=this.grid.getGrid().get(bestLink.get(i+1)).name; + if((edge.getNode0().getId().equals(src) && edge.getNode1().getId().equals(dest))||(edge.getNode1().getId().equals(src) && edge.getNode0().getId().equals(dest))){ + edge.setAttribute("ui.style", "fill-color:red;"); + } + } + + } + } + } + } + + +} -- cgit v1.2.3