EOS 2  1.1.0
Einfache Objektbasierte Sprache
LoopDoWhile.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.gui.flowchart;
2 
3 import de.lathanda.eos.baseparser.LoopUnit;
4 import de.lathanda.eos.gui.diagram.Drawing;
5 import de.lathanda.eos.gui.text.Text;
6 
13 public class LoopDoWhile extends ConnectedUnit {
14  private final Sequence sequence;
15  private final Diamond diam;
16  private final String yes = Text.LABEL.getString("Yes");
17  private final String no = Text.LABEL.getString("No");
18 
19  private float yesx;
20  private float yesy;
21  private float nox;
22  private float noy;
23 
24  LoopDoWhile(LoopUnit lu) {
25  this.needsIncomingArrow = false;
26  diam = new Diamond(lu.getLabel());
27  sequence = new Sequence(lu.getSequence());
29  }
30 
31  @Override
32  public void layoutUnit(Drawing d) {
33  sequence.layout(d);
34  diam.layout(d);
35 
36  width = (float) Math.max(sequence.getWidth(), diam.getWidth()) + 2 * SPACEX;
37  sequence.centerX(width);
38  ;
39  sequence.setOffsetY(SPACE);
40  diam.centerX(width);
41  diam.setOffsetY(2 * SPACE + sequence.getHeight());
42 
43  yesx = diam.getX(0) - d.stringWidth(yes) - BORDER;
44  yesy = diam.getY(0) - BORDER;
45  nox = diam.getX(3) + BORDER;
46  noy = diam.getY(3) + BORDER + d.getAscent();
47 
48  height = SPACE + sequence.getHeight() + SPACE + diam.getHeight() + SPACE;
49  }
50 
51  @Override
52  public void drawUnit(Drawing d) {
53  // condition diamond
54  diam.draw(d);
55 
56  // false arrow
57  d.drawString(no, nox, noy);
58  d.drawLine(diam.getX(3), diam.getY(3), diam.getX(3), diam.getY(3) + SPACE);
59 
60  // true jump start arrow
61  d.drawString(yes, yesx, yesy);
62  d.drawLine(diam.getX(0), diam.getY(0), 0, diam.getY(0));
63  d.drawLine(0, diam.getY(0), 0, 0);
64  d.drawLine(0, 0, width / 2, 0);
65  d.drawArrow(width / 2, 0, width / 2, SPACE, 2);
66 
67  // body -> diamond
68  d.drawArrow(diam.getX(1), diam.getY(1) - SPACE, diam.getX(1), diam.getY(1), 2);
69 
70  // loop body
71  sequence.draw(d);
72 
73  }
74 
75 }
float stringWidth(String text)
Definition: Drawing.java:111
void drawLine(float x1, float y1, float x2, float y2)
Definition: Drawing.java:138
void drawArrow(float x1, float y1, float x2, float y2, float size)
Definition: Drawing.java:284
void drawString(String text, float x, float y)
Definition: Drawing.java:148
static final float SPACEX
Definition: Unit.java:15
final void layout(Drawing d)
Definition: Unit.java:50
final void draw(Drawing d)
Definition: Unit.java:29
static final float SPACE
Definition: Unit.java:14
void setOffsetY(float offsetY)
Definition: Unit.java:79
void centerX(float width)
Definition: Unit.java:95
static final float BORDER
Definition: Unit.java:13
ResourceBundle LABEL
Definition: Text.java:8
Impressum