KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > it > businesslogic > ireport > gui > library > LibraryPanel


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  * LibraryPanel.java
28  *
29  * Created on 14 settembre 2004, 23.49
30  *
31  */

32
33 package it.businesslogic.ireport.gui.library;
34 import it.businesslogic.ireport.gui.library.objects.*;
35 import it.businesslogic.ireport.gui.*;
36 import it.businesslogic.ireport.*;
37 import it.businesslogic.ireport.gui.docking.GenericDragTargetListener;
38 import it.businesslogic.ireport.gui.subdataset.SubDatasetDialog;
39 import it.businesslogic.ireport.util.Misc;
40 import java.awt.dnd.DropTarget JavaDoc;
41 import javax.swing.*;
42 import javax.swing.tree.*;
43 import java.util.*;
44 import java.awt.event.ActionEvent JavaDoc;
45 import it.businesslogic.ireport.util.I18n;
46
47 /**
48  *
49  * @author Administrator
50  */

51 public class LibraryPanel extends javax.swing.JPanel JavaDoc
52        implements
53             it.businesslogic.ireport.util.LanguageChangedListener,
54             it.businesslogic.ireport.gui.event.SubDatasetObjectChangedListener,
55             it.businesslogic.ireport.gui.event.ReportSubDatasetChangedListener {
56
57     DefaultMutableTreeNode fieldsNode = null;
58     DefaultMutableTreeNode variablesNode = null;
59     DefaultMutableTreeNode parametersNode = null;
60     DefaultMutableTreeNode systemObjectsNode = null;
61
62     JReportFrame jrf;
63
64
65     /** Creates new form LibraryPanel */
66     public LibraryPanel() {
67
68         initComponents();
69
70         jLibraryTree.setCellRenderer( new LibraryTreeCellRenderer());
71         DefaultMutableTreeNode root = new DefaultMutableTreeNode("Libs");
72
73         DefaultTreeModel dtm = new DefaultTreeModel(root);
74
75         jLibraryTree.setModel( dtm );
76         jLibraryTree.setDragEnabled(true);
77         jLibraryTree.setRootVisible( false );
78         jLibraryTree.setTransferHandler(new TreeTransfertHandler());
79
80         jLibraryTree.setDropTarget(new DropTarget JavaDoc(this, new GenericDragTargetListener()));
81
82         jLibraryTree.expandPath( new TreePath(root));
83
84         fieldsNode = new DefaultMutableTreeNode("Fields",true);
85         root.add( fieldsNode );
86
87         variablesNode = new DefaultMutableTreeNode("Variables",true);
88         root.add( variablesNode );
89
90         parametersNode = new DefaultMutableTreeNode("Parameters",true);
91         root.add( parametersNode );
92
93         this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
94          KeyStroke.getKeyStroke("F5"), "refresh");
95          this.getActionMap().put("refresh",
96             new AbstractAction("refresh") {
97               public void actionPerformed(ActionEvent JavaDoc evt) {
98                 setJReportFrame(jrf);
99               }
100         });
101 /*
102         systemObjectsNode = new DefaultMutableTreeNode("Custom",true);
103         root.add( systemObjectsNode );
104 */

105         it.businesslogic.ireport.util.I18n.addOnLanguageChangedListener( this );
106
107         loadSystemObjects();
108         loadCustomObjects();
109
110         updateReportObjects();
111         this.languageChanged(null);
112     }
113
114     /** This method is called from within the constructor to
115      * initialize the form.
116      * WARNING: Do NOT modify this code. The content of this method is
117      * always regenerated by the Form Editor.
118      */

119     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
120
private void initComponents() {
121         jPopupMenuFields = new javax.swing.JPopupMenu JavaDoc();
122         jMenuItemEdit = new javax.swing.JMenuItem JavaDoc();
123         jMenuAdd = new javax.swing.JMenu JavaDoc();
124         jMenuItemNewField = new javax.swing.JMenuItem JavaDoc();
125         jMenuItemNewVariable = new javax.swing.JMenuItem JavaDoc();
126         jMenuItemParameter = new javax.swing.JMenuItem JavaDoc();
127         jSeparator3 = new javax.swing.JSeparator JavaDoc();
128         jMenuItemNewSubDataset = new javax.swing.JMenuItem JavaDoc();
129         jSeparator1 = new javax.swing.JSeparator JavaDoc();
130         jMenuItemCut = new javax.swing.JMenuItem JavaDoc();
131         jMenuItemCopy = new javax.swing.JMenuItem JavaDoc();
132         jMenuItemPaste = new javax.swing.JMenuItem JavaDoc();
133         jMenuItemDelete = new javax.swing.JMenuItem JavaDoc();
134         jSeparator2 = new javax.swing.JSeparator JavaDoc();
135         jMenuItemRefresh = new javax.swing.JMenuItem JavaDoc();
136         jScrollPane1 = new javax.swing.JScrollPane JavaDoc();
137         jLibraryTree = new javax.swing.JTree JavaDoc();
138
139         jPopupMenuFields.addPopupMenuListener(new javax.swing.event.PopupMenuListener JavaDoc() {
140             public void popupMenuCanceled(javax.swing.event.PopupMenuEvent JavaDoc evt) {
141             }
142             public void popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent JavaDoc evt) {
143             }
144             public void popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent JavaDoc evt) {
145                 jPopupMenuFieldsPopupMenuWillBecomeVisible(evt);
146             }
147         });
148
149         jMenuItemEdit.setIcon(new javax.swing.ImageIcon JavaDoc(""));
150         //Modified by Felix Firgau for I18n on Feb 9th 2006
151
jMenuItemEdit.setText(it.businesslogic.ireport.util.I18n.getString("edit", "Edit"));
152         jMenuItemEdit.setEnabled(false);
153         jMenuItemEdit.addActionListener(new java.awt.event.ActionListener JavaDoc() {
154             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
155                 jMenuItemEditActionPerformed(evt);
156             }
157         });
158
159         jPopupMenuFields.add(jMenuItemEdit);
160
161         //Modified by Felix Firgau for I18n on Feb 9th 2006
162
jMenuAdd.setText(it.businesslogic.ireport.util.I18n.getString("add", "Add"));//End
163
jMenuItemNewField.setIcon(new javax.swing.ImageIcon JavaDoc(""));
164         jMenuItemNewField.setText("Field");
165         jMenuItemNewField.addActionListener(new java.awt.event.ActionListener JavaDoc() {
166             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
167                 jMenuItemNewFieldActionPerformed(evt);
168             }
169         });
170
171         jMenuAdd.add(jMenuItemNewField);
172
173         jMenuItemNewVariable.setIcon(new javax.swing.ImageIcon JavaDoc(""));
174         jMenuItemNewVariable.setText("Variable");
175         jMenuItemNewVariable.addActionListener(new java.awt.event.ActionListener JavaDoc() {
176             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
177                 jMenuItemNewVariableActionPerformed(evt);
178             }
179         });
180
181         jMenuAdd.add(jMenuItemNewVariable);
182
183         jMenuItemParameter.setIcon(new javax.swing.ImageIcon JavaDoc(""));
184         jMenuItemParameter.setText("Parameter");
185         jMenuItemParameter.addActionListener(new java.awt.event.ActionListener JavaDoc() {
186             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
187                 jMenuItemParameterActionPerformed(evt);
188             }
189         });
190
191         jMenuAdd.add(jMenuItemParameter);
192
193         jMenuAdd.add(jSeparator3);
194
195         jMenuItemNewSubDataset.setText("Sub dataset");
196         jMenuItemNewSubDataset.addActionListener(new java.awt.event.ActionListener JavaDoc() {
197             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
198                 jMenuItemNewSubDatasetActionPerformed(evt);
199             }
200         });
201
202         jMenuAdd.add(jMenuItemNewSubDataset);
203
204         jPopupMenuFields.add(jMenuAdd);
205
206         jPopupMenuFields.add(jSeparator1);
207
208         jMenuItemCut.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/cut.png")));
209         //Modiefied by Felix Firgau for I18n on Feb 9th 2006
210
jMenuItemCut.setText(it.businesslogic.ireport.util.I18n.getString("cut", "Cut"));
211         jMenuItemCut.setEnabled(false);
212         jMenuItemCut.addActionListener(new java.awt.event.ActionListener JavaDoc() {
213             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
214                 jMenuItemCutActionPerformed(evt);
215             }
216         });
217
218         jPopupMenuFields.add(jMenuItemCut);
219
220         jMenuItemCopy.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/copy.png")));
221         //Modified by Felix Firgau on Feb 9th 2006
222
jMenuItemCopy.setText(it.businesslogic.ireport.util.I18n.getString("copy", "Copy"));
223         jMenuItemCopy.setEnabled(false);
224         jMenuItemCopy.addActionListener(new java.awt.event.ActionListener JavaDoc() {
225             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
226                 jMenuItemCopyActionPerformed(evt);
227             }
228         });
229
230         jPopupMenuFields.add(jMenuItemCopy);
231
232         jMenuItemPaste.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/paste.png")));
233         //Modified by Felix Firgau on Feb 9th 2006
234
jMenuItemPaste.setText(it.businesslogic.ireport.util.I18n.getString("paste", "Paste"));
235         jMenuItemPaste.setEnabled(false);
236         jMenuItemPaste.addActionListener(new java.awt.event.ActionListener JavaDoc() {
237             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
238                 jMenuItemPasteActionPerformed(evt);
239             }
240         });
241
242         jPopupMenuFields.add(jMenuItemPaste);
243
244         jMenuItemDelete.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/delete.png")));
245         //Modified by Felix Firgau on Feb 9th 2006
246
jMenuItemDelete.setText(it.businesslogic.ireport.util.I18n.getString("delete", "Delete"));
247         jMenuItemDelete.setEnabled(false);
248         jMenuItemDelete.addActionListener(new java.awt.event.ActionListener JavaDoc() {
249             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
250                 jMenuItemDeleteActionPerformed(evt);
251             }
252         });
253
254         jPopupMenuFields.add(jMenuItemDelete);
255
256         jPopupMenuFields.add(jSeparator2);
257
258         //Modified by Felix Firgau for I18n on Feb 9th 2006
259
jMenuItemRefresh.setText(it.businesslogic.ireport.util.I18n.getString("refresh", "Refresh"));
260         jMenuItemRefresh.addActionListener(new java.awt.event.ActionListener JavaDoc() {
261             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
262                 jMenuItemRefreshActionPerformed(evt);
263             }
264         });
265
266         jPopupMenuFields.add(jMenuItemRefresh);
267
268         setLayout(new java.awt.BorderLayout JavaDoc());
269
270         jScrollPane1.addMouseListener(new java.awt.event.MouseAdapter JavaDoc() {
271             public void mouseClicked(java.awt.event.MouseEvent JavaDoc evt) {
272                 jScrollPane1MouseClicked(evt);
273             }
274         });
275
276         jLibraryTree.setDragEnabled(true);
277         jLibraryTree.addMouseListener(new java.awt.event.MouseAdapter JavaDoc() {
278             public void mouseClicked(java.awt.event.MouseEvent JavaDoc evt) {
279                 jLibraryTreeMouseClicked(evt);
280             }
281         });
282
283         jScrollPane1.setViewportView(jLibraryTree);
284
285         add(jScrollPane1, java.awt.BorderLayout.CENTER);
286
287     }// </editor-fold>//GEN-END:initComponents
288

289     private void jMenuItemNewSubDatasetActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemNewSubDatasetActionPerformed
290

291         SubDatasetDialog sdd = new SubDatasetDialog(Misc.frameFromComponent(this),true);
292         sdd.setVisible(true);
293
294     }//GEN-LAST:event_jMenuItemNewSubDatasetActionPerformed
295

296     private void jMenuItemPasteActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemPasteActionPerformed
297
TreePath[] paths = jLibraryTree.getSelectionPaths();
298
299         if (jrf == null) return;
300         if (paths.length == 1)
301         {
302            if (paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode)
303            {
304
305                 SubDataset sd = jrf.getReport();
306
307                 if (paths[0].getPath().length >= 3)
308                 {
309                     Object JavaDoc osd = ((DefaultMutableTreeNode)paths[0].getPath()[1]).getUserObject();
310                     if (osd instanceof SubDataset)
311                     {
312                         sd = (SubDataset)osd;
313                     }
314                 }
315
316                ValuesDialog vd = MainFrame.getMainInstance().getValuesDialog();
317                DefaultMutableTreeNode dmn = (DefaultMutableTreeNode)paths[0].getLastPathComponent();
318                if ((dmn.getUserObject().equals(it.businesslogic.ireport.util.I18n.getString("gui.library.fields","Fields")) || dmn.getUserObject() instanceof JRField) && jrf.getMainFrame().getValuesDialog().getClipboardFields().size() > 0)
319                {
320                    vd.getValuesPanel().duplicateFields( vd.getClipboardFields(), sd );
321                }
322                if ((dmn.getUserObject().equals(it.businesslogic.ireport.util.I18n.getString("gui.library.variables","Variables")) || dmn.getUserObject() instanceof JRVariable) && jrf.getMainFrame().getValuesDialog().getClipboardVariables().size() > 0)
323                {
324                    vd.getValuesPanel().duplicateVariables( vd.getClipboardVariables(), sd );
325                }
326                if ((dmn.getUserObject().equals(it.businesslogic.ireport.util.I18n.getString("gui.library.parameters","Parameters")) || dmn.getUserObject() instanceof JRParameter) && jrf.getMainFrame().getValuesDialog().getClipboardParameters().size() > 0)
327                {
328                    vd.getValuesPanel().duplicateParameters( vd.getClipboardParameters(), sd );
329                }
330            }
331         }
332
333     }//GEN-LAST:event_jMenuItemPasteActionPerformed
334

335     private void jMenuItemCopyActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemCopyActionPerformed
336
TreePath[] paths = jLibraryTree.getSelectionPaths();
337
338        boolean clearedVariablesClipboard = false;
339        boolean clearedParametersClipboard = false;
340        boolean clearedFieldsClipboard = false;
341
342         for (int i=0; i<paths.length && jrf != null; ++i)
343         {
344             ValuesDialog vd = MainFrame.getMainInstance().getValuesDialog();
345             Report report = jrf.getReport();
346             if (paths[i].getLastPathComponent() instanceof DefaultMutableTreeNode)
347             {
348                 Object JavaDoc obj = ((DefaultMutableTreeNode)paths[i].getLastPathComponent()).getUserObject();
349                 if (obj instanceof JRVariable )
350                 {
351                         if (!clearedVariablesClipboard)
352                         {
353                             clearedVariablesClipboard = true;
354                             vd.getClipboardVariables().removeAllElements();
355                         }
356                         vd.getClipboardVariables().add( ((JRVariable)obj).cloneMe() );
357                 }
358                 if (obj instanceof JRField )
359                 {
360                         if (!clearedFieldsClipboard)
361                         {
362                             clearedFieldsClipboard = true;
363                             vd.getClipboardFields().removeAllElements();
364                         }
365                         vd.getClipboardFields().add( ((JRField)obj).cloneMe() );
366                 }
367                 if (obj instanceof JRParameter )
368                 {
369                         if (!clearedParametersClipboard)
370                         {
371                             clearedParametersClipboard = true;
372                             vd.getClipboardParameters().removeAllElements();
373                         }
374                         vd.getClipboardParameters().add( ((JRParameter)obj).cloneMe() );
375                 }
376             }
377         }
378     }//GEN-LAST:event_jMenuItemCopyActionPerformed
379

380     private void jMenuItemCutActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemCutActionPerformed
381
TreePath[] paths = jLibraryTree.getSelectionPaths();
382
383        boolean clearedVariablesClipboard = false;
384        boolean clearedParametersClipboard = false;
385        boolean clearedFieldsClipboard = false;
386
387         for (int i=0; i<paths.length && jrf != null; ++i)
388         {
389             ValuesDialog vd = MainFrame.getMainInstance().getValuesDialog();
390             Report report = jrf.getReport();
391
392             SubDataset sd = report;
393
394             if (paths[i].getPath().length == 4)
395             {
396                 Object JavaDoc osd = ((DefaultMutableTreeNode)paths[i].getPath()[1]).getUserObject();
397                 if (osd instanceof SubDataset)
398                 {
399                     sd = (SubDataset)osd;
400                 }
401             }
402
403             if (paths[i].getLastPathComponent() instanceof DefaultMutableTreeNode)
404             {
405                 Object JavaDoc obj = ((DefaultMutableTreeNode)paths[i].getLastPathComponent()).getUserObject();
406                 if (obj instanceof JRVariable )
407                 {
408                         if (!clearedVariablesClipboard)
409                         {
410                             clearedVariablesClipboard = true;
411                             vd.getClipboardVariables().removeAllElements();
412                         }
413                         vd.getClipboardVariables().add( ((JRVariable)obj).cloneMe() );
414                         sd.removeVariable((JRVariable)obj);
415                 }
416                 if (obj instanceof JRField )
417                 {
418                         if (!clearedFieldsClipboard)
419                         {
420                             clearedFieldsClipboard = true;
421                             vd.getClipboardFields().removeAllElements();
422                         }
423                         vd.getClipboardFields().add( ((JRField)obj).cloneMe() );
424                         sd.removeField((JRField)obj);
425                 }
426                 if (obj instanceof JRParameter )
427                 {
428                         if (!clearedParametersClipboard)
429                         {
430                             clearedParametersClipboard = true;
431                             vd.getClipboardParameters().removeAllElements();
432                         }
433                         vd.getClipboardParameters().add( ((JRParameter)obj).cloneMe() );
434                         sd.removeParameter((JRParameter)obj);
435                 }
436             }
437         }
438     }//GEN-LAST:event_jMenuItemCutActionPerformed
439

440     private void jMenuItemDeleteActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemDeleteActionPerformed
441

442         TreePath[] paths = jLibraryTree.getSelectionPaths();
443
444         for (int i=0; i<paths.length && jrf != null; ++i)
445         {
446             Report report = jrf.getReport();
447             SubDataset sd = report;
448
449             try {
450             if (paths[i].getPath().length == 4)
451             {
452                 Object JavaDoc osd = ((DefaultMutableTreeNode)paths[i].getPath()[1]).getUserObject();
453                 if (osd instanceof SubDataset)
454                 {
455                     sd = (SubDataset)osd;
456                 }
457             }
458             if (paths[i].getLastPathComponent() instanceof DefaultMutableTreeNode)
459             {
460                 Object JavaDoc obj = ((DefaultMutableTreeNode)paths[i].getLastPathComponent()).getUserObject();
461                 if (obj instanceof JRVariable ) { sd.removeVariable((JRVariable)obj ); }
462                 if (obj instanceof JRField ) { sd.removeField((JRField)obj ); }
463                 if (obj instanceof JRParameter ) { sd.removeParameter((JRParameter)obj ); }
464                 if (obj instanceof SubDataset ) {
465
466                     if (JOptionPane.showConfirmDialog(jLibraryTree,
467                             I18n.getFormattedString("messages.libraryPanel.removingSubdataset","Do you really want remove subDataset {0} ?", new Object JavaDoc[]{obj}) ) == JOptionPane.OK_OPTION)
468                     {
469                         jrf.getReport().removeSubDataset((SubDataset)obj);
470                     }
471                 }
472             }
473             } catch (Exception JavaDoc ex)
474             {
475                 ex.printStackTrace();
476             }
477         }
478     }//GEN-LAST:event_jMenuItemDeleteActionPerformed
479

480     private void jMenuItemParameterActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemParameterActionPerformed
481
MainFrame.getMainInstance().getValuesDialog().getValuesPanel().newParameter(getSelectedSubDataset());
482     }//GEN-LAST:event_jMenuItemParameterActionPerformed
483

484     private void jMenuItemNewFieldActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemNewFieldActionPerformed
485
MainFrame.getMainInstance().getValuesDialog().getValuesPanel().newField(getSelectedSubDataset());
486     }//GEN-LAST:event_jMenuItemNewFieldActionPerformed
487

488     /**
489      * return the dataset to wich refer the current selection in the tree
490      **/

491     private SubDataset getSelectedSubDataset()
492     {
493         if (jrf == null) return null;
494
495         SubDataset sd = jrf.getReport();
496         TreePath[] paths = jLibraryTree.getSelectionPaths();
497         if (paths.length == 1)
498         {
499            if (paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode)
500            {
501                 if (paths[0].getPath().length >= 2)
502                 {
503                     Object JavaDoc osd = ((DefaultMutableTreeNode)paths[0].getPath()[1]).getUserObject();
504                     if (osd instanceof SubDataset)
505                     {
506                         sd = (SubDataset)osd;
507                     }
508                 }
509            }
510         }
511
512         return sd;
513     }
514
515
516     private void jMenuItemNewVariableActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemNewVariableActionPerformed
517

518         // We have to use the same method used by ValuesDialog...
519
MainFrame.getMainInstance().getValuesDialog().getValuesPanel().newVariable(getSelectedSubDataset());
520     }//GEN-LAST:event_jMenuItemNewVariableActionPerformed
521

522     private void jScrollPane1MouseClicked(java.awt.event.MouseEvent JavaDoc evt) {//GEN-FIRST:event_jScrollPane1MouseClicked
523
jLibraryTreeMouseClicked(evt);
524     }//GEN-LAST:event_jScrollPane1MouseClicked
525

526     private void jMenuItemRefreshActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemRefreshActionPerformed
527
updateReportObjects();
528     }//GEN-LAST:event_jMenuItemRefreshActionPerformed
529

530     private void jMenuItemEditActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemEditActionPerformed
531

532         // We have to see what type of item we have selected...
533
TreePath[] paths = jLibraryTree.getSelectionPaths();
534
535         if (paths == null || paths.length == 0)
536         {
537             return;
538         }
539
540         if (paths.length == 1 && paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode)
541         {
542             Object JavaDoc obj = ((DefaultMutableTreeNode)paths[0].getLastPathComponent()).getUserObject();
543             if (obj instanceof JRVariable ) { MainFrame.getMainInstance().getValuesDialog().getValuesPanel().modifyVariable((JRVariable)obj ); }
544             if (obj instanceof JRField ) { MainFrame.getMainInstance().getValuesDialog().getValuesPanel().modifyField((JRField)obj ); }
545             if (obj instanceof JRParameter ) { MainFrame.getMainInstance().getValuesDialog().getValuesPanel().modifyParameter((JRParameter)obj ); }
546             if (obj instanceof SubDataset ) {
547                 java.awt.Frame JavaDoc parent = Misc.frameFromComponent(this);
548                 SubDatasetDialog cd = new SubDatasetDialog(parent,true);
549                 cd.setSubDataset( (SubDataset)obj );
550                 cd.setVisible(true);
551             }
552         }
553     }//GEN-LAST:event_jMenuItemEditActionPerformed
554

555     private void jPopupMenuFieldsPopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent JavaDoc evt) {//GEN-FIRST:event_jPopupMenuFieldsPopupMenuWillBecomeVisible
556

557         if (this.jrf != null)
558         {
559             jMenuAdd.setEnabled( true );
560             jMenuItemRefresh.setEnabled( true );
561         }
562         else
563         {
564             jMenuItemCut.setEnabled(false);
565             jMenuItemCopy.setEnabled(false);
566             jMenuItemDelete.setEnabled(false);
567             jMenuItemPaste.setEnabled(false);
568             jMenuItemEdit.setEnabled(false);
569             jMenuItemRefresh.setEnabled(false);
570             jMenuAdd.setEnabled( false );
571             return;
572         }
573
574         // Edit is able only if a single valid object is selected...
575
TreePath[] paths = jLibraryTree.getSelectionPaths();
576
577         if (paths == null || paths.length == 0)
578         {
579             jMenuItemCut.setEnabled(false);
580             jMenuItemCopy.setEnabled(false);
581             jMenuItemDelete.setEnabled(false);
582             jMenuItemPaste.setEnabled(false);
583             jMenuItemEdit.setEnabled(false);
584             return;
585         }
586
587         if (paths.length == 1 &&
588             paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode &&
589             ( (((DefaultMutableTreeNode)paths[0].getLastPathComponent()).getUserObject() instanceof JRField ) ||
590               (((DefaultMutableTreeNode)paths[0].getLastPathComponent()).getUserObject() instanceof JRVariable ) ||
591               (((DefaultMutableTreeNode)paths[0].getLastPathComponent()).getUserObject() instanceof JRParameter ) ||
592               (((DefaultMutableTreeNode)paths[0].getLastPathComponent()).getUserObject() instanceof SubDataset )) )
593         {
594                   jMenuItemEdit.setEnabled(true);
595         }
596         else
597         {
598                   jMenuItemEdit.setEnabled( false );
599         }
600
601          if (paths.length > 0)
602          {
603              jMenuItemCut.setEnabled(true);
604              jMenuItemCopy.setEnabled(true);
605              jMenuItemDelete.setEnabled(true);
606          }
607          else
608          {
609              jMenuItemCut.setEnabled(false);
610              jMenuItemCopy.setEnabled(false);
611              jMenuItemDelete.setEnabled(false);
612          }
613
614         jMenuItemPaste.setEnabled(false);
615
616          // If the only selection is the node "parameters"...
617
if (paths.length == 1)
618         {
619            if (paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode)
620            {
621                DefaultMutableTreeNode dmn = (DefaultMutableTreeNode)paths[0].getLastPathComponent();
622                if ((dmn.getUserObject().equals(it.businesslogic.ireport.util.I18n.getString("gui.library.fields","Fields")) || dmn.getUserObject() instanceof JRField) && jrf.getMainFrame().getValuesDialog().getClipboardFields().size() > 0)
623                {
624                    jMenuItemPaste.setEnabled(true);
625                }
626                if ((dmn.getUserObject().equals(it.businesslogic.ireport.util.I18n.getString("gui.library.variables","Variables")) || dmn.getUserObject() instanceof JRVariable) && jrf.getMainFrame().getValuesDialog().getClipboardVariables().size() > 0)
627                {
628                    jMenuItemPaste.setEnabled(true);
629                }
630                if ((dmn.getUserObject().equals(it.businesslogic.ireport.util.I18n.getString("gui.library.parameters","Parameters")) || dmn.getUserObject() instanceof JRParameter) && jrf.getMainFrame().getValuesDialog().getClipboardParameters().size() > 0)
631                {
632                    jMenuItemPaste.setEnabled(true);
633                }
634            }
635         }
636     }//GEN-LAST:event_jPopupMenuFieldsPopupMenuWillBecomeVisible
637

638     private void jLibraryTreeMouseClicked(java.awt.event.MouseEvent JavaDoc evt) {//GEN-FIRST:event_jLibraryTreeMouseClicked
639

640         if (evt.getClickCount() == 1 && evt.getButton() == evt.BUTTON3)
641         {
642             jLibraryTree.setSelectionPath( jLibraryTree.getPathForLocation(evt.getX(), evt.getY() ) );
643             jPopupMenuFields.show( jLibraryTree, evt.getPoint().x, evt.getPoint().y);
644         }
645         if (evt.getClickCount() == 2 && evt.getButton() == evt.BUTTON1)
646         {
647             TreePath[] paths = jLibraryTree.getSelectionPaths();
648
649             if (paths == null || paths.length == 0)
650             {
651                 return;
652             }
653
654             if (paths.length == 1 && paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode)
655             {
656                 Object JavaDoc obj = ((DefaultMutableTreeNode)paths[0].getLastPathComponent()).getUserObject();
657                 if (obj instanceof SubDataset ) return;
658             }
659
660             jMenuItemEditActionPerformed(new java.awt.event.ActionEvent JavaDoc(this,0,""));
661         }
662     }//GEN-LAST:event_jLibraryTreeMouseClicked
663

664     public void languageChanged(it.businesslogic.ireport.util.LanguageChangedEvent evt) {
665
666         fieldsNode.setUserObject( it.businesslogic.ireport.util.I18n.getString("gui.library.fields","Fields"));
667         variablesNode.setUserObject( it.businesslogic.ireport.util.I18n.getString("gui.library.variables","Variables"));
668         parametersNode.setUserObject( it.businesslogic.ireport.util.I18n.getString("gui.library.parameters","Parameters"));
669         jLibraryTree.updateUI();
670     }
671
672     public void setJReportFrame(JReportFrame jrf)
673     {
674        this.jrf = jrf;
675        updateReportObjects();
676
677        updateSubDatasets();
678
679     }
680
681     private void loadCustomObjects()
682     {
683
684     }
685     private void loadSystemObjects()
686     {
687           DefaultMutableTreeNode root = (DefaultMutableTreeNode)jLibraryTree.getModel().getRoot();
688           root.add(new DefaultMutableTreeNode(new PageNumberObject() ));
689           root.add(new DefaultMutableTreeNode(new TotalPagesObject() ));
690           root.add(new DefaultMutableTreeNode(new PageXYObject() ));
691           root.add(new DefaultMutableTreeNode(new TotalObject() ));
692           root.add(new DefaultMutableTreeNode(new DateObject() ));
693           root.add(new DefaultMutableTreeNode(new PercentageObject() ));
694     }
695
696     private void addLibraryObject(String JavaDoc folder, AbstractLibraryObject obj)
697     {
698         DefaultMutableTreeNode root = (DefaultMutableTreeNode)jLibraryTree.getModel().getRoot();
699         if (folder == null || folder.length() == 0)
700         {
701             root.add(new DefaultMutableTreeNode(new PageNumberObject() ));
702         }
703         else
704         {
705             // Look for folder...
706
Enumeration enum_childrens = root.children();
707             while (enum_childrens.hasMoreElements())
708             {
709                 DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)enum_childrens.nextElement();
710                 if ( (""+dmtn.getUserObject()).equalsIgnoreCase(folder ) )
711                 {
712                     dmtn.add(new DefaultMutableTreeNode( obj ));
713                 }
714             }
715         }
716     }
717
718     public void updateReportObjects()
719     {
720        this.fieldsNode.removeAllChildren();
721        this.parametersNode.removeAllChildren();
722        this.variablesNode.removeAllChildren();
723
724        if (jrf == null) {
725
726            jLibraryTree.updateUI();
727            return;
728        }
729
730        java.util.Enumeration JavaDoc e = jrf.getReport().getFields().elements();
731        while (e.hasMoreElements())
732        {
733              fieldsNode.add(new DefaultMutableTreeNode(e.nextElement()));
734        }
735         e = jrf.getReport().getParameters().elements();
736        while (e.hasMoreElements())
737        {
738              parametersNode.add(new DefaultMutableTreeNode(e.nextElement()));
739        }
740
741         e = jrf.getReport().getVariables().elements();
742        while (e.hasMoreElements())
743        {
744              variablesNode.add(new DefaultMutableTreeNode(e.nextElement()));
745        }
746
747        jLibraryTree.updateUI();
748     }
749
750     // Variables declaration - do not modify//GEN-BEGIN:variables
751
private javax.swing.JTree JavaDoc jLibraryTree;
752     private javax.swing.JMenu JavaDoc jMenuAdd;
753     private javax.swing.JMenuItem JavaDoc jMenuItemCopy;
754     private javax.swing.JMenuItem JavaDoc jMenuItemCut;
755     private javax.swing.JMenuItem JavaDoc jMenuItemDelete;
756     private javax.swing.JMenuItem JavaDoc jMenuItemEdit;
757     private javax.swing.JMenuItem JavaDoc jMenuItemNewField;
758     private javax.swing.JMenuItem JavaDoc jMenuItemNewSubDataset;
759     private javax.swing.JMenuItem JavaDoc jMenuItemNewVariable;
760     private javax.swing.JMenuItem JavaDoc jMenuItemParameter;
761     private javax.swing.JMenuItem JavaDoc jMenuItemPaste;
762     private javax.swing.JMenuItem JavaDoc jMenuItemRefresh;
763     private javax.swing.JPopupMenu JavaDoc jPopupMenuFields;
764     private javax.swing.JScrollPane JavaDoc jScrollPane1;
765     private javax.swing.JSeparator JavaDoc jSeparator1;
766     private javax.swing.JSeparator JavaDoc jSeparator2;
767     private javax.swing.JSeparator JavaDoc jSeparator3;
768     // End of variables declaration//GEN-END:variables
769

770      public void subDatasetObjectChanged(it.businesslogic.ireport.gui.event.SubDatasetObjectChangedEvent evt)
771      {
772          if (evt != null && evt.getSource() instanceof Report)
773          {
774             this.updateReportObjects();
775          }
776          else
777          {
778              updateSubDatasetNode( evt.getSource() );
779          }
780      }
781
782     public void reportSubDatasetChanged(it.businesslogic.ireport.gui.event.ReportSubDatasetChangedEvent evt) {
783
784         DefaultMutableTreeNode root = (DefaultMutableTreeNode)jLibraryTree.getModel().getRoot();
785         if (evt.getAction() == evt.ADDED &&
786            evt.getObjectType() == evt.OBJECT_SUBDATASET)
787        {
788            int lastDatasourceIndex = 3;
789            for (lastDatasourceIndex=3; root.getChildCount() > lastDatasourceIndex; lastDatasourceIndex++)
790            {
791                if ( ((DefaultMutableTreeNode)root.getChildAt(lastDatasourceIndex)).getUserObject() instanceof SubDataset) continue;
792                break;
793            }
794
795            for (int i=0; i<evt.getElements().size(); ++i)
796            {
797             DefaultMutableTreeNode subDatasetNode = new DefaultMutableTreeNode(evt.getElements().elementAt(i));
798             root.insert(subDatasetNode, lastDatasourceIndex);
799             updateSubDatasetNode( subDatasetNode );
800             lastDatasourceIndex++;
801            }
802        } else if (evt.getAction() == evt.REMOVED &&
803            evt.getObjectType() == evt.OBJECT_SUBDATASET)
804        {
805
806             DefaultMutableTreeNode subDatasetNode = null;
807              for (int i=0; i<evt.getElements().size(); ++i)
808              {
809                 // 1. Find the datasource...
810
for (int k=0; k< root.getChildCount(); ++k)
811                  {
812                      if (((DefaultMutableTreeNode)root.getChildAt(k)).getUserObject() == evt.getElements().elementAt(i))
813                      {
814                          root.remove(k);
815                          break;
816                      }
817                  }
818              }
819
820            jLibraryTree.updateUI();
821
822        } else if (evt.getAction() == evt.CHANGED &&
823            evt.getObjectType() == evt.OBJECT_SUBDATASET)
824        {
825            jLibraryTree.updateUI();
826        }
827     }
828
829
830     public void updateSubDatasetNode(SubDataset subDataset)
831     {
832         DefaultMutableTreeNode root = (DefaultMutableTreeNode)jLibraryTree.getModel().getRoot();
833         for (int k=0; k< root.getChildCount(); ++k)
834         {
835              if (((DefaultMutableTreeNode)root.getChildAt(k)).getUserObject() == subDataset)
836              {
837                  updateSubDatasetNode((DefaultMutableTreeNode)root.getChildAt(k));
838                  return;
839              }
840         }
841
842     }
843
844     public void updateSubDatasetNode(DefaultMutableTreeNode subDatasetNode )
845     {
846         DefaultMutableTreeNode dsFieldsNode = null;
847         DefaultMutableTreeNode dsVariablesNode = null;
848         DefaultMutableTreeNode dsParametersNode = null;
849
850         SubDataset subDataset = (SubDataset)subDatasetNode.getUserObject();
851
852         if (subDatasetNode.getChildCount() == 0)
853         {
854             dsFieldsNode = new DefaultMutableTreeNode(it.businesslogic.ireport.util.I18n.getString("gui.library.fields","Fields"),true);
855             subDatasetNode.add( dsFieldsNode );
856
857             dsVariablesNode = new DefaultMutableTreeNode(it.businesslogic.ireport.util.I18n.getString("gui.library.variables","Variables"),true);
858             subDatasetNode.add( dsVariablesNode );
859
860             dsParametersNode = new DefaultMutableTreeNode(it.businesslogic.ireport.util.I18n.getString("gui.library.parameters","Parameters"),true);
861             subDatasetNode.add( dsParametersNode );
862         }
863         else
864         {
865             dsFieldsNode = (DefaultMutableTreeNode)subDatasetNode.getChildAt(0);
866             dsVariablesNode = (DefaultMutableTreeNode)subDatasetNode.getChildAt(1);
867             dsParametersNode = (DefaultMutableTreeNode)subDatasetNode.getChildAt(2);
868         }
869
870         dsFieldsNode.removeAllChildren();
871         dsVariablesNode.removeAllChildren();
872         dsParametersNode.removeAllChildren();
873
874         java.util.Enumeration JavaDoc e = subDataset.getFields().elements();
875         while (e.hasMoreElements())
876         {
877              dsFieldsNode.add(new DefaultMutableTreeNode(e.nextElement()));
878         }
879         e = subDataset.getParameters().elements();
880         while (e.hasMoreElements())
881         {
882              dsParametersNode.add(new DefaultMutableTreeNode(e.nextElement()));
883        }
884
885         e = subDataset.getVariables().elements();
886        while (e.hasMoreElements())
887        {
888              dsVariablesNode.add(new DefaultMutableTreeNode(e.nextElement()));
889        }
890
891        jLibraryTree.updateUI();
892     }
893
894     public void updateSubDatasets()
895     {
896         DefaultMutableTreeNode root = (DefaultMutableTreeNode)jLibraryTree.getModel().getRoot();
897         for (int k=0; k< root.getChildCount(); ++k)
898         {
899              if (((DefaultMutableTreeNode)root.getChildAt(k)).getUserObject() instanceof SubDataset)
900              {
901                  root.remove(k);
902                  k--;
903              }
904         }
905
906         if (jrf != null)
907         {
908             int lastDatasourceIndex = 3;
909             for (int i=0; i< jrf.getReport().getSubDatasets().size(); ++i)
910             {
911                 DefaultMutableTreeNode subDatasetNode = new DefaultMutableTreeNode(jrf.getReport().getSubDatasets().elementAt(i));
912                 root.insert(subDatasetNode, lastDatasourceIndex);
913                 updateSubDatasetNode( subDatasetNode );
914                 lastDatasourceIndex++;
915             }
916         }
917
918         jLibraryTree.updateUI();
919     }
920     public void applyI18n(){
921                 // Start autogenerated code ----------------------
922
jMenuItemNewField.setText(I18n.getString("libraryPanel.menuItemNewField","Field"));
923                 jMenuItemNewSubDataset.setText(I18n.getString("libraryPanel.menuItemNewSubDataset","Sub dataset"));
924                 jMenuItemNewVariable.setText(I18n.getString("libraryPanel.menuItemNewVariable","Variable"));
925                 jMenuItemParameter.setText(I18n.getString("libraryPanel.menuItemParameter","Parameter"));
926                 // End autogenerated code ----------------------
927
}
928 }
929
Popular Tags