Skip to content

Commit 6f809c2

Browse files
committed
fixed lane divider computation
Issue #329
1 parent 3ff379c commit 6f809c2

File tree

2 files changed

+22
-23
lines changed

2 files changed

+22
-23
lines changed

open-bpmn.glsp-server/src/main/java/org/openbpmn/glsp/model/BPMNGModelFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,9 @@ public int compare(Lane obj1, Lane obj2) {
355355
double laneYPos = currentLane.getBounds().getPosition().getY() - poolYPos;
356356
double laneHeight = currentLane.getBounds().getDimension().getHeight();
357357
double laneDividerYPos = laneYPos + laneHeight - 1;
358-
double laneMinYPos = laneDividerYPos - laneHeight + Lane.MIN_HEIGHT;
358+
double laneMinYPos = laneDividerYPos - laneHeight + Lane.MIN_HEIGHT + 1;
359359
double laneMaxYPos = laneDividerYPos + nextLane.getBounds().getDimension().getHeight()
360-
- Lane.MIN_HEIGHT;
360+
- Lane.MIN_HEIGHT + 1;
361361
pool.getChildren()
362362
.add(BPMNGModelUtil.createLaneDivider(participant, laneDividerYPos,
363363
laneMinYPos,

open-bpmn.glsp-server/src/main/java/org/openbpmn/glsp/operations/BPMNChangeBoundsOperationHandler.java

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,10 @@ private void updateLaneSizeByDividerPos(GNode gNode, double offsetY) throws BPMN
194194
String upperLaneID = gNode.getArgs().get("upperlaneid").toString();
195195
String lowerLaneID = gNode.getArgs().get("lowerlaneid").toString();
196196

197+
logger.debug("--- Update Lane ---");
198+
logger.debug("--- offsetY=" + offsetY);
199+
logger.debug("--- gNodeID=" + gNode.getId());
200+
197201
// Upper Lane
198202
GNode upperGLane = (GNode) modelState.getIndex().get(upperLaneID)
199203
.orElse(null);
@@ -207,43 +211,38 @@ private void updateLaneSizeByDividerPos(GNode gNode, double offsetY) throws BPMN
207211
throw new BPMNMissingElementException(BPMNMissingElementException.MISSING_ELEMENT,
208212
"Lane " + upperLaneID + " not found in model!");
209213
}
210-
211214
String poolID = upperGLane.getParent().getId();
212215
participant = modelState.getBpmnModel().findParticipantById(poolID);
213-
214-
// Lane currentLane = participant.openProcess().findLaneById(gNode.getId());
215-
// double myY = currentLane.getBounds().getPosition().getY();
216-
217216
upperBpmnLane = participant.openProcess().findLaneById(upperLaneID);
218217
lowerBpmnLane = participant.openProcess().findLaneById(lowerLaneID);
218+
219+
logger.debug("--- " + poolID + " y=" + participant.getBounds().getPosition().getY());
220+
219221
// test if y-offset between min/max y range?
220222
double yMin = Double.parseDouble(gNode.getArgs().get("ymin").toString());
221223
double yMax = Double.parseDouble(gNode.getArgs().get("ymax").toString());
222224

223-
logger.info("-------------------");
224-
225-
logger.info(" upperLane - y=" + upperBpmnLane.getBounds().getPosition().getY() + " h="
225+
logger.debug("--- divider ymin=" + yMin);
226+
logger.debug("--- divider ymax=" + yMax);
227+
logger.debug("--- upperLane - y=" + upperBpmnLane.getBounds().getPosition().getY() + " h="
226228
+ upperBpmnLane.getBounds().getDimension().getHeight());
227-
228-
logger.info(" lowerBpmnLane - y=" + lowerBpmnLane.getBounds().getPosition().getY() + " h="
229+
logger.debug("--- lowerBpmnLane - y=" + lowerBpmnLane.getBounds().getPosition().getY() + " h="
229230
+ lowerBpmnLane.getBounds().getDimension().getHeight());
230-
logger.info(" yMin = " + yMin + " yMax=" + yMax);
231231

232-
logger.info(" OffsetY = " + offsetY);
232+
// Compute new lane dimensions....
233233

234-
if (upperBpmnLane.getBounds().getDimension().getHeight()
235-
+ offsetY < lowerBpmnLane.getBounds().getPosition().getY() + yMin) {
236-
logger.info("zu klein ");
237-
offsetY = -(upperBpmnLane.getBounds().getDimension().getHeight() - yMin);
238-
} else if (lowerBpmnLane.getBounds().getPosition().getY() + offsetY > yMax) {
239-
logger.info("zu groß");
240-
offsetY = yMax - lowerBpmnLane.getBounds().getPosition().getY();
234+
if (upperBpmnLane.getBounds().getDimension().getHeight() + offsetY < Lane.MIN_HEIGHT) {
235+
logger.debug("to small ");
236+
offsetY = -(upperBpmnLane.getBounds().getDimension().getHeight() - Lane.MIN_HEIGHT);
237+
} else if (lowerBpmnLane.getBounds().getDimension().getHeight() - offsetY < Lane.MIN_HEIGHT) {
238+
logger.debug("to big");
239+
offsetY = lowerBpmnLane.getBounds().getDimension().getHeight() - Lane.MIN_HEIGHT;
241240
}
241+
logger.debug("--- Final Offset = " + offsetY);
242242

243-
// recompute lane sizes....
243+
// // recompute lane sizes....
244244
upperBpmnLane.setDimension(upperBpmnLane.getBounds().getDimension().getWidth(),
245245
upperBpmnLane.getBounds().getDimension().getHeight() + offsetY);
246-
247246
lowerBpmnLane.setPosition(lowerBpmnLane.getBounds().getPosition().getX(),
248247
lowerBpmnLane.getBounds().getPosition().getY() + offsetY);
249248
lowerBpmnLane.setDimension(lowerBpmnLane.getBounds().getDimension().getWidth(),

0 commit comments

Comments
 (0)