EOS 2  1.1.0
Einfache Objektbasierte Sprache
LoopWhile.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 LoopWhile extends ConnectedUnit {
14  private final Diamond diam;
15  private final Sequence sequence;
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  LoopWhile(LoopUnit lu) {
25  diam = new Diamond(lu.getLabel());
26  sequence = new Sequence(lu.getSequence());
28  }
29 
30  @Override
31  public void layoutUnit(Drawing d) {
32  sequence.layout(d);
33  diam.layout(d);
34 
35  width = Math.max(sequence.getWidth(), diam.getWidth()) + 2 * SPACEX;
36  diam.centerX(width);
37  sequence.centerX(width);
38  sequence.setOffsetY(diam.getHeight() + SPACE);
39 
40  yesx = diam.getX(3) + 2 * BORDER;
41  yesy = diam.getY(3) + d.getAscent();
42  nox = diam.getX(0) - d.stringWidth(no) - BORDER;
43  noy = diam.getY(0) - BORDER;
44  height = diam.getHeight() + SPACE + sequence.getHeight() + SPACE + SPACE;
45  }
46 
47  @Override
48  public void drawUnit(Drawing d) {
49  // condition diamond
50  diam.draw(d);
51 
52  // false skip line
53  d.drawString(no, nox, noy);
54  d.drawLine(diam.getX(0), diam.getY(0), 0, diam.getY(0));
55  d.drawLine(0, diam.getY(0), 0, height);
56  d.drawLine(0, height, width / 2, height);
57 
58  // jump start arrow
59  d.drawLine(width / 2, height - 2 * SPACE, width / 2, height - SPACE);
60  d.drawLine(width / 2, height - SPACE, width, height - SPACE);
61  d.drawLine(width, height - SPACE, width, diam.getY(2));
62  d.drawArrow(width, diam.getY(2), diam.getX(2), diam.getY(2), 2);
63 
64  // true arrow
65  d.drawString(yes, yesx, yesy);
66  d.drawArrow(diam.getX(3), diam.getY(3), diam.getX(3), diam.getY(3) + SPACE, 2);
67 
68  // loop body
69  sequence.draw(d);
70 
71  }
72 
73 }
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