KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > it > businesslogic > ireport > gui > wizard > SubreportWizardNewReport


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  * SubreportWizardNewReport.java
28  *
29  * Created on March 22, 2006, 8:52 PM
30  *
31  */

32
33 package it.businesslogic.ireport.gui.wizard;
34
35 import it.businesslogic.ireport.Band;
36 import it.businesslogic.ireport.Group;
37 import it.businesslogic.ireport.IReportConnection;
38 import it.businesslogic.ireport.IReportTemplate;
39 import it.businesslogic.ireport.JRField;
40 import it.businesslogic.ireport.Report;
41 import it.businesslogic.ireport.ReportElement;
42 import it.businesslogic.ireport.StaticTextReportElement;
43 import it.businesslogic.ireport.SubReportElement;
44 import it.businesslogic.ireport.TextFieldReportElement;
45 import it.businesslogic.ireport.TransformationType;
46 import it.businesslogic.ireport.connection.JDBCConnection;
47 import it.businesslogic.ireport.connection.JRHibernateConnection;
48 import it.businesslogic.ireport.connection.NullConnection;
49 import it.businesslogic.ireport.gui.ConnectionDialog;
50 import it.businesslogic.ireport.gui.MainFrame;
51 import it.businesslogic.ireport.gui.WizardDialog;
52 import it.businesslogic.ireport.util.Misc;
53 import java.io.File JavaDoc;
54 import java.io.FileInputStream JavaDoc;
55 import java.io.FilenameFilter JavaDoc;
56 import java.io.InputStream JavaDoc;
57 import java.util.Enumeration JavaDoc;
58 import java.util.Vector JavaDoc;
59 import javax.swing.DefaultListModel JavaDoc;
60 import javax.swing.ImageIcon JavaDoc;
61 import javax.swing.JFileChooser JavaDoc;
62 import javax.swing.JOptionPane JavaDoc;
63 import javax.swing.JPanel JavaDoc;
64 import javax.swing.event.DocumentEvent JavaDoc;
65 import javax.swing.event.DocumentListener JavaDoc;
66
67 import org.apache.xerces.parsers.DOMParser;
68 import org.apache.xpath.XPathAPI;
69 import org.apache.xpath.objects.XBoolean;
70 import org.w3c.dom.DOMException JavaDoc;
71 import org.w3c.dom.Document JavaDoc;
72 import org.w3c.dom.Node JavaDoc;
73 import org.w3c.dom.NodeList JavaDoc;
74 import org.xml.sax.SAXException JavaDoc;
75 import it.businesslogic.ireport.util.I18n;
76
77 /**
78  *
79  * @author gtoffoli
80  */

81 public class SubreportWizardNewReport extends javax.swing.JPanel JavaDoc implements GenericWizard, Runnable JavaDoc {
82     
83     private String JavaDoc reportFileName = null;
84     private SubReportElement subReportElement = null;
85     private BaseWizardPanel wizardPanel = null;
86     private javax.swing.JDialog JavaDoc wizardDialog = null;
87     
88     Vector JavaDoc templates = null;
89     
90     private Thread JavaDoc t = null;
91   
92     /** Creates new form SubreportWizardPanes */
93     public SubreportWizardNewReport() {
94         initComponents();
95         applyI18n();
96         jRSQLExpressionArea1.getDocument().addDocumentListener( new DocumentListener JavaDoc() {
97             public void changedUpdate(DocumentEvent JavaDoc e) {
98                 if (wizardPanel != null) wizardPanel.updateButtons();
99             }
100             public void insertUpdate(DocumentEvent JavaDoc e) {
101                 if (wizardPanel != null) wizardPanel.updateButtons();
102             }
103             public void removeUpdate(DocumentEvent JavaDoc e) {
104                 if (wizardPanel != null) wizardPanel.updateButtons();
105             }
106         });
107         
108         jTextFieldBean.getDocument().addDocumentListener( new DocumentListener JavaDoc() {
109             public void changedUpdate(DocumentEvent JavaDoc e) {
110                 if (wizardPanel != null) wizardPanel.updateButtons();
111             }
112             public void insertUpdate(DocumentEvent JavaDoc e) {
113                 if (wizardPanel != null) wizardPanel.updateButtons();
114             }
115             public void removeUpdate(DocumentEvent JavaDoc e) {
116                 if (wizardPanel != null) wizardPanel.updateButtons();
117             }
118         });
119         
120         jTextFieldReportFileName.getDocument().addDocumentListener( new DocumentListener JavaDoc() {
121             public void changedUpdate(DocumentEvent JavaDoc e) {
122                 if (wizardPanel != null) wizardPanel.updateButtons();
123                 updateExpressionLabels();
124             }
125             public void insertUpdate(DocumentEvent JavaDoc e) {
126                 if (wizardPanel != null) wizardPanel.updateButtons();
127                 updateExpressionLabels();
128             }
129             public void removeUpdate(DocumentEvent JavaDoc e) {
130                 if (wizardPanel != null) wizardPanel.updateButtons();
131                 updateExpressionLabels();
132             }
133         });
134         
135         // These are the combobox values
136
Vector JavaDoc values = new Vector JavaDoc();
137         
138         Report report = MainFrame.getMainInstance().getActiveReportFrame().getReport();
139         
140         values.addAll( report.getFields());
141         values.addAll( report.getVariables());
142         values.addAll(report.getParameters());
143         
144         jList1.setModel( new DefaultListModel JavaDoc());
145         jList2.setModel( new DefaultListModel JavaDoc());
146         jList3.setModel( new DefaultListModel JavaDoc());
147         
148             
149         // If the cell should appear like a combobox in its
150
// non-editing state, also set the combobox renderer
151
//col.setCellRenderer(new TableComboBoxRenderer(values));
152

153         updateTemplatesList();
154         
155         String JavaDoc fileName = report.getFilename();
156         File JavaDoc f = new File JavaDoc(fileName);
157         String JavaDoc baseFileName = f.getName();
158         String JavaDoc pathFile = f.getParent();
159         if (pathFile.length() > 0 && !pathFile.endsWith(File.separator))
160         {
161             pathFile += File.separator;
162         }
163         
164         if (baseFileName.indexOf(".") > 0)
165             baseFileName = baseFileName.substring(0, baseFileName.lastIndexOf("."));
166         
167         File JavaDoc f2 = null;
168         for (int i = 0; ; ++i)
169         {
170             fileName = baseFileName + "_subreport" + i + ".jrxml";
171         
172             f2 = new File JavaDoc(pathFile, fileName);
173             if (!f2.exists()) break;
174         }
175         
176         jTextFieldReportFileName.setText(f2.getName());
177
178     }
179     
180     /** This method is called from within the constructor to
181      * initialize the form.
182      * WARNING: Do NOT modify this code. The content of this method is
183      * always regenerated by the Form Editor.
184      */

185     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
186
private void initComponents() {
187         java.awt.GridBagConstraints JavaDoc gridBagConstraints;
188
189         jPanel0 = new javax.swing.JPanel JavaDoc();
190         jPanel61 = new javax.swing.JPanel JavaDoc();
191         jLabel12 = new javax.swing.JLabel JavaDoc();
192         jComboBoxConnection = new javax.swing.JComboBox JavaDoc();
193         jButtonNewConnection = new javax.swing.JButton JavaDoc();
194         jLabel2 = new javax.swing.JLabel JavaDoc();
195         jPanel41 = new javax.swing.JPanel JavaDoc();
196         jRSQLExpressionArea1 = new it.businesslogic.ireport.gui.JRTextExpressionArea();
197         jTextFieldBean = new javax.swing.JTextField JavaDoc();
198         jPanel5 = new javax.swing.JPanel JavaDoc();
199         jButtonLoadQuery = new javax.swing.JButton JavaDoc();
200         jButtonSaveQuery = new javax.swing.JButton JavaDoc();
201         jPanel6 = new javax.swing.JPanel JavaDoc();
202         buttonGroup1 = new javax.swing.ButtonGroup JavaDoc();
203         jPanel1 = new javax.swing.JPanel JavaDoc();
204         jScrollPane1 = new javax.swing.JScrollPane JavaDoc();
205         jList1 = new javax.swing.JList JavaDoc();
206         jScrollPane2 = new javax.swing.JScrollPane JavaDoc();
207         jList2 = new javax.swing.JList JavaDoc();
208         jPanelButtons = new javax.swing.JPanel JavaDoc();
209         jButton1 = new javax.swing.JButton JavaDoc();
210         jButton2 = new javax.swing.JButton JavaDoc();
211         jButton3 = new javax.swing.JButton JavaDoc();
212         jButton4 = new javax.swing.JButton JavaDoc();
213         jPanel2 = new javax.swing.JPanel JavaDoc();
214         jRadioButtonColumnarLayout = new javax.swing.JRadioButton JavaDoc();
215         jRadioButtonTabularLayout = new javax.swing.JRadioButton JavaDoc();
216         jPanel7 = new javax.swing.JPanel JavaDoc();
217         jScrollPane3 = new javax.swing.JScrollPane JavaDoc();
218         jList3 = new javax.swing.JList JavaDoc();
219         jPanel4 = new javax.swing.JPanel JavaDoc();
220         jLabelImage = new javax.swing.JLabel JavaDoc();
221         jPanel3 = new javax.swing.JPanel JavaDoc();
222         jLabel3 = new javax.swing.JLabel JavaDoc();
223         jTextFieldReportFileName = new javax.swing.JTextField JavaDoc();
224         jRadioButton4 = new javax.swing.JRadioButton JavaDoc();
225         jLabel1 = new javax.swing.JLabel JavaDoc();
226         jRadioButton5 = new javax.swing.JRadioButton JavaDoc();
227         jLabel2e = new javax.swing.JLabel JavaDoc();
228         jButton5 = new javax.swing.JButton JavaDoc();
229         buttonGroup2 = new javax.swing.ButtonGroup JavaDoc();
230
231         jPanel0.setLayout(new java.awt.GridBagLayout JavaDoc());
232
233         jPanel0.addPropertyChangeListener(new java.beans.PropertyChangeListener JavaDoc() {
234             public void propertyChange(java.beans.PropertyChangeEvent JavaDoc evt) {
235                 jPanel0PropertyChange(evt);
236             }
237         });
238
239         jPanel61.setMinimumSize(new java.awt.Dimension JavaDoc(10, 30));
240         jPanel61.setPreferredSize(new java.awt.Dimension JavaDoc(10, 30));
241         jPanel0.add(jPanel61, new java.awt.GridBagConstraints JavaDoc());
242
243         jLabel12.setText("Connection / Datasource");
244         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
245         gridBagConstraints.gridx = 0;
246         gridBagConstraints.gridy = 4;
247         gridBagConstraints.gridwidth = 2;
248         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
249         gridBagConstraints.weightx = 1.0;
250         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 20, 2, 0);
251         jPanel0.add(jLabel12, gridBagConstraints);
252
253         jComboBoxConnection.setModel(new javax.swing.DefaultComboBoxModel JavaDoc(new String JavaDoc[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
254         jComboBoxConnection.setMinimumSize(new java.awt.Dimension JavaDoc(51, 22));
255         jComboBoxConnection.addActionListener(new java.awt.event.ActionListener JavaDoc() {
256             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
257                 jComboBoxConnectionActionPerformed(evt);
258             }
259         });
260
261         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
262         gridBagConstraints.gridx = 0;
263         gridBagConstraints.gridy = 5;
264         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
265         gridBagConstraints.weightx = 1.0;
266         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 20, 0, 0);
267         jPanel0.add(jComboBoxConnection, gridBagConstraints);
268
269         jButtonNewConnection.setText("New");
270         jButtonNewConnection.addActionListener(new java.awt.event.ActionListener JavaDoc() {
271             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
272                 jButtonNewConnectionActionPerformed(evt);
273             }
274         });
275
276         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
277         gridBagConstraints.gridx = 1;
278         gridBagConstraints.gridy = 5;
279         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 4, 0, 20);
280         jPanel0.add(jButtonNewConnection, gridBagConstraints);
281
282         jLabel2.setText("Query");
283         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
284         gridBagConstraints.gridx = 0;
285         gridBagConstraints.gridy = 8;
286         gridBagConstraints.gridwidth = 2;
287         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
288         gridBagConstraints.weightx = 1.0;
289         gridBagConstraints.insets = new java.awt.Insets JavaDoc(30, 20, 2, 0);
290         jPanel0.add(jLabel2, gridBagConstraints);
291
292         jPanel41.setLayout(new java.awt.GridBagLayout JavaDoc());
293
294         jPanel41.setMinimumSize(new java.awt.Dimension JavaDoc(391, 120));
295         jPanel41.setPreferredSize(new java.awt.Dimension JavaDoc(391, 120));
296         jRSQLExpressionArea1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
297         jRSQLExpressionArea1.setElectricScroll(0);
298         jRSQLExpressionArea1.setMinimumSize(new java.awt.Dimension JavaDoc(300, 100));
299         jRSQLExpressionArea1.setPreferredSize(new java.awt.Dimension JavaDoc(300, 100));
300         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
301         gridBagConstraints.gridx = 0;
302         gridBagConstraints.gridy = 0;
303         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
304         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
305         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
306         gridBagConstraints.weightx = 1.0;
307         gridBagConstraints.weighty = 1.0;
308         jPanel41.add(jRSQLExpressionArea1, gridBagConstraints);
309
310         jTextFieldBean.addActionListener(new java.awt.event.ActionListener JavaDoc() {
311             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
312                 jTextFieldBeanActionPerformed(evt);
313             }
314         });
315
316         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
317         gridBagConstraints.gridx = 0;
318         gridBagConstraints.gridy = 0;
319         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
320         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
321         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
322         gridBagConstraints.weightx = 1.0;
323         gridBagConstraints.weighty = 1.0;
324         jPanel41.add(jTextFieldBean, gridBagConstraints);
325
326         jPanel5.setLayout(new java.awt.GridBagLayout JavaDoc());
327
328         jButtonLoadQuery.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/folder_database.png")));
329         jButtonLoadQuery.setText("Load query");
330         jButtonLoadQuery.setMargin(new java.awt.Insets JavaDoc(2, 4, 2, 4));
331         jButtonLoadQuery.addActionListener(new java.awt.event.ActionListener JavaDoc() {
332             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
333                 jButtonLoadQueryActionPerformed(evt);
334             }
335         });
336
337         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
338         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
339         gridBagConstraints.weightx = 1.0;
340         jPanel5.add(jButtonLoadQuery, gridBagConstraints);
341
342         jButtonSaveQuery.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/database_save.png")));
343         jButtonSaveQuery.setText("Save query");
344         jButtonSaveQuery.setMargin(new java.awt.Insets JavaDoc(2, 4, 2, 4));
345         jButtonSaveQuery.addActionListener(new java.awt.event.ActionListener JavaDoc() {
346             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
347                 jButtonSaveQueryActionPerformed(evt);
348             }
349         });
350
351         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
352         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 4, 0, 0);
353         jPanel5.add(jButtonSaveQuery, gridBagConstraints);
354
355         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
356         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
357         gridBagConstraints.weightx = 1.0;
358         jPanel41.add(jPanel5, gridBagConstraints);
359
360         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
361         gridBagConstraints.gridy = 10;
362         gridBagConstraints.gridwidth = 2;
363         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
364         gridBagConstraints.weightx = 1.0;
365         gridBagConstraints.weighty = 1.0;
366         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 20, 0, 20);
367         jPanel0.add(jPanel41, gridBagConstraints);
368
369         jPanel6.setLayout(new java.awt.GridBagLayout JavaDoc());
370
371         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
372         gridBagConstraints.gridx = 0;
373         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
374         gridBagConstraints.weightx = 1.0;
375         jPanel0.add(jPanel6, gridBagConstraints);
376
377         jPanel1.setLayout(new java.awt.GridBagLayout JavaDoc());
378
379         jScrollPane1.setViewportView(jList1);
380
381         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
382         gridBagConstraints.gridx = 0;
383         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
384         gridBagConstraints.weightx = 0.5;
385         gridBagConstraints.weighty = 1.0;
386         gridBagConstraints.insets = new java.awt.Insets JavaDoc(10, 10, 10, 5);
387         jPanel1.add(jScrollPane1, gridBagConstraints);
388
389         jScrollPane2.setViewportView(jList2);
390
391         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
392         gridBagConstraints.gridx = 2;
393         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
394         gridBagConstraints.weightx = 0.5;
395         gridBagConstraints.weighty = 1.0;
396         gridBagConstraints.insets = new java.awt.Insets JavaDoc(10, 5, 10, 10);
397         jPanel1.add(jScrollPane2, gridBagConstraints);
398
399         jPanelButtons.setLayout(new java.awt.GridBagLayout JavaDoc());
400
401         jButton1.setText(">");
402         jButton1.setMargin(new java.awt.Insets JavaDoc(2, 0, 2, 0));
403         jButton1.setMinimumSize(new java.awt.Dimension JavaDoc(28, 28));
404         jButton1.setPreferredSize(new java.awt.Dimension JavaDoc(28, 28));
405         jButton1.addActionListener(new java.awt.event.ActionListener JavaDoc() {
406             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
407                 jButton1ActionPerformed(evt);
408             }
409         });
410
411         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
412         gridBagConstraints.gridx = 0;
413         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
414         gridBagConstraints.insets = new java.awt.Insets JavaDoc(8, 0, 8, 0);
415         jPanelButtons.add(jButton1, gridBagConstraints);
416
417         jButton2.setText(">>");
418         jButton2.setMargin(new java.awt.Insets JavaDoc(2, 0, 2, 0));
419         jButton2.setMinimumSize(new java.awt.Dimension JavaDoc(28, 28));
420         jButton2.setPreferredSize(new java.awt.Dimension JavaDoc(28, 28));
421         jButton2.addActionListener(new java.awt.event.ActionListener JavaDoc() {
422             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
423                 jButton2ActionPerformed(evt);
424             }
425         });
426
427         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
428         gridBagConstraints.gridx = 0;
429         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
430         gridBagConstraints.insets = new java.awt.Insets JavaDoc(8, 0, 8, 0);
431         jPanelButtons.add(jButton2, gridBagConstraints);
432
433         jButton3.setText("<<");
434         jButton3.setMargin(new java.awt.Insets JavaDoc(2, 0, 2, 0));
435         jButton3.setMinimumSize(new java.awt.Dimension JavaDoc(28, 28));
436         jButton3.setPreferredSize(new java.awt.Dimension JavaDoc(28, 28));
437         jButton3.addActionListener(new java.awt.event.ActionListener JavaDoc() {
438             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
439                 jButton3ActionPerformed(evt);
440             }
441         });
442
443         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
444         gridBagConstraints.gridx = 0;
445         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
446         gridBagConstraints.insets = new java.awt.Insets JavaDoc(8, 0, 8, 0);
447         jPanelButtons.add(jButton3, gridBagConstraints);
448
449         jButton4.setText("<");
450         jButton4.setMargin(new java.awt.Insets JavaDoc(2, 0, 2, 0));
451         jButton4.setMinimumSize(new java.awt.Dimension JavaDoc(28, 28));
452         jButton4.setPreferredSize(new java.awt.Dimension JavaDoc(28, 28));
453         jButton4.addActionListener(new java.awt.event.ActionListener JavaDoc() {
454             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
455                 jButton4ActionPerformed(evt);
456             }
457         });
458
459         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
460         gridBagConstraints.gridx = 0;
461         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
462         gridBagConstraints.insets = new java.awt.Insets JavaDoc(8, 0, 8, 0);
463         jPanelButtons.add(jButton4, gridBagConstraints);
464
465         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
466         gridBagConstraints.gridx = 1;
467         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
468         gridBagConstraints.insets = new java.awt.Insets JavaDoc(10, 0, 10, 0);
469         jPanel1.add(jPanelButtons, gridBagConstraints);
470
471         jPanel2.setLayout(new java.awt.GridBagLayout JavaDoc());
472
473         buttonGroup1.add(jRadioButtonColumnarLayout);
474         jRadioButtonColumnarLayout.setSelected(true);
475         jRadioButtonColumnarLayout.setText("Columnar layout");
476         jRadioButtonColumnarLayout.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
477         jRadioButtonColumnarLayout.setMargin(new java.awt.Insets JavaDoc(0, 0, 0, 0));
478         jRadioButtonColumnarLayout.addActionListener(new java.awt.event.ActionListener JavaDoc() {
479             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
480                 jRadioButtonColumnarLayoutActionPerformed(evt);
481             }
482         });
483
484         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
485         gridBagConstraints.gridx = 0;
486         gridBagConstraints.gridy = 1;
487         gridBagConstraints.gridwidth = 2;
488         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
489         gridBagConstraints.weightx = 1.0;
490         gridBagConstraints.insets = new java.awt.Insets JavaDoc(30, 20, 0, 0);
491         jPanel2.add(jRadioButtonColumnarLayout, gridBagConstraints);
492
493         buttonGroup1.add(jRadioButtonTabularLayout);
494         jRadioButtonTabularLayout.setText("Tabular layout");
495         jRadioButtonTabularLayout.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
496         jRadioButtonTabularLayout.setMargin(new java.awt.Insets JavaDoc(0, 0, 0, 0));
497         jRadioButtonTabularLayout.addActionListener(new java.awt.event.ActionListener JavaDoc() {
498             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
499                 jRadioButtonTabularLayoutActionPerformed(evt);
500             }
501         });
502
503         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
504         gridBagConstraints.gridx = 0;
505         gridBagConstraints.gridy = 2;
506         gridBagConstraints.gridwidth = 2;
507         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
508         gridBagConstraints.weightx = 1.0;
509         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 20, 0, 0);
510         jPanel2.add(jRadioButtonTabularLayout, gridBagConstraints);
511
512         jPanel7.setLayout(new java.awt.BorderLayout JavaDoc());
513
514         jPanel7.setMinimumSize(new java.awt.Dimension JavaDoc(150, 23));
515         jPanel7.setPreferredSize(new java.awt.Dimension JavaDoc(150, 0));
516         jScrollPane3.setMinimumSize(new java.awt.Dimension JavaDoc(100, 23));
517         jList3.addListSelectionListener(new javax.swing.event.ListSelectionListener JavaDoc() {
518             public void valueChanged(javax.swing.event.ListSelectionEvent JavaDoc evt) {
519                 jList3ValueChanged(evt);
520             }
521         });
522
523         jScrollPane3.setViewportView(jList3);
524
525         jPanel7.add(jScrollPane3, java.awt.BorderLayout.CENTER);
526
527         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
528         gridBagConstraints.gridx = 0;
529         gridBagConstraints.gridy = 5;
530         gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
531         gridBagConstraints.weighty = 1.0;
532         gridBagConstraints.insets = new java.awt.Insets JavaDoc(8, 20, 10, 0);
533         jPanel2.add(jPanel7, gridBagConstraints);
534
535         jPanel4.setLayout(new java.awt.GridBagLayout JavaDoc());
536
537         jLabelImage.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
538         jLabelImage.setText(" ");
539         jLabelImage.setVerticalAlignment(javax.swing.SwingConstants.TOP);
540         jLabelImage.setOpaque(true);
541         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
542         gridBagConstraints.gridx = 0;
543         gridBagConstraints.gridy = 0;
544         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
545         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
546         gridBagConstraints.weightx = 1.0;
547         gridBagConstraints.weighty = 1.0;
548         jPanel4.add(jLabelImage, gridBagConstraints);
549
550         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
551         gridBagConstraints.gridx = 1;
552         gridBagConstraints.gridy = 5;
553         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
554         gridBagConstraints.weightx = 1.0;
555         gridBagConstraints.weighty = 1.0;
556         gridBagConstraints.insets = new java.awt.Insets JavaDoc(8, 10, 10, 10);
557         jPanel2.add(jPanel4, gridBagConstraints);
558
559         jPanel3.setLayout(new java.awt.GridBagLayout JavaDoc());
560
561         jLabel3.setText("Save the subreport as...");
562         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
563         gridBagConstraints.gridx = 0;
564         gridBagConstraints.gridwidth = 2;
565         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
566         gridBagConstraints.insets = new java.awt.Insets JavaDoc(2, 20, 2, 0);
567         jPanel3.add(jLabel3, gridBagConstraints);
568
569         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
570         gridBagConstraints.gridx = 0;
571         gridBagConstraints.gridy = 2;
572         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
573         gridBagConstraints.weightx = 1.0;
574         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 20, 0, 0);
575         jPanel3.add(jTextFieldReportFileName, gridBagConstraints);
576
577         buttonGroup2.add(jRadioButton4);
578         jRadioButton4.setSelected(true);
579         jRadioButton4.setText("Store the directory name in a parameter");
580         jRadioButton4.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
581         jRadioButton4.setFocusPainted(false);
582         jRadioButton4.setMargin(new java.awt.Insets JavaDoc(0, 0, 0, 0));
583         jRadioButton4.setMinimumSize(new java.awt.Dimension JavaDoc(115, 20));
584         jRadioButton4.setPreferredSize(new java.awt.Dimension JavaDoc(115, 20));
585         jRadioButton4.addItemListener(new java.awt.event.ItemListener JavaDoc() {
586             public void itemStateChanged(java.awt.event.ItemEvent JavaDoc evt) {
587                 jRadioButton1ItemStateChanged2(evt);
588             }
589         });
590         jRadioButton4.addActionListener(new java.awt.event.ActionListener JavaDoc() {
591             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
592                 jRadioButton1ActionPerformed2(evt);
593             }
594         });
595
596         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
597         gridBagConstraints.gridx = 0;
598         gridBagConstraints.gridwidth = 2;
599         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
600         gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
601         gridBagConstraints.weightx = 1.0;
602         gridBagConstraints.insets = new java.awt.Insets JavaDoc(40, 20, 0, 0);
603         jPanel3.add(jRadioButton4, gridBagConstraints);
604
605         jLabel1.setText("$P{SUBREPORT_DIR} + /name.jasper");
606         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
607         gridBagConstraints.gridx = 0;
608         gridBagConstraints.gridwidth = 2;
609         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
610         gridBagConstraints.insets = new java.awt.Insets JavaDoc(2, 40, 0, 0);
611         jPanel3.add(jLabel1, gridBagConstraints);
612
613         buttonGroup2.add(jRadioButton5);
614         jRadioButton5.setText("Use a static absolute path reference");
615         jRadioButton5.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
616         jRadioButton5.setFocusPainted(false);
617         jRadioButton5.setMargin(new java.awt.Insets JavaDoc(0, 0, 0, 0));
618         jRadioButton5.setMinimumSize(new java.awt.Dimension JavaDoc(115, 20));
619         jRadioButton5.setPreferredSize(new java.awt.Dimension JavaDoc(115, 20));
620         jRadioButton5.addItemListener(new java.awt.event.ItemListener JavaDoc() {
621             public void itemStateChanged(java.awt.event.ItemEvent JavaDoc evt) {
622                 jRadioButton2jRadioButton1ItemStateChanged1(evt);
623             }
624         });
625         jRadioButton5.addActionListener(new java.awt.event.ActionListener JavaDoc() {
626             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
627                 jRadioButton2jRadioButton1ActionPerformed1(evt);
628             }
629         });
630
631         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
632         gridBagConstraints.gridx = 0;
633         gridBagConstraints.gridwidth = 2;
634         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
635         gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
636         gridBagConstraints.weightx = 1.0;
637         gridBagConstraints.insets = new java.awt.Insets JavaDoc(20, 20, 0, 0);
638         jPanel3.add(jRadioButton5, gridBagConstraints);
639
640         jLabel2e.setText("path reference");
641         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
642         gridBagConstraints.gridx = 0;
643         gridBagConstraints.gridwidth = 2;
644         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
645         gridBagConstraints.insets = new java.awt.Insets JavaDoc(2, 40, 0, 0);
646         jPanel3.add(jLabel2e, gridBagConstraints);
647
648         jButton5.setText("Browse...");
649         jButton5.addActionListener(new java.awt.event.ActionListener JavaDoc() {
650             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
651                 jButton5ActionPerformed(evt);
652             }
653         });
654
655         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
656         gridBagConstraints.gridy = 2;
657         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 4, 0, 10);
658         jPanel3.add(jButton5, gridBagConstraints);
659
660         setLayout(new java.awt.BorderLayout JavaDoc());
661
662     }// </editor-fold>//GEN-END:initComponents
663

664     private void jButtonSaveQueryActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonSaveQueryActionPerformed
665
Misc.saveSQLQuery( jRSQLExpressionArea1.getText(), this );
666     }//GEN-LAST:event_jButtonSaveQueryActionPerformed
667

668     private void jButtonLoadQueryActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonLoadQueryActionPerformed
669
String JavaDoc query = Misc.loadSQLQuery(this);
670         
671         if (query != null) {
672             jRSQLExpressionArea1.setText(query);
673         }
674     }//GEN-LAST:event_jButtonLoadQueryActionPerformed
675

676     private void jButton5ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton5ActionPerformed
677

678         
679         // jfilechooser...
680
JFileChooser JavaDoc jfc = new JFileChooser JavaDoc();
681             File JavaDoc original_file = null;
682             try {
683                 original_file = new File JavaDoc(MainFrame.getMainInstance().getActiveReportFrame().getReport().getFilename());
684                 if (original_file!= null && original_file.getParentFile() != null)
685                 {
686                     jfc.setCurrentDirectory( original_file.getParentFile());
687                 }
688             } catch (Exception JavaDoc ex)
689             {
690                 
691             }
692             
693         jfc.setFileFilter( new javax.swing.filechooser.FileFilter JavaDoc() {
694             public boolean accept(java.io.File JavaDoc file) {
695                 String JavaDoc filename = file.getName().toLowerCase();
696                 return (filename.endsWith(".jrxml") || file.isDirectory()) ;
697             }
698             public String JavaDoc getDescription() {
699                 return "JasperReports Report file *jrxml";
700             }
701         });
702             
703         if (jfc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
704                 
705                     if (original_file != null && original_file.equals(jfc.getSelectedFile()))
706                     {
707                         JOptionPane.showMessageDialog(this,
708                                 I18n.getString("messages.subreportWizardNewReport.duplicatedFile",
709                                 "Master and report files can not be the same file!") );
710                         return;
711                     }
712                     
713                     String JavaDoc s = jfc.getSelectedFile().getPath();
714                     if (original_file != null && original_file.getParentFile() != null)
715                     {
716                         if (original_file.getParentFile().equals( jfc.getSelectedFile().getParentFile()))
717                         {
718                             s = jfc.getSelectedFile().getName();
719                         }
720                     }
721                     if (!s.toLowerCase().endsWith(".jrxml"))
722                     {
723                         if (!s.endsWith(".")) s += ".";
724                         s += "jrmxl";
725                     }
726                     jTextFieldReportFileName.setText( s );
727         }
728         if (wizardPanel != null) wizardPanel.updateButtons();
729         
730     }//GEN-LAST:event_jButton5ActionPerformed
731

732     private void jList3ValueChanged(javax.swing.event.ListSelectionEvent JavaDoc evt) {//GEN-FIRST:event_jList3ValueChanged
733
if (jList3.getSelectedIndex() >= 0) {
734             IReportTemplate tf = (IReportTemplate)jList3.getSelectedValue();
735             // Take the image...
736

737             this.jLabelImage.setIcon( tf.getIcon() );
738             if (tf.getIcon() == null)
739             {
740                 this.jLabelImage.setText(" ");
741             }
742             else
743             {
744                 this.jLabelImage.setText("");
745             }
746             
747             this.jLabelImage.updateUI();
748             if (wizardPanel != null) wizardPanel.updateButtons();
749         }
750     }//GEN-LAST:event_jList3ValueChanged
751

752     private void jRadioButtonTabularLayoutActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jRadioButtonTabularLayoutActionPerformed
753
updateTemplatesList();
754     }//GEN-LAST:event_jRadioButtonTabularLayoutActionPerformed
755

756     private void jRadioButtonColumnarLayoutActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jRadioButtonColumnarLayoutActionPerformed
757
updateTemplatesList();
758     }//GEN-LAST:event_jRadioButtonColumnarLayoutActionPerformed
759

760     private void jButton4ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton4ActionPerformed
761
int index = jList2.getSelectedIndex();
762         if (index <0) return;
763         
764         Object JavaDoc[] objs = jList2.getSelectedValues();
765         for (int i=0; i< objs.length; ++i) {
766             Object JavaDoc obj = objs[i];
767             ((javax.swing.DefaultListModel JavaDoc)jList1.getModel()).addElement(obj);
768             ((javax.swing.DefaultListModel JavaDoc)jList2.getModel()).removeElement(obj);
769         }
770         if (jList1.getModel().getSize()>0) jList1.setSelectedIndex(0);
771         wizardPanel.updateButtons();
772     }//GEN-LAST:event_jButton4ActionPerformed
773

774     private void jButton3ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton3ActionPerformed
775
javax.swing.DefaultListModel JavaDoc list2 = (javax.swing.DefaultListModel JavaDoc)jList2.getModel();
776         javax.swing.DefaultListModel JavaDoc list1 = (javax.swing.DefaultListModel JavaDoc)jList1.getModel();
777         
778         for (int i=0; i< list2.getSize(); ++i) {
779             list1.addElement(list2.getElementAt(i));
780         }
781         list2.removeAllElements();
782         if (list1.size()>0) jList1.setSelectedIndex(0);
783         wizardPanel.updateButtons();
784     }//GEN-LAST:event_jButton3ActionPerformed
785

786     private void jButton2ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton2ActionPerformed
787
javax.swing.DefaultListModel JavaDoc list1 = (javax.swing.DefaultListModel JavaDoc)jList1.getModel();
788         javax.swing.DefaultListModel JavaDoc list2 = (javax.swing.DefaultListModel JavaDoc)jList2.getModel();
789         
790         for (int i=0; i< list1.getSize(); ++i) {
791             list2.addElement(list1.getElementAt(i));
792         }
793         list1.removeAllElements();
794         wizardPanel.updateButtons();
795     }//GEN-LAST:event_jButton2ActionPerformed
796

797     private void jButton1ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton1ActionPerformed
798
int index = jList1.getSelectedIndex();
799         if (index <0) return;
800         
801         Object JavaDoc[] objs = jList1.getSelectedValues();
802         for (int i=0; i< objs.length; ++i) {
803             Object JavaDoc obj = objs[i];
804             ((javax.swing.DefaultListModel JavaDoc)jList2.getModel()).addElement(obj);
805             ((javax.swing.DefaultListModel JavaDoc)jList1.getModel()).removeElement(obj);
806         }
807         if (jList1.getModel().getSize()>0) jList1.setSelectedIndex(0);
808         wizardPanel.updateButtons();
809     }//GEN-LAST:event_jButton1ActionPerformed
810

811     private void jTextFieldBeanActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jTextFieldBeanActionPerformed
812
jComboBoxConnectionActionPerformed(null);
813     }//GEN-LAST:event_jTextFieldBeanActionPerformed
814

815     private void jButtonNewConnectionActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonNewConnectionActionPerformed
816
ConnectionDialog cd = new ConnectionDialog(wizardDialog,true);
817         cd.setVisible(true);
818         
819         IReportConnection con = null;
820         if (cd.getDialogResult() == JOptionPane.OK_OPTION) {
821             con = cd.getIReportConnection();
822             MainFrame.getMainInstance().getConnections().addElement(con);
823             
824             if (MainFrame.getMainInstance().getConnections().size() == 1) {
825                 MainFrame.getMainInstance().setActiveConnection(con);
826             } else {
827                 MainFrame.getMainInstance().saveiReportConfiguration();
828             }
829             
830             this.updateConnections();
831             this.jComboBoxConnection.setSelectedItem(con);
832         }
833     }//GEN-LAST:event_jButtonNewConnectionActionPerformed
834

835     public void updateConnections() {
836         Object JavaDoc ircDefault = MainFrame.getMainInstance().getProperties().get("DefaultConnection");
837         jComboBoxConnection.removeAllItems();
838         
839         jComboBoxConnection.addItem(new NullConnection());
840         
841         Enumeration JavaDoc e = MainFrame.getMainInstance().getConnections().elements();
842         while (e.hasMoreElements()) {
843             IReportConnection irc = (IReportConnection)e.nextElement();
844             jComboBoxConnection.addItem(irc);
845         }
846         
847         if (ircDefault != null) {
848             jComboBoxConnection.setSelectedItem(ircDefault);
849         }
850     }
851     
852     private void jComboBoxConnectionActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jComboBoxConnectionActionPerformed
853
boolean canNext = false;
854         if (jComboBoxConnection.getSelectedItem() != null) {
855             IReportConnection irc = (IReportConnection)jComboBoxConnection.getSelectedItem();
856             
857             if (irc.isJDBCConnection()) {
858                 jLabel2.setText("SQL query");
859                 jTextFieldBean.setVisible(false);
860                 jRSQLExpressionArea1.setVisible(true);
861                 if (jRSQLExpressionArea1.getText().length() > 0) canNext = true;
862             } else if (irc instanceof JRHibernateConnection) {
863                 jLabel2.setText("HQL query");
864                 jTextFieldBean.setVisible(false);
865                 jRSQLExpressionArea1.setVisible(true);
866                 if (jRSQLExpressionArea1.getText().length() > 0) canNext = true;
867             } else if (irc instanceof it.businesslogic.ireport.connection.JRDataSourceProviderConnection) {
868                 jLabel2.setText(" ");
869                 jTextFieldBean.setVisible(false);
870                 jRSQLExpressionArea1.setVisible(false);
871                 canNext = true;
872             } else if (irc instanceof it.businesslogic.ireport.connection.JavaBeanDataSourceConnection) {
873                 jLabel2.setText("JavaBean class");
874                 jRSQLExpressionArea1.setVisible(false);
875                 jTextFieldBean.setVisible(true);
876                 if (jTextFieldBean.getText().length() > 0) canNext = true;
877             } else if (irc instanceof it.businesslogic.ireport.connection.JRCSVDataSourceConnection) {
878                 jLabel2.setText(" ");
879                 jTextFieldBean.setVisible(false);
880                 jRSQLExpressionArea1.setVisible(false);
881                 canNext = true;
882             } else if (irc instanceof it.businesslogic.ireport.connection.NullConnection) {
883                 jLabel2.setText(" ");
884                 jTextFieldBean.setVisible(false);
885                 jRSQLExpressionArea1.setVisible(false);
886                 canNext = true;
887             } else {
888                 jLabel2.setText("You can't use the wizard with this kind of datasource");
889                 jRSQLExpressionArea1.setVisible(false);
890                 jTextFieldBean.setVisible(false);
891                 canNext = false;
892             }
893         } else {
894             jLabel2.setText("Please create a new connection / datasource.");
895             jRSQLExpressionArea1.setVisible(false);
896             jTextFieldBean.setVisible(false);
897         }
898         jPanel5.setVisible(jRSQLExpressionArea1.isVisible());
899         if (wizardPanel != null) wizardPanel.updateButtons();
900     }//GEN-LAST:event_jComboBoxConnectionActionPerformed
901

902     private void jRadioButton2jRadioButton1ActionPerformed1(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jRadioButton2jRadioButton1ActionPerformed1
903
// TODO add your handling code here:
904
}//GEN-LAST:event_jRadioButton2jRadioButton1ActionPerformed1
905

906     private void jRadioButton2jRadioButton1ItemStateChanged1(java.awt.event.ItemEvent JavaDoc evt) {//GEN-FIRST:event_jRadioButton2jRadioButton1ItemStateChanged1
907
// TODO add your handling code here:
908
}//GEN-LAST:event_jRadioButton2jRadioButton1ItemStateChanged1
909

910     private void jRadioButton1ActionPerformed2(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jRadioButton1ActionPerformed2
911
// TODO add your handling code here:
912
}//GEN-LAST:event_jRadioButton1ActionPerformed2
913

914     private void jRadioButton1ItemStateChanged2(java.awt.event.ItemEvent JavaDoc evt) {//GEN-FIRST:event_jRadioButton1ItemStateChanged2
915
// TODO add your handling code here:
916
}//GEN-LAST:event_jRadioButton1ItemStateChanged2
917

918     private void jPanel0PropertyChange(java.beans.PropertyChangeEvent JavaDoc evt) {//GEN-FIRST:event_jPanel0PropertyChange
919

920         
921         
922     }//GEN-LAST:event_jPanel0PropertyChange
923

924     
925     // Variables declaration - do not modify//GEN-BEGIN:variables
926
private javax.swing.ButtonGroup JavaDoc buttonGroup1;
927     private javax.swing.ButtonGroup JavaDoc buttonGroup2;
928     private javax.swing.JButton JavaDoc jButton1;
929     private javax.swing.JButton JavaDoc jButton2;
930     private javax.swing.JButton JavaDoc jButton3;
931     private javax.swing.JButton JavaDoc jButton4;
932     private javax.swing.JButton JavaDoc jButton5;
933     private javax.swing.JButton JavaDoc jButtonLoadQuery;
934     private javax.swing.JButton JavaDoc jButtonNewConnection;
935     private javax.swing.JButton JavaDoc jButtonSaveQuery;
936     private javax.swing.JComboBox JavaDoc jComboBoxConnection;
937     private javax.swing.JLabel JavaDoc jLabel1;
938     private javax.swing.JLabel JavaDoc jLabel12;
939     private javax.swing.JLabel JavaDoc jLabel2;
940     private javax.swing.JLabel JavaDoc jLabel2e;
941     private javax.swing.JLabel JavaDoc jLabel3;
942     private javax.swing.JLabel JavaDoc jLabelImage;
943     private javax.swing.JList JavaDoc jList1;
944     private javax.swing.JList JavaDoc jList2;
945     private javax.swing.JList JavaDoc jList3;
946     private javax.swing.JPanel JavaDoc jPanel0;
947     private javax.swing.JPanel JavaDoc jPanel1;
948     private javax.swing.JPanel JavaDoc jPanel2;
949     private javax.swing.JPanel JavaDoc jPanel3;
950     private javax.swing.JPanel JavaDoc jPanel4;
951     private javax.swing.JPanel JavaDoc jPanel41;
952     private javax.swing.JPanel JavaDoc jPanel5;
953     private javax.swing.JPanel JavaDoc jPanel6;
954     private javax.swing.JPanel JavaDoc jPanel61;
955     private javax.swing.JPanel JavaDoc jPanel7;
956     private javax.swing.JPanel JavaDoc jPanelButtons;
957     private it.businesslogic.ireport.gui.JRTextExpressionArea jRSQLExpressionArea1;
958     private javax.swing.JRadioButton JavaDoc jRadioButton4;
959     private javax.swing.JRadioButton JavaDoc jRadioButton5;
960     private javax.swing.JRadioButton JavaDoc jRadioButtonColumnarLayout;
961     private javax.swing.JRadioButton JavaDoc jRadioButtonTabularLayout;
962     private javax.swing.JScrollPane JavaDoc jScrollPane1;
963     private javax.swing.JScrollPane JavaDoc jScrollPane2;
964     private javax.swing.JScrollPane JavaDoc jScrollPane3;
965     private javax.swing.JTextField JavaDoc jTextFieldBean;
966     private javax.swing.JTextField JavaDoc jTextFieldReportFileName;
967     // End of variables declaration//GEN-END:variables
968

969
970     public String JavaDoc[] getStepsNames() {
971         
972         String JavaDoc[] names = new String JavaDoc[4];
973         names[0] = "Query/datasource";
974         names[1] = "Fields";
975         names[2] = "Template";
976         names[3] = "Expression";
977         //names[3] = "Finish";
978

979         return names;
980     }
981
982     public String JavaDoc getStepDescription(int step) {
983         
984         if (step==0) return "How fill the subreport";
985         if (step==1) return "Select the subreport fields";
986         if (step==2) return "Choose a template";
987         if (step==3) return "Subreport expession";
988         
989         return "";
990     }
991
992     public void initWizard() {
993         updateConnections();
994     }
995
996     public void finish(int currentStep) {
997         if (currentStep < 0)
998         {
999              if (t != null && t.isAlive()) {
1000                t.interrupt();
1001                return;
1002            }
1003        }
1004        if (currentStep >= 0)
1005        {
1006            try {
1007                Report finalReport = createReport(((IReportTemplate)jList3.getSelectedValue()).getXmlFile(), jRadioButtonColumnarLayout.isSelected() ? 1 : 0);
1008                
1009                if (jRadioButton4.isSelected())
1010                {
1011                    Report report = MainFrame.getMainInstance().getActiveReportFrame().getReport();
1012                    Vector JavaDoc v = report.getParameters();
1013                    boolean found = false;
1014                    for (int i=0; i<report.getParameters().size(); ++i)
1015                    {
1016                        it.businesslogic.ireport.JRParameter param = (it.businesslogic.ireport.JRParameter)report.getParameters().elementAt(i);
1017
1018                        if (param.getName().equals("SUBREPORT_DIR"))
1019                        {
1020                            found = true;
1021
1022                            break;
1023                        }
1024                    }
1025                    if (!found)
1026                    {
1027                        it.businesslogic.ireport.JRParameter param = new it.businesslogic.ireport.JRParameter("SUBREPORT_DIR","java.lang.String");
1028                        //File f = new File( getReportFileName() );
1029

1030                        String JavaDoc s = MainFrame.getMainInstance().getTranslatedCompileDirectory();
1031                    
1032                        if (s.length() > 0 && !s.endsWith(File.separator)) s += File.separator;
1033                    
1034                        s = Misc.string_replace("\\\\","\\",s);
1035                        s = "\"" + s + "\"";
1036                        
1037                        /*
1038                        String s = f.getParent(); //Path();
1039                        if (s!= null)
1040                        {
1041                            if (s.length() > 0 && !s.endsWith(File.separator))
1042                            {
1043                                s += File.separator;
1044                            }
1045                        }
1046                        else
1047                        {
1048                            s = "";
1049                        }
1050                        s = Misc.string_replace("\\\\","\\",s);
1051                        s = "\"" + s + "\"";
1052                        */

1053                        param.setDefaultValueExpression(s);
1054                        report.addParameter( param );
1055                    }
1056                    getSubReportElement().setSubreportExpression(jLabel1.getText());
1057                }
1058                else
1059                {
1060                    getSubReportElement().setSubreportExpression(jLabel2e.getText());
1061                }
1062                getSubReportElement().setSubreportExpressionClass("java.lang.String");
1063                
1064                MainFrame.getMainInstance().openNewReportWindow(finalReport);
1065            
1066            } catch (Exception JavaDoc ex)
1067            {
1068                javax.swing.JOptionPane.showMessageDialog(getParent(),ex.getMessage()+"",
1069                        I18n.getString("message.title.error","Error"), javax.swing.JOptionPane.ERROR_MESSAGE);
1070                ex.printStackTrace();
1071            }
1072        }
1073        
1074        this.getWizardDialog().setVisible(false);
1075        this.getWizardDialog().dispose();
1076    }
1077    
1078    public boolean nextStep(int nextStep) {
1079        
1080        if (nextStep == 0) // First step == 0
1081
{
1082           
1083        }
1084        else if (nextStep == 1)
1085        {
1086           // We must retrive fields...
1087
wizardPanel.getJButtonNext().setEnabled(false);
1088           wizardPanel.getJButtonPrev().setEnabled(false);
1089           wizardPanel.getJButtonFinish().setEnabled(false);
1090           t = new Thread JavaDoc(this);
1091           t.start();
1092           return false;
1093        }
1094        else if (nextStep == 2)
1095        {
1096            
1097           updateExpressionLabels();
1098        }
1099        return true;
1100    }
1101
1102    public boolean previousStep(int previousStep) {
1103        return true;
1104    }
1105
1106    public boolean canFinish(int currentStep) {
1107        
1108        if (currentStep<3) return false;
1109        if (jTextFieldReportFileName.getText().trim().length() > 0)
1110        {
1111            String JavaDoc s = jTextFieldReportFileName.getText().trim();
1112            String JavaDoc s2 = MainFrame.getMainInstance().getActiveReportFrame().getReport().getFilename();
1113            if (s.indexOf(File.separator) >=0)
1114            {
1115                return (!s.equals(s2));
1116            }
1117            else
1118            {
1119                File JavaDoc f = new File JavaDoc(s2);
1120                return (!f.getName().equals(s));
1121            }
1122        }
1123        return false;
1124    }
1125
1126    public boolean canNext(int currentStep) {
1127        
1128        if (currentStep == 0)
1129        {
1130             if (jComboBoxConnection.getSelectedItem() != null) {
1131                IReportConnection irc = (IReportConnection)jComboBoxConnection.getSelectedItem();
1132            
1133                if (irc.isJDBCConnection()) {
1134                    if (jRSQLExpressionArea1.getText().length() > 0) return true;
1135                } else if (irc instanceof JRHibernateConnection) {
1136                    jLabel2.setText("HQL query");
1137                    jTextFieldBean.setVisible(false);
1138                    jRSQLExpressionArea1.setVisible(true);
1139                    if (jRSQLExpressionArea1.getText().length() > 0) return true;
1140                } else if (irc instanceof it.businesslogic.ireport.connection.JRDataSourceProviderConnection) {
1141                    return true;
1142                } else if (irc instanceof it.businesslogic.ireport.connection.JavaBeanDataSourceConnection) {
1143                    if (jTextFieldBean.getText().length() > 0) return true;
1144                } else if (irc instanceof it.businesslogic.ireport.connection.JRCSVDataSourceConnection) {
1145                    return true;
1146                } else if (irc instanceof it.businesslogic.ireport.connection.NullConnection) {
1147                    return true;
1148                } else {
1149                    return false;
1150                }
1151            }
1152            return false;
1153        }
1154        else if (currentStep == 1)
1155        {
1156                 IReportConnection irc = (IReportConnection)jComboBoxConnection.getSelectedItem();
1157                 if (irc instanceof it.businesslogic.ireport.connection.NullConnection) return true;
1158                 return jList2.getModel().getSize() > 0;
1159        }
1160        else if (currentStep == 2)
1161        {
1162            return jList3.getSelectedIndex() >= 0;
1163        }
1164        return false;
1165    }
1166
1167    public boolean canPrevious(int currentStep) {
1168        return (currentStep > 0);
1169    }
1170
1171    public JPanel JavaDoc getStepPanel(int step) {
1172
1173       if (step == 0) return jPanel0;
1174       if (step == 1) return jPanel1;
1175       if (step == 2) return jPanel2;
1176       if (step == 3) return jPanel3;
1177       //if (step == 4) return jPanel4;
1178
return null;
1179    }
1180
1181    public String JavaDoc getReportFileName() {
1182        return reportFileName;
1183    }
1184
1185    public void setReportFileName(String JavaDoc reportFileName) {
1186        this.reportFileName = reportFileName;
1187    }
1188
1189    public SubReportElement getSubReportElement() {
1190        return subReportElement;
1191    }
1192
1193    public void setSubReportElement(SubReportElement subReportElement) {
1194        this.subReportElement = subReportElement;
1195    }
1196
1197    public BaseWizardPanel getWizardPanel() {
1198        return wizardPanel;
1199    }
1200
1201    public void setWizardPanel(BaseWizardPanel wizardPanel) {
1202        this.wizardPanel = wizardPanel;
1203    }
1204
1205    public javax.swing.JDialog JavaDoc getWizardDialog() {
1206        return wizardDialog;
1207    }
1208
1209    public void setWizardDialog(javax.swing.JDialog JavaDoc wizardDialog) {
1210        this.wizardDialog = wizardDialog;
1211    }
1212    
1213    
1214    /** When an object implementing interface <code>Runnable</code> is used
1215     * to create a thread, starting the thread causes the object's
1216     * <code>run</code> method to be called in that separately executing
1217     * thread.
1218     * <p>
1219     * The general contract of the method <code>run</code> is that it may
1220     * take any action whatsoever.
1221     *
1222     * @see java.lang.Thread#run()
1223     *
1224     */

1225    public void run() {
1226        
1227        Thread.currentThread().setContextClassLoader( MainFrame.getMainInstance().getReportClassLoader() );
1228        // This method is invoked to read fields....
1229
try {
1230            IReportConnection irc = (IReportConnection)jComboBoxConnection.getSelectedItem();
1231            
1232            DefaultListModel JavaDoc dlm1 = (DefaultListModel JavaDoc)jList1.getModel();
1233            dlm1.removeAllElements();
1234            
1235            DefaultListModel JavaDoc dlm2 = (DefaultListModel JavaDoc)jList2.getModel();
1236            dlm2.removeAllElements();
1237            // Get fields....
1238
java.util.List JavaDoc fields = WizardDialog.readFields(irc,jRSQLExpressionArea1.getText(), jTextFieldBean.getText());
1239            
1240            if (fields == null)
1241            {
1242                cancelElaborationStep1();
1243                return;
1244            }
1245            
1246            for (int i=0; i <fields.size(); ++i) {
1247                it.businesslogic.ireport.JRField field = (JRField)fields.get(i);
1248                // Check if parameter already exists...
1249
boolean found = false;
1250                for (int k=0; i< dlm1.size(); ++k) {
1251                    it.businesslogic.ireport.JRField f = (it.businesslogic.ireport.JRField)dlm1.getElementAt(k);
1252                    if (f.getName().equalsIgnoreCase(field.getName())) {
1253                        found = true;
1254                        break;
1255                    }
1256                }
1257                if (!found) {
1258                    //this.getJReportFrame().getReport().getFields().addElement(field);
1259
dlm1.addElement(field);
1260                }
1261                if (jList1.getModel().getSize()>0) jList1.setSelectedIndex(0);
1262            }
1263            
1264            wizardPanel.goStep(1);
1265            
1266        } catch (Exception JavaDoc ex) {
1267            java.io.StringWriter JavaDoc sw = new java.io.StringWriter JavaDoc();
1268            ex.printStackTrace(new java.io.PrintWriter JavaDoc( sw ));
1269            javax.swing.JOptionPane.showMessageDialog(getParent(),sw.getBuffer()+"",
1270                    I18n.getString("message.title.error","Error"), javax.swing.JOptionPane.ERROR_MESSAGE);
1271            cancelElaborationStep1();
1272            return;
1273        }
1274        
1275    }
1276    
1277    public void cancelElaborationStep1() {
1278            wizardPanel.updateButtons();
1279    }
1280    
1281    
1282    public void updateTemplatesList() {
1283        if (templates == null)
1284        {
1285            loadTemplateFiles();
1286             if (templates == null) return;
1287        }
1288        
1289        ((javax.swing.DefaultListModel JavaDoc)jList3.getModel()).removeAllElements();
1290        
1291        for (int i=0; i< templates.size(); ++i) {
1292            IReportTemplate itemplate = (IReportTemplate)templates.elementAt(i);
1293            
1294            if (jRadioButtonTabularLayout.isSelected() && itemplate.getType() != IReportTemplate.TABULAR) continue;
1295            if (jRadioButtonColumnarLayout.isSelected() && itemplate.getType() != IReportTemplate.COLUMNAR) continue;
1296            //if (jComboBoxTemplates.getItemCount()<2 || (jComboBoxTemplates.getSelectedIndex() == 0 && itemplate.getType() != IReportTemplate.COLUMNAR) ) continue;
1297
//if (jComboBoxTemplates.getSelectedIndex() == 1 && itemplate.getType() != IReportTemplate.TABULAR) continue;
1298
/*
1299            TemplateFile tf = new TemplateFile();
1300            tf.file = templates[i];
1301             
1302            tf.name = templates[i].getName().substring(0, templates[i].getName().length()-4);
1303             */

1304            ((javax.swing.DefaultListModel JavaDoc)jList3.getModel()).addElement(itemplate);
1305        }
1306        if ( ((javax.swing.DefaultListModel JavaDoc)jList3.getModel()).getSize()>0)
1307            jList3.setSelectedIndex(0);
1308        jList3.updateUI();
1309    }
1310    
1311    
1312    public void loadTemplateFiles()
1313    {
1314        templates = new Vector JavaDoc();
1315        String JavaDoc templates_dir = MainFrame.IREPORT_HOME_DIR; //System.getProperty("ireport.home",".");
1316
templates_dir += File.separator + "templates";
1317        //System.out.println("Templates: " + templates_dir);
1318
//C:\\documenti\\progetti\\ireport\\iReport2\\templates
1319
try {
1320            File JavaDoc f = new File JavaDoc(templates_dir);
1321            File JavaDoc[] templates_files = null;
1322            if (f.exists() && f.isDirectory()) {
1323                templates_files = f.listFiles(new FilenameFilter JavaDoc() {
1324                    public boolean accept(File JavaDoc dir, String JavaDoc name) {
1325                        if (name.endsWith("T.xml") || name.endsWith("C.xml")) {
1326                            return true;
1327                        }
1328                        return false;
1329                    }
1330                });
1331            } else {
1332                templates_dir = MainFrame.IREPORT_HOME_DIR; //System.getProperty("ireport.home",".");
1333
templates_dir += File.separator + "etc" + File.separator + "templates";
1334                f = new File JavaDoc(templates_dir);
1335                if (f.exists() && f.isDirectory()) {
1336                    templates_files = f.listFiles(new FilenameFilter JavaDoc() {
1337                        public boolean accept(File JavaDoc dir, String JavaDoc name) {
1338                            if (name.endsWith("T.xml") || name.endsWith("C.xml")) {
1339                                return true;
1340                            }
1341                            return false;
1342                        }
1343                    });
1344                }
1345            }
1346            
1347            for (int i=0;templates_files != null && i<templates_files.length; ++i) {
1348                IReportTemplate itemplate = new IReportTemplate();
1349                itemplate.setXmlFile(templates_files[i] +"");
1350                itemplate.setName(templates_files[i].getName());
1351                itemplate.setType( templates_files[i].getName().toLowerCase().endsWith("c.xml") ? 0 : 1);
1352                try {
1353                    String JavaDoc iconname = templates_files[i]+"";
1354                    iconname = Misc.changeFileExtension(iconname,".gif");
1355                    itemplate.setIcon( new javax.swing.ImageIcon JavaDoc( iconname) );
1356                } catch (Exception JavaDoc ex){}
1357                
1358                templates.add( itemplate );
1359            }
1360            
1361        } catch (Exception JavaDoc ex) {
1362        }
1363        
1364        
1365        // try to look in the classpath...
1366
try {
1367            Vector JavaDoc xml_template_files = new Vector JavaDoc();
1368            Enumeration JavaDoc enum_pl = this.getClass().getClassLoader().getResources("ireport/template.xml");
1369            while (enum_pl.hasMoreElements()) {
1370                Object JavaDoc oobj = enum_pl.nextElement();
1371                xml_template_files.add(oobj);
1372            }
1373            
1374            for (int i=0; i<xml_template_files.size(); ++i) {
1375                
1376                Object JavaDoc source = xml_template_files.elementAt(i);
1377                // Create a Xerces DOM Parser
1378
DOMParser parser = new DOMParser();
1379                // Parse the Document
1380
// and traverse the DOM
1381
try {
1382                    
1383                    parser.setEntityResolver( new org.xml.sax.EntityResolver JavaDoc() {
1384                        /* Code by Teodor Danciu */
1385                        public org.xml.sax.InputSource JavaDoc resolveEntity(
1386                                String JavaDoc publicId,
1387                                String JavaDoc systemId
1388                                ) throws SAXException JavaDoc//, java.io.IOException
1389
{
1390                            org.xml.sax.InputSource JavaDoc inputSource = null;
1391                            
1392                            if (systemId != null) {
1393                                String JavaDoc dtd = null;
1394                                
1395                                if ( systemId.equals("http://ireport.sourceforge.net/dtds/iReportTemplate.dtd") ) {
1396                                    dtd = "it/businesslogic/ireport/dtds/iReportTemplate.dtd";
1397                                } else {
1398                                    return new org.xml.sax.InputSource JavaDoc(systemId);
1399                                }
1400                                
1401                                
1402                                ClassLoader JavaDoc classLoader = this.getClass().getClassLoader();
1403                                
1404                                java.io.InputStream JavaDoc is = classLoader.getResourceAsStream(dtd);
1405                                if (is != null) {
1406                                    inputSource = new org.xml.sax.InputSource JavaDoc(is);
1407                                }
1408                                
1409                            }
1410                            
1411                            return inputSource;
1412                        }
1413                    });
1414                    /* End Code by Teodor Danciu */
1415                    InputStream JavaDoc input_source = null;
1416                    if ( source instanceof java.io.File JavaDoc ) {
1417                        input_source = new FileInputStream JavaDoc((java.io.File JavaDoc)source);
1418                        
1419                    } else if ( source instanceof java.net.URL JavaDoc){
1420                        
1421                        input_source = ((java.net.URL JavaDoc)source).openStream();
1422                        
1423                    }
1424                    
1425                    parser.parse(new org.xml.sax.InputSource JavaDoc( input_source ));
1426                    Document JavaDoc document = parser.getDocument();
1427                    
1428                    //System.out.println("traverse");
1429
Node JavaDoc node = document.getDocumentElement();
1430                    
1431                    NodeList JavaDoc list = XPathAPI.selectNodeList(node, "/iReportTemplateSet/iReportTemplate");
1432                    Node JavaDoc childnode = null;
1433                    
1434                    for (int n=0; n < list.getLength(); n++) {
1435                        IReportTemplate ireportTemplate = new IReportTemplate();
1436                        childnode = XPathAPI.selectSingleNode(list.item(n), "@name");
1437                        if (childnode != null) ireportTemplate.setName(childnode.getNodeValue());
1438                        if (XPathAPI.eval(list.item(n), "@type = 'Tabular'").equals(XBoolean.S_TRUE)) {
1439                            ireportTemplate.setType(IReportTemplate.TABULAR);
1440                        } else {
1441                            ireportTemplate.setType(IReportTemplate.COLUMNAR);
1442                        }
1443                        childnode = XPathAPI.selectSingleNode(list.item(n), "XmlFile/text()");
1444                        if (childnode != null) ireportTemplate.setXmlFile(childnode.getNodeValue());
1445                        childnode = XPathAPI.selectSingleNode(list.item(n), "IconFile/text()");
1446                        if (childnode != null) {
1447                            try {
1448                                ireportTemplate.setIcon(
1449                                        new ImageIcon JavaDoc(getClass().getClassLoader().getResource(childnode.getNodeValue())));
1450                            } catch (DOMException JavaDoc e) {
1451                                // Don't care
1452
e.printStackTrace();
1453                            }
1454                        }
1455                        
1456                        templates.add(ireportTemplate);
1457                    }
1458                } catch (SAXException JavaDoc e) {
1459                    System.err.println(e);
1460                } catch (java.io.IOException JavaDoc e) {
1461                    System.err.println(e);
1462                }
1463            } // End cycle on iReport plugin files...
1464

1465        } catch (Exception JavaDoc ex) {
1466            MainFrame.getMainInstance().logOnConsole("Error searching ireport/template.xml resources\n");
1467        }
1468        
1469        
1470    }
1471    
1472    public void updateExpressionLabels()
1473    {
1474        String JavaDoc fileName = jTextFieldReportFileName.getText().trim();
1475        
1476        if (fileName.length() == 0)
1477        {
1478            jLabel1.setText("");
1479            jLabel2e.setText("");
1480        }
1481        else
1482        {
1483           File JavaDoc f = new File JavaDoc(fileName);
1484
1485           String JavaDoc s = f.getName();
1486           if (!s.toLowerCase().endsWith(".jasper"))
1487           {
1488               if (s.lastIndexOf(".") > 0)
1489               {
1490                   s = s.substring(0,s.lastIndexOf("."));
1491               }
1492               s += ".jasper";
1493           }
1494
1495           jLabel1.setText("$P{SUBREPORT_DIR} + \"" + s + "\"");
1496
1497           String JavaDoc s2 = MainFrame.getMainInstance().getTranslatedCompileDirectory();
1498           f = new File JavaDoc( fileName );
1499           
1500           f = new File JavaDoc(s2, Misc.string_replace(".jasper",".jrxml",f.getName()));
1501           s2 = Misc.string_replace("\\\\","\\","" + f);
1502           jLabel2e.setText("\"" + s2 + "\"");
1503        }
1504        
1505        
1506    }
1507    
1508    /*
1509      *
1510      * type=1 -> TABULAR
1511      * type=2 -> COLUMNAR
1512      */

1513    public Report createReport(String JavaDoc templateFileName, int reportType)
1514    throws Exception JavaDoc {
1515        
1516        Report template = new Report(templateFileName);
1517        
1518        template.incrementReportChanges();
1519        
1520        String JavaDoc s = jTextFieldReportFileName.getText().trim();
1521        String JavaDoc s2 = MainFrame.getMainInstance().getActiveReportFrame().getReport().getFilename();
1522        if (s.indexOf(File.separator) >=0)
1523        {
1524            template.setFilename(s);
1525        }
1526        else
1527        {
1528            File JavaDoc f = new File JavaDoc(s2);
1529            s2= f.getParent();
1530            if (s2.length() >0 && !s2.endsWith(File.separator)) s2 = s2+File.separator;
1531            s2 += s;
1532            template.setFilename(s2);
1533        }
1534        
1535        // remove all bands except column header and detail...
1536

1537        //2. Find detail and column header bands...
1538
Band detail=null;
1539        Band columns=null;
1540        
1541        Enumeration JavaDoc e = template.getBands().elements();
1542        while (e.hasMoreElements()) {
1543            Band band = (Band)e.nextElement();
1544            if (band.getName().equals("detail")) {
1545                detail = band;
1546            } else if (band.getName().equals("columnHeader")) {
1547                columns = band;
1548            }
1549        }
1550
1551        // 1. Normalize position to band...
1552
e = template.getElements().elements();
1553        while (e.hasMoreElements()) {
1554            ReportElement rElement = (ReportElement)e.nextElement();
1555            rElement.trasform(new java.awt.Point JavaDoc(0,- template.getBandYLocation( rElement.getBand() )),TransformationType.TRANSFORMATION_MOVE );
1556        }
1557        
1558        if (reportType == 0) // TABULAR
1559
{
1560                //1. Adding fields...
1561
int currentx = template.getLeftMargin()+10;
1562                int currenty = 10;
1563                e = template.getElements().elements();
1564                StaticTextReportElement detailLabel = null;
1565                TextFieldReportElement detailField = null;
1566                while (e.hasMoreElements() && (detailLabel==null || detailField == null) ) {
1567                    ReportElement rElement = (ReportElement)e.nextElement();
1568                    if (rElement instanceof StaticTextReportElement) {
1569                        StaticTextReportElement stre = (StaticTextReportElement)rElement;
1570                        if (stre.getText().equalsIgnoreCase("DetailLabel"))
1571                            detailLabel =stre;
1572                    } else if (rElement instanceof TextFieldReportElement) {
1573                        TextFieldReportElement tfre = (TextFieldReportElement)rElement;
1574                        if (tfre.getText().equalsIgnoreCase("DetailField"))
1575                            detailField = tfre;
1576                    }
1577                }
1578
1579                if (detailField != null)
1580                    template.getElements().removeElement(detailField);
1581                if (detailLabel != null)
1582                    template.getElements().removeElement(detailLabel);
1583
1584                if (detailField == null)
1585                    detailField = new TextFieldReportElement(0,0,100,20);
1586                if (detailLabel == null)
1587                    detailLabel = new StaticTextReportElement(0,0,100,18);
1588
1589                int nfields = jList2.getModel().getSize();
1590                int fwidth = template.getColumnWidth()/ ( (nfields <= 0) ? 1 : nfields);
1591
1592                for (int i=0; i<jList2.getModel().getSize(); ++i) {
1593                    // FIELD
1594
it.businesslogic.ireport.JRField f = (it.businesslogic.ireport.JRField)jList2.getModel().getElementAt(i);
1595                    template.addField(f);
1596
1597                    TextFieldReportElement re = (TextFieldReportElement)detailField.cloneMe();
1598                    re.setPosition(new java.awt.Point JavaDoc(currentx,detailField.getPosition().y));
1599                    re.setWidth( fwidth);
1600                    re.updateBounds();
1601                    re.setText("$F{"+ f.getName() +"}");
1602
1603                    re.setBand(detail);
1604                    re.setMatchingClassExpression( f.getClassType(), true );
1605                    template.getElements().addElement(re);
1606
1607                    // COLUMN LABEL...
1608
StaticTextReportElement sre = (StaticTextReportElement)detailLabel.cloneMe();
1609                    sre.setPosition(new java.awt.Point JavaDoc(currentx,detailLabel.getPosition().y));
1610                    sre.setWidth(fwidth);
1611                    sre.updateBounds();
1612                    sre.setText(""+ f.getName() +"");
1613                    sre.setBand(columns);
1614                    template.getElements().addElement(sre);
1615
1616                    currentx += fwidth;
1617                    currentx = Math.min(template.getWidth() - template.getRightMargin()+10-30, currentx);
1618                }
1619        }
1620        else
1621        {
1622            //1. Adding fields...
1623
int currentx = template.getLeftMargin()+10;
1624                int currenty = 10;
1625                e = template.getElements().elements();
1626                StaticTextReportElement detailLabel = null;
1627                TextFieldReportElement detailField = null;
1628                while (e.hasMoreElements() && (detailLabel==null || detailField == null) ) {
1629                    ReportElement rElement = (ReportElement)e.nextElement();
1630                    if (rElement instanceof StaticTextReportElement) {
1631                        StaticTextReportElement stre = (StaticTextReportElement)rElement;
1632                        if (stre.getText().equalsIgnoreCase("DetailLabel"))
1633                            detailLabel =stre;
1634                    } else if (rElement instanceof TextFieldReportElement) {
1635                        TextFieldReportElement tfre = (TextFieldReportElement)rElement;
1636                        if (tfre.getText().equalsIgnoreCase("DetailField"))
1637                            detailField = tfre;
1638                    }
1639                }
1640
1641                if (detailField != null)
1642                    template.getElements().removeElement(detailField);
1643                if (detailLabel != null)
1644                    template.getElements().removeElement(detailLabel);
1645
1646                if (detailField == null)
1647                    detailField = new TextFieldReportElement(0,0,100,20);
1648                if (detailLabel == null)
1649                    detailLabel = new StaticTextReportElement(0,0,100,18);
1650
1651                int nfields = jList2.getModel().getSize();
1652
1653                int fwidth = template.getColumnWidth()/ ( (nfields <= 0) ? 1 : nfields);
1654                int ffheight = detailField.getPosition().y;
1655
1656                for (int i=0; i<jList2.getModel().getSize(); ++i) {
1657                    // FIELD
1658
it.businesslogic.ireport.JRField f = (it.businesslogic.ireport.JRField)jList2.getModel().getElementAt(i);
1659                    template.addField(f);
1660
1661                    TextFieldReportElement re = (TextFieldReportElement)detailField.cloneMe();
1662                    re.setPosition(new java.awt.Point JavaDoc(detailField.getPosition().x, ffheight));
1663                    re.updateBounds();
1664                    re.setText("$F{"+ f.getName() +"}");
1665
1666                    re.setBand(detail);
1667                    re.setMatchingClassExpression( f.getClassType(), true );
1668
1669                    template.getElements().addElement(re);
1670
1671                    // COLUMN LABEL...
1672
StaticTextReportElement sre = (StaticTextReportElement)detailLabel.cloneMe();
1673                    sre.setPosition(new java.awt.Point JavaDoc(detailLabel.getPosition().x,ffheight));
1674                    sre.setWidth(fwidth);
1675                    sre.updateBounds();
1676                    sre.setText(""+ f.getName() +"");
1677                    sre.setBand(detail);
1678                    template.getElements().addElement(sre);
1679
1680                    ffheight += detailField.position.y+detailField.height-10;
1681                }
1682                if (nfields != 0) detail.setHeight(ffheight);
1683        
1684        }
1685    
1686        
1687        // Remove template groups...****************
1688
e = template.getElements().elements();
1689        Vector JavaDoc elements_to_delete = new Vector JavaDoc();
1690        while (e.hasMoreElements()) {
1691            ReportElement rElement = (ReportElement)e.nextElement();
1692            if (rElement.getBand() != detail && rElement.getBand() != columns)
1693            {
1694                elements_to_delete.addElement(rElement);
1695            }
1696        }
1697        
1698        
1699        
1700        e =elements_to_delete.elements();
1701        while (e.hasMoreElements()) {
1702            template.getElements().removeElement(e.nextElement());
1703        }
1704        
1705        Group g;
1706        if ((g=template.getGroupByName("Group1"))!=null) {
1707            template.getBands().removeElement(g.getGroupFooter());
1708            template.getBands().removeElement(g.getGroupHeader());
1709            template.getGroups().removeElement(g);
1710        }
1711        if ((g=template.getGroupByName("Group2"))!=null) {
1712            template.getBands().removeElement(g.getGroupFooter());
1713            template.getBands().removeElement(g.getGroupHeader());
1714            template.getGroups().removeElement(g);
1715        }
1716        if ((g=template.getGroupByName("Group3"))!=null) {
1717            template.getBands().removeElement(g.getGroupFooter());
1718            template.getBands().removeElement(g.getGroupHeader());
1719            template.getGroups().removeElement(g);
1720        }
1721        
1722        if ((g=template.getGroupByName("Group4"))!=null) {
1723            template.getBands().removeElement(g.getGroupFooter());
1724            template.getBands().removeElement(g.getGroupHeader());
1725            template.getGroups().removeElement(g);
1726        }
1727        
1728        e = template.getBands().elements();
1729        while (e.hasMoreElements()) {
1730            Band band = (Band)e.nextElement();
1731            if (band != detail && band != columns)
1732            {
1733                band.setHeight(0);
1734            }
1735        }
1736        
1737        
1738                // Remove margins...
1739

1740        int leftMargin = template.getLeftMargin();
1741        template.setWidth( template.getWidth() - template.getLeftMargin() - template.getRightMargin() );
1742        template.setLeftMargin(0);
1743        template.setRightMargin(0);
1744        template.setHeight( template.getHeight() - template.getTopMargin() - template.getBottomMargin() );
1745        template.setTopMargin(0);
1746        template.setBottomMargin(0);
1747
1748        
1749        e = template.getElements().elements();
1750        while (e.hasMoreElements()) {
1751            ReportElement rElement = (ReportElement)e.nextElement();
1752            rElement.trasform(new java.awt.Point JavaDoc(- leftMargin, template.getBandYLocation( rElement.getBand() )),TransformationType.TRANSFORMATION_MOVE );
1753        }
1754        
1755        
1756        
1757        
1758        if (jComboBoxConnection.getSelectedItem() instanceof JDBCConnection)
1759        {
1760            getSubReportElement().setConnectionExpression("$P{REPORT_CONNECTION}");
1761            getSubReportElement().setUseConnection(true);
1762            template.setQuery( jRSQLExpressionArea1.getText() );
1763        
1764        }
1765        else if (jComboBoxConnection.getSelectedItem() instanceof JRHibernateConnection)
1766        {
1767            template.setQuery( jRSQLExpressionArea1.getText() );
1768            template.setQueryLanguage("hql");
1769        }
1770        else if (jComboBoxConnection.getSelectedItem() instanceof NullConnection)
1771        {
1772            template.setWhenNoDataType("AllSectionsNoDetail");
1773        }
1774        
1775        //System.out.println("Saving: " + template.getFilename());
1776
template.saveXMLFile();
1777        return template;
1778    }
1779    
1780 
1781    public void applyI18n(){
1782                // Start autogenerated code ----------------------
1783
jRadioButton4.setText(I18n.getString("subreportWizardNewReport.radioButton4","Store the directory name in a parameter"));
1784                jRadioButton5.setText(I18n.getString("subreportWizardNewReport.radioButton5","Use a static absolute path reference"));
1785                jRadioButtonColumnarLayout.setText(I18n.getString("subreportWizardNewReport.radioButtonColumnarLayout","Columnar layout"));
1786                jRadioButtonTabularLayout.setText(I18n.getString("subreportWizardNewReport.radioButtonTabularLayout","Tabular layout"));
1787                // End autogenerated code ----------------------
1788
// Start autogenerated code ----------------------
1789
jButton1.setText(I18n.getString("subreportWizardNewReport.button1",">"));
1790                jButton2.setText(I18n.getString("subreportWizardNewReport.button2",">>"));
1791                jButton3.setText(I18n.getString("subreportWizardNewReport.button3","<<"));
1792                jButton4.setText(I18n.getString("subreportWizardNewReport.button4","<"));
1793                jButton5.setText(I18n.getString("subreportWizardNewReport.button5","Browse..."));
1794                jButtonLoadQuery.setText(I18n.getString("subreportWizardNewReport.buttonLoadQuery","Load query"));
1795                jButtonNewConnection.setText(I18n.getString("subreportWizardNewReport.buttonNewConnection","New"));
1796                jButtonSaveQuery.setText(I18n.getString("subreportWizardNewReport.buttonSaveQuery","Save query"));
1797                jLabel1.setText(I18n.getString("subreportWizardNewReport.label1","$P{SUBREPORT_DIR} + /name.jasper"));
1798                jLabel12.setText(I18n.getString("subreportWizardNewReport.label12","Connection / Datasource"));
1799                jLabel2.setText(I18n.getString("subreportWizardNewReport.label2","Query"));
1800                jLabel2e.setText(I18n.getString("subreportWizardNewReport.label2e","path reference"));
1801                jLabel3.setText(I18n.getString("subreportWizardNewReport.label3","Save the subreport as..."));
1802                jLabelImage.setText(I18n.getString("subreportWizardNewReport.labelImage"," "));
1803                // End autogenerated code ----------------------
1804
}
1805}
1806
1807
1808class TemplateFile {
1809    
1810    public File JavaDoc file = null;
1811    public String JavaDoc name = "";
1812    public String JavaDoc toString() { return name; }
1813}
1814
Popular Tags