package com.baselet.element.old.activity; import java.awt.Graphics2D; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicBoolean; import com.baselet.diagram.DiagramHandler; public class While extends Container { private WhileElement while_element; public While(AtomicBoolean autoInsertIF, DiagramHandler handler, Graphics2D g, Container parent, ArrayList<Row> rows, int row, String condition) { super(autoInsertIF, handler, g, parent, rows, row); if (condition != null && !condition.equals("")) { while_element = new Condition(handler, condition, g); } else { while_element = new LineSpacer(handler, g); } super.setStartElement(new If(handler, g, null)); addElement(while_element); addColumn(); } @Override public int getLeftWidth() { int width = getColumns().get(0).getWidth(); if (getColumns().size() > 1) { width += getColumns().get(1).getLeftWidth() + Const.COLUMN_PAD * getZoom(); } return width; } @Override protected int getRightWidth() { int width = 0; ArrayList<Column> columns = getColumns(); if (columns.size() > 1) { width += columns.get(1).getRightWidth(); } for (int i = 2; i < columns.size(); i++) { width += columns.get(i).getWidth() + Const.COLUMN_PAD * getZoom(); } return width; } @Override public void paint() { getStartElement().setNotTerminated(); getStartElement().paint(); getStopElement().paint(); while_element.connectTo(getStartElement(), getStopElement()); while_element.paint(); ArrayList<Column> columns = getColumns(); for (int i = 1; i < columns.size(); i++) { Column c = columns.get(i); getStartElement().connectTo(c.getFirstElement()); c.paint(); getStopElement().connectTo(c.getLastElement()); } } // dont allow change of start/stop elements @Override public void setStartElement(StartElement e) { } @Override public void setStopElement(StopElement e) { super.setStopElement(new EndIf(getHandler(), getGraphics(), null)); } }