I need to have the expand/collapse feature with my mxGraph.
The scenario is like, there are three vertices say v1, v2 and v3. v2 and v3 are linked to v1. Now there is small icon in vertex v1 and when user clicks on the icon the vertex v2 and v3 should be hided inside v1 and when user clicks on the icon the vertex v2 and v3 should be visible. It is like expand and collapse of vertex v1.
I tried with graph.foldCells() and graph.groupCells(). But nothing works. below is my code.
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import com.mxgraph.layout.hierarchical.mxHierarchicalLayout;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.view.mxGraph;
public class MxGraphSample {
public static void creategraph() {
final JFrame frame = new JFrame();
frame.setMaximumSize(new Dimension(800, 1200));
JPanel panel = new JPanel();
panel.setSize(frame.getMaximumSize().width,
frame.getMaximumSize().height);
final mxGraph graph = new mxGraph();
Object parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try {
Object v1 = graph.insertVertex(parent, null, "v1", 20, 20, 80, 30);
Object v2 = graph.insertVertex(parent, null, "v2", 120, 70, 80, 30);
Object v3 = graph.insertVertex(parent, null, "v3", 220, 70, 80, 30,
"fillColor=lightgreen");
graph.insertEdge(parent, null, "", v1, v2);
graph.insertEdge(parent, null, "", v1, v3, "strokeColor=lightgreen");
graph.foldCells(true);
graph.cellsFolded(new Object[] { v1, v2, v3 }, true, false);
mxHierarchicalLayout layout = new mxHierarchicalLayout(graph,
SwingConstants.WEST);
layout.setInterRankCellSpacing(70);
layout.execute(graph.getDefaultParent());
} finally {
graph.getModel().endUpdate();
}
final mxGraphComponent graphComponent = new mxGraphComponent(graph);
panel.setLayout(new BorderLayout());
panel.add(graphComponent, BorderLayout.CENTER);
frame.add(panel);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
creategraph();
}
}
Any examples will be helpful.
make the parent of v2 and v3 as v1 instead of defaultParent()
Else create a group by the following method after declaring the 3 vertices graph.createGroupCells(new Object[] {v1}); graph.groupCells(v1,30.5,new Object[] {v2,v3});