Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. package gui;
  2.  
  3. import org.graphstream.graph.Graph;
  4. import org.graphstream.graph.Node;
  5. import org.graphstream.graph.implementations.MultiGraph;
  6. import org.graphstream.ui.swingViewer.ViewPanel;
  7. import org.graphstream.ui.view.Viewer;
  8. import sfg.Edge;
  9. import sfg.SFG;
  10.  
  11. import javax.swing.*;
  12. import java.awt.*;
  13. import java.util.ArrayList;
  14.  
  15. public class GraphManager {
  16.  
  17. private Graph graph;
  18. private Viewer viewer;
  19. private ViewPanel view;
  20. private String STYLE_SHEET;
  21.  
  22. public GraphManager(SFG sfg, JFrame frame) {
  23. System.setProperty("org.graphstream.ui.renderer", "org.graphstream.ui.j2dviewer.J2DGraphRenderer");
  24. STYLE_SHEET = "node {" + "fill-color: #87CEEB;" + "size: 20px, 20px;" + "text-style: bold;" +
  25. "text-alignment:under;" + "}" +
  26. "edge {" + "text-style: bold;" + "text-background-mode:plain;" + "shape:cubic-curve;" + "}";
  27. graph = new MultiGraph("SFG");
  28. viewer = new Viewer(graph, Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD);
  29. viewer.enableAutoLayout();
  30. view = viewer.addDefaultView(false);
  31. view.setSize(650, 300);
  32. view.setLocation(0, 100);
  33. drawGraph(sfg, frame);
  34. viewer.disableAutoLayout();
  35. frame.getContentPane().add((Component) view);
  36. }
  37.  
  38. private void drawGraph(SFG sfg, JFrame frame) {
  39. sfg.Node[] nodes = sfg.getNodes();
  40. double nodesSpace=650/nodes.length;
  41. for (int i = 0; i < nodes.length; i++) {
  42. graph.addNode(nodes[i].name());
  43. Node node = graph.getNode(nodes[i].name());
  44. node.setAttribute("xy", nodesSpace+i, 6); // modify
  45. node.addAttribute("ui.label", node.getId());
  46. }
  47. for (int i = 0; i < nodes.length; i++) {
  48. String from = nodes[i].name();
  49. ArrayList<Edge> edges = nodes[i].edges();
  50. for (Edge edge : edges) {
  51. String to = edge.to().name();
  52. graph.addEdge(from + to, from, to, true);
  53. graph.getEdge(from + to).addAttribute("ui.label", edge.gain());
  54. }
  55. }
  56. graph.addAttribute("ui.stylesheet", STYLE_SHEET);
  57.  
  58. }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement