Я играл с graphstream с небольшим компилятором, который я пишу, чтобы создать визуализацию Abstract-Syntax-Tree, например:
// ASTNode is the root to to the AST tree. Given that node, this just displays
// the AST on-screen.
public static void visualize(ASTNode ast) throws IOException, URISyntaxException {
Path file = Path.of(VisualizeAbstractSyntaxTree.class.getResource("graph.css").toURI());
String css = Files.readString(file);
System.setProperty("org.graphstream.ui.renderer", "org.graphstream.ui.j2dviewer.J2DGraphRenderer");
Graph graph = new SingleGraph("AST");
graph.addAttribute("ui.stylesheet", css);
construct(ast, "0", graph); // construct the tree from the AST root node.
Viewer viewer = graph.display();
}
Запуск программы показывает магию автоматического позиционирования. Однако, когда узел перетаскивается мышью, другие узлы остаются неподвижными. Есть ли простой способ заставить другие узлы реагировать (также вытягиваться), если узел перетаскивается мышью?
Это должно поддерживаться, но я не могу найти какие-либо примеры или ссылки на API?