KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jaspersoft > jasperserver > irplugin > gui > RepositoryExplorer


1 /*
2  * All rights reserved.
3  * Copyright (C) 2005 JasperSoft Corporation
4  *
5  * JasperSoft Corporation
6  * 303 Second Street, Suite 450 North
7  * San Francisco, CA 94107
8  * http://www.jaspersoft.com
9  *
10  * RepositoryExplorer.java
11  *
12  * Created on March 31, 2006, 4:52 PM
13  */

14 package com.jaspersoft.jasperserver.irplugin.gui;
15
16 import com.jaspersoft.jasperserver.irplugin.ControlsSet;
17 import com.jaspersoft.jasperserver.irplugin.IRPlugin;
18 import com.jaspersoft.jasperserver.irplugin.JServer;
19 import com.jaspersoft.jasperserver.irplugin.ReportRunner;
20 import com.jaspersoft.jasperserver.irplugin.RepositoryFolder;
21 import com.jaspersoft.jasperserver.irplugin.RepositoryJrxmlFile;
22 import com.jaspersoft.jasperserver.irplugin.RepositoryReportUnit;
23 import com.jaspersoft.jasperserver.irplugin.ResourcesSet;
24 import com.jaspersoft.jasperserver.irplugin.gui.explorer.ResourceChooser;
25 import com.jaspersoft.jasperserver.irplugin.gui.wizard.NewReportUnitWizard;
26
27 import com.jaspersoft.jasperserver.irplugin.wsclient.WSClient;
28
29 import com.jaspersoft.jasperserver.api.metadata.xml.domain.impl.*;
30 import com.jaspersoft.jasperserver.irplugin.RepositoryFile;
31 import it.businesslogic.ireport.IRFont;
32 import it.businesslogic.ireport.gui.logpane.LogTextArea;
33 import it.businesslogic.ireport.util.Misc;
34
35 import java.awt.Cursor JavaDoc;
36 import java.awt.dnd.DropTarget JavaDoc;
37 import java.io.File JavaDoc;
38 import java.util.List JavaDoc;
39 import java.util.Vector JavaDoc;
40 import javax.swing.JOptionPane JavaDoc;
41 import javax.swing.JTree JavaDoc;
42 import javax.swing.SwingUtilities JavaDoc;
43 import javax.swing.tree.DefaultMutableTreeNode JavaDoc;
44 import javax.swing.tree.DefaultTreeModel JavaDoc;
45 import javax.swing.tree.DefaultTreeSelectionModel JavaDoc;
46 import javax.swing.tree.TreePath JavaDoc;
47 import it.businesslogic.ireport.gui.MainFrame;
48 import java.io.StringWriter JavaDoc;
49 import javax.swing.JFileChooser JavaDoc;
50 import net.sf.jasperreports.engine.JRExporter;
51 import net.sf.jasperreports.engine.JRExporterParameter;
52 import net.sf.jasperreports.engine.JasperPrint;
53 import net.sf.jasperreports.engine.export.JExcelApiExporterParameter;
54 import net.sf.jasperreports.engine.export.JRCsvExporterParameter;
55 import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
56 import net.sf.jasperreports.engine.export.JRPdfExporterParameter;
57 import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
58 import net.sf.jasperreports.view.JasperViewer;
59 import org.exolab.castor.xml.Marshaller;
60
61 /**
62  *
63  * @author gtoffoli
64  */

65 public class RepositoryExplorer extends javax.swing.JPanel JavaDoc {
66     
67     private IRPlugin plugin = null;
68     
69     
70     /** Creates new form RepositoryExplorer */
71     public RepositoryExplorer(IRPlugin plugin) {
72         initComponents();
73         
74         jTreeRepository.setDragEnabled(true);
75         jTreeRepository.setTransferHandler(new ReportElementTransferHandler());
76
77         jTreeRepository.setDropTarget( new DropTarget JavaDoc(jTreeRepository, new it.businesslogic.ireport.gui.docking.GenericDragTargetListener()));
78         this.setPlugin(plugin);
79         jTreeRepository.setCellRenderer( new RepositoryTreeCellRenderer() );
80         jTreeRepository.getSelectionModel().setSelectionMode( DefaultTreeSelectionModel.SINGLE_TREE_SELECTION );
81         // load configuration
82
loadServerList();
83     }
84     /**
85      * Load the plugin configuration file stored in the .ireport directory
86      * in the user home....
87      * In the configuration file are sotred all server configurations...
88      */

89     public void loadServerList()
90     {
91         //
92
jTreeRepository.removeAll();
93         DefaultMutableTreeNode JavaDoc rootNode= new DefaultMutableTreeNode JavaDoc();
94         ((DefaultTreeModel JavaDoc)jTreeRepository.getModel()).setRoot(rootNode);
95         
96         for (int i=0; i < this.getPlugin().getJServers().size(); ++i)
97         {
98             JServer server = (JServer)this.getPlugin().getJServers().get(i);
99             DefaultMutableTreeNode JavaDoc serverNode= new DefaultMutableTreeNode JavaDoc(server);
100             rootNode.add( serverNode );
101         }
102         
103         //jButtonNewReportUnit.setEnabled(this.getPlugin().getJServers().size() > 0);
104

105         jTreeRepository.updateUI();
106     }
107     
108     public IRPlugin getPlugin() {
109         return plugin;
110     }
111
112     public void setPlugin(IRPlugin plugin) {
113         this.plugin = plugin;
114     }
115     
116     /**
117      * Update the toolbar status buttons based on the selection.
118      *
119      */

120     public void updateToolBar()
121     {
122         TreePath JavaDoc path = jTreeRepository.getSelectionPath();
123         if (path == null) return;
124         
125         jButtonSaveJrxml.setEnabled(false);
126         jButtonNewReportUnit.setEnabled(false);
127         jButtonRunReport.setEnabled(false);
128         
129         DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
130         
131         
132         
133         if ( selectedNode.getUserObject() instanceof RepositoryJrxmlFile )
134         {
135             RepositoryJrxmlFile rf = (RepositoryJrxmlFile)selectedNode.getUserObject();
136             if (rf.getReportFrame() != null)
137             {
138                 jButtonSaveJrxml.setEnabled(true);
139             }
140         }
141         
142         if ( selectedNode.getUserObject() instanceof RepositoryFolder )
143         {
144             RepositoryFolder rf = (RepositoryFolder)selectedNode.getUserObject();
145             if (rf.getDescriptor().getWsType().equals(ResourceDescriptor.TYPE_FOLDER))
146             {
147                 
148                 jButtonNewReportUnit.setEnabled(true);
149             }
150         }
151         
152         if ( getParentReportUnit(selectedNode) != null)
153         {
154             jButtonRunReport.setEnabled(true);
155         }
156         
157         else if ( selectedNode.getUserObject() instanceof JServer )
158         {
159             jButtonNewReportUnit.setEnabled(true);
160         }
161     }
162     
163     /** This method is called from within the constructor to
164      * initialize the form.
165      * WARNING: Do NOT modify this code. The content of this method is
166      * always regenerated by the Form Editor.
167      */

168     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
169
private void initComponents() {
170         jPopupMenuServer = new javax.swing.JPopupMenu JavaDoc();
171         jMenuItemRunRU = new javax.swing.JMenuItem JavaDoc();
172         jMenuItemEditJRXML = new javax.swing.JMenuItem JavaDoc();
173         jMenuItemConnection = new javax.swing.JMenuItem JavaDoc();
174         jMenuItemImportFont = new javax.swing.JMenuItem JavaDoc();
175         jMenuItemExplore = new javax.swing.JMenuItem JavaDoc();
176         jMenuItemGet = new javax.swing.JMenuItem JavaDoc();
177         jMenuItemDelete = new javax.swing.JMenuItem JavaDoc();
178         jSeparator3 = new javax.swing.JSeparator JavaDoc();
179         jMenuAdd = new javax.swing.JMenu JavaDoc();
180         jMenuItemReportUnit = new javax.swing.JMenuItem JavaDoc();
181         jSeparator5 = new javax.swing.JSeparator JavaDoc();
182         jMenuItemFolder = new javax.swing.JMenuItem JavaDoc();
183         jMenuItemReference = new javax.swing.JMenuItem JavaDoc();
184         jSeparator4 = new javax.swing.JSeparator JavaDoc();
185         jMenuItemImage = new javax.swing.JMenuItem JavaDoc();
186         jMenuItemBundle = new javax.swing.JMenuItem JavaDoc();
187         jMenuItemJrxml = new javax.swing.JMenuItem JavaDoc();
188         jMenuItemJar = new javax.swing.JMenuItem JavaDoc();
189         jMenuItemFont = new javax.swing.JMenuItem JavaDoc();
190         jSeparator6 = new javax.swing.JSeparator JavaDoc();
191         jMenuItemDatasource = new javax.swing.JMenuItem JavaDoc();
192         jSeparator7 = new javax.swing.JSeparator JavaDoc();
193         jMenuItemDataType = new javax.swing.JMenuItem JavaDoc();
194         jMenuItemListOfValues = new javax.swing.JMenuItem JavaDoc();
195         jMenuItemQuery = new javax.swing.JMenuItem JavaDoc();
196         jMenuItemInputControl = new javax.swing.JMenuItem JavaDoc();
197         jSeparator1 = new javax.swing.JSeparator JavaDoc();
198         jMenuItemLogin = new javax.swing.JMenuItem JavaDoc();
199         jMenuItemNewServer = new javax.swing.JMenuItem JavaDoc();
200         jMenuItemServerSettings = new javax.swing.JMenuItem JavaDoc();
201         jMenuItemServerDelete = new javax.swing.JMenuItem JavaDoc();
202         jSeparator2 = new javax.swing.JSeparator JavaDoc();
203         jMenuItemRefresh = new javax.swing.JMenuItem JavaDoc();
204         jMenuItemRefreshContent = new javax.swing.JMenuItem JavaDoc();
205         jMenuItemProperties = new javax.swing.JMenuItem JavaDoc();
206         jPopupMenuRUInputControls = new javax.swing.JPopupMenu JavaDoc();
207         jMenuItemLocalInputControl = new javax.swing.JMenuItem JavaDoc();
208         jMenuItemLinkInputControl = new javax.swing.JMenuItem JavaDoc();
209         jToolBar1 = new javax.swing.JToolBar JavaDoc();
210         jButtonAddServer = new javax.swing.JButton JavaDoc();
211         jButtonNewReportUnit = new javax.swing.JButton JavaDoc();
212         jButtonSaveJrxml = new javax.swing.JButton JavaDoc();
213         jButtonRunReport = new javax.swing.JButton JavaDoc();
214         jScrollPane1 = new javax.swing.JScrollPane JavaDoc();
215         jTreeRepository = new javax.swing.JTree JavaDoc();
216
217         jPopupMenuServer.addMouseListener(new java.awt.event.MouseAdapter JavaDoc() {
218             public void mouseClicked(java.awt.event.MouseEvent JavaDoc evt) {
219                 jPopupMenuServerMouseClicked(evt);
220             }
221         });
222
223         jMenuItemRunRU.setText("Run Report Unit");
224         jMenuItemRunRU.addActionListener(new java.awt.event.ActionListener JavaDoc() {
225             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
226                 jMenuItemRunRUActionPerformed(evt);
227             }
228         });
229
230         jPopupMenuServer.add(jMenuItemRunRU);
231
232         jMenuItemEditJRXML.setText("Edit JRXML");
233         jMenuItemEditJRXML.addActionListener(new java.awt.event.ActionListener JavaDoc() {
234             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
235                 jMenuItemEditJRXMLActionPerformed(evt);
236             }
237         });
238
239         jPopupMenuServer.add(jMenuItemEditJRXML);
240
241         jMenuItemConnection.setText("Import JDBC connection definition");
242         jMenuItemConnection.addActionListener(new java.awt.event.ActionListener JavaDoc() {
243             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
244                 jMenuItemConnectionActionPerformed(evt);
245             }
246         });
247
248         jPopupMenuServer.add(jMenuItemConnection);
249
250         jMenuItemImportFont.setText("Add this font to the font list");
251         jMenuItemImportFont.addActionListener(new java.awt.event.ActionListener JavaDoc() {
252             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
253                 jMenuItemImportFontActionPerformed(evt);
254             }
255         });
256
257         jPopupMenuServer.add(jMenuItemImportFont);
258
259         jMenuItemExplore.setText("Explore");
260         jMenuItemExplore.addActionListener(new java.awt.event.ActionListener JavaDoc() {
261             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
262                 jMenuItemExploreActionPerformed(evt);
263             }
264         });
265
266         jPopupMenuServer.add(jMenuItemExplore);
267
268         jMenuItemGet.setText("Export file");
269         jMenuItemGet.addActionListener(new java.awt.event.ActionListener JavaDoc() {
270             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
271                 jMenuItemGetActionPerformed(evt);
272             }
273         });
274
275         jPopupMenuServer.add(jMenuItemGet);
276
277         jMenuItemDelete.setText("Delete");
278         jMenuItemDelete.addActionListener(new java.awt.event.ActionListener JavaDoc() {
279             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
280                 jMenuItemDeleteActionPerformed(evt);
281             }
282         });
283
284         jPopupMenuServer.add(jMenuItemDelete);
285
286         jPopupMenuServer.add(jSeparator3);
287
288         jMenuAdd.setText("Add");
289         jMenuItemReportUnit.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/reportunit.png")));
290         jMenuItemReportUnit.setText("Report Unit");
291         jMenuItemReportUnit.addActionListener(new java.awt.event.ActionListener JavaDoc() {
292             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
293                 jMenuItemReportUnitActionPerformed(evt);
294             }
295         });
296
297         jMenuAdd.add(jMenuItemReportUnit);
298
299         jMenuAdd.add(jSeparator5);
300
301         jMenuItemFolder.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/folder.png")));
302         jMenuItemFolder.setText("Folder");
303         jMenuItemFolder.addActionListener(new java.awt.event.ActionListener JavaDoc() {
304             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
305                 jMenuItemFolderActionPerformed(evt);
306             }
307         });
308
309         jMenuAdd.add(jMenuItemFolder);
310
311         jMenuItemReference.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/link.png")));
312         jMenuItemReference.setText("Reference");
313         jMenuItemReference.setEnabled(false);
314         jMenuItemReference.addActionListener(new java.awt.event.ActionListener JavaDoc() {
315             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
316                 jMenuItemReferenceActionPerformed(evt);
317             }
318         });
319
320         jMenuAdd.add(jMenuItemReference);
321
322         jMenuAdd.add(jSeparator4);
323
324         jMenuItemImage.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/picture.png")));
325         jMenuItemImage.setText("Image");
326         jMenuItemImage.addActionListener(new java.awt.event.ActionListener JavaDoc() {
327             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
328                 jMenuItemImageActionPerformed(evt);
329             }
330         });
331
332         jMenuAdd.add(jMenuItemImage);
333
334         jMenuItemBundle.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/bundle.png")));
335         jMenuItemBundle.setText("Resource bundle");
336         jMenuItemBundle.addActionListener(new java.awt.event.ActionListener JavaDoc() {
337             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
338                 jMenuItemBundleActionPerformed(evt);
339             }
340         });
341
342         jMenuAdd.add(jMenuItemBundle);
343
344         jMenuItemJrxml.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/jrxml_file.png")));
345         jMenuItemJrxml.setText("JRXML document");
346         jMenuItemJrxml.addActionListener(new java.awt.event.ActionListener JavaDoc() {
347             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
348                 jMenuItemJrxmlActionPerformed(evt);
349             }
350         });
351
352         jMenuAdd.add(jMenuItemJrxml);
353
354         jMenuItemJar.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/jar.png")));
355         jMenuItemJar.setText("Jar archive");
356         jMenuItemJar.addActionListener(new java.awt.event.ActionListener JavaDoc() {
357             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
358                 jMenuItemJarActionPerformed(evt);
359             }
360         });
361
362         jMenuAdd.add(jMenuItemJar);
363
364         jMenuItemFont.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/font.png")));
365         jMenuItemFont.setText("Font file");
366         jMenuItemFont.addActionListener(new java.awt.event.ActionListener JavaDoc() {
367             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
368                 jMenuItemFontActionPerformed(evt);
369             }
370         });
371
372         jMenuAdd.add(jMenuItemFont);
373
374         jMenuAdd.add(jSeparator6);
375
376         jMenuItemDatasource.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/datasource.png")));
377         jMenuItemDatasource.setText("Datasource");
378         jMenuItemDatasource.addActionListener(new java.awt.event.ActionListener JavaDoc() {
379             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
380                 jMenuItemDataSourceActionPerformed(evt);
381             }
382         });
383
384         jMenuAdd.add(jMenuItemDatasource);
385
386         jMenuAdd.add(jSeparator7);
387
388         jMenuItemDataType.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/datatype.png")));
389         jMenuItemDataType.setText("Datatype");
390         jMenuItemDataType.addActionListener(new java.awt.event.ActionListener JavaDoc() {
391             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
392                 jMenuItemDatasourcejMenuItemDataSourceActionPerformed(evt);
393             }
394         });
395
396         jMenuAdd.add(jMenuItemDataType);
397
398         jMenuItemListOfValues.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/lov.png")));
399         jMenuItemListOfValues.setText("List of values");
400         jMenuItemListOfValues.addActionListener(new java.awt.event.ActionListener JavaDoc() {
401             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
402                 jMenuItemDataTypejMenuItemDatasourcejMenuItemDataSourceActionPerformed(evt);
403             }
404         });
405
406         jMenuAdd.add(jMenuItemListOfValues);
407
408         jMenuItemQuery.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/query.png")));
409         jMenuItemQuery.setText("Query");
410         jMenuItemQuery.addActionListener(new java.awt.event.ActionListener JavaDoc() {
411             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
412                 jMenuItemQueryActionPerformed(evt);
413             }
414         });
415
416         jMenuAdd.add(jMenuItemQuery);
417
418         jMenuItemInputControl.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/inputcontrol.png")));
419         jMenuItemInputControl.setText("Input control");
420         jMenuItemInputControl.addActionListener(new java.awt.event.ActionListener JavaDoc() {
421             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
422                 jMenuItemInputControlActionPerformed(evt);
423             }
424         });
425
426         jMenuAdd.add(jMenuItemInputControl);
427
428         jPopupMenuServer.add(jMenuAdd);
429
430         jPopupMenuServer.add(jSeparator1);
431
432         jMenuItemLogin.setText("Login");
433         jMenuItemLogin.addActionListener(new java.awt.event.ActionListener JavaDoc() {
434             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
435                 jMenuItemLoginActionPerformed(evt);
436             }
437         });
438
439         jPopupMenuServer.add(jMenuItemLogin);
440
441         jMenuItemNewServer.setText("New server");
442         jMenuItemNewServer.addActionListener(new java.awt.event.ActionListener JavaDoc() {
443             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
444                 jMenuItemNewServerActionPerformed(evt);
445             }
446         });
447
448         jPopupMenuServer.add(jMenuItemNewServer);
449
450         jMenuItemServerSettings.setText("Server settings");
451         jMenuItemServerSettings.setEnabled(false);
452         jMenuItemServerSettings.addActionListener(new java.awt.event.ActionListener JavaDoc() {
453             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
454                 jMenuItemServerSettingsActionPerformed(evt);
455             }
456         });
457
458         jPopupMenuServer.add(jMenuItemServerSettings);
459
460         jMenuItemServerDelete.setText("Delete server");
461         jMenuItemServerDelete.setEnabled(false);
462         jMenuItemServerDelete.addActionListener(new java.awt.event.ActionListener JavaDoc() {
463             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
464                 jMenuItemServerDeleteActionPerformed(evt);
465             }
466         });
467
468         jPopupMenuServer.add(jMenuItemServerDelete);
469
470         jPopupMenuServer.add(jSeparator2);
471
472         jMenuItemRefresh.setText("Refresh");
473         jMenuItemRefresh.addActionListener(new java.awt.event.ActionListener JavaDoc() {
474             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
475                 jMenuItemRefreshActionPerformed(evt);
476             }
477         });
478
479         jPopupMenuServer.add(jMenuItemRefresh);
480
481         jMenuItemRefreshContent.setText("Refresh content");
482         jMenuItemRefreshContent.addActionListener(new java.awt.event.ActionListener JavaDoc() {
483             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
484                 jMenuItemRefreshContentActionPerformed(evt);
485             }
486         });
487
488         jPopupMenuServer.add(jMenuItemRefreshContent);
489
490         jMenuItemProperties.setText("Properties");
491         jMenuItemProperties.addActionListener(new java.awt.event.ActionListener JavaDoc() {
492             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
493                 jMenuItemPropertiesActionPerformed(evt);
494             }
495         });
496
497         jPopupMenuServer.add(jMenuItemProperties);
498
499         jMenuItemLocalInputControl.setText("Create a local input control");
500         jMenuItemLocalInputControl.addActionListener(new java.awt.event.ActionListener JavaDoc() {
501             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
502                 jMenuItemLocalInputControlActionPerformed(evt);
503             }
504         });
505
506         jPopupMenuRUInputControls.add(jMenuItemLocalInputControl);
507
508         jMenuItemLinkInputControl.setText("Link an existing input control");
509         jMenuItemLinkInputControl.addActionListener(new java.awt.event.ActionListener JavaDoc() {
510             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
511                 jMenuItemLinkInputControlActionPerformed(evt);
512             }
513         });
514
515         jPopupMenuRUInputControls.add(jMenuItemLinkInputControl);
516
517         setLayout(new java.awt.BorderLayout JavaDoc());
518
519         jButtonAddServer.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/server_add.png")));
520         jButtonAddServer.setText("\n");
521         jButtonAddServer.setToolTipText("Add new server");
522         jButtonAddServer.addActionListener(new java.awt.event.ActionListener JavaDoc() {
523             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
524                 jButtonAddServerActionPerformed(evt);
525             }
526         });
527
528         jToolBar1.add(jButtonAddServer);
529
530         jButtonNewReportUnit.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/publish.png")));
531         jButtonNewReportUnit.setToolTipText("Create a new Report Unit");
532         jButtonNewReportUnit.setEnabled(false);
533         jButtonNewReportUnit.addActionListener(new java.awt.event.ActionListener JavaDoc() {
534             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
535                 jButtonPublishReportActionPerformed1(evt);
536             }
537         });
538
539         jToolBar1.add(jButtonNewReportUnit);
540
541         jButtonSaveJrxml.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/upload_jrxml.png")));
542         jButtonSaveJrxml.setToolTipText("Save jrxml");
543         jButtonSaveJrxml.setEnabled(false);
544         jButtonSaveJrxml.addActionListener(new java.awt.event.ActionListener JavaDoc() {
545             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
546                 jButtonSaveJrxmlActionPerformed(evt);
547             }
548         });
549
550         jToolBar1.add(jButtonSaveJrxml);
551
552         jButtonRunReport.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/run_report.png")));
553         jButtonRunReport.setToolTipText("Run Report Unit");
554         jButtonRunReport.setEnabled(false);
555         jButtonRunReport.addActionListener(new java.awt.event.ActionListener JavaDoc() {
556             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
557                 jButtonRunReportActionPerformed(evt);
558             }
559         });
560
561         jToolBar1.add(jButtonRunReport);
562
563         add(jToolBar1, java.awt.BorderLayout.NORTH);
564
565         jTreeRepository.setRootVisible(false);
566         jTreeRepository.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener JavaDoc() {
567             public void valueChanged(javax.swing.event.TreeSelectionEvent JavaDoc evt) {
568                 jTreeRepositoryValueChanged(evt);
569             }
570         });
571         jTreeRepository.addMouseListener(new java.awt.event.MouseAdapter JavaDoc() {
572             public void mouseClicked(java.awt.event.MouseEvent JavaDoc evt) {
573                 jTreeRepositoryMouseClicked(evt);
574             }
575         });
576
577         jScrollPane1.setViewportView(jTreeRepository);
578
579         add(jScrollPane1, java.awt.BorderLayout.CENTER);
580
581     }// </editor-fold>//GEN-END:initComponents
582

583     private void jMenuItemQueryActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemQueryActionPerformed
584
newResource(ResourceDescriptor.TYPE_QUERY);
585     }//GEN-LAST:event_jMenuItemQueryActionPerformed
586

587     private void jMenuItemRunRUActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemRunRUActionPerformed
588

589         jButtonRunReportActionPerformed(evt);
590     }//GEN-LAST:event_jMenuItemRunRUActionPerformed
591

592     private void jButtonRunReportActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonRunReportActionPerformed
593

594          TreePath JavaDoc path = jTreeRepository.getSelectionPath();
595          if (path == null) return;
596          DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
597          
598          RepositoryReportUnit reportUnit = getParentReportUnit(selectedNode);
599          if ( reportUnit != null)
600          {
601              JServer server = reportUnit.getServer();
602              LogTextArea lta = MainFrame.getMainInstance().getLogPane().createNewLog();
603              lta.setTitle("Running " + reportUnit.getDescriptor().getName());
604              MainFrame.getMainInstance().getLogPane().setActiveLog( lta );
605              
606              try {
607
608                 List JavaDoc list = server.getWSClient().list( reportUnit.getDescriptor() );
609
610                 String JavaDoc dsUri = null;
611                 
612                 List JavaDoc inputcontrols = new java.util.ArrayList JavaDoc();
613                 // get input controls...
614
for (int i=0; i<list.size(); ++i)
615                 {
616                     ResourceDescriptor sub_rd = (ResourceDescriptor)list.get(i);
617                     if (sub_rd.getWsType().equals( ResourceDescriptor.TYPE_INPUT_CONTROL))
618                     {
619                         inputcontrols.add(sub_rd);
620                     }
621                     else if (sub_rd.getWsType().equals(ResourceDescriptor.TYPE_DATASOURCE))
622                     {
623                             dsUri = sub_rd.getReferenceUri();
624                     }
625                     else if ( RepositoryExplorer.isDataSource( sub_rd))
626                     {
627                             dsUri = sub_rd.getUriString();
628                     }
629                 }
630                 
631                
632                 
633                 for (int i=0; i<inputcontrols.size(); ++i)
634                 {
635                         ResourceDescriptor ic = (ResourceDescriptor)inputcontrols.get(i);
636                 
637                         System.out.println("Got: " + ic.getName() + " " + ic.getControlType());
638                         if (ic.getControlType() == ResourceDescriptor.IC_TYPE_SINGLE_SELECT_QUERY)
639                         {
640                             inputcontrols.remove(ic);
641                             // Ask to add values to the control....
642
java.util.List JavaDoc args = new java.util.ArrayList JavaDoc();
643                             args.add(new Argument( Argument.IC_GET_QUERY_DATA, dsUri));
644                             ic = server.getWSClient().get(ic, null, args);
645                             
646                             inputcontrols.add(ic);
647                         }
648                 }
649                 java.util.Map JavaDoc map = null;
650                 if (inputcontrols.size() > 0)
651                 {
652                     ReportUnitRunDialog rurd = new ReportUnitRunDialog(MainFrame.getMainInstance(), true);
653                     rurd.setServer(server);
654                     rurd.setInputControls( inputcontrols );
655
656                     rurd.setVisible(true);
657                     if (rurd.getDialogResult() == JOptionPane.OK_OPTION)
658                     {
659                         map = rurd.getParametersValues();
660                     }
661                     else
662                     {
663                         return;
664                     }
665                 }
666                 else
667                 {
668                     map = new java.util.HashMap JavaDoc();
669                 }
670                 
671                 
672                 ReportRunner rr = new ReportRunner();
673                 rr.setLta( lta );
674                 rr.setMap( map );
675                 rr.setReportUnit( reportUnit );
676                 rr.setServer( server );
677                 
678                 Thread JavaDoc t = new Thread JavaDoc(rr);
679                 t.start();
680                 
681              } catch (Exception JavaDoc ex)
682              {
683                 //JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage());
684
StringWriter JavaDoc sw = new StringWriter JavaDoc();
685                 ex.printStackTrace(new java.io.PrintWriter JavaDoc( sw ));
686                 sw.flush();
687                 lta.logOnConsole( sw.toString(), false);
688                 ex.printStackTrace();
689              }
690              finally
691              {
692                  lta.setRemovable(true);
693              }
694          
695          }
696     }//GEN-LAST:event_jButtonRunReportActionPerformed
697

698     private void jMenuItemLinkInputControlActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemLinkInputControlActionPerformed
699

700         // In this case we choose an input control from the repository....
701
ResourceChooser rc = new ResourceChooser();
702         
703         TreePath JavaDoc path = jTreeRepository.getSelectionPath();
704         if (path == null) return;
705         DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
706         
707         //selectedNode.removeAllChildren();
708
JServer server = null;
709         
710         String JavaDoc reportUnitUri = null;
711         
712         if ( selectedNode.getUserObject() instanceof ControlsSet)
713         {
714             RepositoryFolder rf = ((ControlsSet)selectedNode.getUserObject()).getReportUnit();
715             rc.setServer( rf.getServer() );
716             reportUnitUri = rf.getDescriptor().getUriString();
717             
718             if (rc.showDialog(this, null) == JOptionPane.OK_OPTION)
719             {
720                 ResourceDescriptor rd = rc.getSelectedDescriptor();
721                 if (rd == null || rd.getUriString() == null)
722                 {
723                     return;
724                 }
725                 
726                 if (!rd.getWsType().equals( ResourceDescriptor.TYPE_INPUT_CONTROL))
727                 {
728                     JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"" + rd.getName() + " is not an Input Control!","",JOptionPane.ERROR_MESSAGE);
729                     return;
730                 }
731                 
732                 ResourceDescriptor newRd = new ResourceDescriptor();
733                 newRd.setWsType( ResourceDescriptor.TYPE_INPUT_CONTROL);
734                 newRd.setIsReference(true);
735                 newRd.setReferenceUri( rd.getUriString() );
736                 newRd.setIsNew(true);
737                 newRd.setUriString(reportUnitUri+"/<cotnrols>");
738                 try {
739                     newRd = rf.getServer().getWSClient().modifyReportUnitResource(reportUnitUri, newRd, null);
740                     
741                     addChild(selectedNode, rf.getServer(), newRd);
742                      
743                     if (!jTreeRepository.isExpanded(path))
744                     {
745                         jTreeRepository.expandPath(path);
746                     }
747                     jTreeRepository.updateUI();
748                 } catch (Exception JavaDoc ex)
749                 {
750                     JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage());
751                     ex.printStackTrace();
752                 }
753             }
754
755         }
756         
757     }//GEN-LAST:event_jMenuItemLinkInputControlActionPerformed
758

759     private void jMenuItemLocalInputControlActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemLocalInputControlActionPerformed
760

761          newResource( ResourceDescriptor.TYPE_INPUT_CONTROL);
762         
763     }//GEN-LAST:event_jMenuItemLocalInputControlActionPerformed
764

765     private void jMenuItemInputControlActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemInputControlActionPerformed
766
newResource(ResourceDescriptor.TYPE_INPUT_CONTROL);
767     }//GEN-LAST:event_jMenuItemInputControlActionPerformed
768

769     private void jMenuItemDataTypejMenuItemDatasourcejMenuItemDataSourceActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemDataTypejMenuItemDatasourcejMenuItemDataSourceActionPerformed
770
newResource(ResourceDescriptor.TYPE_LOV);
771     }//GEN-LAST:event_jMenuItemDataTypejMenuItemDatasourcejMenuItemDataSourceActionPerformed
772

773     private void jMenuItemDatasourcejMenuItemDataSourceActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemDatasourcejMenuItemDataSourceActionPerformed
774
newResource(ResourceDescriptor.TYPE_DATA_TYPE);
775     }//GEN-LAST:event_jMenuItemDatasourcejMenuItemDataSourceActionPerformed
776

777     private void jMenuItemReferenceActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemReferenceActionPerformed
778

779         newResource(ResourceDescriptor.TYPE_REFERENCE);
780         
781     }//GEN-LAST:event_jMenuItemReferenceActionPerformed
782

783     private void jMenuItemDataSourceActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemDataSourceActionPerformed
784

785         newResource(ResourceDescriptor.TYPE_DATASOURCE);
786         
787     }//GEN-LAST:event_jMenuItemDataSourceActionPerformed
788

789     private void jMenuItemImportFontActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemImportFontActionPerformed
790

791          TreePath JavaDoc path = jTreeRepository.getSelectionPath();
792          if (path == null) return;
793          DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
794         
795          if ( selectedNode.getUserObject() instanceof RepositoryFile )
796          {
797             RepositoryFile repoFile = (RepositoryFile)selectedNode.getUserObject();
798             if (repoFile.getDescriptor().getWsType().equals(ResourceDescriptor.TYPE_FONT ))
799             {
800                 Vector JavaDoc currentFonts = MainFrame.getMainInstance().getTtfFonts();
801                 for (int i=0; i<currentFonts.size(); ++i)
802                 {
803                     IRFont irfont = (IRFont)currentFonts.elementAt(i);
804                     if ( (irfont.getFile()+"").equals("repo:" + repoFile.getDescriptor().getUriString()) )
805                     {
806                         return; // Font already present...
807
}
808                 }
809                 
810                 // Font not yet present...
811
try {
812                     String JavaDoc fontFile = repoFile.getFile();
813                     if (fontFile != null)
814                     {
815
816                             IRFont newFont = new IRFont( it.businesslogic.ireport.FontListLoader.loadFont(fontFile), "repo:" + repoFile.getDescriptor().getUriString());
817                             MainFrame.getMainInstance().getTtfFonts().add(newFont);
818                             MainFrame.getMainInstance().updateFontsLists();
819
820                     }
821                 } catch (Exception JavaDoc ex)
822                     {
823                         JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage());
824                         ex.printStackTrace();
825                     }
826             }
827          }
828         
829     }//GEN-LAST:event_jMenuItemImportFontActionPerformed
830

831     private void jMenuItemConnectionActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemConnectionActionPerformed
832

833         TreePath JavaDoc path = jTreeRepository.getSelectionPath();
834          if (path == null) return;
835          DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
836         
837          if ( selectedNode.getUserObject() instanceof RepositoryFile )
838          {
839              RepositoryFile rf = (RepositoryFile)selectedNode.getUserObject();
840              if (rf.getDescriptor().getWsType().equals( ResourceDescriptor.TYPE_DATASOURCE_JDBC))
841              {
842                  Vector JavaDoc v = MainFrame.getMainInstance().getConnections();
843                  
844                  int index = -1;
845                  for (int i=0; i<v.size(); ++i)
846                  {
847                      it.businesslogic.ireport.IReportConnection con = (it.businesslogic.ireport.IReportConnection)v.elementAt(i);
848                      if (con.getName().equals( rf.getDescriptor().getLabel() ))
849                      {
850                          if (JOptionPane.showConfirmDialog(this,"A connection named " + rf.getDescriptor().getLabel() + " is already present.\nWould you like to replace the existing connection?") != JOptionPane.OK_OPTION)
851                          {
852                              return;
853                          }
854                          else
855                          {
856                              index = i;
857                              break;
858                          }
859                      }
860                  }
861
862                  it.businesslogic.ireport.connection.JDBCConnection jdbcConnection = new it.businesslogic.ireport.connection.JDBCConnection();
863                  jdbcConnection.setName(rf.getDescriptor().getLabel() );
864                  jdbcConnection.setUrl( rf.getDescriptor().getConnectionUrl() );
865                  jdbcConnection.setJDBCDriver( rf.getDescriptor().getDriverClass() );
866                  jdbcConnection.setUsername( rf.getDescriptor().getUsername() );
867                  jdbcConnection.setPassword( rf.getDescriptor().getPassword() );
868
869                  if (index >= 0)
870                  {
871                      MainFrame.getMainInstance().getConnections().setElementAt(jdbcConnection, index);
872                  }
873                  else
874                  {
875                     MainFrame.getMainInstance().getConnections().add(jdbcConnection);
876                  }
877                  MainFrame.getMainInstance().setActiveConnection( jdbcConnection );
878              }
879          }
880         
881     }//GEN-LAST:event_jMenuItemConnectionActionPerformed
882

883     private void jMenuItemReportUnitActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemReportUnitActionPerformed
884
jButtonPublishReportActionPerformed1(evt);
885     }//GEN-LAST:event_jMenuItemReportUnitActionPerformed
886

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

889         //1. Check if the selected element is a jrxml...
890
TreePath JavaDoc path = jTreeRepository.getSelectionPath();
891          if (path == null) return;
892          DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
893         
894          if ( selectedNode.getUserObject() instanceof RepositoryFolder )
895          {
896              RepositoryFolder rf = (RepositoryFolder)selectedNode.getUserObject();
897              
898              String JavaDoc reportUnitUri = null;
899                      
900              String JavaDoc msg = "Are you sure you want to remove the folder '" + rf.getDescriptor().getLabel() +"'\n and all its contents?";
901              
902              // Check if we are inside a report unit...
903
RepositoryReportUnit reportUnit = null;
904             for (int i=path.getPathCount()-2; i>0; --i)
905             {
906                 DefaultMutableTreeNode JavaDoc ancestorNode = (DefaultMutableTreeNode JavaDoc)path.getPath()[i];
907                 if (ancestorNode.getUserObject() instanceof RepositoryReportUnit)
908                 {
909                     reportUnit = (RepositoryReportUnit)ancestorNode.getUserObject();
910                     break;
911                 }
912             }
913                     
914             if (reportUnit != null)
915             {
916                 reportUnitUri = reportUnit.getDescriptor().getUriString();
917             }
918              
919              
920              if (rf.getDescriptor().getWsType().equals(ResourceDescriptor.TYPE_FOLDER))
921              {
922                 msg = "Are you sure you want to remove the folder '" + rf.getDescriptor().getLabel() +"'\n and all its contents?";
923              }
924              else if (rf.getDescriptor().getWsType().equals(ResourceDescriptor.TYPE_REPORTUNIT))
925              {
926                  msg = "Are you sure you want to remove the report unit '" + rf.getDescriptor().getLabel() +"'\n and all its contents?";
927              }
928             
929             System.out.println( rf.getDescriptor().getWsType() );
930              if ( isDataSource( rf.getDescriptor() ) )
931              {
932                 if ( ((DefaultMutableTreeNode JavaDoc)selectedNode.getParent()).getUserObject() instanceof ResourcesSet)
933                 {
934                     JOptionPane.showMessageDialog(MainFrame.getMainInstance(),"You can not delete the report datasource.\nUse Report Unit properties menu item to modify the datasource type.",
935                             "",JOptionPane.ERROR_MESSAGE);
936                     return;
937                 }
938              }
939              else
940              {
941                  
942                  msg = "Are you sure you want to remove the resource '" + rf.getDescriptor().getLabel() +"'?";
943              }
944              
945              if (JOptionPane.showConfirmDialog(this,msg) == JOptionPane.YES_OPTION)
946              {
947                  try {
948                         
949                         rf.getServer().getWSClient().delete(rf.getDescriptor(), reportUnitUri);
950                     
951                         DefaultMutableTreeNode JavaDoc parent = (DefaultMutableTreeNode JavaDoc)selectedNode.getParent();
952                         if (parent != null)
953                         {
954                             parent.remove(selectedNode);
955                             jTreeRepository.updateUI();
956                         }
957                         
958                 } catch (Exception JavaDoc ex)
959                 {
960                     JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage());
961                     ex.printStackTrace();
962                 }
963              }
964          }
965     }//GEN-LAST:event_jMenuItemDeleteActionPerformed
966

967     private void jMenuItemFontActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemFontActionPerformed
968
newResource(ResourceDescriptor.TYPE_FONT);
969     }//GEN-LAST:event_jMenuItemFontActionPerformed
970

971     private void jMenuItemJarActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemJarActionPerformed
972
newResource(ResourceDescriptor.TYPE_CLASS_JAR);
973     }//GEN-LAST:event_jMenuItemJarActionPerformed
974

975     private void jMenuItemJrxmlActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemJrxmlActionPerformed
976
newResource(ResourceDescriptor.TYPE_JRXML);
977     }//GEN-LAST:event_jMenuItemJrxmlActionPerformed
978

979     private void jMenuItemBundleActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemBundleActionPerformed
980
newResource(ResourceDescriptor.TYPE_RESOURCE_BUNDLE);
981     }//GEN-LAST:event_jMenuItemBundleActionPerformed
982

983     private void jMenuItemImageActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemImageActionPerformed
984
newResource(ResourceDescriptor.TYPE_IMAGE);
985     }//GEN-LAST:event_jMenuItemImageActionPerformed
986

987     private void jMenuItemFolderActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemFolderActionPerformed
988

989         newResource(ResourceDescriptor.TYPE_FOLDER);
990         
991     }//GEN-LAST:event_jMenuItemFolderActionPerformed
992

993     private void jButtonPublishReportActionPerformed1(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonPublishReportActionPerformed1
994

995         //1. Check if the selected element is a jrxml...
996
TreePath JavaDoc path = jTreeRepository.getSelectionPath();
997          if (path == null) return;
998          DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
999         
1000         String JavaDoc parentFolder = "/";
1001         JServer server = null;
1002         if ( selectedNode.getUserObject() instanceof JServer )
1003         {
1004             server = (JServer)selectedNode.getUserObject();
1005         }
1006         else if ( selectedNode.getUserObject() instanceof RepositoryFolder )
1007         {
1008             RepositoryFolder rf = (RepositoryFolder)selectedNode.getUserObject();
1009             parentFolder = rf.getDescriptor().getUriString();
1010             server = rf.getServer();
1011         }
1012         
1013         
1014         
1015         
1016         List JavaDoc datasources = null;
1017         try {
1018               datasources = server.getWSClient().listDatasources();
1019         } catch (Exception JavaDoc ex)
1020         {
1021            JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error getting the list of available datasources:\n" + ex.getMessage());
1022            ex.printStackTrace();
1023            return;
1024         }
1025         
1026         if (datasources == null || datasources.size() == 0)
1027         {
1028             JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"No datasources was found on the server.\nPlease create a new datasource on the server before create a report unit.");
1029             return;
1030         }
1031         
1032         NewReportUnitWizard sr = new NewReportUnitWizard();
1033         sr.setParentFolder(parentFolder);
1034         sr.setDatasources(datasources);
1035         sr.setServer(server);
1036         sr.startWizard();
1037         
1038         ResourceDescriptor rd = sr.getNewResourceDescriptor();
1039         if (rd != null)
1040         {
1041             addChild(selectedNode, server, rd);
1042             jTreeRepository.updateUI();
1043         }
1044         
1045         /*
1046         ReportUnitDialog nrud = new ReportUnitDialog(MainFrame.getMainInstance(), true);
1047         nrud.setParentFolder(parentFolder);
1048         nrud.setDatasources(datasources);
1049         nrud.setServer(server);
1050         nrud.setVisible(true);
1051         
1052         if (nrud.getDialogResult() == JOptionPane.OK_OPTION)
1053         {
1054             addChild(selectedNode, server, nrud.getNewResourceDescriptor());
1055             jTreeRepository.updateUI();
1056         }
1057         */

1058         
1059    }//GEN-LAST:event_jButtonPublishReportActionPerformed1
1060

1061    private void jButtonSaveJrxmlActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonSaveJrxmlActionPerformed
1062

1063        //1. Check if the selected element is a jrxml...
1064
TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1065         if (path == null) return;
1066         DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1067        
1068         if ( selectedNode.getUserObject() instanceof RepositoryJrxmlFile )
1069         {
1070            RepositoryJrxmlFile rf = (RepositoryJrxmlFile)selectedNode.getUserObject();
1071            
1072            if (rf.getReportFrame() != null)
1073            {
1074                String JavaDoc fileToUpdate = rf.getReportFrame().getReport().getFilename();
1075                try {
1076                    
1077                    // Check if we are inside a report unit...
1078
RepositoryReportUnit reportUnit = null;
1079                    for (int i=path.getPathCount()-1; i>0; --i)
1080                    {
1081                        DefaultMutableTreeNode JavaDoc ancestorNode = (DefaultMutableTreeNode JavaDoc)path.getPath()[i];
1082                        if (ancestorNode.getUserObject() instanceof RepositoryReportUnit)
1083                        {
1084                            reportUnit = (RepositoryReportUnit)ancestorNode.getUserObject();
1085                            break;
1086                        }
1087                    }
1088                    
1089                    if (reportUnit != null)
1090                    {
1091                        if (rf.validateUrls(reportUnit.getServer(), reportUnit))
1092                        {
1093                            rf.getServer().getWSClient().modifyReportUnitResource(reportUnit.getDescriptor().getUriString(), rf.getDescriptor(), new File(fileToUpdate) );
1094                        }
1095                        else
1096                        {
1097                            JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Operation canceled by the user","Operation result", JOptionPane.WARNING_MESSAGE);
1098                            return;
1099                        }
1100                    }
1101                    else
1102                    {
1103                        rf.getServer().getWSClient().modifyReportUnitResource( null, rf.getDescriptor(), new File(fileToUpdate) );
1104                    }
1105                    JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Jrxml file succesfully updated.","Operation result", JOptionPane.INFORMATION_MESSAGE);
1106                } catch (Exception JavaDoc ex)
1107                {
1108                    JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage(),"Operation result", JOptionPane.ERROR_MESSAGE);
1109                    ex.printStackTrace();
1110                }
1111                
1112            }
1113         
1114         
1115         }
1116        
1117    }//GEN-LAST:event_jButtonSaveJrxmlActionPerformed
1118

1119    private void jTreeRepositoryValueChanged(javax.swing.event.TreeSelectionEvent JavaDoc evt) {//GEN-FIRST:event_jTreeRepositoryValueChanged
1120
updateToolBar();
1121    }//GEN-LAST:event_jTreeRepositoryValueChanged
1122

1123    private void jMenuItemEditJRXMLActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemEditJRXMLActionPerformed
1124

1125        TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1126        if (path == null) return;
1127        DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1128        
1129        if ( selectedNode.getUserObject() instanceof RepositoryJrxmlFile )
1130        {
1131            RepositoryJrxmlFile rf = (RepositoryJrxmlFile)selectedNode.getUserObject();
1132            
1133            try {
1134               rf.editFile();
1135               jButtonSaveJrxml.setEnabled(true);
1136            } catch (Exception JavaDoc ex)
1137            {
1138                JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage());
1139                ex.printStackTrace();
1140            }
1141        }
1142        
1143    }//GEN-LAST:event_jMenuItemEditJRXMLActionPerformed
1144

1145    private void jMenuItemGetActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemGetActionPerformed
1146

1147        TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1148        if (path == null) return;
1149        DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1150        
1151        if ( selectedNode.getUserObject() instanceof RepositoryFile )
1152        {
1153            RepositoryFile rf = (RepositoryFile)selectedNode.getUserObject();
1154            JFileChooser JavaDoc jfc = new JFileChooser JavaDoc();
1155            jfc.setSelectedFile(new File( rf.getDescriptor().getName()));
1156        
1157            if (jfc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
1158            {
1159                try {
1160                    rf.getServer().getWSClient().get( rf.getDescriptor(), jfc.getSelectedFile() );
1161                } catch (Exception JavaDoc ex)
1162                {
1163                    JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage());
1164                    ex.printStackTrace();
1165                }
1166            }
1167        }
1168    }//GEN-LAST:event_jMenuItemGetActionPerformed
1169

1170    private void jMenuItemRefreshContentActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemRefreshContentActionPerformed
1171

1172        TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1173        if (path == null) return;
1174        DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1175        
1176        
1177        boolean isLoaded = false;
1178        String JavaDoc uri = "/";
1179        JServer server = null;
1180        if (selectedNode.getUserObject() instanceof JServer)
1181        {
1182            server = (JServer)selectedNode.getUserObject();
1183            isLoaded = server.isLoaded();
1184        }
1185        else if ( selectedNode.getUserObject() instanceof RepositoryFolder)
1186        {
1187            RepositoryFolder rf = (RepositoryFolder)selectedNode.getUserObject();
1188            isLoaded = rf.isLoaded();
1189            uri = rf.getDescriptor().getUriString();
1190            server = rf.getServer();
1191        }
1192        
1193        if (!isLoaded)
1194        {
1195            selectedNode.removeAllChildren();
1196            jMenuItemExploreActionPerformed(evt);
1197        }
1198        else
1199        {
1200            try {
1201                // Check child by child...
1202
ResourceDescriptor descriptor = new ResourceDescriptor();
1203                descriptor.setWsType( descriptor.TYPE_FOLDER);
1204                descriptor.setUriString(uri);
1205
1206                if ( selectedNode.getUserObject() instanceof RepositoryReportUnit)
1207                {
1208                    descriptor.setWsType( descriptor.TYPE_REPORTUNIT );
1209                }
1210                
1211                List JavaDoc list = server.getWSClient().list( descriptor);
1212
1213                //addChilds(selectedNode, server, list);
1214

1215                if (descriptor.getWsType().equals( descriptor.TYPE_REPORTUNIT ))
1216                {
1217                    updateReportUnitNodeContent(selectedNode, list);
1218                }
1219                else
1220                {
1221                    List JavaDoc updatedNodes = new java.util.ArrayList JavaDoc();
1222                    for (int i=0; i<list.size(); ++i)
1223                    {
1224                        ResourceDescriptor rd = (ResourceDescriptor)list.get(i);
1225
1226                        // Look for this rd in the node children
1227
boolean found = false;
1228                        for (int j=0; j<selectedNode.getChildCount(); ++j)
1229                        {
1230                            RepositoryFolder rf = (RepositoryFolder)((DefaultMutableTreeNode JavaDoc)selectedNode.getChildAt(j)).getUserObject();
1231                            if (rf.getDescriptor().getUriString().equals(rd.getUriString()))
1232                            {
1233                                rf.setDescriptor(rd);
1234                                updatedNodes.add(selectedNode.getChildAt(j));
1235                                found = true;
1236                                break;
1237                            }
1238                        }
1239
1240                        if (!found)
1241                        {
1242                            DefaultMutableTreeNode JavaDoc newNode = addChild(selectedNode, server, rd);
1243                            System.out.println("Added node for " + rd.getUriString() + " " + newNode);
1244                            updatedNodes.add( newNode );
1245                        }
1246                    }
1247                    
1248
1249                    // Remove children that no longer exist
1250
for (int j=0; j<selectedNode.getChildCount(); ++j)
1251                    {
1252                        if (!updatedNodes.contains(selectedNode.getChildAt(j)))
1253                        {
1254                            selectedNode.remove(j);
1255                            j--;
1256                        }
1257                    }
1258                }
1259                
1260                if (list.size() > 0)
1261                {
1262                    if (!jTreeRepository.isExpanded(path))
1263                    {
1264                        jTreeRepository.expandPath(path);
1265                    }
1266                }
1267                jTreeRepository.updateUI();
1268                
1269            } catch (Exception JavaDoc ex)
1270                {
1271                    JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage());
1272                    ex.printStackTrace();
1273                }
1274            
1275        }
1276    }//GEN-LAST:event_jMenuItemRefreshContentActionPerformed
1277

1278    private void jMenuItemRefreshActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemRefreshActionPerformed
1279

1280        TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1281        if (path == null) return;
1282        DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1283       
1284        if ( selectedNode.getUserObject() instanceof JServer)
1285        {
1286            return;
1287        }
1288        else if ( selectedNode.getUserObject() instanceof RepositoryFolder)
1289        {
1290            SwingUtilities.invokeLater(new Runnable JavaDoc() {
1291            public void run() {
1292
1293                try {
1294                    Thread.currentThread().setContextClassLoader( MainFrame.getMainInstance().getReportClassLoader());
1295                    jTreeRepository.setCursor( new Cursor JavaDoc(Cursor.WAIT_CURSOR) );
1296
1297                    TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1298                    DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1299                    
1300                    
1301        
1302                    if ( selectedNode.getUserObject() instanceof RepositoryFolder)
1303                    {
1304                        RepositoryFolder rf = (RepositoryFolder)selectedNode.getUserObject();
1305                        JServer server = rf.getServer();
1306                        WSClient wsclient = server.getWSClient();
1307                        ResourceDescriptor rd = wsclient.get(rf.getDescriptor(), null );
1308                        rf.setDescriptor(rd);
1309                        jTreeRepository.updateUI();
1310                    }
1311                    
1312                } catch (Exception JavaDoc ex)
1313                {
1314                    JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage());
1315                    ex.printStackTrace();
1316                }
1317                finally
1318                {
1319                    jTreeRepository.setCursor(null);
1320                }
1321            }
1322        });
1323        }
1324        
1325        
1326    }//GEN-LAST:event_jMenuItemRefreshActionPerformed
1327

1328    private void jMenuItemPropertiesActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemPropertiesActionPerformed
1329

1330        TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1331        if (path == null) return;
1332        DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1333       
1334        if ( selectedNode.getUserObject() instanceof JServer)
1335        {
1336            jMenuItemServerSettingsActionPerformed(evt);
1337        }
1338        else if (selectedNode.getUserObject() instanceof RepositoryReportUnit)
1339        {
1340            RepositoryReportUnit rf = (RepositoryReportUnit)selectedNode.getUserObject();
1341            ReportUnitDialog rrd = new ReportUnitDialog(MainFrame.getMainInstance(), true);
1342            rrd.setParentFolder( rf.getDescriptor().getParentFolder() );
1343            rrd.setServer(rf.getServer());
1344            
1345            rrd.setControlsSupportActive(false);
1346            rrd.setResourcesSupportActive(false);
1347            
1348            List JavaDoc datasources = null;
1349            try {
1350                   datasources = rf.getServer().getWSClient().listDatasources();
1351                   rrd.setDatasources(datasources);
1352            } catch (Exception JavaDoc ex)
1353            {
1354               JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error getting the list of available datasources:\n" + ex.getMessage());
1355               ex.printStackTrace();
1356            }
1357
1358            rrd.setResource(rf);
1359            rrd.setVisible( true );
1360
1361            if (rrd.getDialogResult() == JOptionPane.OK_OPTION)
1362            {
1363                jTreeRepository.updateUI();
1364            }
1365        }
1366        else if ( selectedNode.getUserObject() instanceof RepositoryFolder)
1367        {
1368            RepositoryFolder rf = (RepositoryFolder)selectedNode.getUserObject();
1369            
1370            if (rf.getDescriptor().getWsType().equals( ResourceDescriptor.TYPE_DATASOURCE_JDBC) ||
1371                rf.getDescriptor().getWsType().equals( ResourceDescriptor.TYPE_DATASOURCE_JNDI) ||
1372                rf.getDescriptor().getWsType().equals( ResourceDescriptor.TYPE_DATASOURCE_BEAN))
1373            {
1374                DataSourceDialog dsd = new DataSourceDialog(MainFrame.getMainInstance(), true);
1375                dsd.setParentFolder( rf.getDescriptor().getParentFolder() );
1376                dsd.setServer(rf.getServer());
1377                dsd.setResource(rf);
1378                dsd.setVisible( true );
1379
1380                if (dsd.getDialogResult() == JOptionPane.OK_OPTION)
1381                {
1382                    jTreeRepository.updateUI();
1383                }
1384
1385            }
1386            else if (rf.getDescriptor().getWsType().equals( ResourceDescriptor.TYPE_REFERENCE))
1387            {
1388                ResourceReferenceDialog rrd = new ResourceReferenceDialog(MainFrame.getMainInstance(), true);
1389                rrd.setParentFolder( rf.getDescriptor().getParentFolder() );
1390                rrd.setServer(rf.getServer());
1391                rrd.setResource(rf);
1392                rrd.setVisible( true );
1393
1394                if (rrd.getDialogResult() == JOptionPane.OK_OPTION)
1395                {
1396                    jTreeRepository.updateUI();
1397                }
1398            }
1399            else if (rf.getDescriptor().getWsType().equals( ResourceDescriptor.TYPE_DATA_TYPE))
1400            {
1401                DataTypeDialog rrd = new DataTypeDialog(MainFrame.getMainInstance(), true);
1402                rrd.setParentFolder( rf.getDescriptor().getParentFolder() );
1403                rrd.setServer(rf.getServer());
1404                rrd.setResource(rf);
1405                rrd.setVisible( true );
1406
1407                if (rrd.getDialogResult() == JOptionPane.OK_OPTION)
1408                {
1409                    jTreeRepository.updateUI();
1410                }
1411            }
1412            else if (rf.getDescriptor().getWsType().equals( ResourceDescriptor.TYPE_LOV))
1413            {
1414                ListOfValuesDialog rrd = new ListOfValuesDialog(MainFrame.getMainInstance(), true);
1415                rrd.setParentFolder( rf.getDescriptor().getParentFolder() );
1416                rrd.setServer(rf.getServer());
1417                rrd.setResource(rf);
1418                rrd.setVisible( true );
1419
1420                if (rrd.getDialogResult() == JOptionPane.OK_OPTION)
1421                {
1422                    jTreeRepository.updateUI();
1423                }
1424            }
1425            else if (rf.getDescriptor().getWsType().equals( ResourceDescriptor.TYPE_QUERY))
1426            {
1427                QueryDialog rrd = new QueryDialog(MainFrame.getMainInstance(), true);
1428                rrd.setParentFolder( rf.getDescriptor().getParentFolder());
1429                rrd.setServer(rf.getServer());
1430                rrd.setResource(rf);
1431                rrd.setVisible( true );
1432
1433                if (rrd.getDialogResult() == JOptionPane.OK_OPTION)
1434                {
1435                    jTreeRepository.updateUI();
1436                }
1437            }
1438            else if (rf.getDescriptor().getWsType().equals( ResourceDescriptor.TYPE_INPUT_CONTROL))
1439            {
1440                InputControlDialog rrd = new InputControlDialog(MainFrame.getMainInstance(), true);
1441                rrd.setParentFolder( rf.getDescriptor().getParentFolder() );
1442                rrd.setServer(rf.getServer());
1443                rrd.setResource(rf);
1444                rrd.setVisible( true );
1445
1446                if (rrd.getDialogResult() == JOptionPane.OK_OPTION)
1447                {
1448                    jTreeRepository.updateUI();
1449                }
1450            }
1451            else
1452            {
1453               ObjectPropertiesDialog opd = new ObjectPropertiesDialog(MainFrame.getMainInstance(), true);
1454                opd.setResource( rf );
1455                opd.setVisible( true );
1456
1457                if (opd.getDialogResult() == JOptionPane.OK_OPTION)
1458                {
1459                    jTreeRepository.updateUI();
1460                }
1461            }
1462        }
1463
1464    }//GEN-LAST:event_jMenuItemPropertiesActionPerformed
1465

1466    private void jMenuItemLoginActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemLoginActionPerformed
1467

1468        // Explore...
1469
TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1470        if (path == null) return;
1471        DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1472        JServer server = null;
1473        
1474        if ( selectedNode.getUserObject() instanceof JServer)
1475        {
1476            server = (JServer)selectedNode.getUserObject();
1477        }
1478        else if ( selectedNode.getUserObject() instanceof RepositoryFolder)
1479        {
1480            server = ((RepositoryFolder)selectedNode.getUserObject()).getServer();
1481        }
1482            
1483        if (server == null) return;
1484        
1485        SwingUtilities.invokeLater(new Runnable JavaDoc() {
1486            public void run() {
1487
1488                try {
1489                    Thread.currentThread().setContextClassLoader( MainFrame.getMainInstance().getReportClassLoader());
1490                    jTreeRepository.setCursor( new Cursor JavaDoc(Cursor.WAIT_CURSOR) );
1491
1492                    TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1493                    DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1494                    
1495                    JServer server = null;
1496        
1497                    if ( selectedNode.getUserObject() instanceof JServer)
1498                    {
1499                        server = (JServer)selectedNode.getUserObject();
1500                    }
1501                    else if ( selectedNode.getUserObject() instanceof RepositoryFolder)
1502                    {
1503                        server = ((RepositoryFolder)selectedNode.getUserObject()).getServer();
1504                    }
1505                    
1506                    WSClient wsclient = server.getWSClient();
1507
1508                    //wsclient.login(server.getUsername(), server.getPassword() );
1509

1510                } catch (Exception JavaDoc ex)
1511                {
1512                    JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage());
1513                    ex.printStackTrace();
1514                }
1515                finally
1516                {
1517                    jTreeRepository.setCursor(null);
1518                }
1519            }
1520        });
1521    }//GEN-LAST:event_jMenuItemLoginActionPerformed
1522

1523    int nFont = 0;
1524    private void jMenuItemExploreActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemExploreActionPerformed
1525

1526        // Explore...
1527
TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1528        if (path == null) return;
1529        DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1530        
1531        if ( selectedNode.getUserObject() instanceof JServer)
1532        {
1533            JServer server = (JServer)selectedNode.getUserObject();
1534            if (!server.isLoaded())
1535            {
1536                SwingUtilities.invokeLater(new Runnable JavaDoc() {
1537                    public void run() {
1538
1539                        try {
1540                            Thread.currentThread().setContextClassLoader( MainFrame.getMainInstance().getReportClassLoader());
1541                            jTreeRepository.setCursor( new Cursor JavaDoc(Cursor.WAIT_CURSOR) );
1542                            
1543                            TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1544                            DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1545                            JServer server = (JServer)selectedNode.getUserObject();
1546
1547                            WSClient wsclient = server.getWSClient();
1548                            
1549                            String JavaDoc v = wsclient.getVersion();
1550                            if (v==null || v.compareTo( IRPlugin.REQUIRED_VERSION)<0)
1551                            {
1552                                JOptionPane.showMessageDialog(MainFrame.getMainInstance(),"Server not supported.\nMinimum version required: " +IRPlugin.REQUIRED_VERSION +"\nFound version: " + v);
1553                                return;
1554                            }
1555                                
1556                            //wsclient.login(server.getUsername(), server.getPassword() );
1557

1558                            ResourceDescriptor descriptor = new ResourceDescriptor();
1559                            descriptor.setWsType( descriptor.TYPE_FOLDER);
1560                            descriptor.setUriString("/");
1561                            
1562                            
1563                            
1564                            List JavaDoc list = wsclient.list( descriptor);
1565
1566                            addChilds(selectedNode, server, list);
1567                            
1568                            if (list.size() > 0)
1569                            {
1570                                if (!jTreeRepository.isExpanded(path))
1571                                {
1572                                    jTreeRepository.expandPath(path);
1573                                }
1574                                jTreeRepository.updateUI();
1575                            }
1576
1577                            server.setLoaded(true);
1578                        } catch (Exception JavaDoc ex)
1579                        {
1580                            JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage());
1581                            ex.printStackTrace();
1582                        }
1583                        finally
1584                        {
1585                            jTreeRepository.setCursor(null);
1586                        }
1587                    }
1588                });
1589            
1590            }
1591            
1592            
1593        }
1594        if ( selectedNode.getUserObject() instanceof RepositoryReportUnit)
1595        {
1596            RepositoryReportUnit reportUnit = (RepositoryReportUnit)selectedNode.getUserObject();
1597            if (!reportUnit.isLoaded())
1598            {
1599            
1600                SwingUtilities.invokeLater(new Runnable JavaDoc() {
1601                    public void run() {
1602
1603                        try {
1604                            Thread.currentThread().setContextClassLoader( MainFrame.getMainInstance().getReportClassLoader());
1605                            jTreeRepository.setCursor( new Cursor JavaDoc(Cursor.WAIT_CURSOR) );
1606                            
1607                            TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1608                            DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1609                            RepositoryReportUnit reportUnit = (RepositoryReportUnit)selectedNode.getUserObject();
1610                            JServer server = reportUnit.getServer();
1611
1612                            WSClient wsclient = server.getWSClient();
1613                            ResourceDescriptor descriptor = new ResourceDescriptor();
1614                            descriptor.setWsType( descriptor.TYPE_REPORTUNIT);
1615                            descriptor.setUriString(reportUnit.getDescriptor().getUriString());
1616                            Request req = new Request();
1617                            req.setOperationName( req.OPERATION_LIST);
1618                            req.setResourceDescriptor( descriptor);
1619                            
1620                            StringWriter JavaDoc xmlStringWriter = new StringWriter JavaDoc();
1621                            Marshaller.marshal(req, xmlStringWriter);
1622                            
1623                            List JavaDoc list = wsclient.list(xmlStringWriter.toString());
1624
1625                            //1. Find the datasource
1626
//2. Fing the main JRXML
1627
//3. Add controls... (exploded)
1628
//4. All reamining resources... (exploded)
1629
updateReportUnitNodeContent(selectedNode, list);
1630                            
1631                            
1632                            //addChilds(selectedNode, server, list);
1633

1634                            if (list.size() > 0)
1635                            {
1636                                if (!jTreeRepository.isExpanded(path))
1637                                {
1638                                    jTreeRepository.expandPath(path);
1639                                }
1640                                jTreeRepository.updateUI();
1641                            }
1642
1643                            reportUnit.setLoaded(true);
1644                        } catch (Exception JavaDoc ex)
1645                        {
1646                            JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage());
1647                            ex.printStackTrace();
1648                        }
1649                        finally
1650                        {
1651                            jTreeRepository.setCursor(null);
1652                        }
1653                    }
1654                });
1655            
1656            }
1657        }
1658        else if ( selectedNode.getUserObject() instanceof RepositoryFolder)
1659        {
1660            // Identify the server....
1661
RepositoryFolder folder = (RepositoryFolder)selectedNode.getUserObject();
1662            if (!folder.isLoaded())
1663            {
1664                 SwingUtilities.invokeLater(new Runnable JavaDoc() {
1665                    public void run() {
1666
1667                        try {
1668                            Thread.currentThread().setContextClassLoader( MainFrame.getMainInstance().getReportClassLoader());
1669                            jTreeRepository.setCursor( new Cursor JavaDoc(Cursor.WAIT_CURSOR) );
1670                            
1671                            TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1672                            DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1673                            RepositoryFolder folder = (RepositoryFolder)selectedNode.getUserObject();
1674                            
1675                            JServer server = folder.getServer();
1676                            
1677                            WSClient wsclient = server.getWSClient();
1678                            ResourceDescriptor descriptor = new ResourceDescriptor();
1679                            descriptor.setWsType( descriptor.TYPE_FOLDER);
1680                            descriptor.setUriString(folder.getDescriptor().getUriString());
1681                            Request req = new Request();
1682                            req.setOperationName( req.OPERATION_LIST);
1683                            req.setResourceDescriptor( descriptor);
1684                            
1685                            StringWriter JavaDoc xmlStringWriter = new StringWriter JavaDoc();
1686                            Marshaller.marshal(req, xmlStringWriter);
1687                            
1688                            List JavaDoc list = wsclient.list(xmlStringWriter.toString());
1689
1690                            addChilds(selectedNode, server, list);
1691                            
1692                            if (list.size() > 0)
1693                            {
1694                                if (!jTreeRepository.isExpanded(path))
1695                                {
1696                                    jTreeRepository.expandPath(path);
1697                                }
1698                                jTreeRepository.updateUI();
1699                            }
1700
1701                            folder.setLoaded(true);
1702                        } catch (Exception JavaDoc ex)
1703                        {
1704                            JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage());
1705                            ex.printStackTrace();
1706                        }
1707                        finally
1708                        {
1709                            jTreeRepository.setCursor(null);
1710                        }
1711                    }
1712                });
1713            }
1714        }
1715        
1716        
1717    }//GEN-LAST:event_jMenuItemExploreActionPerformed
1718

1719    private void jMenuItemNewServerActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemNewServerActionPerformed
1720

1721        jButtonAddServerActionPerformed(null);
1722        
1723    }//GEN-LAST:event_jMenuItemNewServerActionPerformed
1724

1725    private void jMenuItemServerDeleteActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemServerDeleteActionPerformed
1726

1727        TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1728        if (path == null) return;
1729        DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1730        JServer server = null;
1731        
1732        if ( selectedNode.getUserObject() instanceof JServer)
1733        {
1734            server = (JServer)selectedNode.getUserObject();
1735        }
1736        else if ( selectedNode.getUserObject() instanceof RepositoryFolder)
1737        {
1738            server = ((RepositoryFolder)selectedNode.getUserObject()).getServer();
1739        }
1740            
1741        if (server == null) return;
1742        
1743        if (JOptionPane.showConfirmDialog(getPlugin().getMainFrame(),
1744                "Are you sure you want to delete the server '" + server + "' ?",
1745                "Deleting server",
1746                JOptionPane.YES_NO_CANCEL_OPTION,
1747                JOptionPane.WARNING_MESSAGE
1748                ) == JOptionPane.YES_OPTION)
1749        {
1750            getPlugin().getJServers().remove( selectedNode.getUserObject() );
1751            getPlugin().saveConfiguration();
1752            ((DefaultMutableTreeNode JavaDoc)jTreeRepository.getModel().getRoot()).remove( selectedNode );
1753            jTreeRepository.updateUI();
1754            //jButtonNewReportUnit.setEnabled(this.getPlugin().getJServers().size() > 0);
1755
}
1756        
1757    }//GEN-LAST:event_jMenuItemServerDeleteActionPerformed
1758

1759    private void jMenuItemServerSettingsActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jMenuItemServerSettingsActionPerformed
1760

1761        TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1762        if (path == null) return;
1763        DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1764        JServer server = null;
1765        
1766        if ( selectedNode.getUserObject() instanceof JServer)
1767        {
1768            server = (JServer)selectedNode.getUserObject();
1769        }
1770        else if ( selectedNode.getUserObject() instanceof RepositoryFolder)
1771        {
1772            server = ((RepositoryFolder)selectedNode.getUserObject()).getServer();
1773        }
1774            
1775        if (server == null) return;
1776        
1777        ServerDialog sd = new ServerDialog(getPlugin().getMainFrame(), true);
1778        sd.setJServer( server );
1779        sd.setVisible(true);
1780        if (sd.getDialogResult() == JOptionPane.OK_OPTION)
1781        {
1782            server.setName( sd.getJServer().getName());
1783            server.setUsername( sd.getJServer().getUsername() );
1784            server.setPassword( sd.getJServer().getPassword() );
1785            server.setUrl( sd.getJServer().getUrl() );
1786
1787            getPlugin().saveConfiguration();
1788            jTreeRepository.updateUI();
1789        }
1790        
1791    }//GEN-LAST:event_jMenuItemServerSettingsActionPerformed
1792

1793    private void jTreeRepositoryMouseClicked(java.awt.event.MouseEvent JavaDoc evt) {//GEN-FIRST:event_jTreeRepositoryMouseClicked
1794

1795        
1796        if (evt.getClickCount() == 1 && evt.getButton() == evt.BUTTON3)
1797        {
1798            jTreeRepository.setSelectionPath( jTreeRepository.getPathForLocation(evt.getX(), evt.getY() ) );
1799            TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1800            //jTreeRepositoryValueChanged(new TreeSelectionEvent(jTreeRepository, path, true, null, null));
1801

1802            if (path == null)
1803            {
1804                jMenuItemEditJRXML.setVisible(false);
1805                jMenuItemExplore.setVisible(false);
1806                jMenuItemGet.setVisible(false);
1807                jMenuItemServerDelete.setEnabled(false);
1808                jMenuItemServerSettings.setEnabled(false);
1809                jMenuItemProperties.setEnabled(false);
1810                jMenuItemRefresh.setVisible(false);
1811                jMenuItemRefreshContent.setVisible(false);
1812                jMenuAdd.setVisible(false);
1813                jMenuItemConnection.setVisible(false);
1814                jMenuItemImportFont.setVisible(false);
1815                jMenuItemRunRU.setVisible(false);
1816                
1817                jPopupMenuServer.show(jTreeRepository,evt.getX(), evt.getY());
1818                return;
1819            }
1820
1821            jMenuItemServerDelete.setEnabled(true);
1822            jMenuItemServerSettings.setEnabled(true);
1823            jMenuItemProperties.setEnabled(true);
1824            jMenuItemRefresh.setVisible(true);
1825            jMenuItemRefreshContent.setVisible(true);
1826            jMenuItemFolder.setEnabled(true);
1827            jMenuItemReportUnit.setEnabled(true);
1828            jMenuAdd.setVisible(true);
1829            jMenuItemConnection.setVisible(false);
1830            jMenuItemImportFont.setVisible(false);
1831            jMenuItemReference.setEnabled(false);
1832            jMenuItemDataType.setEnabled(true);
1833            jMenuItemListOfValues.setEnabled(true);
1834            jMenuItemRunRU.setVisible(false);
1835                
1836            DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1837            
1838            
1839            if ( selectedNode.getUserObject() instanceof JServer)
1840            {
1841                jMenuItemEditJRXML.setVisible(false);
1842                jMenuItemExplore.setVisible(true);
1843                jMenuItemGet.setVisible(false);
1844                jMenuAdd.setEnabled(true);
1845                jMenuItemDelete.setVisible(false);
1846            }
1847            else if ( selectedNode.getUserObject() instanceof RepositoryJrxmlFile)
1848            {
1849                jMenuItemEditJRXML.setVisible(true);
1850                jMenuItemExplore.setVisible(false);
1851                jMenuItemGet.setVisible(false);
1852                jMenuAdd.setEnabled(false);
1853                jMenuItemDelete.setVisible(true);
1854            }
1855            else if ( selectedNode.getUserObject() instanceof RepositoryFile)
1856            {
1857                jMenuItemEditJRXML.setVisible(false);
1858                jMenuItemExplore.setVisible(false);
1859                jMenuItemGet.setVisible(false);
1860                jMenuAdd.setEnabled(false);
1861                jMenuItemDelete.setVisible(true);
1862
1863                String JavaDoc resType = ((RepositoryFile)selectedNode.getUserObject()).getDescriptor().getWsType();
1864                
1865                if (resType.equals( ResourceDescriptor.TYPE_DATASOURCE_JDBC) )
1866                {
1867                    jMenuItemConnection.setVisible(true);
1868                    
1869                }
1870                else if (resType.equals( ResourceDescriptor.TYPE_CLASS_JAR) ||
1871                         resType.equals( ResourceDescriptor.TYPE_FONT) ||
1872                         resType.equals( ResourceDescriptor.TYPE_IMAGE) ||
1873                         resType.equals( ResourceDescriptor.TYPE_JRXML) ||
1874                         resType.equals( ResourceDescriptor.TYPE_RESOURCE_BUNDLE))
1875                {
1876                    jMenuItemGet.setVisible(true);
1877                }
1878                
1879                if (resType.equals( ResourceDescriptor.TYPE_FONT) )
1880                {
1881                    jMenuItemImportFont.setVisible(true);
1882                }
1883            }
1884            else if ( selectedNode.getUserObject() instanceof RepositoryFolder)
1885            {
1886                jMenuItemEditJRXML.setVisible(false);
1887                jMenuItemExplore.setVisible(true);
1888                jMenuItemGet.setVisible(false);
1889                jMenuAdd.setEnabled(true);
1890            jMenuItemDatasource.setEnabled(true);
1891                jMenuItemDelete.setVisible(true);
1892            
1893                if ( selectedNode.getUserObject() instanceof RepositoryReportUnit)
1894                {
1895                    jMenuItemFolder.setEnabled(false);
1896                    jMenuItemReference.setEnabled(true);
1897                    jMenuItemReportUnit.setEnabled(false);
1898                    jMenuItemDataType.setEnabled(false);
1899                    jMenuItemListOfValues.setEnabled(false);
1900                    jMenuItemRunRU.setVisible(true);
1901                    jMenuItemDatasource.setEnabled(false);
1902                }
1903            }
1904            else if ( selectedNode.getUserObject() instanceof ControlsSet)
1905            {
1906                jPopupMenuRUInputControls.show(jTreeRepository,evt.getX(), evt.getY());
1907                return;
1908            }
1909            else if ( selectedNode.getUserObject() instanceof ResourcesSet)
1910            {
1911                jMenuItemEditJRXML.setVisible(false);
1912                jMenuItemExplore.setVisible(false);
1913                jMenuItemGet.setVisible(false);
1914                jMenuAdd.setEnabled(true);
1915                jMenuItemFolder.setEnabled(false);
1916                jMenuItemReference.setEnabled(true);
1917                jMenuItemReportUnit.setEnabled(false);
1918                jMenuItemDataType.setEnabled(false);
1919                jMenuItemListOfValues.setEnabled(false);
1920                jMenuItemDatasource.setEnabled(false);
1921                jMenuItemDelete.setVisible(false);
1922                
1923            }
1924            
1925            jMenuItemExplore.setEnabled(true);
1926            jMenuItemServerDelete.setEnabled(true);
1927            jMenuItemServerSettings.setEnabled(true);
1928            jPopupMenuServer.show(jTreeRepository,evt.getX(), evt.getY());
1929            return;
1930        }
1931        else if (evt.getClickCount() == 2 && evt.getButton() == evt.BUTTON1)
1932        {
1933            //TreePath path = jTreeRepository.getPathForLocation(evt.getX(), evt.getY() );
1934
//if (path == null) return;
1935
//jTreeRepository.setSelectionPath( path );
1936
TreePath JavaDoc path = jTreeRepository.getSelectionPath();
1937            DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
1938            
1939            if ( selectedNode.getUserObject() instanceof JServer)
1940            {
1941                jMenuItemExploreActionPerformed(null);
1942            }
1943            else if ( selectedNode.getUserObject() instanceof RepositoryJrxmlFile)
1944            {
1945                jMenuItemEditJRXMLActionPerformed(null);
1946            }
1947            else if ( selectedNode.getUserObject() instanceof RepositoryFile)
1948            {
1949                jMenuItemPropertiesActionPerformed(null);
1950            }
1951            else if ( selectedNode.getUserObject() instanceof RepositoryFolder)
1952            {
1953                jMenuItemExploreActionPerformed(null);
1954            }
1955        }
1956        
1957    }//GEN-LAST:event_jTreeRepositoryMouseClicked
1958

1959    private void jPopupMenuServerMouseClicked(java.awt.event.MouseEvent JavaDoc evt) {//GEN-FIRST:event_jPopupMenuServerMouseClicked
1960

1961        
1962        
1963    }//GEN-LAST:event_jPopupMenuServerMouseClicked
1964

1965    private void jButtonAddServerActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonAddServerActionPerformed
1966

1967        ServerDialog sd = new ServerDialog(getPlugin().getMainFrame(), true);
1968        sd.setVisible(true);
1969        if (sd.getDialogResult() == JOptionPane.OK_OPTION)
1970        {
1971            IRPlugin.getMainInstance().getJServers().add(sd.getJServer());
1972            IRPlugin.getMainInstance().saveConfiguration();
1973            ((DefaultMutableTreeNode JavaDoc)this.jTreeRepository.getModel().getRoot()).add(new DefaultMutableTreeNode JavaDoc(sd.getJServer()));
1974            this.jTreeRepository.updateUI();
1975        }
1976        
1977    }//GEN-LAST:event_jButtonAddServerActionPerformed
1978

1979    
1980    // Variables declaration - do not modify//GEN-BEGIN:variables
1981
private javax.swing.JButton JavaDoc jButtonAddServer;
1982    private javax.swing.JButton JavaDoc jButtonNewReportUnit;
1983    private javax.swing.JButton JavaDoc jButtonRunReport;
1984    private javax.swing.JButton JavaDoc jButtonSaveJrxml;
1985    private javax.swing.JMenu JavaDoc jMenuAdd;
1986    private javax.swing.JMenuItem JavaDoc jMenuItemBundle;
1987    private javax.swing.JMenuItem JavaDoc jMenuItemConnection;
1988    private javax.swing.JMenuItem JavaDoc jMenuItemDataType;
1989    private javax.swing.JMenuItem JavaDoc jMenuItemDatasource;
1990    private javax.swing.JMenuItem JavaDoc jMenuItemDelete;
1991    private javax.swing.JMenuItem JavaDoc jMenuItemEditJRXML;
1992    private javax.swing.JMenuItem JavaDoc jMenuItemExplore;
1993    private javax.swing.JMenuItem JavaDoc jMenuItemFolder;
1994    private javax.swing.JMenuItem JavaDoc jMenuItemFont;
1995    private javax.swing.JMenuItem JavaDoc jMenuItemGet;
1996    private javax.swing.JMenuItem JavaDoc jMenuItemImage;
1997    private javax.swing.JMenuItem JavaDoc jMenuItemImportFont;
1998    private javax.swing.JMenuItem JavaDoc jMenuItemInputControl;
1999    private javax.swing.JMenuItem JavaDoc jMenuItemJar;
2000    private javax.swing.JMenuItem JavaDoc jMenuItemJrxml;
2001    private javax.swing.JMenuItem JavaDoc jMenuItemLinkInputControl;
2002    private javax.swing.JMenuItem JavaDoc jMenuItemListOfValues;
2003    private javax.swing.JMenuItem JavaDoc jMenuItemLocalInputControl;
2004    private javax.swing.JMenuItem JavaDoc jMenuItemLogin;
2005    private javax.swing.JMenuItem JavaDoc jMenuItemNewServer;
2006    private javax.swing.JMenuItem JavaDoc jMenuItemProperties;
2007    private javax.swing.JMenuItem JavaDoc jMenuItemQuery;
2008    private javax.swing.JMenuItem JavaDoc jMenuItemReference;
2009    private javax.swing.JMenuItem JavaDoc jMenuItemRefresh;
2010    private javax.swing.JMenuItem JavaDoc jMenuItemRefreshContent;
2011    private javax.swing.JMenuItem JavaDoc jMenuItemReportUnit;
2012    private javax.swing.JMenuItem JavaDoc jMenuItemRunRU;
2013    private javax.swing.JMenuItem JavaDoc jMenuItemServerDelete;
2014    private javax.swing.JMenuItem JavaDoc jMenuItemServerSettings;
2015    private javax.swing.JPopupMenu JavaDoc jPopupMenuRUInputControls;
2016    private javax.swing.JPopupMenu JavaDoc jPopupMenuServer;
2017    private javax.swing.JScrollPane JavaDoc jScrollPane1;
2018    private javax.swing.JSeparator JavaDoc jSeparator1;
2019    private javax.swing.JSeparator JavaDoc jSeparator2;
2020    private javax.swing.JSeparator JavaDoc jSeparator3;
2021    private javax.swing.JSeparator JavaDoc jSeparator4;
2022    private javax.swing.JSeparator JavaDoc jSeparator5;
2023    private javax.swing.JSeparator JavaDoc jSeparator6;
2024    private javax.swing.JSeparator JavaDoc jSeparator7;
2025    private javax.swing.JToolBar JavaDoc jToolBar1;
2026    private javax.swing.JTree JavaDoc jTreeRepository;
2027    // End of variables declaration//GEN-END:variables
2028

2029    
2030    /**
2031     * This method populate all childs of a node instancing the right object for each descriptor
2032     *
2033     */

2034    private void addChilds(DefaultMutableTreeNode JavaDoc selectedNode, JServer server, List JavaDoc resourceDescriptors)
2035    {
2036        for (int i=0; i<resourceDescriptors.size(); ++i)
2037        {
2038            ResourceDescriptor rd = (ResourceDescriptor)resourceDescriptors.get(i);
2039            addChild(selectedNode, server, rd);
2040        }
2041    }
2042    
2043    
2044    /**
2045     * This method populate all childs of a node instancing the right object for each descriptor
2046     *
2047     */

2048    private DefaultMutableTreeNode JavaDoc addChild(DefaultMutableTreeNode JavaDoc selectedNode, JServer server, ResourceDescriptor rd)
2049    {
2050            DefaultMutableTreeNode JavaDoc newNode = null;
2051
2052            RepositoryFolder obj = createRepositoryObject(server, rd);
2053            if (obj != null)
2054            {
2055                newNode = new DefaultMutableTreeNode JavaDoc(obj);
2056                selectedNode.add( newNode );
2057            }
2058            return newNode;
2059    }
2060    
2061    
2062    /**
2063     * Return the best object to wrap this ResourceDescriptor like:
2064     *
2065     * RepositoryReportUnit
2066     * RepositoryFolder
2067     * RepositoryJrxmlFile
2068     * RepositoryFile
2069     *
2070     * The origilan resource descriptor is used inside the new object and
2071     * COULD be modified.
2072     *
2073     */

2074    public static RepositoryFolder createRepositoryObject(JServer server, ResourceDescriptor rd)
2075    {
2076        if (rd.getWsType() == null)
2077        {
2078            rd.setWsType(ResourceDescriptor.TYPE_UNKNOW);
2079        }
2080               
2081        if (rd.getWsType().equals( ResourceDescriptor.TYPE_REPORTUNIT) )
2082        {
2083            return new RepositoryReportUnit(server, rd );
2084        }
2085        else if (rd.getWsType().equals( ResourceDescriptor.TYPE_FOLDER) )
2086        {
2087            return new RepositoryFolder(server, rd );
2088        }
2089        else if (rd.getWsType().equals( ResourceDescriptor.TYPE_JRXML) )
2090        {
2091            return new RepositoryJrxmlFile(server, rd );
2092        }
2093        else
2094        {
2095            return new RepositoryFile(server, rd );
2096        }
2097    }
2098    
2099    
2100    private void newResource(String JavaDoc resourceType)
2101    {
2102        TreePath JavaDoc path = jTreeRepository.getSelectionPath();
2103        if (path == null) return;
2104        DefaultMutableTreeNode JavaDoc selectedNode = (DefaultMutableTreeNode JavaDoc)path.getLastPathComponent();
2105        
2106        //selectedNode.removeAllChildren();
2107
JServer server = null;
2108        
2109        String JavaDoc currentUri = "/";
2110        String JavaDoc reportUnitUri = null;
2111        
2112        boolean parentLoaded = false;
2113        if ( selectedNode.getUserObject() instanceof JServer)
2114        {
2115            server = (JServer)selectedNode.getUserObject();
2116            parentLoaded = server.isLoaded();
2117        }
2118        else if ( selectedNode.getUserObject() instanceof RepositoryReportUnit)
2119        {
2120            RepositoryFolder rf = (RepositoryFolder)selectedNode.getUserObject();
2121            server = rf.getServer();
2122            currentUri = rf.getDescriptor().getUriString();
2123            reportUnitUri = currentUri;
2124            parentLoaded = rf.isLoaded();
2125        }
2126        else if ( selectedNode.getUserObject() instanceof RepositoryFolder)
2127        {
2128            RepositoryFolder rf = (RepositoryFolder)selectedNode.getUserObject();
2129            server = rf.getServer();
2130            currentUri = rf.getDescriptor().getUriString();
2131            parentLoaded = rf.isLoaded();
2132        }
2133        else if ( selectedNode.getUserObject() instanceof ControlsSet)
2134        {
2135            RepositoryFolder rf = ((ControlsSet)selectedNode.getUserObject()).getReportUnit();
2136            server = rf.getServer();
2137            currentUri = rf.getDescriptor().getUriString();
2138            reportUnitUri = currentUri;
2139            parentLoaded = rf.isLoaded();
2140        }
2141        else if ( selectedNode.getUserObject() instanceof ResourcesSet)
2142        {
2143            RepositoryFolder rf = ((ResourcesSet)selectedNode.getUserObject()).getReportUnit();
2144            server = rf.getServer();
2145            currentUri = rf.getDescriptor().getUriString();
2146            reportUnitUri = currentUri;
2147            parentLoaded = rf.isLoaded();
2148        }
2149        
2150        if (resourceType.equals(ResourceDescriptor.TYPE_DATASOURCE))
2151        {
2152            DataSourceDialog nrd = new DataSourceDialog(MainFrame.getMainInstance(), true);
2153
2154            nrd.setParentFolder(currentUri);
2155            nrd.setServer(server);
2156            //nrd.setReportUnitUri(reportUnitUri);
2157
//nrd.setResourceType(resourceType);
2158

2159            nrd.setVisible(true);
2160
2161            if (nrd.getDialogResult() == JOptionPane.OK_OPTION)
2162            {
2163                if (parentLoaded)
2164                {
2165                    addChild((DefaultMutableTreeNode JavaDoc)selectedNode, server, nrd.getNewResourceDescriptor());
2166                    jTreeRepository.updateUI();
2167                }
2168                else
2169                {
2170                    jMenuItemExploreActionPerformed(null);
2171                }
2172            }
2173        }
2174        else if (resourceType.equals(ResourceDescriptor.TYPE_REFERENCE))
2175        {
2176            ResourceReferenceDialog rrd = new ResourceReferenceDialog(MainFrame.getMainInstance(), true);
2177            rrd.setServer(server);
2178            rrd.setParentFolder(currentUri);
2179            //ResourceChooser rc = new ResourceChooser();
2180
//rc.setServer( server );
2181
//rc.showDialog(this, null);
2182
rrd.setVisible(true);
2183            
2184            if (rrd.getDialogResult() == JOptionPane.OK_OPTION)
2185            {
2186                if (parentLoaded)
2187                {
2188                    addChild((DefaultMutableTreeNode JavaDoc)selectedNode, server, rrd.getNewResourceDescriptor());
2189                    jTreeRepository.updateUI();
2190                }
2191                else
2192                {
2193                    jMenuItemExploreActionPerformed(null);
2194                }
2195            }
2196        }
2197        else if (resourceType.equals(ResourceDescriptor.TYPE_DATA_TYPE))
2198        {
2199            DataTypeDialog nrd = new DataTypeDialog(MainFrame.getMainInstance(), true);
2200
2201            nrd.setParentFolder(currentUri);
2202            nrd.setServer(server);
2203
2204            nrd.setVisible(true);
2205
2206            if (nrd.getDialogResult() == JOptionPane.OK_OPTION)
2207            {
2208                if (parentLoaded)
2209                {
2210                    addChild((DefaultMutableTreeNode JavaDoc)selectedNode, server, nrd.getNewResourceDescriptor());
2211                    jTreeRepository.updateUI();
2212                }
2213                else
2214                {
2215                    jMenuItemExploreActionPerformed(null);
2216                }
2217            }
2218        }
2219        else if (resourceType.equals(ResourceDescriptor.TYPE_LOV))
2220        {
2221            ListOfValuesDialog nrd = new ListOfValuesDialog(MainFrame.getMainInstance(), true);
2222
2223            nrd.setParentFolder(currentUri);
2224            nrd.setServer(server);
2225
2226            nrd.setVisible(true);
2227
2228            if (nrd.getDialogResult() == JOptionPane.OK_OPTION)
2229            {
2230                if (parentLoaded)
2231                {
2232                    addChild((DefaultMutableTreeNode JavaDoc)selectedNode, server, nrd.getNewResourceDescriptor());
2233                    jTreeRepository.updateUI();
2234                }
2235                else
2236                {
2237                    jMenuItemExploreActionPerformed(null);
2238                }
2239            }
2240        }
2241        else if (resourceType.equals(ResourceDescriptor.TYPE_QUERY))
2242        {
2243            QueryDialog nrd = new QueryDialog(MainFrame.getMainInstance(), true);
2244
2245            nrd.setParentFolder(currentUri);
2246            nrd.setServer(server);
2247
2248            nrd.setVisible(true);
2249            
2250            if (nrd.getDialogResult() == JOptionPane.OK_OPTION)
2251            {
2252                if (parentLoaded)
2253                {
2254                    addChild((DefaultMutableTreeNode JavaDoc)selectedNode, server, nrd.getNewResourceDescriptor());
2255                    jTreeRepository.updateUI();
2256                }
2257                else
2258                {
2259                    jMenuItemExploreActionPerformed(null);
2260                }
2261            }
2262        }
2263        else if (resourceType.equals(ResourceDescriptor.TYPE_INPUT_CONTROL))
2264        {
2265            InputControlDialog nrd = new InputControlDialog(MainFrame.getMainInstance(), true);
2266
2267            nrd.setParentFolder(currentUri);
2268            nrd.setServer(server);
2269            nrd.setReportUnitUri(reportUnitUri);
2270
2271            nrd.setVisible(true);
2272
2273            if (nrd.getDialogResult() == JOptionPane.OK_OPTION)
2274            {
2275                if (parentLoaded)
2276                {
2277                    if (reportUnitUri != null)
2278                    {
2279                        if ( selectedNode.getUserObject() instanceof ControlsSet)
2280                        {
2281                            addChild((DefaultMutableTreeNode JavaDoc)selectedNode, server, nrd.getNewResourceDescriptor());
2282                        }
2283                        else if (selectedNode.getUserObject() instanceof RepositoryReportUnit)
2284                        {
2285                            for (int i=0; i< selectedNode.getChildCount(); ++i)
2286                            {
2287                                DefaultMutableTreeNode JavaDoc dmtn = (DefaultMutableTreeNode JavaDoc)selectedNode.getChildAt(i);
2288                                if (dmtn.getUserObject() instanceof ControlsSet)
2289                                {
2290                                    addChild(dmtn, server, nrd.getNewResourceDescriptor());
2291                                    break;
2292                                }
2293                            }
2294                        }
2295                    }
2296                    else
2297                    {
2298                        addChild((DefaultMutableTreeNode JavaDoc)selectedNode, server, nrd.getNewResourceDescriptor());
2299                    }
2300                    jTreeRepository.updateUI();
2301                }
2302                else
2303                {
2304                    jMenuItemExploreActionPerformed(null);
2305                }
2306            }
2307        }
2308        else
2309        {
2310            NewResourceDialog nrd = new NewResourceDialog(MainFrame.getMainInstance(), true);
2311
2312            nrd.setParentUri(currentUri);
2313            nrd.setServer(server);
2314            nrd.setReportUnitUri(reportUnitUri);
2315            nrd.setResourceType(resourceType);
2316
2317            nrd.setVisible(true);
2318
2319            if (nrd.getDialogResult() == JOptionPane.OK_OPTION)
2320            {
2321                if (parentLoaded)
2322                {
2323                    addChild((DefaultMutableTreeNode JavaDoc)selectedNode, server, nrd.getNewResourceDescriptor());
2324                    jTreeRepository.updateUI();
2325                }
2326                else
2327                {
2328                    jMenuItemExploreActionPerformed(null);
2329                }
2330            }
2331        
2332        }
2333    }
2334    
2335    /**
2336     * Return the tree component...
2337     */

2338    public JTree JavaDoc getTreeRepository()
2339    {
2340        return jTreeRepository;
2341    }
2342    
2343    /**
2344     * Return all report units with one or more documents opened in the main frame...
2345     */

2346    public List JavaDoc getOpenedReportSources(JServer server)
2347    {
2348        java.util.ArrayList JavaDoc list = new java.util.ArrayList JavaDoc();
2349        
2350        DefaultMutableTreeNode JavaDoc root = (DefaultMutableTreeNode JavaDoc)jTreeRepository.getModel().getRoot();
2351        
2352        for (int i=0; i<root.getChildCount(); ++i)
2353        {
2354            DefaultMutableTreeNode JavaDoc dmn = (DefaultMutableTreeNode JavaDoc)root.getChildAt(i);
2355            if (dmn.getUserObject() == server)
2356            {
2357                
2358                return getOpenedReportSources(dmn, list);
2359            }
2360        }
2361        return list;
2362    }
2363    
2364    private List JavaDoc getOpenedReportSources(DefaultMutableTreeNode JavaDoc dmn, List JavaDoc list)
2365    {
2366        if (dmn.getUserObject() instanceof RepositoryJrxmlFile)
2367        {
2368            System.out.println("Found RepositoryJrxmlFile");
2369            RepositoryJrxmlFile rf = (RepositoryJrxmlFile)dmn.getUserObject();
2370            if (rf.getReportFrame() != null)
2371            {
2372                list.add(rf);
2373            }
2374            return list;
2375        }
2376
2377        for (int i=0; i<dmn.getChildCount(); ++i)
2378        {
2379            list = getOpenedReportSources((DefaultMutableTreeNode JavaDoc)dmn.getChildAt(i), list);
2380        }
2381        
2382        return list;
2383    }
2384    
2385    
2386    /**
2387     * Update the special ReportUnit structure:
2388     *
2389     * ReportUnit
2390     * +- DataSource
2391     * +- Main JRXML
2392     * +- Controls
2393     * +-- ... controls
2394     * +- Resources
2395     * +-- ... resources
2396     *
2397     */

2398    private void updateReportUnitNodeContent(DefaultMutableTreeNode JavaDoc selectedNode, List JavaDoc list)
2399    {
2400        RepositoryReportUnit reportUnit = (RepositoryReportUnit)selectedNode.getUserObject();
2401        
2402        int position = 0;
2403        
2404        // 1. The first node is the datasource
2405
/*
2406        for (int i=0; i<list.size(); ++i)
2407        {
2408            ResourceDescriptor rd = (ResourceDescriptor)list.get(i);
2409            if (rd.getWsType().equals( rd.TYPE_DATASOURCE_JDBC) ||
2410                rd.getWsType().equals( rd.TYPE_DATASOURCE_JNDI))
2411            {
2412                
2413                list.remove(i);
2414                if (selectedNode.getChildCount() > position)
2415                {
2416                    ((RepositoryFolder)((DefaultMutableTreeNode)selectedNode.getChildAt(position)).getUserObject()).setDescriptor(rd);
2417                }
2418                else
2419                {
2420                   RepositoryFolder rf = createRepositoryObject(reportUnit.getServer(), rd);
2421                   selectedNode.add(new DefaultMutableTreeNode(rf));
2422                }
2423                break;
2424            }
2425        }
2426        position++;
2427        
2428         */

2429        
2430        // 2. The second node is the main JRXML
2431
for (int i=0; i<list.size(); ++i)
2432        {
2433            ResourceDescriptor rd = (ResourceDescriptor)list.get(i);
2434            if (rd.getWsType().equals( rd.TYPE_JRXML) && rd.isMainReport())
2435            {
2436                list.remove(i);
2437                if (selectedNode.getChildCount() > position)
2438                {
2439                    ((RepositoryFolder)((DefaultMutableTreeNode JavaDoc)selectedNode.getChildAt(position)).getUserObject()).setDescriptor(rd);
2440                }
2441                else
2442                {
2443                   RepositoryFolder rf = createRepositoryObject(reportUnit.getServer(), rd);
2444                   selectedNode.add(new DefaultMutableTreeNode JavaDoc(rf));
2445                }
2446                break;
2447            }
2448        }
2449        
2450        position++;
2451
2452        // 3. Then we have controls
2453
// Remove all controls....
2454
DefaultMutableTreeNode JavaDoc controlSet = null;
2455        if (selectedNode.getChildCount() > position)
2456        {
2457            controlSet = (DefaultMutableTreeNode JavaDoc)selectedNode.getChildAt(position);
2458        }
2459        else
2460        {
2461            ControlsSet cs = new ControlsSet();
2462            cs.setReportUnit(reportUnit);
2463            controlSet = new DefaultMutableTreeNode JavaDoc(cs);
2464            selectedNode.add(controlSet);
2465        }
2466        
2467        controlSet.removeAllChildren();
2468        
2469        position++;
2470        
2471        for (int i=0; i<list.size(); ++i)
2472        {
2473            ResourceDescriptor rd = (ResourceDescriptor)list.get(i);
2474            if (rd.getWsType().equals( rd.TYPE_INPUT_CONTROL))
2475            {
2476                RepositoryFolder rf = createRepositoryObject(reportUnit.getServer(), rd);
2477                controlSet.add(new DefaultMutableTreeNode JavaDoc(rf));
2478            }
2479        }
2480        // 4. ...and resources
2481
// Update resources....
2482
DefaultMutableTreeNode JavaDoc resourcesSet = null;
2483        if (selectedNode.getChildCount() > position)
2484        {
2485            resourcesSet = (DefaultMutableTreeNode JavaDoc)selectedNode.getChildAt(position);
2486        }
2487        else
2488        {
2489            ResourcesSet cs = new ResourcesSet();
2490            cs.setReportUnit(reportUnit);
2491            resourcesSet = new DefaultMutableTreeNode JavaDoc(cs);
2492            selectedNode.add(resourcesSet);
2493        }
2494        Vector JavaDoc existingNodes = new Vector JavaDoc();
2495        for (int i=0; i<resourcesSet.getChildCount(); ++i)
2496        {
2497            existingNodes.add( ((DefaultMutableTreeNode JavaDoc)resourcesSet.getChildAt(i)).getUserObject());
2498        }
2499        
2500        resourcesSet.removeAllChildren();
2501        
2502        for (int i=0; i<list.size(); ++i)
2503        {
2504            ResourceDescriptor rd = (ResourceDescriptor)list.get(i);
2505            if (!rd.getWsType().equals( rd.TYPE_INPUT_CONTROL) && !rd.isMainReport())
2506            {
2507                if (rd.getIsReference() &&
2508                    isDataSource( rd))
2509                {
2510                    continue;
2511                }
2512                
2513                boolean found = false;
2514                // Find rd in the vector....
2515
for (int k=0; k<existingNodes.size(); ++k)
2516                {
2517                    if (existingNodes.elementAt(k) instanceof RepositoryFile)
2518                    {
2519                        RepositoryFile repoFile = (RepositoryFile)existingNodes.elementAt(k);
2520                        if (repoFile.getDescriptor().getUriString().equals( rd.getUriString()))
2521                        {
2522                            repoFile.setDescriptor(rd);
2523                            found = true;
2524                            existingNodes.remove(k);
2525                            resourcesSet.add(new DefaultMutableTreeNode JavaDoc(repoFile));
2526                            break;
2527                        }
2528                    }
2529                }
2530                
2531                if (!found)
2532                {
2533                    RepositoryFolder rf = createRepositoryObject(reportUnit.getServer(), rd);
2534                    resourcesSet.add(new DefaultMutableTreeNode JavaDoc(rf));
2535                }
2536            }
2537        }
2538    }
2539    
2540    public static boolean isDataSource(ResourceDescriptor rd)
2541    {
2542        if (rd == null) return false;
2543        if (rd.getWsType() == null) return false;
2544        if (rd.getWsType().equals( rd.TYPE_DATASOURCE) ||
2545            rd.getWsType().equals( rd.TYPE_DATASOURCE_JDBC) ||
2546            rd.getWsType().equals( rd.TYPE_DATASOURCE_JNDI) ||
2547            rd.getWsType().equals( rd.TYPE_DATASOURCE_BEAN)) return true;
2548        return false;
2549    }
2550    
2551    /**
2552     * It exists, return the first parent report unit....
2553     *
2554     */

2555    public static RepositoryReportUnit getParentReportUnit(DefaultMutableTreeNode JavaDoc node)
2556    {
2557        if (node.getUserObject() instanceof RepositoryReportUnit) return (RepositoryReportUnit)node.getUserObject();
2558        
2559        Object JavaDoc[] parents = node.getUserObjectPath();
2560        
2561        for (int i = parents.length-1; i>=0; --i)
2562        {
2563            if (parents[i] != null && parents[i] instanceof RepositoryReportUnit)
2564            {
2565                return (RepositoryReportUnit)parents[i];
2566            }
2567        }
2568
2569        return null;
2570    }
2571    
2572}
2573
2574
Popular Tags