1 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 ; 36 import java.awt.dnd.DropTarget ; 37 import java.io.File ; 38 import java.util.List ; 39 import java.util.Vector ; 40 import javax.swing.JOptionPane ; 41 import javax.swing.JTree ; 42 import javax.swing.SwingUtilities ; 43 import javax.swing.tree.DefaultMutableTreeNode ; 44 import javax.swing.tree.DefaultTreeModel ; 45 import javax.swing.tree.DefaultTreeSelectionModel ; 46 import javax.swing.tree.TreePath ; 47 import it.businesslogic.ireport.gui.MainFrame; 48 import java.io.StringWriter ; 49 import javax.swing.JFileChooser ; 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 65 public class RepositoryExplorer extends javax.swing.JPanel { 66 67 private IRPlugin plugin = null; 68 69 70 71 public RepositoryExplorer(IRPlugin plugin) { 72 initComponents(); 73 74 jTreeRepository.setDragEnabled(true); 75 jTreeRepository.setTransferHandler(new ReportElementTransferHandler()); 76 77 jTreeRepository.setDropTarget( new DropTarget (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 loadServerList(); 83 } 84 89 public void loadServerList() 90 { 91 jTreeRepository.removeAll(); 93 DefaultMutableTreeNode rootNode= new DefaultMutableTreeNode (); 94 ((DefaultTreeModel )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 serverNode= new DefaultMutableTreeNode (server); 100 rootNode.add( serverNode ); 101 } 102 103 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 120 public void updateToolBar() 121 { 122 TreePath path = jTreeRepository.getSelectionPath(); 123 if (path == null) return; 124 125 jButtonSaveJrxml.setEnabled(false); 126 jButtonNewReportUnit.setEnabled(false); 127 jButtonRunReport.setEnabled(false); 128 129 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 168 private void initComponents() { 170 jPopupMenuServer = new javax.swing.JPopupMenu (); 171 jMenuItemRunRU = new javax.swing.JMenuItem (); 172 jMenuItemEditJRXML = new javax.swing.JMenuItem (); 173 jMenuItemConnection = new javax.swing.JMenuItem (); 174 jMenuItemImportFont = new javax.swing.JMenuItem (); 175 jMenuItemExplore = new javax.swing.JMenuItem (); 176 jMenuItemGet = new javax.swing.JMenuItem (); 177 jMenuItemDelete = new javax.swing.JMenuItem (); 178 jSeparator3 = new javax.swing.JSeparator (); 179 jMenuAdd = new javax.swing.JMenu (); 180 jMenuItemReportUnit = new javax.swing.JMenuItem (); 181 jSeparator5 = new javax.swing.JSeparator (); 182 jMenuItemFolder = new javax.swing.JMenuItem (); 183 jMenuItemReference = new javax.swing.JMenuItem (); 184 jSeparator4 = new javax.swing.JSeparator (); 185 jMenuItemImage = new javax.swing.JMenuItem (); 186 jMenuItemBundle = new javax.swing.JMenuItem (); 187 jMenuItemJrxml = new javax.swing.JMenuItem (); 188 jMenuItemJar = new javax.swing.JMenuItem (); 189 jMenuItemFont = new javax.swing.JMenuItem (); 190 jSeparator6 = new javax.swing.JSeparator (); 191 jMenuItemDatasource = new javax.swing.JMenuItem (); 192 jSeparator7 = new javax.swing.JSeparator (); 193 jMenuItemDataType = new javax.swing.JMenuItem (); 194 jMenuItemListOfValues = new javax.swing.JMenuItem (); 195 jMenuItemQuery = new javax.swing.JMenuItem (); 196 jMenuItemInputControl = new javax.swing.JMenuItem (); 197 jSeparator1 = new javax.swing.JSeparator (); 198 jMenuItemLogin = new javax.swing.JMenuItem (); 199 jMenuItemNewServer = new javax.swing.JMenuItem (); 200 jMenuItemServerSettings = new javax.swing.JMenuItem (); 201 jMenuItemServerDelete = new javax.swing.JMenuItem (); 202 jSeparator2 = new javax.swing.JSeparator (); 203 jMenuItemRefresh = new javax.swing.JMenuItem (); 204 jMenuItemRefreshContent = new javax.swing.JMenuItem (); 205 jMenuItemProperties = new javax.swing.JMenuItem (); 206 jPopupMenuRUInputControls = new javax.swing.JPopupMenu (); 207 jMenuItemLocalInputControl = new javax.swing.JMenuItem (); 208 jMenuItemLinkInputControl = new javax.swing.JMenuItem (); 209 jToolBar1 = new javax.swing.JToolBar (); 210 jButtonAddServer = new javax.swing.JButton (); 211 jButtonNewReportUnit = new javax.swing.JButton (); 212 jButtonSaveJrxml = new javax.swing.JButton (); 213 jButtonRunReport = new javax.swing.JButton (); 214 jScrollPane1 = new javax.swing.JScrollPane (); 215 jTreeRepository = new javax.swing.JTree (); 216 217 jPopupMenuServer.addMouseListener(new java.awt.event.MouseAdapter () { 218 public void mouseClicked(java.awt.event.MouseEvent evt) { 219 jPopupMenuServerMouseClicked(evt); 220 } 221 }); 222 223 jMenuItemRunRU.setText("Run Report Unit"); 224 jMenuItemRunRU.addActionListener(new java.awt.event.ActionListener () { 225 public void actionPerformed(java.awt.event.ActionEvent 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 () { 234 public void actionPerformed(java.awt.event.ActionEvent 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 () { 243 public void actionPerformed(java.awt.event.ActionEvent 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 () { 252 public void actionPerformed(java.awt.event.ActionEvent evt) { 253 jMenuItemImportFontActionPerformed(evt); 254 } 255 }); 256 257 jPopupMenuServer.add(jMenuItemImportFont); 258 259 jMenuItemExplore.setText("Explore"); 260 jMenuItemExplore.addActionListener(new java.awt.event.ActionListener () { 261 public void actionPerformed(java.awt.event.ActionEvent 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 () { 270 public void actionPerformed(java.awt.event.ActionEvent evt) { 271 jMenuItemGetActionPerformed(evt); 272 } 273 }); 274 275 jPopupMenuServer.add(jMenuItemGet); 276 277 jMenuItemDelete.setText("Delete"); 278 jMenuItemDelete.addActionListener(new java.awt.event.ActionListener () { 279 public void actionPerformed(java.awt.event.ActionEvent 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 (getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/reportunit.png"))); 290 jMenuItemReportUnit.setText("Report Unit"); 291 jMenuItemReportUnit.addActionListener(new java.awt.event.ActionListener () { 292 public void actionPerformed(java.awt.event.ActionEvent evt) { 293 jMenuItemReportUnitActionPerformed(evt); 294 } 295 }); 296 297 jMenuAdd.add(jMenuItemReportUnit); 298 299 jMenuAdd.add(jSeparator5); 300 301 jMenuItemFolder.setIcon(new javax.swing.ImageIcon (getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/folder.png"))); 302 jMenuItemFolder.setText("Folder"); 303 jMenuItemFolder.addActionListener(new java.awt.event.ActionListener () { 304 public void actionPerformed(java.awt.event.ActionEvent evt) { 305 jMenuItemFolderActionPerformed(evt); 306 } 307 }); 308 309 jMenuAdd.add(jMenuItemFolder); 310 311 jMenuItemReference.setIcon(new javax.swing.ImageIcon (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 () { 315 public void actionPerformed(java.awt.event.ActionEvent evt) { 316 jMenuItemReferenceActionPerformed(evt); 317 } 318 }); 319 320 jMenuAdd.add(jMenuItemReference); 321 322 jMenuAdd.add(jSeparator4); 323 324 jMenuItemImage.setIcon(new javax.swing.ImageIcon (getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/picture.png"))); 325 jMenuItemImage.setText("Image"); 326 jMenuItemImage.addActionListener(new java.awt.event.ActionListener () { 327 public void actionPerformed(java.awt.event.ActionEvent evt) { 328 jMenuItemImageActionPerformed(evt); 329 } 330 }); 331 332 jMenuAdd.add(jMenuItemImage); 333 334 jMenuItemBundle.setIcon(new javax.swing.ImageIcon (getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/bundle.png"))); 335 jMenuItemBundle.setText("Resource bundle"); 336 jMenuItemBundle.addActionListener(new java.awt.event.ActionListener () { 337 public void actionPerformed(java.awt.event.ActionEvent evt) { 338 jMenuItemBundleActionPerformed(evt); 339 } 340 }); 341 342 jMenuAdd.add(jMenuItemBundle); 343 344 jMenuItemJrxml.setIcon(new javax.swing.ImageIcon (getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/jrxml_file.png"))); 345 jMenuItemJrxml.setText("JRXML document"); 346 jMenuItemJrxml.addActionListener(new java.awt.event.ActionListener () { 347 public void actionPerformed(java.awt.event.ActionEvent evt) { 348 jMenuItemJrxmlActionPerformed(evt); 349 } 350 }); 351 352 jMenuAdd.add(jMenuItemJrxml); 353 354 jMenuItemJar.setIcon(new javax.swing.ImageIcon (getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/jar.png"))); 355 jMenuItemJar.setText("Jar archive"); 356 jMenuItemJar.addActionListener(new java.awt.event.ActionListener () { 357 public void actionPerformed(java.awt.event.ActionEvent evt) { 358 jMenuItemJarActionPerformed(evt); 359 } 360 }); 361 362 jMenuAdd.add(jMenuItemJar); 363 364 jMenuItemFont.setIcon(new javax.swing.ImageIcon (getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/font.png"))); 365 jMenuItemFont.setText("Font file"); 366 jMenuItemFont.addActionListener(new java.awt.event.ActionListener () { 367 public void actionPerformed(java.awt.event.ActionEvent evt) { 368 jMenuItemFontActionPerformed(evt); 369 } 370 }); 371 372 jMenuAdd.add(jMenuItemFont); 373 374 jMenuAdd.add(jSeparator6); 375 376 jMenuItemDatasource.setIcon(new javax.swing.ImageIcon (getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/datasource.png"))); 377 jMenuItemDatasource.setText("Datasource"); 378 jMenuItemDatasource.addActionListener(new java.awt.event.ActionListener () { 379 public void actionPerformed(java.awt.event.ActionEvent evt) { 380 jMenuItemDataSourceActionPerformed(evt); 381 } 382 }); 383 384 jMenuAdd.add(jMenuItemDatasource); 385 386 jMenuAdd.add(jSeparator7); 387 388 jMenuItemDataType.setIcon(new javax.swing.ImageIcon (getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/datatype.png"))); 389 jMenuItemDataType.setText("Datatype"); 390 jMenuItemDataType.addActionListener(new java.awt.event.ActionListener () { 391 public void actionPerformed(java.awt.event.ActionEvent evt) { 392 jMenuItemDatasourcejMenuItemDataSourceActionPerformed(evt); 393 } 394 }); 395 396 jMenuAdd.add(jMenuItemDataType); 397 398 jMenuItemListOfValues.setIcon(new javax.swing.ImageIcon (getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/lov.png"))); 399 jMenuItemListOfValues.setText("List of values"); 400 jMenuItemListOfValues.addActionListener(new java.awt.event.ActionListener () { 401 public void actionPerformed(java.awt.event.ActionEvent evt) { 402 jMenuItemDataTypejMenuItemDatasourcejMenuItemDataSourceActionPerformed(evt); 403 } 404 }); 405 406 jMenuAdd.add(jMenuItemListOfValues); 407 408 jMenuItemQuery.setIcon(new javax.swing.ImageIcon (getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/query.png"))); 409 jMenuItemQuery.setText("Query"); 410 jMenuItemQuery.addActionListener(new java.awt.event.ActionListener () { 411 public void actionPerformed(java.awt.event.ActionEvent evt) { 412 jMenuItemQueryActionPerformed(evt); 413 } 414 }); 415 416 jMenuAdd.add(jMenuItemQuery); 417 418 jMenuItemInputControl.setIcon(new javax.swing.ImageIcon (getClass().getResource("/com/jaspersoft/jasperserver/irplugin/res/inputcontrol.png"))); 419 jMenuItemInputControl.setText("Input control"); 420 jMenuItemInputControl.addActionListener(new java.awt.event.ActionListener () { 421 public void actionPerformed(java.awt.event.ActionEvent 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 () { 434 public void actionPerformed(java.awt.event.ActionEvent 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 () { 443 public void actionPerformed(java.awt.event.ActionEvent 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 () { 453 public void actionPerformed(java.awt.event.ActionEvent 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 () { 463 public void actionPerformed(java.awt.event.ActionEvent 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 () { 474 public void actionPerformed(java.awt.event.ActionEvent 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 () { 483 public void actionPerformed(java.awt.event.ActionEvent evt) { 484 jMenuItemRefreshContentActionPerformed(evt); 485 } 486 }); 487 488 jPopupMenuServer.add(jMenuItemRefreshContent); 489 490 jMenuItemProperties.setText("Properties"); 491 jMenuItemProperties.addActionListener(new java.awt.event.ActionListener () { 492 public void actionPerformed(java.awt.event.ActionEvent 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 () { 501 public void actionPerformed(java.awt.event.ActionEvent 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 () { 510 public void actionPerformed(java.awt.event.ActionEvent evt) { 511 jMenuItemLinkInputControlActionPerformed(evt); 512 } 513 }); 514 515 jPopupMenuRUInputControls.add(jMenuItemLinkInputControl); 516 517 setLayout(new java.awt.BorderLayout ()); 518 519 jButtonAddServer.setIcon(new javax.swing.ImageIcon (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 () { 523 public void actionPerformed(java.awt.event.ActionEvent evt) { 524 jButtonAddServerActionPerformed(evt); 525 } 526 }); 527 528 jToolBar1.add(jButtonAddServer); 529 530 jButtonNewReportUnit.setIcon(new javax.swing.ImageIcon (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 () { 534 public void actionPerformed(java.awt.event.ActionEvent evt) { 535 jButtonPublishReportActionPerformed1(evt); 536 } 537 }); 538 539 jToolBar1.add(jButtonNewReportUnit); 540 541 jButtonSaveJrxml.setIcon(new javax.swing.ImageIcon (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 () { 545 public void actionPerformed(java.awt.event.ActionEvent evt) { 546 jButtonSaveJrxmlActionPerformed(evt); 547 } 548 }); 549 550 jToolBar1.add(jButtonSaveJrxml); 551 552 jButtonRunReport.setIcon(new javax.swing.ImageIcon (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 () { 556 public void actionPerformed(java.awt.event.ActionEvent 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 () { 567 public void valueChanged(javax.swing.event.TreeSelectionEvent evt) { 568 jTreeRepositoryValueChanged(evt); 569 } 570 }); 571 jTreeRepository.addMouseListener(new java.awt.event.MouseAdapter () { 572 public void mouseClicked(java.awt.event.MouseEvent evt) { 573 jTreeRepositoryMouseClicked(evt); 574 } 575 }); 576 577 jScrollPane1.setViewportView(jTreeRepository); 578 579 add(jScrollPane1, java.awt.BorderLayout.CENTER); 580 581 } 583 private void jMenuItemQueryActionPerformed(java.awt.event.ActionEvent evt) { newResource(ResourceDescriptor.TYPE_QUERY); 585 } 587 private void jMenuItemRunRUActionPerformed(java.awt.event.ActionEvent evt) { 589 jButtonRunReportActionPerformed(evt); 590 } 592 private void jButtonRunReportActionPerformed(java.awt.event.ActionEvent evt) { 594 TreePath path = jTreeRepository.getSelectionPath(); 595 if (path == null) return; 596 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 list = server.getWSClient().list( reportUnit.getDescriptor() ); 609 610 String dsUri = null; 611 612 List inputcontrols = new java.util.ArrayList (); 613 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 java.util.List args = new java.util.ArrayList (); 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 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 (); 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 t = new Thread (rr); 679 t.start(); 680 681 } catch (Exception ex) 682 { 683 StringWriter sw = new StringWriter (); 685 ex.printStackTrace(new java.io.PrintWriter ( 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 } 698 private void jMenuItemLinkInputControlActionPerformed(java.awt.event.ActionEvent evt) { 700 ResourceChooser rc = new ResourceChooser(); 702 703 TreePath path = jTreeRepository.getSelectionPath(); 704 if (path == null) return; 705 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )path.getLastPathComponent(); 706 707 JServer server = null; 709 710 String 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 ex) 749 { 750 JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage()); 751 ex.printStackTrace(); 752 } 753 } 754 755 } 756 757 } 759 private void jMenuItemLocalInputControlActionPerformed(java.awt.event.ActionEvent evt) { 761 newResource( ResourceDescriptor.TYPE_INPUT_CONTROL); 762 763 } 765 private void jMenuItemInputControlActionPerformed(java.awt.event.ActionEvent evt) { newResource(ResourceDescriptor.TYPE_INPUT_CONTROL); 767 } 769 private void jMenuItemDataTypejMenuItemDatasourcejMenuItemDataSourceActionPerformed(java.awt.event.ActionEvent evt) { newResource(ResourceDescriptor.TYPE_LOV); 771 } 773 private void jMenuItemDatasourcejMenuItemDataSourceActionPerformed(java.awt.event.ActionEvent evt) { newResource(ResourceDescriptor.TYPE_DATA_TYPE); 775 } 777 private void jMenuItemReferenceActionPerformed(java.awt.event.ActionEvent evt) { 779 newResource(ResourceDescriptor.TYPE_REFERENCE); 780 781 } 783 private void jMenuItemDataSourceActionPerformed(java.awt.event.ActionEvent evt) { 785 newResource(ResourceDescriptor.TYPE_DATASOURCE); 786 787 } 789 private void jMenuItemImportFontActionPerformed(java.awt.event.ActionEvent evt) { 791 TreePath path = jTreeRepository.getSelectionPath(); 792 if (path == null) return; 793 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 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; } 808 } 809 810 try { 812 String 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 ex) 822 { 823 JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage()); 824 ex.printStackTrace(); 825 } 826 } 827 } 828 829 } 831 private void jMenuItemConnectionActionPerformed(java.awt.event.ActionEvent evt) { 833 TreePath path = jTreeRepository.getSelectionPath(); 834 if (path == null) return; 835 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 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 } 883 private void jMenuItemReportUnitActionPerformed(java.awt.event.ActionEvent evt) { jButtonPublishReportActionPerformed1(evt); 885 } 887 private void jMenuItemDeleteActionPerformed(java.awt.event.ActionEvent evt) { 889 TreePath path = jTreeRepository.getSelectionPath(); 891 if (path == null) return; 892 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )path.getLastPathComponent(); 893 894 if ( selectedNode.getUserObject() instanceof RepositoryFolder ) 895 { 896 RepositoryFolder rf = (RepositoryFolder)selectedNode.getUserObject(); 897 898 String reportUnitUri = null; 899 900 String msg = "Are you sure you want to remove the folder '" + rf.getDescriptor().getLabel() +"'\n and all its contents?"; 901 902 RepositoryReportUnit reportUnit = null; 904 for (int i=path.getPathCount()-2; i>0; --i) 905 { 906 DefaultMutableTreeNode ancestorNode = (DefaultMutableTreeNode )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 )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 parent = (DefaultMutableTreeNode )selectedNode.getParent(); 952 if (parent != null) 953 { 954 parent.remove(selectedNode); 955 jTreeRepository.updateUI(); 956 } 957 958 } catch (Exception ex) 959 { 960 JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage()); 961 ex.printStackTrace(); 962 } 963 } 964 } 965 } 967 private void jMenuItemFontActionPerformed(java.awt.event.ActionEvent evt) { newResource(ResourceDescriptor.TYPE_FONT); 969 } 971 private void jMenuItemJarActionPerformed(java.awt.event.ActionEvent evt) { newResource(ResourceDescriptor.TYPE_CLASS_JAR); 973 } 975 private void jMenuItemJrxmlActionPerformed(java.awt.event.ActionEvent evt) { newResource(ResourceDescriptor.TYPE_JRXML); 977 } 979 private void jMenuItemBundleActionPerformed(java.awt.event.ActionEvent evt) { newResource(ResourceDescriptor.TYPE_RESOURCE_BUNDLE); 981 } 983 private void jMenuItemImageActionPerformed(java.awt.event.ActionEvent evt) { newResource(ResourceDescriptor.TYPE_IMAGE); 985 } 987 private void jMenuItemFolderActionPerformed(java.awt.event.ActionEvent evt) { 989 newResource(ResourceDescriptor.TYPE_FOLDER); 990 991 } 993 private void jButtonPublishReportActionPerformed1(java.awt.event.ActionEvent evt) { 995 TreePath path = jTreeRepository.getSelectionPath(); 997 if (path == null) return; 998 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )path.getLastPathComponent(); 999 1000 String 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 datasources = null; 1017 try { 1018 datasources = server.getWSClient().listDatasources(); 1019 } catch (Exception 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 1058 1059 } 1061 private void jButtonSaveJrxmlActionPerformed(java.awt.event.ActionEvent evt) { 1063 TreePath path = jTreeRepository.getSelectionPath(); 1065 if (path == null) return; 1066 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 fileToUpdate = rf.getReportFrame().getReport().getFilename(); 1075 try { 1076 1077 RepositoryReportUnit reportUnit = null; 1079 for (int i=path.getPathCount()-1; i>0; --i) 1080 { 1081 DefaultMutableTreeNode ancestorNode = (DefaultMutableTreeNode )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 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 } 1119 private void jTreeRepositoryValueChanged(javax.swing.event.TreeSelectionEvent evt) { updateToolBar(); 1121 } 1123 private void jMenuItemEditJRXMLActionPerformed(java.awt.event.ActionEvent evt) { 1125 TreePath path = jTreeRepository.getSelectionPath(); 1126 if (path == null) return; 1127 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 ex) 1137 { 1138 JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage()); 1139 ex.printStackTrace(); 1140 } 1141 } 1142 1143 } 1145 private void jMenuItemGetActionPerformed(java.awt.event.ActionEvent evt) { 1147 TreePath path = jTreeRepository.getSelectionPath(); 1148 if (path == null) return; 1149 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )path.getLastPathComponent(); 1150 1151 if ( selectedNode.getUserObject() instanceof RepositoryFile ) 1152 { 1153 RepositoryFile rf = (RepositoryFile)selectedNode.getUserObject(); 1154 JFileChooser jfc = new JFileChooser (); 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 ex) 1162 { 1163 JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage()); 1164 ex.printStackTrace(); 1165 } 1166 } 1167 } 1168 } 1170 private void jMenuItemRefreshContentActionPerformed(java.awt.event.ActionEvent evt) { 1172 TreePath path = jTreeRepository.getSelectionPath(); 1173 if (path == null) return; 1174 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )path.getLastPathComponent(); 1175 1176 1177 boolean isLoaded = false; 1178 String 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 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 list = server.getWSClient().list( descriptor); 1212 1213 1215 if (descriptor.getWsType().equals( descriptor.TYPE_REPORTUNIT )) 1216 { 1217 updateReportUnitNodeContent(selectedNode, list); 1218 } 1219 else 1220 { 1221 List updatedNodes = new java.util.ArrayList (); 1222 for (int i=0; i<list.size(); ++i) 1223 { 1224 ResourceDescriptor rd = (ResourceDescriptor)list.get(i); 1225 1226 boolean found = false; 1228 for (int j=0; j<selectedNode.getChildCount(); ++j) 1229 { 1230 RepositoryFolder rf = (RepositoryFolder)((DefaultMutableTreeNode )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 newNode = addChild(selectedNode, server, rd); 1243 System.out.println("Added node for " + rd.getUriString() + " " + newNode); 1244 updatedNodes.add( newNode ); 1245 } 1246 } 1247 1248 1249 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 ex) 1270 { 1271 JOptionPane.showMessageDialog(getPlugin().getMainFrame(),"Error: " + ex.getMessage()); 1272 ex.printStackTrace(); 1273 } 1274 1275 } 1276 } 1278 private void jMenuItemRefreshActionPerformed(java.awt.event.ActionEvent evt) { 1280 TreePath path = jTreeRepository.getSelectionPath(); 1281 if (path == null) return; 1282 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 () { 1291 public void run() { 1292 1293 try { 1294 Thread.currentThread().setContextClassLoader( MainFrame.getMainInstance().getReportClassLoader()); 1295 jTreeRepository.setCursor( new Cursor (Cursor.WAIT_CURSOR) ); 1296 1297 TreePath path = jTreeRepository.getSelectionPath(); 1298 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 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 } 1328 private void jMenuItemPropertiesActionPerformed(java.awt.event.ActionEvent evt) { 1330 TreePath path = jTreeRepository.getSelectionPath(); 1331 if (path == null) return; 1332 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 datasources = null; 1349 try { 1350 datasources = rf.getServer().getWSClient().listDatasources(); 1351 rrd.setDatasources(datasources); 1352 } catch (Exception 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 } 1466 private void jMenuItemLoginActionPerformed(java.awt.event.ActionEvent evt) { 1468 TreePath path = jTreeRepository.getSelectionPath(); 1470 if (path == null) return; 1471 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 () { 1486 public void run() { 1487 1488 try { 1489 Thread.currentThread().setContextClassLoader( MainFrame.getMainInstance().getReportClassLoader()); 1490 jTreeRepository.setCursor( new Cursor (Cursor.WAIT_CURSOR) ); 1491 1492 TreePath path = jTreeRepository.getSelectionPath(); 1493 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 1510 } catch (Exception 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 } 1523 int nFont = 0; 1524 private void jMenuItemExploreActionPerformed(java.awt.event.ActionEvent evt) { 1526 TreePath path = jTreeRepository.getSelectionPath(); 1528 if (path == null) return; 1529 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 () { 1537 public void run() { 1538 1539 try { 1540 Thread.currentThread().setContextClassLoader( MainFrame.getMainInstance().getReportClassLoader()); 1541 jTreeRepository.setCursor( new Cursor (Cursor.WAIT_CURSOR) ); 1542 1543 TreePath path = jTreeRepository.getSelectionPath(); 1544 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )path.getLastPathComponent(); 1545 JServer server = (JServer)selectedNode.getUserObject(); 1546 1547 WSClient wsclient = server.getWSClient(); 1548 1549 String 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 1558 ResourceDescriptor descriptor = new ResourceDescriptor(); 1559 descriptor.setWsType( descriptor.TYPE_FOLDER); 1560 descriptor.setUriString("/"); 1561 1562 1563 1564 List 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 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 () { 1601 public void run() { 1602 1603 try { 1604 Thread.currentThread().setContextClassLoader( MainFrame.getMainInstance().getReportClassLoader()); 1605 jTreeRepository.setCursor( new Cursor (Cursor.WAIT_CURSOR) ); 1606 1607 TreePath path = jTreeRepository.getSelectionPath(); 1608 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 xmlStringWriter = new StringWriter (); 1621 Marshaller.marshal(req, xmlStringWriter); 1622 1623 List list = wsclient.list(xmlStringWriter.toString()); 1624 1625 updateReportUnitNodeContent(selectedNode, list); 1630 1631 1632 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 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 RepositoryFolder folder = (RepositoryFolder)selectedNode.getUserObject(); 1662 if (!folder.isLoaded()) 1663 { 1664 SwingUtilities.invokeLater(new Runnable () { 1665 public void run() { 1666 1667 try { 1668 Thread.currentThread().setContextClassLoader( MainFrame.getMainInstance().getReportClassLoader()); 1669 jTreeRepository.setCursor( new Cursor (Cursor.WAIT_CURSOR) ); 1670 1671 TreePath path = jTreeRepository.getSelectionPath(); 1672 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 xmlStringWriter = new StringWriter (); 1686 Marshaller.marshal(req, xmlStringWriter); 1687 1688 List 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 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 } 1719 private void jMenuItemNewServerActionPerformed(java.awt.event.ActionEvent evt) { 1721 jButtonAddServerActionPerformed(null); 1722 1723 } 1725 private void jMenuItemServerDeleteActionPerformed(java.awt.event.ActionEvent evt) { 1727 TreePath path = jTreeRepository.getSelectionPath(); 1728 if (path == null) return; 1729 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 )jTreeRepository.getModel().getRoot()).remove( selectedNode ); 1753 jTreeRepository.updateUI(); 1754 } 1756 1757 } 1759 private void jMenuItemServerSettingsActionPerformed(java.awt.event.ActionEvent evt) { 1761 TreePath path = jTreeRepository.getSelectionPath(); 1762 if (path == null) return; 1763 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 } 1793 private void jTreeRepositoryMouseClicked(java.awt.event.MouseEvent evt) { 1795 1796 if (evt.getClickCount() == 1 && evt.getButton() == evt.BUTTON3) 1797 { 1798 jTreeRepository.setSelectionPath( jTreeRepository.getPathForLocation(evt.getX(), evt.getY() ) ); 1799 TreePath path = jTreeRepository.getSelectionPath(); 1800 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 selectedNode = (DefaultMutableTreeNode )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 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.getSelectionPath(); 1937 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )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 } 1959 private void jPopupMenuServerMouseClicked(java.awt.event.MouseEvent evt) { 1961 1962 1963 } 1965 private void jButtonAddServerActionPerformed(java.awt.event.ActionEvent evt) { 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 )this.jTreeRepository.getModel().getRoot()).add(new DefaultMutableTreeNode (sd.getJServer())); 1974 this.jTreeRepository.updateUI(); 1975 } 1976 1977 } 1979 1980 private javax.swing.JButton jButtonAddServer; 1982 private javax.swing.JButton jButtonNewReportUnit; 1983 private javax.swing.JButton jButtonRunReport; 1984 private javax.swing.JButton jButtonSaveJrxml; 1985 private javax.swing.JMenu jMenuAdd; 1986 private javax.swing.JMenuItem jMenuItemBundle; 1987 private javax.swing.JMenuItem jMenuItemConnection; 1988 private javax.swing.JMenuItem jMenuItemDataType; 1989 private javax.swing.JMenuItem jMenuItemDatasource; 1990 private javax.swing.JMenuItem jMenuItemDelete; 1991 private javax.swing.JMenuItem jMenuItemEditJRXML; 1992 private javax.swing.JMenuItem jMenuItemExplore; 1993 private javax.swing.JMenuItem jMenuItemFolder; 1994 private javax.swing.JMenuItem jMenuItemFont; 1995 private javax.swing.JMenuItem jMenuItemGet; 1996 private javax.swing.JMenuItem jMenuItemImage; 1997 private javax.swing.JMenuItem jMenuItemImportFont; 1998 private javax.swing.JMenuItem jMenuItemInputControl; 1999 private javax.swing.JMenuItem jMenuItemJar; 2000 private javax.swing.JMenuItem jMenuItemJrxml; 2001 private javax.swing.JMenuItem jMenuItemLinkInputControl; 2002 private javax.swing.JMenuItem jMenuItemListOfValues; 2003 private javax.swing.JMenuItem jMenuItemLocalInputControl; 2004 private javax.swing.JMenuItem jMenuItemLogin; 2005 private javax.swing.JMenuItem jMenuItemNewServer; 2006 private javax.swing.JMenuItem jMenuItemProperties; 2007 private javax.swing.JMenuItem jMenuItemQuery; 2008 private javax.swing.JMenuItem jMenuItemReference; 2009 private javax.swing.JMenuItem jMenuItemRefresh; 2010 private javax.swing.JMenuItem jMenuItemRefreshContent; 2011 private javax.swing.JMenuItem jMenuItemReportUnit; 2012 private javax.swing.JMenuItem jMenuItemRunRU; 2013 private javax.swing.JMenuItem jMenuItemServerDelete; 2014 private javax.swing.JMenuItem jMenuItemServerSettings; 2015 private javax.swing.JPopupMenu jPopupMenuRUInputControls; 2016 private javax.swing.JPopupMenu jPopupMenuServer; 2017 private javax.swing.JScrollPane jScrollPane1; 2018 private javax.swing.JSeparator jSeparator1; 2019 private javax.swing.JSeparator jSeparator2; 2020 private javax.swing.JSeparator jSeparator3; 2021 private javax.swing.JSeparator jSeparator4; 2022 private javax.swing.JSeparator jSeparator5; 2023 private javax.swing.JSeparator jSeparator6; 2024 private javax.swing.JSeparator jSeparator7; 2025 private javax.swing.JToolBar jToolBar1; 2026 private javax.swing.JTree jTreeRepository; 2027 2029 2030 2034 private void addChilds(DefaultMutableTreeNode selectedNode, JServer server, List 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 2048 private DefaultMutableTreeNode addChild(DefaultMutableTreeNode selectedNode, JServer server, ResourceDescriptor rd) 2049 { 2050 DefaultMutableTreeNode newNode = null; 2051 2052 RepositoryFolder obj = createRepositoryObject(server, rd); 2053 if (obj != null) 2054 { 2055 newNode = new DefaultMutableTreeNode (obj); 2056 selectedNode.add( newNode ); 2057 } 2058 return newNode; 2059 } 2060 2061 2062 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 resourceType) 2101 { 2102 TreePath path = jTreeRepository.getSelectionPath(); 2103 if (path == null) return; 2104 DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode )path.getLastPathComponent(); 2105 2106 JServer server = null; 2108 2109 String currentUri = "/"; 2110 String 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 2159 nrd.setVisible(true); 2160 2161 if (nrd.getDialogResult() == JOptionPane.OK_OPTION) 2162 { 2163 if (parentLoaded) 2164 { 2165 addChild((DefaultMutableTreeNode )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 rrd.setVisible(true); 2183 2184 if (rrd.getDialogResult() == JOptionPane.OK_OPTION) 2185 { 2186 if (parentLoaded) 2187 { 2188 addChild((DefaultMutableTreeNode )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 )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 )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 )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 )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 dmtn = (DefaultMutableTreeNode )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 )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 )selectedNode, server, nrd.getNewResourceDescriptor()); 2324 jTreeRepository.updateUI(); 2325 } 2326 else 2327 { 2328 jMenuItemExploreActionPerformed(null); 2329 } 2330 } 2331 2332 } 2333 } 2334 2335 2338 public JTree getTreeRepository() 2339 { 2340 return jTreeRepository; 2341 } 2342 2343 2346 public List getOpenedReportSources(JServer server) 2347 { 2348 java.util.ArrayList list = new java.util.ArrayList (); 2349 2350 DefaultMutableTreeNode root = (DefaultMutableTreeNode )jTreeRepository.getModel().getRoot(); 2351 2352 for (int i=0; i<root.getChildCount(); ++i) 2353 { 2354 DefaultMutableTreeNode dmn = (DefaultMutableTreeNode )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 getOpenedReportSources(DefaultMutableTreeNode dmn, List 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 )dmn.getChildAt(i), list); 2380 } 2381 2382 return list; 2383 } 2384 2385 2386 2398 private void updateReportUnitNodeContent(DefaultMutableTreeNode selectedNode, List list) 2399 { 2400 RepositoryReportUnit reportUnit = (RepositoryReportUnit)selectedNode.getUserObject(); 2401 2402 int position = 0; 2403 2404 2429 2430 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 )selectedNode.getChildAt(position)).getUserObject()).setDescriptor(rd); 2440 } 2441 else 2442 { 2443 RepositoryFolder rf = createRepositoryObject(reportUnit.getServer(), rd); 2444 selectedNode.add(new DefaultMutableTreeNode (rf)); 2445 } 2446 break; 2447 } 2448 } 2449 2450 position++; 2451 2452 DefaultMutableTreeNode controlSet = null; 2455 if (selectedNode.getChildCount() > position) 2456 { 2457 controlSet = (DefaultMutableTreeNode )selectedNode.getChildAt(position); 2458 } 2459 else 2460 { 2461 ControlsSet cs = new ControlsSet(); 2462 cs.setReportUnit(reportUnit); 2463 controlSet = new DefaultMutableTreeNode (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 (rf)); 2478 } 2479 } 2480 DefaultMutableTreeNode resourcesSet = null; 2483 if (selectedNode.getChildCount() > position) 2484 { 2485 resourcesSet = (DefaultMutableTreeNode )selectedNode.getChildAt(position); 2486 } 2487 else 2488 { 2489 ResourcesSet cs = new ResourcesSet(); 2490 cs.setReportUnit(reportUnit); 2491 resourcesSet = new DefaultMutableTreeNode (cs); 2492 selectedNode.add(resourcesSet); 2493 } 2494 Vector existingNodes = new Vector (); 2495 for (int i=0; i<resourcesSet.getChildCount(); ++i) 2496 { 2497 existingNodes.add( ((DefaultMutableTreeNode )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 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 (repoFile)); 2526 break; 2527 } 2528 } 2529 } 2530 2531 if (!found) 2532 { 2533 RepositoryFolder rf = createRepositoryObject(reportUnit.getServer(), rd); 2534 resourcesSet.add(new DefaultMutableTreeNode (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 2555 public static RepositoryReportUnit getParentReportUnit(DefaultMutableTreeNode node) 2556 { 2557 if (node.getUserObject() instanceof RepositoryReportUnit) return (RepositoryReportUnit)node.getUserObject(); 2558 2559 Object [] 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 |