int[] data durch List data ersetzt und neue Methode addData hinzugenommen
authorfelix <felix@a944a559-bf0e-0410-8ddc-85264b264b6c>
Thu, 17 May 2007 14:41:44 +0000 (14:41 +0000)
committerfelix <felix@a944a559-bf0e-0410-8ddc-85264b264b6c>
Thu, 17 May 2007 14:41:44 +0000 (14:41 +0000)
git-svn-id: https://www.internetallee.de/svn/bytewurf@40 a944a559-bf0e-0410-8ddc-85264b264b6c

projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Oszilloskop.java

index 6d098d4..0a20c74 100644 (file)
@@ -12,6 +12,8 @@ import java.awt.Graphics;
 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;
@@ -23,7 +25,7 @@ public class Oszilloskop extends JPanel {
 
        Netzdose netzdose;
 
-       int[] data;
+       List data = new ArrayList();
 
        int min;
 
@@ -31,76 +33,86 @@ public class Oszilloskop extends JPanel {
 
        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();
        }