EOS 2  1.1.0
Einfache Objektbasierte Sprache
ClassDiagram.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.gui.classchart;
2 
3 import java.awt.Color;
4 import java.awt.Dimension;
5 import java.awt.Graphics;
6 import java.awt.Graphics2D;
7 import java.awt.event.MouseEvent;
8 import java.awt.image.BufferedImage;
9 import javax.swing.JPanel;
10 import javax.swing.ToolTipManager;
11 
12 import de.lathanda.eos.baseparser.Type;
13 import de.lathanda.eos.gui.diagram.Drawing;
14 
15 public class ClassDiagram extends JPanel {
16  private static final long serialVersionUID = -5709882169808097527L;
17 
18  private ClassUnit unit;
19  private static final float SPACE = 5;
20  private final Drawing d;
21  private Type type;
22 
23  public ClassDiagram() {
24  super();
25  setBackground(Color.WHITE);
26  d = new Drawing();
27  ToolTipManager.sharedInstance().registerComponent(this);
28  }
29 
30  public void setData(Type data) {
31  this.type = data;
32  unit = new ClassUnit(data);
33  setPreferredSize(layout(d));
34  revalidate();
35  repaint();
36  }
37 
38  @Override
39  public String getToolTipText(MouseEvent me) {
40  if (unit != null) {
41  return unit.getToolTipText(d.convertpixel2mm(me.getX()) - SPACE, d.convertpixel2mm(me.getY()) - SPACE);
42  } else {
43  return "";
44  }
45  }
46 
47  @Override
48  protected void paintComponent(Graphics g) {
49  super.paintComponent(g);
50  render((Graphics2D) g);
51  }
52 
53  public void render(Graphics2D g) {
54  d.init(g);
55  render(d);
56  }
57 
58  public BufferedImage export(float dpi) {
59  if (type == null)
60  return new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
61  Drawing drawing = new Drawing(dpi);
62  unit.layout(drawing);
63  Dimension dim = new Dimension(drawing.convertmm2pixel(unit.getWidth()),
64  drawing.convertmm2pixel(unit.getHeight()));
65  ;
66  BufferedImage image = new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_RGB);
67  Graphics2D g = image.createGraphics();
68  g.setBackground(Color.WHITE);
69  g.clearRect(0, 0, dim.width, dim.height);
70  drawing.init(g);
71  render(drawing);
72  layout(d);
73  return image;
74  }
75 
76  private Dimension layout(Drawing d) {
77  unit.layout(d);
78  return new Dimension(d.convertmm2pixel(unit.getWidth() + SPACE * 2),
79  d.convertmm2pixel(unit.getHeight() + SPACE * 2));
80  }
81 
82  private void render(Drawing d) {
83  if (unit == null)
84  return;
85  d.pushTransform();
86  d.translate(SPACE, SPACE);
87  d.setDrawWidth(0.5f);
88  d.setColor(Color.BLACK);
89  unit.draw(d);
90  d.popTransform();
91  }
92 }
String getToolTipText(float x, float y)
Definition: ClassUnit.java:105
final void layout(Drawing d)
Definition: Unit.java:50
final void draw(Drawing d)
Definition: Unit.java:29
Impressum