fix: Group some problem!

todo: Group next problem!
This commit is contained in:
huangsimin 2019-12-18 18:42:55 +08:00
parent 4f393f6573
commit eb4013c413

View File

@ -10,6 +10,7 @@ import java.util.List;
import com.mxgraph.io.mxCodec; import com.mxgraph.io.mxCodec;
import com.mxgraph.model.mxCell; import com.mxgraph.model.mxCell;
import com.mxgraph.model.mxGeometry;
import com.mxgraph.model.mxGraphModel; import com.mxgraph.model.mxGraphModel;
import com.mxgraph.model.mxICell; import com.mxgraph.model.mxICell;
import com.mxgraph.model.mxIGraphModel; import com.mxgraph.model.mxIGraphModel;
@ -59,6 +60,11 @@ public class Graph {
groupCell.cell.setConnectable(false); groupCell.cell.setConnectable(false);
groupCell.cell.setVertex(true); groupCell.cell.setVertex(true);
groupCell.isGroup = true; groupCell.isGroup = true;
mxGeometry geometry = new mxGeometry();
geometry.add(graph.graph.getGraphBounds());
groupCell.cell.setGeometry(geometry);
} }
for (final Object _cell : _cells) { for (final Object _cell : _cells) {
@ -125,14 +131,13 @@ public class Graph {
if(isInGroup) { if(isInGroup) {
cloned.cell.setParent(groupCell.cell); cloned.cell.setParent(groupCell.cell);
mxICell parent = cloned.cell.getParent(); mxICell parent = cloned.cell.getParent();
System.out.println(parent);
} }
} }
} }
if (isInGroup) { if (isInGroup) {
cells.add(groupCell); cells.add(0, groupCell);
} }
return cells; return cells;
@ -156,32 +161,44 @@ public class Graph {
final List<mxCellCloned> cellCloneds2 = mxCellCloned.clone(g2, isInGroup); final List<mxCellCloned> cellCloneds2 = mxCellCloned.clone(g2, isInGroup);
HashMap<String, Object> groupmap = new HashMap<String, Object>(); HashMap<String, Object> groupmap1 = new HashMap<String, Object>();
cellCloneds1.forEach(cloned -> { cellCloneds1.forEach(cloned -> {
mxICell parent = cloned.cell.getParent(); mxICell parent = cloned.cell.getParent();
if (parent != null) { if (parent != null) {
Object np = groupmap.get(parent.getId()); Object np = groupmap1.get(parent.getId());
if(np != null) { if(np != null) {
graph.getMXGraph().addCell(cloned.cell, np); Object add = graph.getMXGraph().addCell(cloned.cell);
((mxCell)add).setParent((mxCell)np);
} else { } else {
System.out.println("x"); System.out.println("x");
} }
} else { } else {
Object groupcell = graph.getMXGraph().addCell(cloned.cell); Object groupcell = graph.getMXGraph().addCell(cloned.cell);
groupmap.put(cloned.cell.getId(), groupcell); groupmap1.put(cloned.cell.getId(), groupcell);
} }
}); });
HashMap<String, Object> groupmap2 = new HashMap<String, Object>();
cellCloneds2.forEach(cloned -> { cellCloneds2.forEach(cloned -> {
if (cloned.cell.getParent() != null) { mxICell parent = cloned.cell.getParent();
graph.getMXGraph().addCell(cloned.cell, cloned.cell.getParent()); if (parent != null) {
Object np = groupmap2.get(parent.getId());
if(np != null) {
Object add = graph.getMXGraph().addCell(cloned.cell);
((mxCell)add).setParent((mxCell)np);
} else {
System.out.println("x");
}
} else { } else {
graph.getMXGraph().addCell(cloned.cell); Object groupcell = graph.getMXGraph().addCell(cloned.cell);
groupmap2.put(cloned.cell.getId(), groupcell);
} }
}); });