1

I want to add a new vertex inside an existing graph. So I created a new cell and i'm attempted to reconnected my edge but my graph doesn't update (for the edges)

This is my code :

    mxGraph graph = editor.getGraph();

mxCell selectedElt = (mxCell) graph.getSelectionCell();
Object cells[] = { selectedElt };

if (selectedElt.isEdge()) {
    // cell is an edge, so we have source and target
    System.out.println("Source : " + selectedElt.getSource().getId());
    System.out.println("Target : " + selectedElt.getTarget().getId());
} else {
    // edge before
    mxCell beforeEdge = (mxCell) selectedElt.getEdgeAt(0);
    // edge after
    mxCell afterEdge = (mxCell) selectedElt.getEdgeAt(1);
    // moving down the selected cell
    graph.moveCells(cells, 0, 50);

    // create a new vertex
    GraphStyle graphStyle = new GraphStyle(graph);
    mxCell cell = new mxCell("AAM",
            new mxGeometry(selectedElt.getGeometry().getX(), selectedElt.getGeometry().getY(), 80, 50),
            graphStyle.getCalculatorStyleName());
    cell.setVertex(true);

    beforeEdge.setTarget(cell);
    graph.insertEdge(graph.getDefaultParent(), "e33", "", cell, selectedElt);

    graph.addCell(cell);
    graph.repaint();
}
Frodo Baggins
  • 8,290
  • 6
  • 45
  • 55
amandine
  • 17
  • 6

1 Answers1

0

Instead of calling beforeEdge.setTarget(cell) try cell.insertEdge(beforeEdge, false). This will remove the Edge from the previous vertex and add it to the new vertex.

Btw. I suggest to wrapp your code into a try-finally block, like this:

graph.getModel().beginUpdate();
try {
    // do all the graph related stuff
}
finally {
    graph.getModel().endUpdate();
}
F. Lumnitz
  • 688
  • 4
  • 11
  • It's already wrapp but i just show the part of the code who doesn't work ;). But it's work !! So thank you :D – amandine Nov 06 '15 at 09:23