Annotation of FM2SQL/ResultWindow.java, revision 1.1.1.1
1.1 rogo 1: import javax.swing.*;
2: import java.util.*;
3: import java.awt.event.*;
4: import java.awt.*;
5: import java.text.*;
6: import java.io.*;
7: /**
8: *
9: * ResultWindow - used to display the results of the query
10: *
11: * @author rogo
12: */
13:
14: public class ResultWindow extends JDialog
15: {
16: /**
17: * FM reference
18: */
19: JFrame fm;
20: /**
21: * TableComponent instance used to display the data
22: */
23: TableComponent table = new TableComponent();
24: /**
25: * window title
26: */
27: String title = "";
28: boolean update = true;
29: int oldWidth = 0;
30: int oldHeight = 0;
31: static int counter = 0;
32: /**
33: * Constructs the result Window with the JFrame argument as parent
34: * @param parent frame of the JDialog
35: */
36: public ResultWindow(JFrame frame)
37: {
38: super(frame);
39: fm = (JFrame) frame;
40: getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
41: getContentPane().add(table);
42: // getContentPane().setBackground(Color.white);
43: addComponentListener(new ComponentAdapter()
44: {
45: public void componentResized(ComponentEvent e)
46: {
47:
48: // System.out.println("Window resized " + getWidth() + " " + getHeight());
49:
50: setTitle(title);
51: //if(table.tableScroller.getPreferredSize().width<getWidth())
52:
53: //table.repaint();
54: if (oldWidth != getWidth() || oldHeight != getHeight())
55: {
56: table.sizeToFit(getWidth(), getHeight());
57:
58: Dimension dim = table.table.getPreferredSize();
59:
60: table.tableScroller.setPreferredSize(new Dimension(getWidth() - 15, getHeight() - 45));
61: Dimension d2 = table.tableScroller.getPreferredSize();
62:
63: oldWidth = getWidth();
64: oldHeight = getHeight();
65: // System.out.println("fit" + getWidth() + " " + oldWidth);
66: //table.table.setPreferredScrollableViewportSize(dim);
67:
68: table.setPreferredSize(new Dimension(d2.width + 10, d2.height + 5));
69: table.table.revalidate();
70: table.tableScroller.revalidate();
71: table.revalidate();
72: int size = (table.tableScroller.getHorizontalScrollBar().isVisible()) ? 90 : 70;
73: if (getHeight() > table.table.getPreferredSize().height + size)
74: setSize(getWidth(), table.table.getHeight() + size+5);
75: //
76: }
77:
78: // System.out.println("fit" + getWidth() + " " + oldWidth);
79:
80: }
81: });
82: table.setEnabled(false);
83: update = true;
84: pack();
85: oldWidth = getWidth();
86: setLocation(new Point(frame.getLocation().x, frame.getLocation().y + 50));
87: rootPane.setOpaque(false);
88:
89: }
90: /**
91: * Fills the table component of this window with new data
92: */
93: public void updateResult(Vector data, Vector columnNames)
94: {
95: update = true;
96: table.tableModel.setDataVector(data, columnNames);
97: Dimension d2 = table.tableScroller.getPreferredSize();
98: Dimension dim = table.table.getPreferredSize();
99: //System.out.println("here"+dim.width+" "+getWidth()+" "+d2.width+" "+table.table.getScrollableTracksViewportHeight());
100: if (dim.width > getWidth())
101: {
102: //table.vergroessern(getWidth(),getHeight());
103: oldWidth = dim.width * 3;
104: oldHeight = (dim.height >= table.screenSize.height) ? table.screenSize.height : dim.height + table.table.getTableHeader().getHeight() * 2; //32;
105:
106: } else
107: {
108: // table.sizeToFit(getWidth(),getHeight());
109: // table.sizeToFit(dim.width * 3, getHeight());
110: /* // table.table.setSize(dim.width * 3,dim.height);
111: table.tableScroller.setPreferredSize(new Dimension((dim.width*3), dim.height+23));
112: d2 = table.tableScroller.getPreferredSize();
113: // table.table.setPreferredScrollableViewportSize(table.table.getSize());
114: dim = table.table.getPreferredSize();
115: table.setPreferredSize(new Dimension(d2.width+10,d2.height+3));
116: table.tableScroller.validate();
117: table.validate();
118: // setSize(dim.width, dim.height + 40);
119: oldWidth = d2.width+10;
120: oldHeight=d2.height+3;
121: System.out.println("here"+dim.width+" "+getWidth()+" "+d2.width+" "+table.table.getPreferredScrollableViewportSize());
122: */
123: oldWidth = dim.width;
124: oldHeight = (dim.height >= table.screenSize.height) ? table.screenSize.height : dim.height + table.table.getTableHeader().getHeight() * 2;
125: setSize(dim.width, oldHeight);
126: }
127:
128: oldWidth = getWidth();
129: oldHeight = getHeight();
130: pack();
131: // table.repaint();
132:
133: }
134: /**
135: * exports the current results to HTML
136: * @param query that produced the result
137: * @return StringBuffer containing the HTML code
138: */
139: public StringBuffer exportQueryToHTML(String query)
140: {
141: if (query == "")
142: query = title;
143: StringBuffer buff = new StringBuffer();
144: buff.append("<html>");
145: buff.append("<head>");
146: buff.append("<title>");
147: buff.append(query);
148: buff.append("</title>");
149: buff.append("</head>");
150:
151: buff.append("<body>");
152: buff.append("<center>");
153: buff.append("<h3>");
154: buff.append(query);
155: buff.append("</h3>");
156: buff.append(table.exportToHTML());
157: buff.append("</body>");
158: buff.append("</html>");
159: return TableComponent.convertUml(buff);
160: }
161: /**
162: * Actual write the result to a file( in HTML)
163: */
164: public String writeResult()
165: {
166:
167: String name = "";
168: try
169: {
170: NumberFormat nf = new DecimalFormat("0000");
171: name = "./html/query" + nf.format(counter++) + ".html";
172: FileWriter file = new FileWriter(new File(name));
173: file.write(exportQueryToHTML(title).toString());
174: file.close();
175: } catch (Exception e)
176: {
177: System.out.println("Error while writing html\n" + e);
178: }
179: return name;
180: }
181: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>