EOS 2  1.1.0
Einfache Objektbasierte Sprache
Loop.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.gui.structogram;
2 
3 import de.lathanda.eos.baseparser.LoopUnit;
4 import de.lathanda.eos.gui.diagram.Drawing;
5 import de.lathanda.eos.gui.diagram.Unit;
6 
13 public class Loop extends Unit {
14  private final String label;
15  private final Sequence sequence;
16  private final boolean pre;
17  private final static float BAR_WIDTH = 7;
18  private float textx;
19  private float texty;
20 
21  Loop(LoopUnit loop) {
22  sequence = new Sequence(loop.getSequence());
23  label = loop.getLabel();
24  pre = loop.isPre();
26  }
27 
28  @Override
29  public void layoutUnit(Drawing d) {
30  sequence.layout(d);
31 
32  float textwidth = d.stringWidth(label);
33  float textheight = d.getHeight();
34  if (textwidth + 2 * BORDER > sequence.getWidth() + BAR_WIDTH) {
35  width = textwidth + 2 * BORDER;
36  sequence.setWidth(width - BAR_WIDTH);
37  } else {
38  width = BAR_WIDTH + sequence.getWidth();
39  }
40  if (pre) {
41  texty = d.getAscent() + BORDER;
42  sequence.setOffsetY(textheight + 2 * BORDER);
43  } else {
44  texty = sequence.getHeight() + d.getAscent() + BORDER;
45  }
46  textx = (width - textwidth) / 2;
47  sequence.setOffsetX(BAR_WIDTH);
48  height = sequence.getHeight() + textheight + 2 * BORDER;
49  }
50 
51  @Override
52  public void drawUnit(Drawing d) {
53  d.drawRect(0, 0, width, height);
54  d.drawString(label, textx, texty);
55  sequence.draw(d);
56  }
57 
58  @Override
59  public void setWidth(float width) {
60  float diff = width - this.width;
61  super.setWidth(width);
62  textx = textx + diff / 2;
63  sequence.setWidth(width - BAR_WIDTH);
64  }
65 
66 }
float stringWidth(String text)
Definition: Drawing.java:111
void drawRect(float x, float y, float width, float height)
Definition: Drawing.java:211
void drawString(String text, float x, float y)
Definition: Drawing.java:148
final void layout(Drawing d)
Definition: Unit.java:50
final void draw(Drawing d)
Definition: Unit.java:29
void setOffsetY(float offsetY)
Definition: Unit.java:79
void setOffsetX(float offsetX)
Definition: Unit.java:63
static final float BORDER
Definition: Unit.java:13
void setWidth(float width)
Definition: Loop.java:59
Impressum