use of org.eclipse.elk.alg.force.ElkGraphImporter in project elk by eclipse.
the class ForceImportTest method createTwoComponentsGraph.
private FGraph createTwoComponentsGraph() {
ElkNode g1 = createElkGraph();
ElkNode g2 = createElkGraph();
ElkNode graph = ElkGraphUtil.createGraph();
graph.getChildren().addAll(g1.getChildren());
graph.getChildren().addAll(g2.getChildren());
ElkGraphImporter importer = new ElkGraphImporter();
return importer.importGraph(graph);
}
use of org.eclipse.elk.alg.force.ElkGraphImporter in project elk by eclipse.
the class StressLayoutProvider method layout.
@Override
public void layout(final ElkNode layoutGraph, final IElkProgressMonitor progressMonitor) {
progressMonitor.begin("ELK Stress", 1);
// calculate initial coordinates
if (!layoutGraph.getProperty(StressOptions.INTERACTIVE)) {
new ForceLayoutProvider().layout(layoutGraph, progressMonitor.subTask(1));
} else {
// Note that for the non-interactive case (above) this will be taken care of by the force layout provider
if (!layoutGraph.getProperty(StressOptions.OMIT_NODE_MICRO_LAYOUT)) {
NodeMicroLayout.forGraph(layoutGraph).execute();
}
}
// transform the input graph
IGraphImporter<ElkNode> graphImporter = new ElkGraphImporter();
FGraph fgraph = graphImporter.importGraph(layoutGraph);
// split the input graph into components
List<FGraph> components = componentsProcessor.split(fgraph);
// perform the actual layout
for (FGraph subGraph : components) {
if (subGraph.getNodes().size() <= 1) {
continue;
}
stressMajorization.initialize(subGraph);
stressMajorization.execute();
// Note that contrary to force itself, labels are not considered during stress layout.
// Hence, all we can do here is to place the labels at reasonable positions after layout has finished.
subGraph.getLabels().forEach(label -> label.refreshPosition());
}
// pack the components back into one graph
fgraph = componentsProcessor.recombine(components);
// apply the layout results to the original graph
graphImporter.applyLayout(fgraph);
progressMonitor.done();
}
Aggregations