edu.uci.ics.jung.graph.SparseMultigraph Java Examples

The following examples show how to use edu.uci.ics.jung.graph.SparseMultigraph. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: DependencyGraph.java    From baleen with Apache License 2.0 6 votes vote down vote up
private Graph<AnalysisEngine, Integer> createDependencyGraph(
    List<AnalysisEngine> analysisEngines) {
  Graph<AnalysisEngine, Integer> graph = new SparseMultigraph<>();

  // First, add all annotators onto the graph
  for (AnalysisEngine ae : analysisEngines) graph.addVertex(ae);

  // Now add dependencies between annotators
  for (AnalysisEngine ae1 : analysisEngines) {
    for (AnalysisEngine ae2 : analysisEngines) {
      if (ae1 == ae2) continue;

      addAnnotatorDependencies(graph, ae1, ae2);
    }
  }

  return graph;
}
 
Example #2
Source File: DependencyGraphTest.java    From baleen with Apache License 2.0 6 votes vote down vote up
@Test
public void testRemoveLoops() {
  Graph<String, String> graph = new SparseMultigraph<>();
  graph.addVertex("v1");
  graph.addVertex("v2");
  graph.addVertex("v3");

  graph.addEdge("e1", "v1", "v2", EdgeType.DIRECTED);
  graph.addEdge("e2", "v2", "v1", EdgeType.DIRECTED);
  graph.addEdge("e3", "v1", "v3", EdgeType.DIRECTED);

  DependencyGraph.removeLoops(graph);

  assertEquals(3, graph.getVertexCount());
  assertEquals(2, graph.getEdgeCount());

  assertTrue(graph.getEdges().contains("e1"));
  assertTrue(graph.getEdges().contains("e3"));
}
 
Example #3
Source File: DependencyGraphTest.java    From baleen with Apache License 2.0 6 votes vote down vote up
@Test
public void testRemoveLayer() {
  Graph<String, String> graph = new SparseMultigraph<>();
  graph.addVertex("v1");
  graph.addVertex("v2");
  graph.addVertex("v3");

  graph.addEdge("e1", "v1", "v2", EdgeType.DIRECTED);
  graph.addEdge("e2", "v2", "v1", EdgeType.DIRECTED);
  graph.addEdge("e3", "v3", "v2", EdgeType.DIRECTED);

  DependencyGraph.removeLayer(graph);

  assertEquals(2, graph.getVertexCount());
  assertEquals(2, graph.getEdgeCount());

  assertTrue(graph.getVertices().contains("v1"));
  assertTrue(graph.getVertices().contains("v2"));

  assertTrue(graph.getEdges().contains("e1"));
  assertTrue(graph.getEdges().contains("e2"));
}
 
Example #4
Source File: GraphTopologyHandler.java    From JPPF with Apache License 2.0 5 votes vote down vote up
/**
 * Initialize this graph handler.
 * @param graphOption the panel that displays the graph.
 */
public GraphTopologyHandler(final GraphOption graphOption) {
  manager = StatsHandler.getInstance().getTopologyManager();
  this.graphOption = graphOption;
  fullGraph = new SparseMultigraph<>();
  displayGraph = new SparseMultigraph<>();
}
 
Example #5
Source File: GraphOption.java    From JPPF with Apache License 2.0 4 votes vote down vote up
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public synchronized void createUI() {
  if (graphHandler == null) {
    if (debugEnabled) log.debug("creating UI");
    graphHandler = new GraphTopologyHandler(this);
    final SparseMultigraph<AbstractTopologyComponent, Number> graph = graphHandler.getDisplayGraph();
    layoutFactory = new LayoutFactory(graph);
    layout = "Radial";
    viewer = new VisualizationViewer<>(layoutFactory.createLayout(layout));
    layoutFactory.setViewer(viewer);
    viewer.setBackground(Color.white);
    viewer.setPickedVertexState(new MultiPickedState<AbstractTopologyComponent>());
    viewer.setPickSupport(new ShapePickSupport<>(viewer));
    final VertexLabelAsShapeRenderer<AbstractTopologyComponent, Number> vlasr = new VertexLabelAsShapeRenderer<>(viewer.getRenderContext());
    viewer.getRenderer().setVertexLabelRenderer(vlasr);
    viewer.getRenderContext().setVertexShapeTransformer(vlasr);
    final JPPFVertexLabelRenderer renderer = new JPPFVertexLabelRenderer();
    final Dimension d = renderer.getPreferredSize();
    d.width = LayoutFactory.VERTEX_SIZE.width;
    if (d.height < LayoutFactory.VERTEX_SIZE.height) {
      d.height = LayoutFactory.VERTEX_SIZE.height;
      renderer.setPreferredSize(d);
    }
    viewer.getRenderContext().setVertexLabelRenderer(renderer);
    viewer.getRenderer().getVertexLabelRenderer().setPosition(Position.AUTO);
    viewer.getRenderContext().setVertexFillPaintTransformer(new PickableVertexPaintTransformer<>(viewer.getPickedVertexState(), viewer.getBackground(), Color.blue));
    viewer.getRenderContext().setVertexDrawPaintTransformer(new ConstantTransformer(null));
    viewer.getRenderContext().setEdgeStrokeTransformer(new CustomEdgeStrokeTransformer());
    viewer.getRenderContext().setEdgeDrawPaintTransformer(new CustomEdgePaintTransformer());
    viewer.getRenderContext().setArrowDrawPaintTransformer(new ConstantTransformer(MASTER_SLAVE_PAINT));
    viewer.getRenderContext().setEdgeShapeTransformer(new EdgeShape.CubicCurve());
    //viewer.getRenderContext().setEdgeArrowTransformer();
    viewer.setVertexToolTipTransformer(new ToStringLabeller<AbstractTopologyComponent>() {
      @Override
      public String transform(final AbstractTopologyComponent v) {
        return v.isNode() ? computeNodeTooltip((TopologyNode) v) : computeDriverTooltip((TopologyDriver) v);
      }
    });
    graphComponent = new GraphZoomScrollPane(viewer);
    graphComponent.getVerticalScrollBar().setPreferredSize(new Dimension(GuiUtils.DEFAULT_SCROLLBAR_THICKNESS, 0));
    graphComponent.getHorizontalScrollBar().setPreferredSize(new Dimension(0, GuiUtils.DEFAULT_SCROLLBAR_THICKNESS));
    actionHandler = new GraphActionHandler(viewer);
    try {
      final EditingModalGraphMouse<AbstractTopologyComponent, Number> graphMouse = new EditingModalGraphMouse<>(viewer.getRenderContext(), null, null);
      graphMouse.setMode(ModalGraphMouse.Mode.PICKING);
      final PopupMenuMousePlugin<AbstractTopologyComponent, Number> myPlugin = new PopupMenuMousePlugin<>(actionHandler);
      graphMouse.remove(graphMouse.getPopupEditingPlugin());
      graphMouse.add(myPlugin);
      viewer.setGraphMouse(graphMouse);
    } catch(final Exception e) {
      log.error(e.getMessage(), e);
    }
    graphComponent.addComponentListener(new ViewerComponentListener());
    StatsHandler.getInstance().getShowIPHandler().addShowIPListener((event) -> graphComponent.repaint());
  }
}
 
Example #6
Source File: AbstractGraphSelectionAction.java    From JPPF with Apache License 2.0 4 votes vote down vote up
/**
 * Get the list of all tree nodes representing a driver.
 * @return an list of driver cells.
 */
protected Collection<AbstractTopologyComponent> getVertices() {
  final VisualizationViewer<AbstractTopologyComponent, Number> viewer = panel.getViewer();
  final SparseMultigraph<AbstractTopologyComponent, Number> graph = (SparseMultigraph<AbstractTopologyComponent, Number>) viewer.getGraphLayout().getGraph();
  return graph.getVertices();
}
 
Example #7
Source File: GraphTopologyHandler.java    From JPPF with Apache License 2.0 2 votes vote down vote up
/**
 * Get the underlying graph that keeps track of all drivers and nodes.
 * @return a <code>SparseMultigraph</code> instance.
 */
public SparseMultigraph<AbstractTopologyComponent, Number> getFullGraph() {
  return fullGraph;
}
 
Example #8
Source File: GraphTopologyHandler.java    From JPPF with Apache License 2.0 2 votes vote down vote up
/**
 * Get the graph that is actually displayed and accounts for collapsed vertices.
 * @return a <code>SparseMultigraph</code> instance.
 */
public SparseMultigraph<AbstractTopologyComponent, Number> getDisplayGraph() {
  return displayGraph;
}