KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > it > businesslogic > ireport > plugin > textwizard > TextWizardForm


1 /*
2  * Copyright (C) 2005 - 2006 JasperSoft Corporation. All rights reserved.
3  * http://www.jaspersoft.com.
4  *
5  * Unless you have purchased a commercial license agreement from JasperSoft,
6  * the following license terms apply:
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as published by
10  * the Free Software Foundation.
11  *
12  * This program is distributed WITHOUT ANY WARRANTY; and without the
13  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14  * See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
18  * or write to:
19  *
20  * Free Software Foundation, Inc.,
21  * 59 Temple Place - Suite 330,
22  * Boston, MA USA 02111-1307
23  *
24  *
25  *
26  *
27  * TextWizardForm.java
28  *
29  * Created on 30 luglio 2004, 16.34
30  *
31  */

32
33 package it.businesslogic.ireport.plugin.textwizard;
34 import it.businesslogic.ireport.connection.*;
35 import it.businesslogic.ireport.*;
36 import it.businesslogic.ireport.undo.*;
37 import it.businesslogic.ireport.gui.event.*;
38 import java.util.*;
39 import javax.swing.*;
40 import javax.swing.table.*;
41 import java.sql.*;
42 import it.businesslogic.ireport.util.I18n;
43
44 /**
45  *
46  * @author Administrator
47  */

48 public class TextWizardForm extends javax.swing.JDialog JavaDoc {
49     
50     /** Creates new form TextWizardForm */
51     public TextWizardForm(java.awt.Frame JavaDoc parent, boolean modal) {
52         super(parent, modal);
53         initComponents();
54         applyI18n();
55         
56         javax.swing.SpinnerNumberModel JavaDoc smodel = new javax.swing.SpinnerNumberModel JavaDoc();
57         smodel.setMinimum(new Integer JavaDoc(0));
58         smodel.setMaximum(new Integer JavaDoc(1000000));
59         jSpinner1.setModel( smodel );
60     }
61     
62     /** This method is called from within the constructor to
63      * initialize the form.
64      * WARNING: Do NOT modify this code. The content of this method is
65      * always regenerated by the Form Editor.
66      */

67     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
68
private void initComponents() {
69         java.awt.GridBagConstraints JavaDoc gridBagConstraints;
70
71         jPanel4 = new javax.swing.JPanel JavaDoc();
72         jPanel1 = new javax.swing.JPanel JavaDoc();
73         jLabel1 = new javax.swing.JLabel JavaDoc();
74         jSpinner1 = new javax.swing.JSpinner JavaDoc();
75         jPanel2 = new javax.swing.JPanel JavaDoc();
76         jSeparator1 = new javax.swing.JSeparator JavaDoc();
77         jPanel3 = new javax.swing.JPanel JavaDoc();
78         jButton1 = new javax.swing.JButton JavaDoc();
79         jButton2 = new javax.swing.JButton JavaDoc();
80         jPanel5 = new javax.swing.JPanel JavaDoc();
81         jScrollPane1 = new javax.swing.JScrollPane JavaDoc();
82         jTable1 = new javax.swing.JTable JavaDoc();
83
84         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
85         jPanel4.setLayout(new java.awt.BorderLayout JavaDoc());
86
87         jPanel1.setLayout(new java.awt.GridBagLayout JavaDoc());
88
89         jPanel1.setPreferredSize(new java.awt.Dimension JavaDoc(10, 70));
90         jLabel1.setText("Max report width (chars): ");
91         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
92         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 0, 0);
93         jPanel1.add(jLabel1, gridBagConstraints);
94
95         jSpinner1.setPreferredSize(new java.awt.Dimension JavaDoc(100, 20));
96         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
97         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 0, 0);
98         jPanel1.add(jSpinner1, gridBagConstraints);
99
100         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
101         gridBagConstraints.weightx = 1.0;
102         jPanel1.add(jPanel2, gridBagConstraints);
103
104         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
105         gridBagConstraints.gridx = 0;
106         gridBagConstraints.gridy = 1;
107         gridBagConstraints.gridwidth = 3;
108         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
109         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 0, 4, 0);
110         jPanel1.add(jSeparator1, gridBagConstraints);
111
112         jPanel3.setLayout(new java.awt.GridBagLayout JavaDoc());
113
114         jButton1.setText("Check for fields widths");
115         jButton1.addActionListener(new java.awt.event.ActionListener JavaDoc() {
116             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
117                 jButton1ActionPerformed(evt);
118             }
119         });
120
121         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
122         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 4, 0, 0);
123         jPanel3.add(jButton1, gridBagConstraints);
124
125         jButton2.setText("Add elements");
126         jButton2.addActionListener(new java.awt.event.ActionListener JavaDoc() {
127             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
128                 jButton2ActionPerformed(evt);
129             }
130         });
131
132         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
133         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 4, 0, 0);
134         jPanel3.add(jButton2, gridBagConstraints);
135
136         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
137         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
138         gridBagConstraints.weightx = 1.0;
139         jPanel3.add(jPanel5, gridBagConstraints);
140
141         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
142         gridBagConstraints.gridx = 0;
143         gridBagConstraints.gridy = 2;
144         gridBagConstraints.gridwidth = 3;
145         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
146         gridBagConstraints.weightx = 1.0;
147         gridBagConstraints.weighty = 1.0;
148         jPanel1.add(jPanel3, gridBagConstraints);
149
150         jPanel4.add(jPanel1, java.awt.BorderLayout.NORTH);
151
152         jTable1.setModel(new javax.swing.table.DefaultTableModel JavaDoc(
153             new Object JavaDoc [][] {
154
155             },
156             new String JavaDoc [] {
157                 "Column", "Display size", "Cut to..."
158             }
159         ) {
160             Class JavaDoc[] types = new Class JavaDoc [] {
161                 java.lang.Object JavaDoc.class, java.lang.Integer JavaDoc.class, java.lang.Integer JavaDoc.class
162             };
163             boolean[] canEdit = new boolean [] {
164                 false, false, true
165             };
166
167             public Class JavaDoc getColumnClass(int columnIndex) {
168                 return types [columnIndex];
169             }
170
171             public boolean isCellEditable(int rowIndex, int columnIndex) {
172                 return canEdit [columnIndex];
173             }
174         });
175         jScrollPane1.setViewportView(jTable1);
176
177         jPanel4.add(jScrollPane1, java.awt.BorderLayout.CENTER);
178
179         getContentPane().add(jPanel4, java.awt.BorderLayout.CENTER);
180
181         pack();
182     }
183     // </editor-fold>//GEN-END:initComponents
184

185     private void jButton2ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton2ActionPerformed
186

187         // Per ogni campo creiamo etichetta nelle banda delle etichette e un adeguato textfield nella
188
// banda di dettaglio...
189

190         // Rimuoviamo tutti i campi dalla banda delle colonne....
191
if (it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame() == null)
192         {
193             javax.swing.JOptionPane.showMessageDialog(this,
194                     I18n.getString("messages.textWizardForm.noReportFrame",
195                     "No report frame selected!") );
196             return;
197         }
198         
199         
200         int count_chars = 0;
201         
202         int[] selectedRows = jTable1.getSelectedRows();
203         for (int i=0; i<jTable1.getSelectedRowCount(); ++i)
204         {
205             count_chars += ((Integer JavaDoc)jTable1.getValueAt(selectedRows[i],2)).intValue();
206         }
207         
208         if (count_chars > ((Integer JavaDoc)jSpinner1.getValue()).intValue() )
209         {
210             if (javax.swing.JOptionPane.OK_OPTION != javax.swing.JOptionPane.showConfirmDialog(this,
211                     I18n.getString("messages.textWizardForm.outOfMargin","Fields will go out of margins. Continue anyway?") ) )
212             {
213                 return;
214             }
215         }
216         
217         
218         Vector elements = it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().getReport().getElements();
219         Enumeration enum_elements = elements.elements();
220         Vector elements_to_remove = new Vector();
221         while (enum_elements.hasMoreElements())
222         {
223             ReportElement element = (ReportElement)enum_elements.nextElement();
224             if (element.getBand().getName().equalsIgnoreCase("columnHeader") ||
225                 element.getBand().getName().equalsIgnoreCase("detail"))
226             {
227                 elements_to_remove.add(element);
228             }
229         }
230         
231         it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().setSelectedElements( elements_to_remove );
232         it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().deleteSelectedElements();
233         
234         int left_char = 0;
235         Band columnHeader = it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().getReport().getBandByName("columnHeader");
236         Band detail = it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().getReport().getBandByName("detail");
237         for (int i=0; i<jTable1.getSelectedRowCount(); ++i)
238         {
239             // Aggiungiamo un elemento di etichetta e uno di testo....
240
int cut_to = ((Integer JavaDoc)jTable1.getValueAt(selectedRows[i],2)).intValue();
241             StaticTextReportElement stre = new StaticTextReportElement(left_char*10 + 10, columnHeader.getBandYLocation()+10, 10*cut_to, 20);
242             stre.setBand( columnHeader);
243             stre.setText( jTable1.getValueAt(selectedRows[i],0) + "");
244             stre.setFontName("Monospaced");
245             stre.setFontSize(14);
246             
247             it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().fireReportListenerReportElementsChanged(new ReportElementChangedEvent(it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame(), stre , ReportElementChangedEvent.ADDED));
248             it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().addUndoOperation( new InsertElementOperation( it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame(), stre ) );
249             it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().getReport().getElements().add(stre);
250             
251             TextFieldReportElement tfre = new TextFieldReportElement(left_char*10 + 10, detail.getBandYLocation() + 10, 10*cut_to , 20);
252             tfre.setBand( detail);
253             tfre.setFontName("Monospaced");
254             tfre.setFontSize(14);
255             String JavaDoc name = "$F{" + jTable1.getValueAt(selectedRows[i],0) + "}";
256             
257             // cerchiamo il campo e vediamo se e numerico...
258
Enumeration fields = it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().getReport().getFields().elements();
259             
260             boolean is_string = false;
261             String JavaDoc type = "";
262             
263             while (fields.hasMoreElements())
264             {
265                 JRField field = (JRField)fields.nextElement();
266                 if (field.getName().equalsIgnoreCase( jTable1.getValueAt(selectedRows[i],0)+"" ))
267                 {
268                    if (field.getClassType().equalsIgnoreCase("java.lang.String"))
269                        is_string = true;
270                    type = field.getClassType();
271                    break;
272                 }
273             }
274             
275             if (is_string)
276             {
277                 tfre.setText( "( ((" + name + "!=null) && (" +name+".length() > " + cut_to + ")) ? " + name + ".substring(0,"+ cut_to +") : " + name + ")");
278             }
279             else
280             {
281                 tfre.setText( name );
282                 
283             }
284             tfre.setClassExpression( type );
285             
286             it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().fireReportListenerReportElementsChanged(new ReportElementChangedEvent(it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame(), tfre , ReportElementChangedEvent.ADDED));
287             it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().addUndoOperation( new InsertElementOperation( it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame(), tfre ) );
288             it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().getReport().getElements().add(tfre);
289             
290             left_char += cut_to+1;
291         }
292     }//GEN-LAST:event_jButton2ActionPerformed
293

294     private void jButton1ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton1ActionPerformed
295
// TODO add your handling code here:
296

297         DefaultTableModel dtm = (DefaultTableModel)jTable1.getModel();
298         dtm.setRowCount(0);
299         
300         
301         
302         if (it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame() == null)
303         {
304             javax.swing.JOptionPane.showMessageDialog(this,I18n.getString("messages.textWizardForm.noReportFrame",
305                     "No report frame selected!"));
306             return;
307         }
308         
309         int chars = it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().getReport().getWidth() / 10;
310         ((javax.swing.SpinnerNumberModel JavaDoc)jSpinner1.getModel()).setValue( new Integer JavaDoc(chars) );
311         
312         IReportConnection conn = (IReportConnection)it.businesslogic.ireport.gui.MainFrame.getMainInstance().getProperties().get("DefaultConnection");
313         if (!conn.isJDBCConnection()) {
314             javax.swing.JOptionPane.showMessageDialog(this,
315                     I18n.getString("messages.textWizardForm.noActiveJDBC",
316                     "The active connection is not of type JDBC. Activate a JDBC connection first.")
317                      );
318             return;
319         }
320         
321         String JavaDoc query = it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().getReport().getQuery();
322
323         
324         if (query.toLowerCase().indexOf("where") >= 0)
325         {
326             query = query.substring(0, query.toLowerCase().lastIndexOf("where"));
327         }
328         
329         //
330

331         Connection con = null;
332         Statement stmt = null;
333         ResultSet rs = null;
334         ResultSetMetaData rsmd = null;
335         try {
336             con = conn.getConnection();
337             stmt = con.createStatement();
338             try {
339             stmt.setMaxRows(1);
340             } catch (Exception JavaDoc ex) { }
341             rs = stmt.executeQuery(query);
342             rsmd = rs.getMetaData();
343             
344             for (int i=1; i<=rsmd.getColumnCount(); ++i)
345             {
346                 String JavaDoc name = rsmd.getColumnName( i );
347                 TextColumn ct = new TextColumn(name, rsmd.getColumnDisplaySize( i ));
348                 
349                 Enumeration fields = it.businesslogic.ireport.gui.MainFrame.getMainInstance().getActiveReportFrame().getReport().getFields().elements();
350                 boolean found = false;
351             while (fields.hasMoreElements())
352             {
353                 JRField field = (JRField)fields.nextElement();
354                 if (field.getName().equalsIgnoreCase( name ))
355                 {
356                   found = true;
357                 }
358             }
359                 if (found)
360                 dtm.addRow(new Object JavaDoc[]{ct, new Integer JavaDoc(ct.getSize()), new Integer JavaDoc(ct.getSize())});
361             }
362         } catch (Exception JavaDoc ex)
363         {
364             javax.swing.JOptionPane.showMessageDialog(this,
365                     I18n.getFormattedString( "messages.textWizardForm.queryError",
366                     "error during query execution: {0}",
367                     new Object JavaDoc[]{ ex.getMessage() }) );
368             ex.printStackTrace();
369         } finally
370         {
371
372              try { if (stmt != null) stmt.close(); } catch (Exception JavaDoc ex){}
373              try { if (con != null) con.close(); } catch (Exception JavaDoc ex){}
374         }
375         
376     }//GEN-LAST:event_jButton1ActionPerformed
377

378
379     /**
380      * @param args the command line arguments
381      */

382     public static void main(String JavaDoc args[]) {
383         new TextWizardForm(new javax.swing.JFrame JavaDoc(), true).setVisible(true);
384     }
385     
386     // Variables declaration - do not modify//GEN-BEGIN:variables
387
private javax.swing.JButton JavaDoc jButton1;
388     private javax.swing.JButton JavaDoc jButton2;
389     private javax.swing.JLabel JavaDoc jLabel1;
390     private javax.swing.JPanel JavaDoc jPanel1;
391     private javax.swing.JPanel JavaDoc jPanel2;
392     private javax.swing.JPanel JavaDoc jPanel3;
393     private javax.swing.JPanel JavaDoc jPanel4;
394     private javax.swing.JPanel JavaDoc jPanel5;
395     private javax.swing.JScrollPane JavaDoc jScrollPane1;
396     private javax.swing.JSeparator JavaDoc jSeparator1;
397     private javax.swing.JSpinner JavaDoc jSpinner1;
398     private javax.swing.JTable JavaDoc jTable1;
399     // End of variables declaration//GEN-END:variables
400

401     public void applyI18n(){
402                 // Start autogenerated code ----------------------
403
jButton1.setText(I18n.getString("textWizardForm.button1","Check for fields widths"));
404                 jButton2.setText(I18n.getString("textWizardForm.button2","Add elements"));
405                 jLabel1.setText(I18n.getString("textWizardForm.label1","Max report width (chars): "));
406                 // End autogenerated code ----------------------
407

408                 jTable1.getColumnModel().getColumn(0).setHeaderValue(I18n.getString("textWizardForm.tablecolumn.column","Column") );
409                 jTable1.getColumnModel().getColumn(1).setHeaderValue(I18n.getString("textWizardForm.tablecolumn.displaySize","Display size") );
410                 jTable1.getColumnModel().getColumn(2).setHeaderValue(I18n.getString("textWizardForm.tablecolumn.cutTo","Cut to...") );
411     }
412 }
413
414
Popular Tags