diff --git a/AlgebraicDataflowArchitectureModel/src/application/editor/Editor.java b/AlgebraicDataflowArchitectureModel/src/application/editor/Editor.java index 9ad3b2a..c5a8b00 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/editor/Editor.java +++ b/AlgebraicDataflowArchitectureModel/src/application/editor/Editor.java @@ -288,19 +288,20 @@ return output.toString(); } - private void buildGeometryOutput(StringBuilder output, final mxCell cell) { - for (int i = 0; i < cell.getChildCount(); i++) { - mxCell child = (mxCell) cell.getChildAt(i); + private void buildGeometryOutput(StringBuilder output, final mxCell parent) { + for (int i = 0; i < parent.getChildCount(); i++) { + mxCell child = (mxCell) parent.getChildAt(i); if (!graph.getModel().isVertex(child)) { continue; } mxGraphView view = graph.getView(); - mxCellState state = view.getState(child); - String identifier = state.getLabel(); - int x = (int) state.getX(); - int y = (int) state.getY(); - int w = (int) state.getWidth(); - int h = (int) state.getHeight(); + mxCellState parentState = view.getState(parent); + mxCellState childState = view.getState(child); + String identifier = childState.getLabel(); + int x = (int) (childState.getX() - parentState.getX()); + int y = (int) (childState.getY() - parentState.getY()); + int w = (int) childState.getWidth(); + int h = (int) childState.getHeight(); // Skip if current cell is not graph node if (identifier == null || identifier.isEmpty()) { diff --git a/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAM.java b/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAM.java index 596d133..c94d8dd 100644 --- a/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAM.java +++ b/AlgebraicDataflowArchitectureModel/src/parser/ParserDTRAM.java @@ -5,7 +5,6 @@ import com.mxgraph.model.mxIGraphModel; import com.mxgraph.view.mxCellState; import com.mxgraph.view.mxGraph; -import com.mxgraph.view.mxGraphView; import models.dataFlowModel.DataTransferModel; import parser.exceptions.*; @@ -136,7 +135,7 @@ } } - private void buildGeometry(mxGraph graph, mxCell parent, StringBuilder nodeIdentifier, int x, int y, int width, int height) { + private void buildGeometry(mxGraph graph, mxCell parent, StringBuilder nodeIdentifier, final int x, final int y, final int width, final int height) { mxIGraphModel graphModel = graph.getModel(); for (int i = 0; i < graphModel.getChildCount(parent); i++) { mxCell cell = (mxCell) graphModel.getChildAt(parent, i); @@ -144,24 +143,15 @@ continue; } mxGeometry geometry = (mxGeometry) cell.getGeometry().clone(); - mxGraphView view = graph.getView(); - mxCellState state = view.getState(cell); + mxCellState state = graph.getView().getState(cell); StringBuilder identifier = new StringBuilder(state.getLabel()); - if (nodeIdentifier.compareTo(identifier) == 0) { - System.out.println(nodeIdentifier + " : " + x + " " + y + " " + width + " " + height); - if (parent.getGeometry() != null) { // parent is root node - int diffX = x - (int) parent.getGeometry().getX(); - int diffY = y - (int) parent.getGeometry().getY(); - geometry.setX(diffX); - geometry.setY(diffY); - } else { - geometry.setX(x); - geometry.setY(y); - } + geometry.setX(x); + geometry.setY(y); geometry.setWidth(width); geometry.setHeight(height); + graphModel.setGeometry(cell, geometry); break; }