import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Line2D;
+import java.util.ArrayList;
+import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
Netzdose netzdose;
- int[] data;
+ List data = new ArrayList();
int min;
public Oszilloskop(Netzdose netzdose) {
this.netzdose = netzdose;
- data = new int[] { -20, 1, 30, 10, 20, 25, 10, 2 };
- this.setPreferredSize(new Dimension(200, 100));
+ setData(new int[] { -20, 1, 30, 10, 20, 25, 10, 2 });
+ this.setPreferredSize(new Dimension(300, 200));
this.setBorder(BorderFactory.createLoweredBevelBorder());
}
- public void paintComponent(Graphics g2) {
- super.paintComponent(g2);
- Graphics2D g = (Graphics2D) g2;
+ public void paintComponent(Graphics g) {
+ super.paintComponent(g);
+ Graphics2D g2d = (Graphics2D) g;
Dimension size = getSize();
int border_x = 10;
int border_y = 10;
setBackground(Color.black);
- g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+ g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
- g.setPaint(new Color(50, 80, 50));
- g.fillRect(border_x, border_y, (int) size.getWidth() - 2 * border_x,
+ g2d.setPaint(new Color(50, 80, 50));
+ g2d.fillRect(border_x, border_y, (int) size.getWidth() - 2 * border_x,
(int) size.getHeight() - 2 * border_y);
- g.setPaint(Color.lightGray);
- g.drawRect(border_x, border_y, (int) size.getWidth() - 2 * border_x,
+ g2d.setPaint(Color.lightGray);
+ g2d.drawRect(border_x, border_y, (int) size.getWidth() - 2 * border_x,
(int) size.getHeight() - 2 * border_y);
if (data != null) {
- if (min == max) {
- min = getMin();
- max = getMax();
- }
- LogMediator.getInstance(this.getClass()).log("Min: " + min + " Max: " + max);
-
- double factor_x = (size.getWidth() - border_x * 2.0) / (data.length-1);
+ double factor_x = (size.getWidth() - border_x * 2.0) / (data.size() -1);
double factor_y = (size.getHeight() - border_y * 2.0) / (max - min);
- g.setPaint(Color.green);
+ g2d.setPaint(Color.green);
int old_y = size.height
- - ((int) ((data[0] - min) * factor_y + border_y));
+ - ((int) ((((Integer) data.get(0)).intValue() - min) * factor_y + border_y));
int old_x = border_x;
- for (int i = 0; i < data.length; i++) {
+ for (int i = 0; i < data.size(); i++) {
int x = (int) (border_x + i * factor_x);
int y = size.height
- - ((int) ((data[i] - min) * factor_y + border_y));
- g.draw(new Line2D.Double(old_x, old_y, x, y));
+ - ((int) ((((Integer) data.get(i)).intValue() - min) * factor_y + border_y));
+ g2d.draw(new Line2D.Double(old_x, old_y, x, y));
old_x = x;
old_y = y;
}
}
- g.setPaint(Color.black);
+ g2d.setPaint(Color.black);
}
private int getMax() {
int result = Integer.MIN_VALUE;
- for (int i = 0; i < data.length; i++)
- if (data[i] > result)
- result = data[i];
+ for (int i = 0; i < data.size(); i++) {
+ int current = ((Integer) data.get(i)).intValue();
+ if (current > result)
+ result = current;
+ }
return result;
}
private int getMin() {
int result = Integer.MAX_VALUE;
- for (int i = 0; i < data.length; i++)
- if (data[i] < result)
- result = data[i];
+ for (int i = 0; i < data.size(); i++) {
+ int current = ((Integer) data.get(i)).intValue();
+ if (current < result)
+ result = current;
+ }
return result;
}
- public void setData(int[] data) {
- this.data = data;
- min = 0;
- max = 0;
+ public void setData(int[] newData) {
+ this.data.clear();
+ for (int i=0; i<newData.length; i++) {
+ this.data.add(new Integer(newData[i]));
+ }
+ min = getMin();
+ max = getMax();
+ LogMediator.getInstance(this.getClass()).log("Length: " + this.data.size() + " Min: " + min + " Max: " + max);
+ repaint();
+ }
+
+ public void addData(int i) {
+ data.add(new Integer(i));
+ min = getMin();
+ max = getMax();
+ LogMediator.getInstance(this.getClass()).log("Length: " + data.size() + " Min: " + min + " Max: " + max);
repaint();
}