KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > it > businesslogic > ireport > crosstab > gui > CrosstabMeasuresView


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  * CrosstabMeasuresView.java
28  *
29  * Created on January 24, 2006, 10:42 AM
30  *
31  */

32
33 package it.businesslogic.ireport.crosstab.gui;
34
35 import it.businesslogic.ireport.CrosstabReportElement;
36 import it.businesslogic.ireport.crosstab.CrosstabColumnGroup;
37 import it.businesslogic.ireport.crosstab.CrosstabGroup;
38 import it.businesslogic.ireport.crosstab.CrosstabParameter;
39 import it.businesslogic.ireport.crosstab.CrosstabRowGroup;
40 import it.businesslogic.ireport.crosstab.GroupTotal;
41 import it.businesslogic.ireport.crosstab.Measure;
42 import it.businesslogic.ireport.gui.MainFrame;
43 import it.businesslogic.ireport.gui.docking.GenericDragTargetListener;
44 import it.businesslogic.ireport.gui.event.CrosstabLayoutChangedEvent;
45 import it.businesslogic.ireport.gui.library.LibraryTreeCellRenderer;
46 import it.businesslogic.ireport.gui.library.TreeTransfertHandler;
47 import java.awt.dnd.DropTarget JavaDoc;
48 import javax.swing.tree.DefaultMutableTreeNode JavaDoc;
49 import javax.swing.tree.DefaultTreeModel JavaDoc;
50 import javax.swing.tree.TreePath JavaDoc;
51 import it.businesslogic.ireport.util.I18n;
52
53 /**
54  *
55  * @author gtoffoli
56  */

57 public class CrosstabMeasuresView extends javax.swing.JPanel JavaDoc implements it.businesslogic.ireport.gui.event.CrosstabLayoutChangedListener {
58     
59     
60     private CrosstabReportElement crosstabReportElement = null;
61     
62     
63     /** Creates new form CrosstabMeasuresView */
64     public CrosstabMeasuresView() {
65         initComponents();
66         
67         DefaultMutableTreeNode JavaDoc root = new DefaultMutableTreeNode JavaDoc("measures");
68         
69         DefaultTreeModel JavaDoc dtm = new DefaultTreeModel JavaDoc(root);
70         
71         jTree.setModel( dtm );
72         jTree.setDragEnabled(true);
73         jTree.setRootVisible( false );
74         jTree.setTransferHandler(new TreeTransfertHandler());
75         jTree.setCellRenderer( new LibraryTreeCellRenderer() );
76         jTree.expandPath( new TreePath JavaDoc(root));
77         
78         jTree.setDropTarget(new DropTarget JavaDoc(this, new GenericDragTargetListener()));
79         
80     }
81
82     public CrosstabReportElement getCrosstabReportElement() {
83         return crosstabReportElement;
84     }
85
86     public void setCrosstabReportElement(CrosstabReportElement crosstabReportElement) {
87         
88         // Stop to listen to the old crosstab (if not null)
89
if (this.crosstabReportElement != null && this.crosstabReportElement != crosstabReportElement)
90         {
91             this.crosstabReportElement.removeCrosstabLayoutChangedListener( this );
92         }
93         
94         // Start to listen to the new crosstab (if not null)
95
if (crosstabReportElement != null && this.crosstabReportElement != crosstabReportElement)
96         {
97             crosstabReportElement.addCrosstabLayoutChangedListener( this );
98         }
99         
100         this.crosstabReportElement = crosstabReportElement;
101         
102         DefaultMutableTreeNode JavaDoc root = (DefaultMutableTreeNode JavaDoc)jTree.getModel().getRoot();
103         root.removeAllChildren();
104         
105         if (crosstabReportElement != null)
106             {
107             
108             
109             for (int i=0; i<crosstabReportElement.getRowGroups().size(); ++i)
110             {
111                 CrosstabGroup group = (CrosstabGroup)crosstabReportElement.getRowGroups().elementAt(i);
112                 root.add(new DefaultMutableTreeNode JavaDoc( group ));
113             }
114             
115             for (int i=0; i<crosstabReportElement.getColumnGroups().size(); ++i)
116             {
117                 CrosstabGroup group = (CrosstabGroup)crosstabReportElement.getColumnGroups().elementAt(i);
118                 root.add(new DefaultMutableTreeNode JavaDoc( group ));
119             }
120             
121             for (int i=0; i<crosstabReportElement.getMeasures().size(); ++i)
122             {
123                 Measure measure = (Measure)crosstabReportElement.getMeasures().elementAt(i);
124                 root.add(new DefaultMutableTreeNode JavaDoc( measure ));
125                 for (int j=0; j<crosstabReportElement.getRowGroups().size(); ++j)
126                 {
127                     CrosstabGroup group = (CrosstabGroup)crosstabReportElement.getRowGroups().elementAt(j);
128                     root.add(new DefaultMutableTreeNode JavaDoc( new GroupTotal(measure.getName(), group.getName(), measure.getClassType())));
129                 }
130                 for (int j=0; j<crosstabReportElement.getColumnGroups().size(); ++j)
131                 {
132                     CrosstabGroup group = (CrosstabGroup)crosstabReportElement.getColumnGroups().elementAt(j);
133                     root.add(new DefaultMutableTreeNode JavaDoc( new GroupTotal(measure.getName(), group.getName(), measure.getClassType())));
134                 }
135             }
136             
137             for (int i=0; i<crosstabReportElement.getCrosstabParameters().size(); ++i)
138             {
139                 CrosstabParameter parameter = (CrosstabParameter)crosstabReportElement.getCrosstabParameters().elementAt(i);
140                 root.add(new DefaultMutableTreeNode JavaDoc( parameter ));
141             }
142             
143         }
144         
145         jTree.expandPath( new TreePath JavaDoc(root));
146         jTree.updateUI();
147     }
148     
149     /** This method is called from within the constructor to
150      * initialize the form.
151      * WARNING: Do NOT modify this code. The content of this method is
152      * always regenerated by the Form Editor.
153      */

154     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
155
private void initComponents() {
156         jPopupMenuMeasures = new javax.swing.JPopupMenu JavaDoc();
157         jMenuItemEditMeasure = new javax.swing.JMenuItem JavaDoc();
158         jSeparator4 = new javax.swing.JSeparator JavaDoc();
159         jMenuItemNewMeasure = new javax.swing.JMenuItem JavaDoc();
160         jSeparator3 = new javax.swing.JSeparator JavaDoc();
161         jMenuItemCrosstabProperties = new javax.swing.JMenuItem JavaDoc();
162         jSeparator1 = new javax.swing.JSeparator JavaDoc();
163         jMenuItemCut = new javax.swing.JMenuItem JavaDoc();
164         jMenuItemCopy = new javax.swing.JMenuItem JavaDoc();
165         jMenuItemPaste = new javax.swing.JMenuItem JavaDoc();
166         jMenuItemDelete = new javax.swing.JMenuItem JavaDoc();
167         jSeparator2 = new javax.swing.JSeparator JavaDoc();
168         jMenuItemRefresh = new javax.swing.JMenuItem JavaDoc();
169         jScrollPane1 = new javax.swing.JScrollPane JavaDoc();
170         jTree = new javax.swing.JTree JavaDoc();
171
172         jPopupMenuMeasures.addPopupMenuListener(new javax.swing.event.PopupMenuListener JavaDoc() {
173             public void popupMenuCanceled(javax.swing.event.PopupMenuEvent JavaDoc evt) {
174             }
175             public void popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent JavaDoc evt) {
176             }
177             public void popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent JavaDoc evt) {
178                 jPopupMenuMeasuresPopupMenuWillBecomeVisible(evt);
179             }
180         });
181
182         jMenuItemEditMeasure.setIcon(new javax.swing.ImageIcon JavaDoc(""));
183         jMenuItemEditMeasure.setText("Edit");
184         jMenuItemEditMeasure.setActionCommand("Modify measure");
185         jMenuItemEditMeasure.setEnabled(false);
186         jMenuItemEditMeasure.addActionListener(new java.awt.event.ActionListener JavaDoc() {
187             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
188                 jMenuItemEditMeasureActionPerformed(evt);
189             }
190         });
191
192         jPopupMenuMeasures.add(jMenuItemEditMeasure);
193
194         jPopupMenuMeasures.add(jSeparator4);
195
196         jMenuItemNewMeasure.setIcon(new javax.swing.ImageIcon JavaDoc(""));
197         jMenuItemNewMeasure.setText("New measure");
198         jMenuItemNewMeasure.addActionListener(new java.awt.event.ActionListener JavaDoc() {
199             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
200                 jMenuItemNewMeasureActionPerformed(evt);
201             }
202         });
203
204         jPopupMenuMeasures.add(jMenuItemNewMeasure);
205
206         jPopupMenuMeasures.add(jSeparator3);
207
208         jMenuItemCrosstabProperties.setIcon(new javax.swing.ImageIcon JavaDoc(""));
209         jMenuItemCrosstabProperties.setText("Crosstab properties");
210         jMenuItemCrosstabProperties.addActionListener(new java.awt.event.ActionListener JavaDoc() {
211             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
212                 jMenuItemEditActionPerformed1(evt);
213             }
214         });
215
216         jPopupMenuMeasures.add(jMenuItemCrosstabProperties);
217
218         jPopupMenuMeasures.add(jSeparator1);
219
220         jMenuItemCut.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/cut.png")));
221         jMenuItemCut.setText("Cut");
222         jMenuItemCut.setEnabled(false);
223         jMenuItemCut.addActionListener(new java.awt.event.ActionListener JavaDoc() {
224             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
225                 jMenuItemCutActionPerformed(evt);
226             }
227         });
228
229         jPopupMenuMeasures.add(jMenuItemCut);
230
231         jMenuItemCopy.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/copy.png")));
232         jMenuItemCopy.setText("Copy");
233         jMenuItemCopy.setEnabled(false);
234         jMenuItemCopy.addActionListener(new java.awt.event.ActionListener JavaDoc() {
235             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
236                 jMenuItemCopyActionPerformed(evt);
237             }
238         });
239
240         jPopupMenuMeasures.add(jMenuItemCopy);
241
242         jMenuItemPaste.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/paste.png")));
243         jMenuItemPaste.setText("Paste");
244         jMenuItemPaste.setEnabled(false);
245         jMenuItemPaste.addActionListener(new java.awt.event.ActionListener JavaDoc() {
246             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
247                 jMenuItemPasteActionPerformed(evt);
248             }
249         });
250
251         jPopupMenuMeasures.add(jMenuItemPaste);
252
253         jMenuItemDelete.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/delete.png")));
254         jMenuItemDelete.setText("Delete");
255         jMenuItemDelete.setEnabled(false);
256         jMenuItemDelete.addActionListener(new java.awt.event.ActionListener JavaDoc() {
257             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
258                 jMenuItemDeleteActionPerformed(evt);
259             }
260         });
261
262         jPopupMenuMeasures.add(jMenuItemDelete);
263
264         jPopupMenuMeasures.add(jSeparator2);
265
266         jMenuItemRefresh.setText("Refresh");
267         jMenuItemRefresh.addActionListener(new java.awt.event.ActionListener JavaDoc() {
268             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
269                 jMenuItemRefreshActionPerformed(evt);
270             }
271         });
272
273         jPopupMenuMeasures.add(jMenuItemRefresh);
274
275         setLayout(new java.awt.BorderLayout JavaDoc());
276
277         jTree.addMouseListener(new java.awt.event.MouseAdapter JavaDoc() {
278             public void mouseClicked(java.awt.event.MouseEvent JavaDoc evt) {
279                 jTreeMouseClicked(evt);
280             }
281         });
282
283         jScrollPane1.setViewportView(jTree);
284
285         add(jScrollPane1, java.awt.BorderLayout.CENTER);
286
287     }// </editor-fold>//GEN-END:initComponents
288

289     private void jTreeMouseClicked(java.awt.event.MouseEvent JavaDoc evt) {//GEN-FIRST:event_jTreeMouseClicked
290

291         if (evt.getClickCount() == 1 && evt.getButton() == evt.BUTTON3)
292         {
293             jPopupMenuMeasures.show(jTree, evt.getX(), evt.getY());
294         }
295         else if (evt.getClickCount() == 2 && evt.getButton() == evt.BUTTON1)
296         {
297             jMenuItemEditMeasureActionPerformed(null);
298         }
299     }//GEN-LAST:event_jTreeMouseClicked
300

301     private void jMenuItemEditActionPerformed1(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemEditActionPerformed1
302
it.businesslogic.ireport.crosstab.gui.CrosstabPropertiesDialog cpd = new it.businesslogic.ireport.crosstab.gui.CrosstabPropertiesDialog(MainFrame.getMainInstance(),true);
303         cpd.setCurrentCrosstabReportElement( getCrosstabReportElement());
304         cpd.setVisible(true);
305     }//GEN-LAST:event_jMenuItemEditActionPerformed1
306

307     private void jPopupMenuMeasuresPopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent JavaDoc evt) {//GEN-FIRST:event_jPopupMenuMeasuresPopupMenuWillBecomeVisible
308

309         jMenuItemNewMeasure.setEnabled( true );
310         jMenuItemRefresh.setEnabled( true );
311         
312         // Edit is able only if a single valid object is selected...
313
TreePath JavaDoc[] paths = jTree.getSelectionPaths();
314         
315         if (paths == null || paths.length == 0) {
316             jMenuItemCut.setEnabled(false);
317             jMenuItemCopy.setEnabled(false);
318             jMenuItemDelete.setEnabled(false);
319             jMenuItemPaste.setEnabled(false);
320             jMenuItemEditMeasure.setEnabled(false);
321             return;
322         }
323         
324         if (paths.length == 1 &&
325                 paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode JavaDoc &&
326                 ( (((DefaultMutableTreeNode JavaDoc)paths[0].getLastPathComponent()).getUserObject() instanceof Measure )) ||
327                 ( (((DefaultMutableTreeNode JavaDoc)paths[0].getLastPathComponent()).getUserObject() instanceof CrosstabGroup ))) {
328             jMenuItemEditMeasure.setEnabled(true);
329             jMenuItemCut.setEnabled(true);
330             jMenuItemCopy.setEnabled(true);
331             jMenuItemDelete.setEnabled(true);
332         } else {
333             jMenuItemEditMeasure.setEnabled( false );
334             jMenuItemCut.setEnabled(false);
335             jMenuItemCopy.setEnabled(false);
336             jMenuItemDelete.setEnabled(false);
337         }
338         
339         jMenuItemPaste.setEnabled(false);
340
341         if (MainFrame.getMainInstance().getMeasuresClipBoard().size() > 0)
342         {
343             jMenuItemPaste.setEnabled(true);
344         }
345         
346     }//GEN-LAST:event_jPopupMenuMeasuresPopupMenuWillBecomeVisible
347

348     private void jMenuItemRefreshActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemRefreshActionPerformed
349
this.setCrosstabReportElement(this.crosstabReportElement);
350     }//GEN-LAST:event_jMenuItemRefreshActionPerformed
351

352     private void jMenuItemDeleteActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemDeleteActionPerformed
353
TreePath JavaDoc[] paths = jTree.getSelectionPaths();
354                 
355         for (int i=0; i<paths.length; ++i)
356         {
357             try {
358                 if (paths[i].getLastPathComponent() instanceof DefaultMutableTreeNode JavaDoc) {
359                     Object JavaDoc obj = ((DefaultMutableTreeNode JavaDoc)paths[i].getLastPathComponent()).getUserObject();
360                     if (obj instanceof Measure ) {
361                         if (getCrosstabReportElement().getMeasures().size() > 0)
362                         {
363                             getCrosstabReportElement().removeMeasure((Measure)obj);
364                         }
365                     }
366                 }
367             } catch (Exception JavaDoc ex) {
368                 ex.printStackTrace();
369             }
370         }
371     }//GEN-LAST:event_jMenuItemDeleteActionPerformed
372

373     private void jMenuItemPasteActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemPasteActionPerformed
374
TreePath JavaDoc[] paths = jTree.getSelectionPaths();
375         
376         if (paths.length == 1) {
377             if (paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode JavaDoc) {
378                 
379                 for (int i=0; i< MainFrame.getMainInstance().getMeasuresClipBoard().size(); ++i)
380                 {
381                     Measure measure = (Measure)MainFrame.getMainInstance().getMeasuresClipBoard().elementAt(i);
382                     measure = measure.cloneMe();
383                     
384                     // ---------------
385
String JavaDoc base_name = measure.getName();
386                     java.util.Vector JavaDoc measures = getCrosstabReportElement().getMeasures();
387
388                     for (int j = 0;; ++j)
389                     {
390
391                         boolean found = false;
392
393                         for (int k = 0; k < measures.size(); ++k)
394                         {
395
396                             Measure measure1 = (Measure) measures.elementAt(
397                                                              k);
398
399                             if (j == 0)
400                             {
401
402                                 if (measure1.getName().equals(base_name))
403                                 {
404                                     found = true;
405
406                                     break;
407                                 }
408                             }
409                             else
410                             {
411
412                                 if (measure1.getName().equals(base_name + "_" + j))
413                                 {
414                                     found = true;
415
416                                     break;
417                                 }
418                             }
419                         }
420
421                         if (!found)
422                         {
423                             measure.setName(base_name +
424                                               ((j == 0)
425                                                    ? ""
426                                                    : "_" + j));
427
428                             break;
429                         }
430                     }
431                     //----------------------
432

433                     getCrosstabReportElement().addMeasure(measure);
434                 }
435             }
436         }
437     }//GEN-LAST:event_jMenuItemPasteActionPerformed
438

439     private void jMenuItemCopyActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemCopyActionPerformed
440
TreePath JavaDoc[] paths = jTree.getSelectionPaths();
441         
442         boolean clearedMeasuresClipboard = false;
443         
444         for (int i=0; i<paths.length; ++i) {
445            
446             if (paths[i].getLastPathComponent() instanceof DefaultMutableTreeNode JavaDoc) {
447                 Object JavaDoc obj = ((DefaultMutableTreeNode JavaDoc)paths[i].getLastPathComponent()).getUserObject();
448  
449                 if (obj instanceof Measure ) {
450                     if (!clearedMeasuresClipboard) {
451                         clearedMeasuresClipboard = true;
452                         MainFrame.getMainInstance().getMeasuresClipBoard().removeAllElements();
453                     }
454                     MainFrame.getMainInstance().getMeasuresClipBoard().add( ((Measure)obj).cloneMe() );
455                 }
456             }
457         }
458     }//GEN-LAST:event_jMenuItemCopyActionPerformed
459

460     private void jMenuItemCutActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemCutActionPerformed
461
TreePath JavaDoc[] paths = jTree.getSelectionPaths();
462         
463         boolean clearedMeasuresClipboard = false;
464         
465         for (int i=0; i<paths.length; ++i) {
466
467             if (paths[i].getLastPathComponent() instanceof DefaultMutableTreeNode JavaDoc) {
468                 Object JavaDoc obj = ((DefaultMutableTreeNode JavaDoc)paths[i].getLastPathComponent()).getUserObject();
469                 if (obj instanceof Measure ) {
470                     if (!clearedMeasuresClipboard) {
471                         clearedMeasuresClipboard = true;
472                         MainFrame.getMainInstance().getMeasuresClipBoard().removeAllElements();
473                     }
474                     MainFrame.getMainInstance().getMeasuresClipBoard().add( ((Measure)obj).cloneMe() );
475                     getCrosstabReportElement().removeMeasure((Measure)obj);
476                 }
477             }
478         }
479     }//GEN-LAST:event_jMenuItemCutActionPerformed
480

481     private void jMenuItemNewMeasureActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemNewMeasureActionPerformed
482

483         MeasureDialog jrpd = new MeasureDialog(null,MainFrame.getMainInstance(), true);
484         jrpd.setExpressionContext( ((this.getCrosstabReportElement().isUseDataset() && this.getCrosstabReportElement().getDataset() != null) ? this.getCrosstabReportElement().getDataset().getSubDataset() : null));
485         jrpd.setVisible(true);
486         
487         if (jrpd.getDialogResult() == javax.swing.JOptionPane.OK_OPTION) {
488             Measure measure = jrpd.getMeasure();
489             getCrosstabReportElement().addMeasure( measure );
490         }
491         
492     }//GEN-LAST:event_jMenuItemNewMeasureActionPerformed
493

494     private void jMenuItemEditMeasureActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemEditMeasureActionPerformed
495
// We have to see what type of item we have selected...
496
TreePath JavaDoc[] paths = jTree.getSelectionPaths();
497         
498         if (paths == null || paths.length == 0) {
499             return;
500         }
501         
502         if (paths.length == 1 && paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode JavaDoc) {
503             Object JavaDoc obj = ((DefaultMutableTreeNode JavaDoc)paths[0].getLastPathComponent()).getUserObject();
504             if (obj instanceof Measure)
505             {
506                 MeasureDialog jrpd = new MeasureDialog(null,MainFrame.getMainInstance(), true);
507                 jrpd.setExpressionContext( ((this.getCrosstabReportElement().isUseDataset() && this.getCrosstabReportElement().getDataset() != null) ? this.getCrosstabReportElement().getDataset().getSubDataset() : null));
508                 jrpd.setMeasure((Measure)obj );
509                 jrpd.setVisible(true);
510
511                 if (jrpd.getDialogResult() == javax.swing.JOptionPane.OK_OPTION) {
512                     Measure measure = (Measure)obj;
513                     measure.setName( jrpd.getMeasure().getName() );
514                     measure.setExpression( jrpd.getMeasure().getExpression());
515                     measure.setClassType( jrpd.getMeasure().getClassType());
516                     measure.setCalculation( jrpd.getMeasure().getCalculation());
517                     measure.setIncrementerFactoryClass( jrpd.getMeasure().getIncrementerFactoryClass());
518                     measure.setPercentageCalculatorClass( jrpd.getMeasure().getPercentageCalculatorClass());
519                     measure.setPercentageOf( jrpd.getMeasure().getPercentageOf());
520                     getCrosstabReportElement().measureModified( measure );
521                     setCrosstabReportElement(this.crosstabReportElement);
522                 }
523             }
524             else if (obj instanceof CrosstabGroup)
525             {
526                 CrosstabGroup rg = (CrosstabGroup)obj;
527                 CrosstabGroupDialog jrpd = new CrosstabGroupDialog(
528                         (rg instanceof CrosstabColumnGroup) ? CrosstabGroupDialog.COLUMNGROUP : CrosstabGroupDialog.ROWGROUP, MainFrame.getMainInstance(), true);
529                 jrpd.setExpressionContext( ((this.getCrosstabReportElement().isUseDataset() && this.getCrosstabReportElement().getDataset() != null) ? this.getCrosstabReportElement().getDataset().getSubDataset() : null));
530                 jrpd.setGroup( rg );
531                 jrpd.setVisible(true);
532         
533                 if (jrpd.getDialogResult() == javax.swing.JOptionPane.OK_OPTION) {
534
535                     CrosstabGroup group = jrpd.getGroup();
536                     String JavaDoc oldName = rg.getName();
537                     rg.setName( group.getName() );
538                     rg.setBucketComparatorExpression( group.getBucketComparatorExpression() );
539                     rg.setBucketExpression( group.getBucketExpression() );
540                     rg.setBucketExpressionClass( group.getBucketExpressionClass() );
541                     rg.setBucketOrder( group.getBucketOrder() );
542                     rg.setHeaderPosition( group.getHeaderPosition() );
543                     rg.setTotalPosition( group.getTotalPosition() );
544                     rg.setName( group.getName() );
545                     rg.setSize( group.getSize() );
546                     rg.setHasHeader( group.isHasHeader() );
547                     rg.setHasTotal( group.isHasTotal() );
548                     if (rg instanceof CrosstabColumnGroup) getCrosstabReportElement().modifyGroup(oldName, (CrosstabColumnGroup)rg);
549                     if (rg instanceof CrosstabRowGroup) getCrosstabReportElement().modifyGroup(oldName, (CrosstabRowGroup)rg);
550                 }
551             }
552             
553             /*
554             if (obj instanceof JRField ) { MainFrame.getMainInstance().getValuesDialog().getValuesPanel().modifyField((JRField)obj ); }
555             if (obj instanceof JRParameter ) { MainFrame.getMainInstance().getValuesDialog().getValuesPanel().modifyParameter((JRParameter)obj ); }
556             if (obj instanceof SubDataset ) {
557                 java.awt.Frame parent = Misc.frameFromComponent(this);
558                 SubDatasetDialog cd = new SubDatasetDialog(parent,true);
559                 cd.setSubDataset( (SubDataset)obj );
560                 cd.setVisible(true);
561             }
562             */

563         }
564     }//GEN-LAST:event_jMenuItemEditMeasureActionPerformed
565

566     public void crosstabLayoutChanged(CrosstabLayoutChangedEvent evt) {
567         setCrosstabReportElement(crosstabReportElement);
568     }
569
570     public void crosstabMeasureChanged(CrosstabLayoutChangedEvent evt) {
571         setCrosstabReportElement(crosstabReportElement);
572     }
573     
574     
575     // Variables declaration - do not modify//GEN-BEGIN:variables
576
private javax.swing.JMenuItem JavaDoc jMenuItemCopy;
577     private javax.swing.JMenuItem JavaDoc jMenuItemCrosstabProperties;
578     private javax.swing.JMenuItem JavaDoc jMenuItemCut;
579     private javax.swing.JMenuItem JavaDoc jMenuItemDelete;
580     private javax.swing.JMenuItem JavaDoc jMenuItemEditMeasure;
581     private javax.swing.JMenuItem JavaDoc jMenuItemNewMeasure;
582     private javax.swing.JMenuItem JavaDoc jMenuItemPaste;
583     private javax.swing.JMenuItem JavaDoc jMenuItemRefresh;
584     private javax.swing.JPopupMenu JavaDoc jPopupMenuMeasures;
585     private javax.swing.JScrollPane JavaDoc jScrollPane1;
586     private javax.swing.JSeparator JavaDoc jSeparator1;
587     private javax.swing.JSeparator JavaDoc jSeparator2;
588     private javax.swing.JSeparator JavaDoc jSeparator3;
589     private javax.swing.JSeparator JavaDoc jSeparator4;
590     private javax.swing.JTree JavaDoc jTree;
591     // End of variables declaration//GEN-END:variables
592

593     public void applyI18n(){
594                 // Start autogenerated code ----------------------
595
jMenuItemCopy.setText(I18n.getString("crosstabMeasuresView.menuItemCopy","Copy"));
596                 jMenuItemCrosstabProperties.setText(I18n.getString("crosstabMeasuresView.menuItemCrosstabProperties","Crosstab properties"));
597                 jMenuItemCut.setText(I18n.getString("crosstabMeasuresView.menuItemCut","Cut"));
598                 jMenuItemDelete.setText(I18n.getString("crosstabMeasuresView.menuItemDelete","Delete"));
599                 jMenuItemEditMeasure.setText(I18n.getString("crosstabMeasuresView.menuItemEditMeasure","Edit"));
600                 jMenuItemNewMeasure.setText(I18n.getString("crosstabMeasuresView.menuItemNewMeasure","New measure"));
601                 jMenuItemPaste.setText(I18n.getString("crosstabMeasuresView.menuItemPaste","Paste"));
602                 jMenuItemRefresh.setText(I18n.getString("crosstabMeasuresView.menuItemRefresh","Refresh"));
603                 // End autogenerated code ----------------------
604
}
605 }
606
Popular Tags