use of org.eclipse.elk.core.data.LayoutAlgorithmResolver in project elk by eclipse.
the class Issue562Test method test.
@Test
public void test() {
// Create the basic graph structure
ElkNode graph = ElkGraphUtil.createGraph();
ElkNode n1 = ElkGraphUtil.createNode(graph);
ElkPort p1 = ElkGraphUtil.createPort(n1);
ElkPort p2 = ElkGraphUtil.createPort(n1);
ElkEdge e = ElkGraphUtil.createSimpleEdge(p1, p2);
// Create a layout configurator to apply options, just as it would happen in the DiagramLayoutEngine
LayoutConfigurator config = new LayoutConfigurator();
config.configure(n1).setProperty(CoreOptions.INSIDE_SELF_LOOPS_ACTIVATE, true);
config.configure(e).setProperty(CoreOptions.INSIDE_SELF_LOOPS_YO, true);
// Apply the configurator and a layout algorithm resolver, just like the DiagramLayoutEngine does
ElkUtil.applyVisitors(graph, config, new LayoutAlgorithmResolver());
// Apply layout. We don't want an UnsupportedConfigurationException to be thrown
try {
new RecursiveGraphLayoutEngine().layout(graph, new NullElkProgressMonitor());
} catch (UnsupportedConfigurationException ex) {
fail(ex.toString());
}
}
use of org.eclipse.elk.core.data.LayoutAlgorithmResolver in project elk by eclipse.
the class RecursiveGraphLayoutEngine method layout.
/**
* Performs recursive layout on the given layout graph, possibly in a test setting.
*
* @param layoutGraph top-level node of the graph to be laid out.
* @param testController an optional test controller if the layout run is performed as part of a unit test.
* @param progressMonitor monitor to which progress of the layout algorithms is reported.
*/
public void layout(final ElkNode layoutGraph, final TestController testController, final IElkProgressMonitor progressMonitor) {
int nodeCount = countNodesRecursively(layoutGraph, true);
progressMonitor.begin("Recursive Graph Layout", nodeCount);
ElkUtil.applyVisitors(layoutGraph, new DeprecatedLayoutOptionReplacer());
if (!layoutGraph.hasProperty(CoreOptions.RESOLVED_ALGORITHM)) {
// Apply the default algorithm resolver to the graph in order to obtain algorithm meta data
ElkUtil.applyVisitors(layoutGraph, new LayoutAlgorithmResolver());
}
// Perform recursive layout of the whole substructure of the given node
layoutRecursively(layoutGraph, testController, progressMonitor);
progressMonitor.done();
}
use of org.eclipse.elk.core.data.LayoutAlgorithmResolver in project elk by eclipse.
the class GraphValidatorTest method testCustomValidation.
@Test
public void testCustomValidation() {
LayoutMetaDataService.getInstance().registerLayoutMetaDataProviders(registry -> {
registry.register(new LayoutAlgorithmData.Builder().id("foo.algorithm").providerFactory(new AlgorithmFactory(FooAlgorithm.class)).validatorClass(FooValidator.class).create());
});
ElkNode graph = ElkGraphUtil.createGraph();
ElkGraphUtil.createNode(graph).setIdentifier("foo");
graph.setProperty(CoreOptions.ALGORITHM, "foo.algorithm");
LayoutAlgorithmResolver algorithmResolver = new LayoutAlgorithmResolver();
GraphValidator validator = new GraphValidator();
ElkUtil.applyVisitors(graph, algorithmResolver, validator);
assertEquals("[ERROR: FOO! (Root Node > Node foo)]", validator.getIssues().toString());
}
Aggregations