EOS 2  1.1.0
Einfache Objektbasierte Sprache
ClassUnit.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.gui.classchart;
2 
3 import java.awt.Color;
4 import java.util.ArrayList;
5 import java.util.Collections;
6 import java.util.LinkedList;
7 
8 import de.lathanda.eos.baseparser.AutoCompleteInformation;
9 import de.lathanda.eos.baseparser.Type;
10 import de.lathanda.eos.config.Language;
11 import de.lathanda.eos.gui.diagram.Drawing;
12 import de.lathanda.eos.gui.diagram.TextUnit;
13 import de.lathanda.eos.gui.diagram.Unit;
14 
15 public class ClassUnit extends Unit {
16 
17  private float yLabel;
18  private float yProperties;
19 
20  protected final static float BORDER = 1;
21  String name;
22  LinkedList<AutoCompleteInformation> methods = new LinkedList<>();
23  LinkedList<AutoCompleteInformation> properties = new LinkedList<>();
24  LinkedList<TextUnit> text = new LinkedList<>();
25  ArrayList<String> tooltip = new ArrayList<>();
26 
27  public ClassUnit(Type t) {
28  name = Language.def.getClassLabel(t);
30  switch (aci.getType()) {
32  methods.add(aci);
33  break;
36  properties.add(aci);
37  break;
38  }
39  }
40  Collections.sort(methods, (a, b) -> {
41  return a.getLabel().compareTo(b.getLabel());
42  });
43  Collections.sort(properties, (a, b) -> {
44  return a.getLabel().compareTo(b.getLabel());
45  });
46  }
47 
48  @Override
49  public void drawUnit(Drawing d) {
50  d.setColor(Color.BLACK);
51  d.drawRect(0, 0, width, height);
52  d.drawLine(0, yLabel, width, yLabel);
53  d.drawLine(0, yProperties, width, yProperties);
54  for (TextUnit t : text) {
55  t.draw(d);
56  }
57  }
58 
59  @Override
60  public void layoutUnit(Drawing d) {
61  text.clear();
62  // header
63  TextUnit header = new TextUnit(name);
64  header.setFont(HEADER_FONT);
65  header.layout(d);
66  header.setOffsetX(INDENT);
67  header.setOffsetY(INDENT);
68  width = header.getWidth();
69  height = header.getHeight() + INDENT * 2;
70  text.add(header);
71  tooltip.add(null);
72  yLabel = height;
73  // properties
74  height += INDENT;
75  for (AutoCompleteInformation aci : properties) {
76  TextUnit prop = new TextUnit(aci.getLabel());
77  prop.layout(d);
78  prop.setOffsetX(INDENT);
79  prop.setOffsetY(height);
80  height += prop.getHeight() + INDENT;
81  if (prop.getWidth() > width) {
82  width = prop.getWidth();
83  }
84  text.add(prop);
85  tooltip.add("<html><p>" + aci.getTooltip() + "</p></html>");
86  }
87  yProperties = height;
88  height += INDENT;
89  for (AutoCompleteInformation aci : methods) {
90  TextUnit meth = new TextUnit(aci.getLabel());
91  meth.layout(d);
92  meth.setOffsetX(INDENT);
93  meth.setOffsetY(height);
94  height += meth.getHeight() + INDENT;
95  text.add(meth);
96  tooltip.add("<html><p>" + aci.getTooltip() + "</p></html>");
97  if (meth.getWidth() > width) {
98  width = meth.getWidth();
99  }
100  }
101  // adjust width
102  width += 2 * BORDER;
103  }
104 
105  public String getToolTipText(float x, float y) {
106  int i = 0;
107  for (TextUnit tu : text) {
108  if (tu.getOffsetX() < x && x < tu.getRight() && tu.getOffsetY() < y && y < tu.getBottom()) {
109  return tooltip.get(i);
110  }
111  i++;
112  }
113  return null;
114  }
115 }
LinkedList< AutoCompleteInformation > getAutoCompletes()
Definition: Type.java:184
String getToolTipText(float x, float y)
Definition: ClassUnit.java:105
void drawLine(float x1, float y1, float x2, float y2)
Definition: Drawing.java:138
void drawRect(float x, float y, float width, float height)
Definition: Drawing.java:211
void setFont(Font font)
Definition: Unit.java:46
final void layout(Drawing d)
Definition: Unit.java:50
static final float INDENT
Definition: Unit.java:12
void setOffsetY(float offsetY)
Definition: Unit.java:79
void setOffsetX(float offsetX)
Definition: Unit.java:63
Impressum