Search in sources :

Example 1 with ElkGraphTransformer

use of org.eclipse.elk.alg.layered.graph.transform.ElkGraphTransformer in project elk by eclipse.

the class LayeredLayoutProvider method startLayoutTest.

// /////////////////////////////////////////////////////////////////////////////
// Layout Testing
/**
 * Import the given KGraph and return a test execution state prepared for a test run with the
 * resulting {@link LGraph}. The layout test run methods can immediately be called on the
 * returned object.
 *
 * <p><strong>Note:</strong> This method does not apply the layout back to the original KGraph!</p>
 *
 * @param elkgraph the KGraph to be used for the layout test run.
 * @return an initialized test execution state
 */
public ElkLayered.TestExecutionState startLayoutTest(final ElkNode elkgraph) {
    // Import the graph (layeredGraph won't be null since the KGraphImporter always returns an
    // LGraph instance, even though the IGraphImporter interface would allow null as a return
    // value)
    IGraphTransformer<ElkNode> graphImporter = new ElkGraphTransformer();
    LGraph layeredGraph = graphImporter.importGraph(elkgraph);
    // Prepare a layout test and return the test execution state
    return elkLayered.prepareLayoutTest(layeredGraph);
}
Also used : ElkNode(org.eclipse.elk.graph.ElkNode) ElkGraphTransformer(org.eclipse.elk.alg.layered.graph.transform.ElkGraphTransformer) LGraph(org.eclipse.elk.alg.layered.graph.LGraph)

Example 2 with ElkGraphTransformer

use of org.eclipse.elk.alg.layered.graph.transform.ElkGraphTransformer in project elk by eclipse.

the class LayeredLayoutProvider method layout.

// /////////////////////////////////////////////////////////////////////////////
// Regular Layout
@Override
public void layout(final ElkNode elkgraph, final IElkProgressMonitor progressMonitor) {
    // Import the graph (layeredGraph won't be null since the ElkGraphTransformer always returns an LGraph
    // instance, even though the IGraphTransformer interface would allow null as a return value)
    IGraphTransformer<ElkNode> graphTransformer = new ElkGraphTransformer();
    LGraph layeredGraph = graphTransformer.importGraph(elkgraph);
    // Check if hierarchy handling for a compound graph is requested
    if (elkgraph.getProperty(LayeredOptions.HIERARCHY_HANDLING) == HierarchyHandling.INCLUDE_CHILDREN) {
        // Layout for all hierarchy levels is requested
        elkLayered.doCompoundLayout(layeredGraph, progressMonitor);
    } else {
        // Only the top-level graph is processed
        elkLayered.doLayout(layeredGraph, progressMonitor);
    }
    if (!progressMonitor.isCanceled()) {
        // Apply the layout results to the original graph
        graphTransformer.applyLayout(layeredGraph);
    }
}
Also used : ElkNode(org.eclipse.elk.graph.ElkNode) ElkGraphTransformer(org.eclipse.elk.alg.layered.graph.transform.ElkGraphTransformer) LGraph(org.eclipse.elk.alg.layered.graph.LGraph)

Aggregations

LGraph (org.eclipse.elk.alg.layered.graph.LGraph)2 ElkGraphTransformer (org.eclipse.elk.alg.layered.graph.transform.ElkGraphTransformer)2 ElkNode (org.eclipse.elk.graph.ElkNode)2