EOS 2  1.1.0
Einfache Objektbasierte Sprache
Sequence.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.gui.structogram;
2 
3 import java.awt.Color;
4 import java.util.ArrayList;
5 
6 import de.lathanda.eos.baseparser.ProgramSequence;
7 import de.lathanda.eos.gui.diagram.Drawing;
8 import de.lathanda.eos.gui.diagram.Unit;
9 
16 public class Sequence extends Unit {
17  private ArrayList<Unit> units;
18 
19  Sequence(ProgramSequence programSequence) {
20  units = new ArrayList<>();
21  if (programSequence != null) {
22  programSequence.getInstructions().stream().forEachOrdered((n) -> {
23  units.add(Toolkit.create(n));
24  });
25  }
26  }
27 
28  @Override
29  public void drawUnit(Drawing d) {
30  d.setColor(Color.BLACK);
31  d.drawRect(0, 0, width, height);
32  units.stream().forEachOrdered(p -> p.draw(d));
33  }
34 
35  @Override
36  public void layoutUnit(Drawing d) {
37  units.forEach(p -> p.layout(d));
38  float maxw = 0;
39  float h = 0;
40  for (Unit u : units) {
41  if (maxw < u.getWidth()) {
42  maxw = u.getWidth();
43  }
44  u.setOffsetY(h);
45  h = h + u.getHeight();
46  }
47  height = h;
48  width = maxw;
49  for (Unit u : units) {
50  u.setWidth(maxw);
51  }
52  }
53 
54  @Override
55  public void setWidth(float width) {
56  super.setWidth(width);
57  units.stream().forEachOrdered(u -> u.setWidth(width));
58  }
59 }
void drawRect(float x, float y, float width, float height)
Definition: Drawing.java:211
static Unit create(ProgramNode n)
Definition: Toolkit.java:9
ArrayList< ProgramNode > getInstructions()
Impressum