Research Article

Graph Drawing and Analysis Library and Its Domain-Specific Language for Graphs’ Layout Specifications

Listing 12

JAVA code corresponding to the layout specification from Listing 11.
List<Pair<List<AestheticCriteria>, List<AestheticCriteria>>> orPairs =
    new  ArraList<Pair<List<AestheticCriteria>,
    List<AestheticCriteria>>>();
List<AestheticCriteria> positiveCriteria =
    new  ArrayList<AestheticCriteria>();
positiveCriteria.add(AestheticCriteria.MINIMAL_EDGE_CROESSES);
List<AestheticCriteria> negativeCriteria =
    new  ArrayList<AestheticCriteria>();
negativeCriteria.add(AestheticCriteria.SYMMETRIC);
negativeCriteria.add(AestheticCriteria.MINIMUM_ANGLES);
orPairs.add(new  Pair<List<AestheticCriteria>, List<AestheticCriteria>>(
          positiveCriteria, negativeCriteria));
LayoutAlgorithms algorithm = LayoutPicker.pickAlgorithm(graph, orPairs);
GraphLayoutPropertieslayoutProperties = DefaultGraphLayoutProperties.
    getDefaultLayoutProperties(algorithm, graph);
Layouter<GraphVertex, GraphEdge> layouter = new  Layouter<>(
    vertices, edges, algorithm, layoutProperties);
Drawing<GraphVertex, GraphEdge> drawing = layouter.layout();