VisualizeFrame.java

Go to the documentation of this file.
00001 
00010 package VisuBDD;
00011 
00012 import java.awt.*;          // Import abstract window toolkit.
00013 import java.awt.event.*;    // Import event components for awt.
00014 //import javax.swing.*;       // Import Swing components.
00015 import java.util.*;         // Import java utilities.
00016 
00017 
00018 public class VisualizeFrame extends Frame {
00019 
00020   private Panel mainPanel;
00021   private Frame myFrame;                // Pointer to this frame;
00022   private ScrollPane scrPane;
00023   private MyCanvas canvas;               // Canvas for graphics.
00024   private java.util.List visualizeList;  // contains value lists for display
00025   private int lineDistance = 2;
00026   private double maxBddWidth;
00027   private int[] fileSequence;
00028   private boolean xorMode = false;
00029   double[][] maxVals;
00030 
00031   /*
00032    * Class represents the canvas object, the line diagram will be draw on.
00033    * The class method paint, draws the diagram.
00034    */
00035 
00036   private class MyCanvas extends Canvas {
00037     
00042     private int maxBDDdepht(java.util.List localList) {
00043       int maxLength = 0;
00044 
00045       for (int i = 0; i < localList.size(); i++) {
00046         if (((java.util.List) localList.get(i)).size() > maxLength) {
00047           maxLength = ((java.util.List) localList.get(i)).size();
00048         } // if
00049       }  // for
00050 
00051       return maxLength;
00052     } // maxBDDdepht
00053 
00054     /*
00055      * Draws the line diagram
00056      *
00057      * @param area the graphics area for drawing.
00058      */
00059 
00060     public void paint(Graphics area) {
00061       int xStart, xEnd, // minimal size of window.
00062           lineWidth,hSize, vSize;
00063       double tmpVal, tmpVal2;
00064 
00065       java.util.List numberList;
00066 
00067       if (xorMode) {
00068         area.setXORMode(Color.white);
00069       } else {
00070         area.setPaintMode();
00071       } // if
00072 
00073       for (int i = 0; i < visualizeList.size(); i++) {
00074          maxVals[i][0] = max((java.util.List) visualizeList.get(i));
00075          maxVals[i][1] = (double) i;
00076       } // for
00077 
00078       // BubbleSort (descending sort)
00079       for (int i = 0; i < maxVals.length - 1; i++) {
00080         for (int j = i + 1; j < maxVals.length; j++) {
00081            if (maxVals[i][0] < maxVals[j][0]) {
00082              tmpVal = maxVals[i][0];
00083              tmpVal2 = maxVals[i][1];
00084              maxVals[i][0] = maxVals[j][0];
00085              maxVals[i][1] = maxVals[j][1];
00086              maxVals[j][0] = tmpVal;
00087              maxVals[j][1] = tmpVal2;
00088            } // if
00089         } // for
00090       }  // ofr
00091 
00092       fileSequence = new int[maxVals.length];
00093       for (int i = 0; i < maxVals.length; i++) {
00094         fileSequence[i] = (int) maxVals[i][1];
00095       }  // for
00096 
00097       //maxVal = maxVals[0][0]; //((float) this.max());
00098 
00099       area.drawString("Maximum BDD Width: " + maxBddWidth, 0, 12);
00100 
00101 /*
00102       lineDistance = (myFrame.getSize().height - 60)
00103                      / this.maxBDDdepht(visualizeList);
00104 
00105       if (lineDistance > 3) {
00106         lineDistance = 3;
00107       } else if (lineDistance == 0) {
00108         lineDistance = 1;
00109       } // if
00110 */
00111 
00112       hSize = myFrame.getSize().width - 35;  // save window sizes.
00113       vSize = maxBDDdepht(visualizeList) * lineDistance + 30;
00114       this.setSize(hSize, vSize);
00115 
00116       //System.out.println("hSize = " + hSize + " | vSize = " + vSize);
00117 
00118       for (int i = 0; (i < visualizeList.size()); i++) {
00119         area.setColor(ColorAssignment.getColor(i));
00120         numberList = ((java.util.List) visualizeList.get((int) maxVals[i][1]));
00121 
00122         for (int j = 0; (j < numberList.size()) && (j < hSize); j++) {
00123           lineWidth =  (int) (( ((double) (hSize - 20)) / maxBddWidth)
00124                * ((Double) numberList.get(j)).doubleValue());
00125           xStart = (hSize - lineWidth) / 2;
00126           xEnd = xStart + lineWidth;
00127 
00128           for (int k = 0; k < lineDistance; k++) {
00129             area.drawLine(xStart,(lineDistance * j + 20 + k),
00130                           xEnd, (lineDistance * j + 20 + k));
00131           } // for
00132         } // for
00133       } // for
00134     } // paint
00135 
00136 
00137     public Dimension getPreferedSize() {
00138       return new Dimension(myFrame.getSize().width - 50,
00139                            myFrame.getSize().height - 50);
00140     } // getPreferedSize
00141 
00142   } // class My_Canvas
00143   
00144 
00152   public VisualizeFrame(java.util.List visualizeList) {
00153     double tmpVal, tmpVal2;
00154 
00155     // Initialization of variables.
00156     this.myFrame = this;
00157     this.setTitle("Visualization of BDD Shape"); // Set window title.
00158     this.setLocation(295, 100);            // Set initial window position.
00159     this.setSize(600,500);             // Set windows size.
00160 
00161     this.visualizeList = visualizeList;
00162     this.maxVals = new double[visualizeList.size()][2];
00163 
00164     for (int i = 0; i < visualizeList.size(); i++) {
00165       this.maxVals[i][0] = max((java.util.List) this.visualizeList.get(i));
00166       this.maxVals[i][1] = (double) i;
00167     } // for
00168 
00169     // BubbleSort (descending sort)
00170     for (int i = 0; i < maxVals.length - 1; i++) {
00171       for (int j = i + 1; j < maxVals.length; j++) {
00172         if (maxVals[i][0] < maxVals[j][0]) {
00173           tmpVal = maxVals[i][0];
00174           tmpVal2 = maxVals[i][1];
00175           maxVals[i][0] = maxVals[j][0];
00176           maxVals[i][1] = maxVals[j][1];
00177           maxVals[j][0] = tmpVal;
00178           maxVals[j][1] = tmpVal2;
00179         } // if
00180       } // for
00181     }  // ofr
00182 
00183     this.fileSequence = new int[maxVals.length];
00184     for (int i = 0; i < maxVals.length; i++) {
00185       fileSequence[i] = (int) maxVals[i][1];
00186     }  // for
00187 
00188 
00189     // Add WindowListener for closing event.
00190     addWindowListener(
00191       new WindowAdapter() {
00192         public void windowClosing(WindowEvent evt) {
00193           dispose(); // close
00194           System.exit(0);
00195         } // windowClosing(WindowEvent evt)
00196       } // WindowAdapter
00197     ); // addWindowListener(new WindowAdapter)
00198 
00199     prepareWindow();  // Add windows components.
00200     canvas.repaint(); // Initial draw.
00201 
00202 
00203   } // constructor
00204   
00205 
00210   public double max(java.util.List numberList) {
00211     double maxVal = 0.0;
00212 
00213     for (int i = 0; i < numberList.size(); i++) {
00214       if ( ((Double) numberList.get(i)).doubleValue() > maxVal) {
00215         maxVal = ((Double) numberList.get(i)).doubleValue();
00216       } // if
00217     } // for
00218 
00219     return maxVal;
00220   } // max
00221 
00226   public void setMaxBddWidth(double value) {
00227     this.maxBddWidth = value;
00228   }
00229 
00230   public void setDistance(int value) {
00231     this.lineDistance = value;
00232   } // if
00233 
00234   public void setXorMode(boolean xorMode) {
00235     this.xorMode = xorMode;
00236   } // setXorMode
00237 
00238   public int[] getFileSequence() {
00239 //    System.out.println("getFileSequence length=" + this.fileSequence.length);
00240     return this.fileSequence;
00241   }
00242 
00247   public void repaint() {
00248     this.canvas.repaint();
00249   } // repaint;
00250 
00256   private void prepareWindow() {
00257     this.canvas = new MyCanvas(); // initialize canvas.
00258     this.canvas.setBackground(Color.white);
00259 //    this.mainPanel = new Panel();
00260     this.scrPane = new ScrollPane();
00261 
00262     this.scrPane.add(this.canvas);
00263 
00264     // Schrittweite der Scrollbars auf 25 Pixel je Mausklick einstellen. 
00265 //    this.scrPane.getVerticalScrollBar().setUnitIncrement(25);
00266 
00267 //    this.mainPanel.add(scrPane);
00268 
00269     // Add the graphics canvas to the frames content pane.
00270     this.add(scrPane);
00271 
00272   } // prepareWindow
00273 
00274   public Dimension getPreferedSize(){
00275     return new Dimension(600, 400);
00276   } // fi
00277 
00278 
00279 } // class

Generated on Fri Jun 6 22:21:09 2008 for CrocoPat by  doxygen 1.5.1