Annotation of FM2SQL/src/ResultWindow.java, revision 1.1
1.1 ! 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: */
! 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>