KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > it > businesslogic > ireport > gui > subdataset > GroupsDialog


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  * GroupsDialog.java
28  *
29  * Created on 10 maggio 2003, 9.51
30  *
31  */

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

47 public class GroupsDialog extends javax.swing.JDialog JavaDoc {
48     
49     
50     private SubDataset subDataset=null;
51     
52     // Variables declaration - do not modify//GEN-BEGIN:variables
53
private javax.swing.JButton JavaDoc jButtonDeleteGroup;
54     private javax.swing.JButton JavaDoc jButtonModifyGroup;
55     private javax.swing.JButton JavaDoc jButtonMoveDownGroup;
56     private javax.swing.JButton JavaDoc jButtonMoveUpGroup;
57     private javax.swing.JButton JavaDoc jButtonNewGroup;
58     private javax.swing.JPanel JavaDoc jPanelButtons;
59     private javax.swing.JPanel JavaDoc jPanelFields;
60     private javax.swing.JScrollPane JavaDoc jScrollPane3;
61     private javax.swing.JTable JavaDoc jTableGroups;
62     // End of variables declaration//GEN-END:variables
63

64     /**
65      * Creates new form GroupsDialog
66      */

67     public GroupsDialog(java.awt.Dialog JavaDoc parent, boolean modal) {
68         super(parent, modal);
69         initComponents();
70         applyI18n();
71         this.setSize(420, 250);
72         Misc.centerFrame(this);
73         
74         DefaultListSelectionModel dlsm = (DefaultListSelectionModel)this.jTableGroups.getSelectionModel();
75         dlsm.addListSelectionListener(new javax.swing.event.ListSelectionListener JavaDoc() {
76             public void valueChanged(ListSelectionEvent e) {
77                 jTableGroupsListSelectionValueChanged(e);
78             }
79         });
80         
81         javax.swing.KeyStroke JavaDoc escape = javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0, false);
82             javax.swing.Action JavaDoc escapeAction = new javax.swing.AbstractAction JavaDoc() {
83                 public void actionPerformed(java.awt.event.ActionEvent JavaDoc e) {
84                     setVisible(false);
85                 }
86             };
87
88             getRootPane().getInputMap(javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "ESCAPE");
89             getRootPane().getActionMap().put("ESCAPE", escapeAction);
90
91     }
92     
93     public void jTableGroupsListSelectionValueChanged(javax.swing.event.ListSelectionEvent JavaDoc e) {
94         
95         /* Buttons Move Up and Move Down */
96         if (this.jTableGroups.getSelectedRowCount() == 1 && this.jTableGroups.getRowCount() > 1) {
97             int row= jTableGroups.getSelectedRows()[0];
98             this.jButtonMoveDownGroup.setEnabled( row != this.jTableGroups.getRowCount()-1);
99             this.jButtonMoveUpGroup.setEnabled( row != 0);
100         } else {
101             // Moving of multiple groups not allowed
102
this.jButtonMoveDownGroup.setEnabled(false);
103             this.jButtonMoveUpGroup.setEnabled(false);
104         }
105         
106         /* Other buttons*/
107         if (this.jTableGroups.getSelectedRowCount() > 0) {
108             this.jButtonModifyGroup.setEnabled(true);
109             this.jButtonDeleteGroup.setEnabled(true);
110         }
111         else {
112             this.jButtonModifyGroup.setEnabled(false);
113             this.jButtonDeleteGroup.setEnabled(false);
114         }
115     }
116     
117     public void updateGroups() {
118         
119         if (getSubDataset() == null) {
120             return;
121         }
122         
123         int[] selectedRows = jTableGroups.getSelectedRows();
124         List selectedObjects = new ArrayList();
125         for (int i=0; i<selectedRows.length; ++i)
126         {
127             selectedObjects.add( jTableGroups.getValueAt(selectedRows[i],0) );
128         }
129         
130         DefaultTableModel dtm = (DefaultTableModel)jTableGroups.getModel();
131         dtm.setRowCount(0);
132         
133         int k=0;
134         for (Iterator i = getSubDataset().getGroups().iterator(); i.hasNext(); ) {
135             it.businesslogic.ireport.Group group = (it.businesslogic.ireport.Group) i.next();
136             Vector row = new Vector();
137             row.addElement( group );
138             
139             dtm.addRow(row);
140             if (selectedObjects.contains(group))
141             {
142                 jTableGroups.getSelectionModel().addSelectionInterval(k,k);
143             }
144             k++;
145         }
146     }
147     
148     /** This method is called from within the constructor to
149      * initialize the form.
150      * WARNING: Do NOT modify this code. The content of this method is
151      * always regenerated by the Form Editor.
152      */

153     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
154
private void initComponents() {
155         java.awt.GridBagConstraints JavaDoc gridBagConstraints;
156
157         jPanelFields = new javax.swing.JPanel JavaDoc();
158         jScrollPane3 = new javax.swing.JScrollPane JavaDoc();
159         jTableGroups = new javax.swing.JTable JavaDoc();
160         jPanelButtons = new javax.swing.JPanel JavaDoc();
161         jButtonNewGroup = new javax.swing.JButton JavaDoc();
162         jButtonModifyGroup = new javax.swing.JButton JavaDoc();
163         jButtonMoveUpGroup = new javax.swing.JButton JavaDoc();
164         jButtonMoveDownGroup = new javax.swing.JButton JavaDoc();
165         jButtonDeleteGroup = new javax.swing.JButton JavaDoc();
166
167         addWindowListener(new java.awt.event.WindowAdapter JavaDoc() {
168             public void windowClosing(java.awt.event.WindowEvent JavaDoc evt) {
169                 closeDialog(evt);
170             }
171         });
172
173         jPanelFields.setLayout(new java.awt.BorderLayout JavaDoc());
174
175         jScrollPane3.setBackground(new java.awt.Color JavaDoc(255, 255, 255));
176         jTableGroups.setModel(new javax.swing.table.DefaultTableModel JavaDoc(
177             new Object JavaDoc [][] {
178
179             },
180             new String JavaDoc [] {
181                 "Group name"
182             }
183         ) {
184             boolean[] canEdit = new boolean [] {
185                 false
186             };
187
188             public boolean isCellEditable(int rowIndex, int columnIndex) {
189                 return canEdit [columnIndex];
190             }
191         });
192         jTableGroups.addMouseListener(new java.awt.event.MouseAdapter JavaDoc() {
193             public void mouseClicked(java.awt.event.MouseEvent JavaDoc evt) {
194                 jTableGroupsMouseClicked(evt);
195             }
196         });
197
198         jScrollPane3.setViewportView(jTableGroups);
199
200         jPanelFields.add(jScrollPane3, java.awt.BorderLayout.CENTER);
201
202         jPanelButtons.setLayout(new java.awt.GridBagLayout JavaDoc());
203
204         jPanelButtons.setPreferredSize(new java.awt.Dimension JavaDoc(100, 10));
205         jPanelButtons.setMinimumSize(new java.awt.Dimension JavaDoc(100, 10));
206         jButtonNewGroup.setText("New");
207         jButtonNewGroup.addActionListener(new java.awt.event.ActionListener JavaDoc() {
208             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
209                 jButtonNewGroupActionPerformed(evt);
210             }
211         });
212
213         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
214         gridBagConstraints.gridx = 0;
215         gridBagConstraints.gridy = 0;
216         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
217         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
218         gridBagConstraints.insets = new java.awt.Insets JavaDoc(3, 3, 5, 3);
219         jPanelButtons.add(jButtonNewGroup, gridBagConstraints);
220
221         jButtonModifyGroup.setText("Modify");
222         jButtonModifyGroup.setEnabled(false);
223         jButtonModifyGroup.addActionListener(new java.awt.event.ActionListener JavaDoc() {
224             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
225                 jButtonModifyGroupActionPerformed(evt);
226             }
227         });
228
229         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
230         gridBagConstraints.gridx = 0;
231         gridBagConstraints.gridy = 1;
232         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
233         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
234         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 3, 5, 3);
235         jPanelButtons.add(jButtonModifyGroup, gridBagConstraints);
236
237         jButtonMoveUpGroup.setText("Move Up");
238         jButtonMoveUpGroup.setEnabled(false);
239         jButtonMoveUpGroup.addActionListener(new java.awt.event.ActionListener JavaDoc() {
240             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
241                 jButtonMoveUpGroupActionPerformed(evt);
242             }
243         });
244
245         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
246         gridBagConstraints.gridx = 0;
247         gridBagConstraints.gridy = 2;
248         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
249         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
250         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 3, 5, 3);
251         jPanelButtons.add(jButtonMoveUpGroup, gridBagConstraints);
252
253         jButtonMoveDownGroup.setText("Move Down");
254         jButtonMoveDownGroup.setEnabled(false);
255         jButtonMoveDownGroup.addActionListener(new java.awt.event.ActionListener JavaDoc() {
256             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
257                 jButtonMoveDownGroupActionPerformed(evt);
258             }
259         });
260
261         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
262         gridBagConstraints.gridx = 0;
263         gridBagConstraints.gridy = 3;
264         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
265         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
266         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 3, 5, 3);
267         jPanelButtons.add(jButtonMoveDownGroup, gridBagConstraints);
268
269         jButtonDeleteGroup.setText("Delete");
270         jButtonDeleteGroup.setEnabled(false);
271         jButtonDeleteGroup.addActionListener(new java.awt.event.ActionListener JavaDoc() {
272             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
273                 jButtonDeleteGroupActionPerformed(evt);
274             }
275         });
276
277         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
278         gridBagConstraints.gridx = 0;
279         gridBagConstraints.gridy = 4;
280         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
281         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
282         gridBagConstraints.weightx = 1.0;
283         gridBagConstraints.weighty = 1.0;
284         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 3, 5, 3);
285         jPanelButtons.add(jButtonDeleteGroup, gridBagConstraints);
286
287         jPanelFields.add(jPanelButtons, java.awt.BorderLayout.EAST);
288
289         getContentPane().add(jPanelFields, java.awt.BorderLayout.CENTER);
290
291         pack();
292     }// </editor-fold>//GEN-END:initComponents
293

294     private void jTableGroupsMouseClicked(java.awt.event.MouseEvent JavaDoc evt) {//GEN-FIRST:event_jTableGroupsMouseClicked
295

296         if (evt.getClickCount() == 2 && evt.getButton() == evt.BUTTON1)
297         {
298             jButtonModifyGroupActionPerformed(null);
299         }
300         
301     }//GEN-LAST:event_jTableGroupsMouseClicked
302

303     private void jButtonMoveDownGroupActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonMoveDownGroupActionPerformed
304
if ( jTableGroups.getSelectedRows().length == 1 ) {
305             int[] rows= jTableGroups.getSelectedRows();
306             Group grp = (Group) jTableGroups.getValueAt( rows[0], 0) ;
307             
308             // Now move the groups within the group array
309
int groupPos = getSubDataset().getGroups().indexOf( grp );
310             // groupTwo is always after grpOne
311
if (groupPos < getSubDataset().getGroups().size()-1)
312             {
313                 getSubDataset().getGroups().remove(groupPos);
314                 getSubDataset().getGroups().insertElementAt( grp, groupPos + 1);
315                 updateGroups();
316                 jTableGroupsListSelectionValueChanged(null);
317             }
318             
319             //((MainFrame)this.getParent()).reportBandChanged( new ReportBandChangedEvent(this.getJReportFrame(), null, ReportBandChangedEvent.CHANGED ));
320
}
321     }//GEN-LAST:event_jButtonMoveDownGroupActionPerformed
322

323     private void jButtonMoveUpGroupActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonMoveUpGroupActionPerformed
324

325         if ( jTableGroups.getSelectedRows().length == 1 ) {
326             int[] rows= jTableGroups.getSelectedRows();
327             Group grp = (Group) jTableGroups.getValueAt( rows[0], 0) ;
328             // Now move the groups within the group array
329
int groupPos = getSubDataset().getGroups().indexOf( grp );
330             // groupTwo is always after grpOne
331
if (groupPos > 0)
332             {
333                 getSubDataset().getGroups().remove(groupPos);
334                 getSubDataset().getGroups().insertElementAt( grp, groupPos - 1);
335                 updateGroups();
336                 jTableGroupsListSelectionValueChanged(null);
337             }
338             
339             // ((MainFrame)this.getParent()).reportBandChanged( new ReportBandChangedEvent(this.getJReportFrame(), null, ReportBandChangedEvent.CHANGED ));
340
}
341         
342     }//GEN-LAST:event_jButtonMoveUpGroupActionPerformed
343

344     private void jButtonDeleteGroupActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonDeleteGroupActionPerformed
345
// jTableGroups.getSelectedRows(); disabled by Robert, July 31, 2004
346

347         int[] rows= jTableGroups.getSelectedRows();
348         for (int i=rows.length-1; i>=0; --i) {
349             
350             getSubDataset().getGroups().remove( jTableGroups.getValueAt( rows[i], 0));
351         }
352         updateGroups();
353         //((MainFrame)this.getParent()).reportBandChanged( new ReportBandChangedEvent(this.getJReportFrame(), null, ReportBandChangedEvent.REMOVED ));
354
}//GEN-LAST:event_jButtonDeleteGroupActionPerformed
355

356     private void jButtonModifyGroupActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonModifyGroupActionPerformed
357
it.businesslogic.ireport.Group group = (it.businesslogic.ireport.Group)jTableGroups.getValueAt( jTableGroups.getSelectedRow(), 0);
358         
359         GroupDialog jrpd = new GroupDialog(this, true);
360         jrpd.setGroup( group );
361         jrpd.setSubDataset( getSubDataset());
362         jrpd.setVisible(true);
363         
364         if (jrpd.getDialogResult() == javax.swing.JOptionPane.OK_OPTION) {
365             
366             String JavaDoc oldName = group.getName();
367             
368             group.setName( jrpd.getGroupName() );
369             group.setGroupExpression( jrpd.getExpression());
370             //group.setIsReprintHeaderOnEachPage(jrpd.isPrintHeaderEachPage() );
371
//group.setIsResetPageNumber( jrpd.isResetPageNumber() );
372
//group.setIsStartNewColumn( jrpd.isStartNewColumn());
373
//group.setIsStartNewPage( jrpd.isStartNewPage());
374
//group.setMinHeightToStartNewPage( jrpd.getMinHeightStartNewPage() );
375

376             //group.getGroupHeader().setName( group.getName()+"Header");
377
//group.getGroupFooter().setName( group.getName()+"Footer");
378
//group.getGroupHeader().setHeight( jrpd.getHeaderBandHeight());
379
//group.getGroupFooter().setHeight( jrpd.getFooterBandHeight());
380

381             for (int k=getSubDataset().getVariables().size()-1; k>=0; --k)
382             {
383                 JRVariable var = (JRVariable)getSubDataset().getVariables().elementAt(k);
384                 if (var.isBuiltin() && var.getName().equalsIgnoreCase(oldName+"_COUNT"))
385                 {
386                     getSubDataset().removeVariable(var);
387                     break;
388                 }
389             }
390             getSubDataset().addVariable(new it.businesslogic.ireport.JRVariable(group.getName()+"_COUNT","java.lang.Integer", true));
391             
392             
393             // Update All variables...
394
Enumeration e = getSubDataset().getVariables().elements();
395             while (e.hasMoreElements()) {
396                 JRVariable var = (JRVariable)e.nextElement();
397                 if (var.getResetGroup() != null &&
398                 var.getResetGroup().equals(oldName)) {
399                     var.setResetGroup( group.getName() );
400                 }
401             }
402             
403             jTableGroups.setValueAt( group, jTableGroups.getSelectedRow(), 0);
404             //this.updateGroups();
405
//((MainFrame)this.getParent()).reportBandChanged( new ReportBandChangedEvent(this.getJReportFrame(), null, ReportBandChangedEvent.CHANGED ));
406
}
407         
408     }//GEN-LAST:event_jButtonModifyGroupActionPerformed
409

410     private void jButtonNewGroupActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonNewGroupActionPerformed
411
GroupDialog jrpd = new GroupDialog(this, true);
412         jrpd.setSubDataset( getSubDataset());
413         jrpd.setVisible(true);
414         
415         if (jrpd.getDialogResult() == javax.swing.JOptionPane.OK_OPTION) {
416             Group g = new it.businesslogic.ireport.Group(getSubDataset(), jrpd.getGroupName());
417             g.setGroupExpression( jrpd.getExpression());
418             //g.setIsReprintHeaderOnEachPage(jrpd.isPrintHeaderEachPage() );
419
//g.setIsResetPageNumber( jrpd.isResetPageNumber() );
420
//g.setIsStartNewColumn( jrpd.isStartNewColumn());
421
//g.setIsStartNewPage( jrpd.isStartNewPage());
422
//g.setMinHeightToStartNewPage( jrpd.getMinHeightStartNewPage() );
423

424             //g.getGroupHeader().setHeight( jrpd.getHeaderBandHeight());
425
//g.getGroupFooter().setHeight( jrpd.getFooterBandHeight());
426

427             getSubDataset().getGroups().add(g);
428             this.updateGroups();
429             
430             // refersh bands frame....
431
//((MainFrame)this.getParent()).reportBandChanged( new ReportBandChangedEvent(this.getJReportFrame(), null, ReportBandChangedEvent.ADDED ));
432
}
433     }//GEN-LAST:event_jButtonNewGroupActionPerformed
434

435     /** Closes the dialog */
436     private void closeDialog(java.awt.event.WindowEvent JavaDoc evt) {//GEN-FIRST:event_closeDialog
437
setVisible(false);
438         dispose();
439     }//GEN-LAST:event_closeDialog
440

441     /** Setter for property jReportFrame.
442      * @param jReportFrame New value of property jReportFrame.
443      *
444      */

445     public void setSubDataset(it.businesslogic.ireport.SubDataset subDataset) {
446         this.subDataset = subDataset;
447         if (subDataset == null) return;
448         this.setTitle(subDataset.getName()+" groups...");
449         updateGroups();
450     }
451     
452     public SubDataset getSubDataset() {
453         return subDataset;
454     }
455
456     public void applyI18n(){
457                 // Start autogenerated code ----------------------
458
jButtonDeleteGroup.setText(I18n.getString("groupsDialog.buttonDeleteGroup","Delete"));
459                 jButtonModifyGroup.setText(I18n.getString("groupsDialog.buttonModifyGroup","Modify"));
460                 jButtonMoveDownGroup.setText(I18n.getString("groupsDialog.buttonMoveDownGroup","Move Down"));
461                 jButtonMoveUpGroup.setText(I18n.getString("groupsDialog.buttonMoveUpGroup","Move Up"));
462                 jButtonNewGroup.setText(I18n.getString("groupsDialog.buttonNewGroup","New"));
463                 // End autogenerated code ----------------------
464
jTableGroups.getColumnModel().getColumn(0).setHeaderValue( I18n.getString("groupsDialog.tablecolumn.groupName","Group name") );
465                 
466     }
467 }
468
Popular Tags