--- /dev/null
+/*
+ * Created on 15.05.2007
+ *
+ * To change this generated comment go to
+ * Window>Preferences>Java>Code Generation>Code Template
+ */
+package de.bytewurf.projekte.netzschalter;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.geom.Line2D;
+
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+
+/**
+ * @author felix
+ */
+public class Oszilloskop extends JPanel {
+
+ Netzdose netzdose;
+
+ int[] data;
+
+ int min;
+
+ int max;
+
+ public Oszilloskop(Netzdose netzdose) {
+ this.netzdose = netzdose;
+ data = new int[] { -20, 1, 30, 10, 20, 25, 10, 2 };
+ this.setPreferredSize(new Dimension(200, 100));
+ this.setBorder(BorderFactory.createLoweredBevelBorder());
+ repaint();
+ }
+
+ public void paintComponent(Graphics g2) {
+ super.paintComponent(g2);
+ Graphics2D g = (Graphics2D) g2;
+ Dimension size = getSize();
+ int border_x = 10;
+ int border_y = 10;
+
+ setBackground(Color.black);
+ g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+ RenderingHints.VALUE_ANTIALIAS_ON);
+ g.setPaint(Color.red);
+ g.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().log("Min: " + min + " Max: " + max);
+
+ double factor_x = (size.getWidth() - border_x * 2.0) / data.length;
+ double factor_y = (size.getHeight() - border_y * 2.0) / (max - min);
+
+ g.setPaint(Color.green);
+ int old_y = size.height
+ - ((int) ((data[0] - min) * factor_y + border_y));
+ int old_x = border_x;
+ for (int i = 0; i < data.length; 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));
+ old_x = x;
+ old_y = y;
+ }
+
+ }
+ g.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];
+ 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];
+ return result;
+ }
+
+ public void setData(int[] data) {
+ this.data = data;
+ min = 0;
+ max = 0;
+ repaint();
+ }
+
+}