Annotation of FM2SQL/ResultWindow.java, revision 1.2

1.2     ! rogo        1: /*
        !             2:  * ResultWindow.java -- Class show results from an db query
        !             3:  * Filemake to SQL Converter 
        !             4:  * Copyright (C) 2004 Robert Gordesch (rogo@mpiwg-berlin.mpg.de        !             5:  * This program is free software; you can redistribute it and/or modify it
        !             6:  * under the terms of the GNU General Public License as published by the Free
        !             7:  * Software Foundation; either version 2 of the License, or (at your option)
        !             8:  * any later version.  Please read license.txt for the full details. A copy of
        !             9:  * the GPL may be found at http://www.gnu.org/copyleft/lgpl.html  You should
        !            10:  * have received a copy of the GNU General Public License along with this
        !            11:  * program; if not, write to the Free Software Foundation, Inc., 59 Temple
        !            12:  * Place, Suite 330, Boston, MA 02111-1307 USA  Created on 15.09.2003 by
        !            13:  * rogo  
        !            14:  */
1.1       rogo       15: import javax.swing.*;
                     16: import java.util.*;
                     17: import java.awt.event.*;
                     18: import java.awt.*;
                     19: import java.text.*;
                     20: import java.io.*;
                     21: /**
                     22:  * 
                     23:  * ResultWindow - used to display the results of the query
                     24:  * 
                     25:  *  @author rogo
                     26:  */
                     27: 
                     28: public class ResultWindow extends JDialog
                     29: {
                     30:   /**
                     31:    * FM reference 
                     32:    */
                     33:   JFrame fm;
                     34:   /**
                     35:    * TableComponent instance used to display the data
                     36:    */
                     37:   TableComponent table = new TableComponent();
                     38:   /**
                     39:    * window title
                     40:    */
                     41:   String title = "";
                     42:   boolean update = true;
                     43:   int oldWidth = 0;
                     44:   int oldHeight = 0;
                     45:   static int counter = 0;
                     46:   /**
                     47:    * Constructs  the result Window with the JFrame argument as parent 
                     48:    * @param parent frame of the JDialog  
                     49:    */
                     50:   public ResultWindow(JFrame frame)
                     51:   {
                     52:     super(frame);
                     53:     fm = (JFrame) frame;
                     54:     getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
                     55:     getContentPane().add(table);
                     56:     // getContentPane().setBackground(Color.white);
                     57:     addComponentListener(new ComponentAdapter()
                     58:     {
                     59:       public void componentResized(ComponentEvent e)
                     60:       {
                     61: 
                     62:         // System.out.println("Window resized " + getWidth() + " " + getHeight());
                     63: 
                     64:         setTitle(title);
                     65:         //if(table.tableScroller.getPreferredSize().width<getWidth())
                     66: 
                     67:         //table.repaint();
                     68:         if (oldWidth != getWidth() || oldHeight != getHeight())
                     69:         {
                     70:           table.sizeToFit(getWidth(), getHeight());
                     71: 
                     72:           Dimension dim = table.table.getPreferredSize();
                     73: 
                     74:           table.tableScroller.setPreferredSize(new Dimension(getWidth() - 15, getHeight() - 45));
                     75:           Dimension d2 = table.tableScroller.getPreferredSize();
                     76: 
                     77:           oldWidth = getWidth();
                     78:           oldHeight = getHeight();
                     79:           //   System.out.println("fit" + getWidth() + " " + oldWidth);
                     80:           //table.table.setPreferredScrollableViewportSize(dim);
                     81: 
                     82:           table.setPreferredSize(new Dimension(d2.width + 10, d2.height + 5));
                     83:           table.table.revalidate();
                     84:           table.tableScroller.revalidate();
                     85:           table.revalidate();
                     86:           int size = (table.tableScroller.getHorizontalScrollBar().isVisible()) ? 90 : 70;
                     87:           if (getHeight() > table.table.getPreferredSize().height + size)
                     88:             setSize(getWidth(), table.table.getHeight() + size+5);
                     89:             //
                     90:         }
                     91: 
                     92:         //  System.out.println("fit" + getWidth() + " " + oldWidth);
                     93: 
                     94:       }
                     95:     });
                     96:     table.setEnabled(false);
                     97:     update = true;
                     98:     pack();
                     99:     oldWidth = getWidth();
                    100:     setLocation(new Point(frame.getLocation().x, frame.getLocation().y + 50));
                    101:     rootPane.setOpaque(false);
                    102: 
                    103:   }
                    104:   /**
                    105:    * Fills the table component of this window with new data
                    106:    */
                    107:   public void updateResult(Vector data, Vector columnNames)
                    108:   {
                    109:     update = true;
                    110:     table.tableModel.setDataVector(data, columnNames);
                    111:     Dimension d2 = table.tableScroller.getPreferredSize();
                    112:     Dimension dim = table.table.getPreferredSize();
                    113:     //System.out.println("here"+dim.width+" "+getWidth()+" "+d2.width+" "+table.table.getScrollableTracksViewportHeight());
                    114:     if (dim.width > getWidth())
                    115:     {
                    116:       //table.vergroessern(getWidth(),getHeight());
                    117:       oldWidth = dim.width * 3;
                    118:       oldHeight = (dim.height >= table.screenSize.height) ? table.screenSize.height : dim.height + table.table.getTableHeader().getHeight() * 2; //32;
                    119: 
                    120:     } else
                    121:     {
                    122:       // table.sizeToFit(getWidth(),getHeight());
                    123:       // table.sizeToFit(dim.width * 3, getHeight());
                    124:       /*  // table.table.setSize(dim.width * 3,dim.height);
                    125:          table.tableScroller.setPreferredSize(new Dimension((dim.width*3), dim.height+23));
                    126:          d2 = table.tableScroller.getPreferredSize();
                    127:           // table.table.setPreferredScrollableViewportSize(table.table.getSize());
                    128:         dim = table.table.getPreferredSize();
                    129:          table.setPreferredSize(new Dimension(d2.width+10,d2.height+3));
                    130:          table.tableScroller.validate();
                    131:          table.validate(); 
                    132:        // setSize(dim.width, dim.height + 40);
                    133:           oldWidth = d2.width+10;
                    134:        oldHeight=d2.height+3; 
                    135:          System.out.println("here"+dim.width+" "+getWidth()+" "+d2.width+" "+table.table.getPreferredScrollableViewportSize());
                    136:         */
                    137:       oldWidth = dim.width;
                    138:       oldHeight = (dim.height >= table.screenSize.height) ? table.screenSize.height : dim.height + table.table.getTableHeader().getHeight() * 2;
                    139:       setSize(dim.width, oldHeight);
                    140:     }
                    141: 
                    142:     oldWidth = getWidth();
                    143:     oldHeight = getHeight();
                    144:     pack();
                    145:     // table.repaint();
                    146: 
                    147:   }
                    148:   /**
                    149:    * exports the current results to HTML
                    150:    * @param query that produced the result  
                    151:    * @return StringBuffer containing the HTML code
                    152:    */
                    153:   public StringBuffer exportQueryToHTML(String query)
                    154:   {
                    155:     if (query == "")
                    156:       query = title;
                    157:     StringBuffer buff = new StringBuffer();
                    158:     buff.append("<html>");
                    159:     buff.append("<head>");
                    160:     buff.append("<title>");
                    161:     buff.append(query);
                    162:     buff.append("</title>");
                    163:     buff.append("</head>");
                    164: 
                    165:     buff.append("<body>");
                    166:     buff.append("<center>");
                    167:     buff.append("<h3>");
                    168:     buff.append(query);
                    169:     buff.append("</h3>");
                    170:     buff.append(table.exportToHTML());
                    171:     buff.append("</body>");
                    172:     buff.append("</html>");
                    173:     return TableComponent.convertUml(buff);
                    174:   }
                    175:   /**
                    176:    * Actual write the result to a file( in HTML)
                    177:    */
                    178:   public String writeResult()
                    179:   {
                    180: 
                    181:     String name = "";
                    182:     try
                    183:     {
                    184:       NumberFormat nf = new DecimalFormat("0000");
                    185:       name = "./html/query" + nf.format(counter++) + ".html";
                    186:       FileWriter file = new FileWriter(new File(name));
                    187:       file.write(exportQueryToHTML(title).toString());
                    188:       file.close();
                    189:     } catch (Exception e)
                    190:     {
                    191:       System.out.println("Error while writing html\n" + e);
                    192:     }
                    193:     return name;
                    194:   }
                    195: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>