1 32 33 package it.businesslogic.ireport.gui.library; 34 import it.businesslogic.ireport.gui.library.objects.*; 35 import it.businesslogic.ireport.gui.*; 36 import it.businesslogic.ireport.*; 37 import it.businesslogic.ireport.gui.docking.GenericDragTargetListener; 38 import it.businesslogic.ireport.gui.subdataset.SubDatasetDialog; 39 import it.businesslogic.ireport.util.Misc; 40 import java.awt.dnd.DropTarget ; 41 import javax.swing.*; 42 import javax.swing.tree.*; 43 import java.util.*; 44 import java.awt.event.ActionEvent ; 45 import it.businesslogic.ireport.util.I18n; 46 47 51 public class LibraryPanel extends javax.swing.JPanel 52 implements 53 it.businesslogic.ireport.util.LanguageChangedListener, 54 it.businesslogic.ireport.gui.event.SubDatasetObjectChangedListener, 55 it.businesslogic.ireport.gui.event.ReportSubDatasetChangedListener { 56 57 DefaultMutableTreeNode fieldsNode = null; 58 DefaultMutableTreeNode variablesNode = null; 59 DefaultMutableTreeNode parametersNode = null; 60 DefaultMutableTreeNode systemObjectsNode = null; 61 62 JReportFrame jrf; 63 64 65 66 public LibraryPanel() { 67 68 initComponents(); 69 70 jLibraryTree.setCellRenderer( new LibraryTreeCellRenderer()); 71 DefaultMutableTreeNode root = new DefaultMutableTreeNode("Libs"); 72 73 DefaultTreeModel dtm = new DefaultTreeModel(root); 74 75 jLibraryTree.setModel( dtm ); 76 jLibraryTree.setDragEnabled(true); 77 jLibraryTree.setRootVisible( false ); 78 jLibraryTree.setTransferHandler(new TreeTransfertHandler()); 79 80 jLibraryTree.setDropTarget(new DropTarget (this, new GenericDragTargetListener())); 81 82 jLibraryTree.expandPath( new TreePath(root)); 83 84 fieldsNode = new DefaultMutableTreeNode("Fields",true); 85 root.add( fieldsNode ); 86 87 variablesNode = new DefaultMutableTreeNode("Variables",true); 88 root.add( variablesNode ); 89 90 parametersNode = new DefaultMutableTreeNode("Parameters",true); 91 root.add( parametersNode ); 92 93 this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put( 94 KeyStroke.getKeyStroke("F5"), "refresh"); 95 this.getActionMap().put("refresh", 96 new AbstractAction("refresh") { 97 public void actionPerformed(ActionEvent evt) { 98 setJReportFrame(jrf); 99 } 100 }); 101 105 it.businesslogic.ireport.util.I18n.addOnLanguageChangedListener( this ); 106 107 loadSystemObjects(); 108 loadCustomObjects(); 109 110 updateReportObjects(); 111 this.languageChanged(null); 112 } 113 114 119 private void initComponents() { 121 jPopupMenuFields = new javax.swing.JPopupMenu (); 122 jMenuItemEdit = new javax.swing.JMenuItem (); 123 jMenuAdd = new javax.swing.JMenu (); 124 jMenuItemNewField = new javax.swing.JMenuItem (); 125 jMenuItemNewVariable = new javax.swing.JMenuItem (); 126 jMenuItemParameter = new javax.swing.JMenuItem (); 127 jSeparator3 = new javax.swing.JSeparator (); 128 jMenuItemNewSubDataset = new javax.swing.JMenuItem (); 129 jSeparator1 = new javax.swing.JSeparator (); 130 jMenuItemCut = new javax.swing.JMenuItem (); 131 jMenuItemCopy = new javax.swing.JMenuItem (); 132 jMenuItemPaste = new javax.swing.JMenuItem (); 133 jMenuItemDelete = new javax.swing.JMenuItem (); 134 jSeparator2 = new javax.swing.JSeparator (); 135 jMenuItemRefresh = new javax.swing.JMenuItem (); 136 jScrollPane1 = new javax.swing.JScrollPane (); 137 jLibraryTree = new javax.swing.JTree (); 138 139 jPopupMenuFields.addPopupMenuListener(new javax.swing.event.PopupMenuListener () { 140 public void popupMenuCanceled(javax.swing.event.PopupMenuEvent evt) { 141 } 142 public void popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) { 143 } 144 public void popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) { 145 jPopupMenuFieldsPopupMenuWillBecomeVisible(evt); 146 } 147 }); 148 149 jMenuItemEdit.setIcon(new javax.swing.ImageIcon ("")); 150 jMenuItemEdit.setText(it.businesslogic.ireport.util.I18n.getString("edit", "Edit")); 152 jMenuItemEdit.setEnabled(false); 153 jMenuItemEdit.addActionListener(new java.awt.event.ActionListener () { 154 public void actionPerformed(java.awt.event.ActionEvent evt) { 155 jMenuItemEditActionPerformed(evt); 156 } 157 }); 158 159 jPopupMenuFields.add(jMenuItemEdit); 160 161 jMenuAdd.setText(it.businesslogic.ireport.util.I18n.getString("add", "Add")); jMenuItemNewField.setIcon(new javax.swing.ImageIcon ("")); 164 jMenuItemNewField.setText("Field"); 165 jMenuItemNewField.addActionListener(new java.awt.event.ActionListener () { 166 public void actionPerformed(java.awt.event.ActionEvent evt) { 167 jMenuItemNewFieldActionPerformed(evt); 168 } 169 }); 170 171 jMenuAdd.add(jMenuItemNewField); 172 173 jMenuItemNewVariable.setIcon(new javax.swing.ImageIcon ("")); 174 jMenuItemNewVariable.setText("Variable"); 175 jMenuItemNewVariable.addActionListener(new java.awt.event.ActionListener () { 176 public void actionPerformed(java.awt.event.ActionEvent evt) { 177 jMenuItemNewVariableActionPerformed(evt); 178 } 179 }); 180 181 jMenuAdd.add(jMenuItemNewVariable); 182 183 jMenuItemParameter.setIcon(new javax.swing.ImageIcon ("")); 184 jMenuItemParameter.setText("Parameter"); 185 jMenuItemParameter.addActionListener(new java.awt.event.ActionListener () { 186 public void actionPerformed(java.awt.event.ActionEvent evt) { 187 jMenuItemParameterActionPerformed(evt); 188 } 189 }); 190 191 jMenuAdd.add(jMenuItemParameter); 192 193 jMenuAdd.add(jSeparator3); 194 195 jMenuItemNewSubDataset.setText("Sub dataset"); 196 jMenuItemNewSubDataset.addActionListener(new java.awt.event.ActionListener () { 197 public void actionPerformed(java.awt.event.ActionEvent evt) { 198 jMenuItemNewSubDatasetActionPerformed(evt); 199 } 200 }); 201 202 jMenuAdd.add(jMenuItemNewSubDataset); 203 204 jPopupMenuFields.add(jMenuAdd); 205 206 jPopupMenuFields.add(jSeparator1); 207 208 jMenuItemCut.setIcon(new javax.swing.ImageIcon (getClass().getResource("/it/businesslogic/ireport/icons/menu/cut.png"))); 209 jMenuItemCut.setText(it.businesslogic.ireport.util.I18n.getString("cut", "Cut")); 211 jMenuItemCut.setEnabled(false); 212 jMenuItemCut.addActionListener(new java.awt.event.ActionListener () { 213 public void actionPerformed(java.awt.event.ActionEvent evt) { 214 jMenuItemCutActionPerformed(evt); 215 } 216 }); 217 218 jPopupMenuFields.add(jMenuItemCut); 219 220 jMenuItemCopy.setIcon(new javax.swing.ImageIcon (getClass().getResource("/it/businesslogic/ireport/icons/menu/copy.png"))); 221 jMenuItemCopy.setText(it.businesslogic.ireport.util.I18n.getString("copy", "Copy")); 223 jMenuItemCopy.setEnabled(false); 224 jMenuItemCopy.addActionListener(new java.awt.event.ActionListener () { 225 public void actionPerformed(java.awt.event.ActionEvent evt) { 226 jMenuItemCopyActionPerformed(evt); 227 } 228 }); 229 230 jPopupMenuFields.add(jMenuItemCopy); 231 232 jMenuItemPaste.setIcon(new javax.swing.ImageIcon (getClass().getResource("/it/businesslogic/ireport/icons/menu/paste.png"))); 233 jMenuItemPaste.setText(it.businesslogic.ireport.util.I18n.getString("paste", "Paste")); 235 jMenuItemPaste.setEnabled(false); 236 jMenuItemPaste.addActionListener(new java.awt.event.ActionListener () { 237 public void actionPerformed(java.awt.event.ActionEvent evt) { 238 jMenuItemPasteActionPerformed(evt); 239 } 240 }); 241 242 jPopupMenuFields.add(jMenuItemPaste); 243 244 jMenuItemDelete.setIcon(new javax.swing.ImageIcon (getClass().getResource("/it/businesslogic/ireport/icons/menu/delete.png"))); 245 jMenuItemDelete.setText(it.businesslogic.ireport.util.I18n.getString("delete", "Delete")); 247 jMenuItemDelete.setEnabled(false); 248 jMenuItemDelete.addActionListener(new java.awt.event.ActionListener () { 249 public void actionPerformed(java.awt.event.ActionEvent evt) { 250 jMenuItemDeleteActionPerformed(evt); 251 } 252 }); 253 254 jPopupMenuFields.add(jMenuItemDelete); 255 256 jPopupMenuFields.add(jSeparator2); 257 258 jMenuItemRefresh.setText(it.businesslogic.ireport.util.I18n.getString("refresh", "Refresh")); 260 jMenuItemRefresh.addActionListener(new java.awt.event.ActionListener () { 261 public void actionPerformed(java.awt.event.ActionEvent evt) { 262 jMenuItemRefreshActionPerformed(evt); 263 } 264 }); 265 266 jPopupMenuFields.add(jMenuItemRefresh); 267 268 setLayout(new java.awt.BorderLayout ()); 269 270 jScrollPane1.addMouseListener(new java.awt.event.MouseAdapter () { 271 public void mouseClicked(java.awt.event.MouseEvent evt) { 272 jScrollPane1MouseClicked(evt); 273 } 274 }); 275 276 jLibraryTree.setDragEnabled(true); 277 jLibraryTree.addMouseListener(new java.awt.event.MouseAdapter () { 278 public void mouseClicked(java.awt.event.MouseEvent evt) { 279 jLibraryTreeMouseClicked(evt); 280 } 281 }); 282 283 jScrollPane1.setViewportView(jLibraryTree); 284 285 add(jScrollPane1, java.awt.BorderLayout.CENTER); 286 287 } 289 private void jMenuItemNewSubDatasetActionPerformed(java.awt.event.ActionEvent evt) { 291 SubDatasetDialog sdd = new SubDatasetDialog(Misc.frameFromComponent(this),true); 292 sdd.setVisible(true); 293 294 } 296 private void jMenuItemPasteActionPerformed(java.awt.event.ActionEvent evt) { TreePath[] paths = jLibraryTree.getSelectionPaths(); 298 299 if (jrf == null) return; 300 if (paths.length == 1) 301 { 302 if (paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode) 303 { 304 305 SubDataset sd = jrf.getReport(); 306 307 if (paths[0].getPath().length >= 3) 308 { 309 Object osd = ((DefaultMutableTreeNode)paths[0].getPath()[1]).getUserObject(); 310 if (osd instanceof SubDataset) 311 { 312 sd = (SubDataset)osd; 313 } 314 } 315 316 ValuesDialog vd = MainFrame.getMainInstance().getValuesDialog(); 317 DefaultMutableTreeNode dmn = (DefaultMutableTreeNode)paths[0].getLastPathComponent(); 318 if ((dmn.getUserObject().equals(it.businesslogic.ireport.util.I18n.getString("gui.library.fields","Fields")) || dmn.getUserObject() instanceof JRField) && jrf.getMainFrame().getValuesDialog().getClipboardFields().size() > 0) 319 { 320 vd.getValuesPanel().duplicateFields( vd.getClipboardFields(), sd ); 321 } 322 if ((dmn.getUserObject().equals(it.businesslogic.ireport.util.I18n.getString("gui.library.variables","Variables")) || dmn.getUserObject() instanceof JRVariable) && jrf.getMainFrame().getValuesDialog().getClipboardVariables().size() > 0) 323 { 324 vd.getValuesPanel().duplicateVariables( vd.getClipboardVariables(), sd ); 325 } 326 if ((dmn.getUserObject().equals(it.businesslogic.ireport.util.I18n.getString("gui.library.parameters","Parameters")) || dmn.getUserObject() instanceof JRParameter) && jrf.getMainFrame().getValuesDialog().getClipboardParameters().size() > 0) 327 { 328 vd.getValuesPanel().duplicateParameters( vd.getClipboardParameters(), sd ); 329 } 330 } 331 } 332 333 } 335 private void jMenuItemCopyActionPerformed(java.awt.event.ActionEvent evt) { TreePath[] paths = jLibraryTree.getSelectionPaths(); 337 338 boolean clearedVariablesClipboard = false; 339 boolean clearedParametersClipboard = false; 340 boolean clearedFieldsClipboard = false; 341 342 for (int i=0; i<paths.length && jrf != null; ++i) 343 { 344 ValuesDialog vd = MainFrame.getMainInstance().getValuesDialog(); 345 Report report = jrf.getReport(); 346 if (paths[i].getLastPathComponent() instanceof DefaultMutableTreeNode) 347 { 348 Object obj = ((DefaultMutableTreeNode)paths[i].getLastPathComponent()).getUserObject(); 349 if (obj instanceof JRVariable ) 350 { 351 if (!clearedVariablesClipboard) 352 { 353 clearedVariablesClipboard = true; 354 vd.getClipboardVariables().removeAllElements(); 355 } 356 vd.getClipboardVariables().add( ((JRVariable)obj).cloneMe() ); 357 } 358 if (obj instanceof JRField ) 359 { 360 if (!clearedFieldsClipboard) 361 { 362 clearedFieldsClipboard = true; 363 vd.getClipboardFields().removeAllElements(); 364 } 365 vd.getClipboardFields().add( ((JRField)obj).cloneMe() ); 366 } 367 if (obj instanceof JRParameter ) 368 { 369 if (!clearedParametersClipboard) 370 { 371 clearedParametersClipboard = true; 372 vd.getClipboardParameters().removeAllElements(); 373 } 374 vd.getClipboardParameters().add( ((JRParameter)obj).cloneMe() ); 375 } 376 } 377 } 378 } 380 private void jMenuItemCutActionPerformed(java.awt.event.ActionEvent evt) { TreePath[] paths = jLibraryTree.getSelectionPaths(); 382 383 boolean clearedVariablesClipboard = false; 384 boolean clearedParametersClipboard = false; 385 boolean clearedFieldsClipboard = false; 386 387 for (int i=0; i<paths.length && jrf != null; ++i) 388 { 389 ValuesDialog vd = MainFrame.getMainInstance().getValuesDialog(); 390 Report report = jrf.getReport(); 391 392 SubDataset sd = report; 393 394 if (paths[i].getPath().length == 4) 395 { 396 Object osd = ((DefaultMutableTreeNode)paths[i].getPath()[1]).getUserObject(); 397 if (osd instanceof SubDataset) 398 { 399 sd = (SubDataset)osd; 400 } 401 } 402 403 if (paths[i].getLastPathComponent() instanceof DefaultMutableTreeNode) 404 { 405 Object obj = ((DefaultMutableTreeNode)paths[i].getLastPathComponent()).getUserObject(); 406 if (obj instanceof JRVariable ) 407 { 408 if (!clearedVariablesClipboard) 409 { 410 clearedVariablesClipboard = true; 411 vd.getClipboardVariables().removeAllElements(); 412 } 413 vd.getClipboardVariables().add( ((JRVariable)obj).cloneMe() ); 414 sd.removeVariable((JRVariable)obj); 415 } 416 if (obj instanceof JRField ) 417 { 418 if (!clearedFieldsClipboard) 419 { 420 clearedFieldsClipboard = true; 421 vd.getClipboardFields().removeAllElements(); 422 } 423 vd.getClipboardFields().add( ((JRField)obj).cloneMe() ); 424 sd.removeField((JRField)obj); 425 } 426 if (obj instanceof JRParameter ) 427 { 428 if (!clearedParametersClipboard) 429 { 430 clearedParametersClipboard = true; 431 vd.getClipboardParameters().removeAllElements(); 432 } 433 vd.getClipboardParameters().add( ((JRParameter)obj).cloneMe() ); 434 sd.removeParameter((JRParameter)obj); 435 } 436 } 437 } 438 } 440 private void jMenuItemDeleteActionPerformed(java.awt.event.ActionEvent evt) { 442 TreePath[] paths = jLibraryTree.getSelectionPaths(); 443 444 for (int i=0; i<paths.length && jrf != null; ++i) 445 { 446 Report report = jrf.getReport(); 447 SubDataset sd = report; 448 449 try { 450 if (paths[i].getPath().length == 4) 451 { 452 Object osd = ((DefaultMutableTreeNode)paths[i].getPath()[1]).getUserObject(); 453 if (osd instanceof SubDataset) 454 { 455 sd = (SubDataset)osd; 456 } 457 } 458 if (paths[i].getLastPathComponent() instanceof DefaultMutableTreeNode) 459 { 460 Object obj = ((DefaultMutableTreeNode)paths[i].getLastPathComponent()).getUserObject(); 461 if (obj instanceof JRVariable ) { sd.removeVariable((JRVariable)obj ); } 462 if (obj instanceof JRField ) { sd.removeField((JRField)obj ); } 463 if (obj instanceof JRParameter ) { sd.removeParameter((JRParameter)obj ); } 464 if (obj instanceof SubDataset ) { 465 466 if (JOptionPane.showConfirmDialog(jLibraryTree, 467 I18n.getFormattedString("messages.libraryPanel.removingSubdataset","Do you really want remove subDataset {0} ?", new Object []{obj}) ) == JOptionPane.OK_OPTION) 468 { 469 jrf.getReport().removeSubDataset((SubDataset)obj); 470 } 471 } 472 } 473 } catch (Exception ex) 474 { 475 ex.printStackTrace(); 476 } 477 } 478 } 480 private void jMenuItemParameterActionPerformed(java.awt.event.ActionEvent evt) { MainFrame.getMainInstance().getValuesDialog().getValuesPanel().newParameter(getSelectedSubDataset()); 482 } 484 private void jMenuItemNewFieldActionPerformed(java.awt.event.ActionEvent evt) { MainFrame.getMainInstance().getValuesDialog().getValuesPanel().newField(getSelectedSubDataset()); 486 } 488 491 private SubDataset getSelectedSubDataset() 492 { 493 if (jrf == null) return null; 494 495 SubDataset sd = jrf.getReport(); 496 TreePath[] paths = jLibraryTree.getSelectionPaths(); 497 if (paths.length == 1) 498 { 499 if (paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode) 500 { 501 if (paths[0].getPath().length >= 2) 502 { 503 Object osd = ((DefaultMutableTreeNode)paths[0].getPath()[1]).getUserObject(); 504 if (osd instanceof SubDataset) 505 { 506 sd = (SubDataset)osd; 507 } 508 } 509 } 510 } 511 512 return sd; 513 } 514 515 516 private void jMenuItemNewVariableActionPerformed(java.awt.event.ActionEvent evt) { 518 MainFrame.getMainInstance().getValuesDialog().getValuesPanel().newVariable(getSelectedSubDataset()); 520 } 522 private void jScrollPane1MouseClicked(java.awt.event.MouseEvent evt) { jLibraryTreeMouseClicked(evt); 524 } 526 private void jMenuItemRefreshActionPerformed(java.awt.event.ActionEvent evt) { updateReportObjects(); 528 } 530 private void jMenuItemEditActionPerformed(java.awt.event.ActionEvent evt) { 532 TreePath[] paths = jLibraryTree.getSelectionPaths(); 534 535 if (paths == null || paths.length == 0) 536 { 537 return; 538 } 539 540 if (paths.length == 1 && paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode) 541 { 542 Object obj = ((DefaultMutableTreeNode)paths[0].getLastPathComponent()).getUserObject(); 543 if (obj instanceof JRVariable ) { MainFrame.getMainInstance().getValuesDialog().getValuesPanel().modifyVariable((JRVariable)obj ); } 544 if (obj instanceof JRField ) { MainFrame.getMainInstance().getValuesDialog().getValuesPanel().modifyField((JRField)obj ); } 545 if (obj instanceof JRParameter ) { MainFrame.getMainInstance().getValuesDialog().getValuesPanel().modifyParameter((JRParameter)obj ); } 546 if (obj instanceof SubDataset ) { 547 java.awt.Frame parent = Misc.frameFromComponent(this); 548 SubDatasetDialog cd = new SubDatasetDialog(parent,true); 549 cd.setSubDataset( (SubDataset)obj ); 550 cd.setVisible(true); 551 } 552 } 553 } 555 private void jPopupMenuFieldsPopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) { 557 if (this.jrf != null) 558 { 559 jMenuAdd.setEnabled( true ); 560 jMenuItemRefresh.setEnabled( true ); 561 } 562 else 563 { 564 jMenuItemCut.setEnabled(false); 565 jMenuItemCopy.setEnabled(false); 566 jMenuItemDelete.setEnabled(false); 567 jMenuItemPaste.setEnabled(false); 568 jMenuItemEdit.setEnabled(false); 569 jMenuItemRefresh.setEnabled(false); 570 jMenuAdd.setEnabled( false ); 571 return; 572 } 573 574 TreePath[] paths = jLibraryTree.getSelectionPaths(); 576 577 if (paths == null || paths.length == 0) 578 { 579 jMenuItemCut.setEnabled(false); 580 jMenuItemCopy.setEnabled(false); 581 jMenuItemDelete.setEnabled(false); 582 jMenuItemPaste.setEnabled(false); 583 jMenuItemEdit.setEnabled(false); 584 return; 585 } 586 587 if (paths.length == 1 && 588 paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode && 589 ( (((DefaultMutableTreeNode)paths[0].getLastPathComponent()).getUserObject() instanceof JRField ) || 590 (((DefaultMutableTreeNode)paths[0].getLastPathComponent()).getUserObject() instanceof JRVariable ) || 591 (((DefaultMutableTreeNode)paths[0].getLastPathComponent()).getUserObject() instanceof JRParameter ) || 592 (((DefaultMutableTreeNode)paths[0].getLastPathComponent()).getUserObject() instanceof SubDataset )) ) 593 { 594 jMenuItemEdit.setEnabled(true); 595 } 596 else 597 { 598 jMenuItemEdit.setEnabled( false ); 599 } 600 601 if (paths.length > 0) 602 { 603 jMenuItemCut.setEnabled(true); 604 jMenuItemCopy.setEnabled(true); 605 jMenuItemDelete.setEnabled(true); 606 } 607 else 608 { 609 jMenuItemCut.setEnabled(false); 610 jMenuItemCopy.setEnabled(false); 611 jMenuItemDelete.setEnabled(false); 612 } 613 614 jMenuItemPaste.setEnabled(false); 615 616 if (paths.length == 1) 618 { 619 if (paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode) 620 { 621 DefaultMutableTreeNode dmn = (DefaultMutableTreeNode)paths[0].getLastPathComponent(); 622 if ((dmn.getUserObject().equals(it.businesslogic.ireport.util.I18n.getString("gui.library.fields","Fields")) || dmn.getUserObject() instanceof JRField) && jrf.getMainFrame().getValuesDialog().getClipboardFields().size() > 0) 623 { 624 jMenuItemPaste.setEnabled(true); 625 } 626 if ((dmn.getUserObject().equals(it.businesslogic.ireport.util.I18n.getString("gui.library.variables","Variables")) || dmn.getUserObject() instanceof JRVariable) && jrf.getMainFrame().getValuesDialog().getClipboardVariables().size() > 0) 627 { 628 jMenuItemPaste.setEnabled(true); 629 } 630 if ((dmn.getUserObject().equals(it.businesslogic.ireport.util.I18n.getString("gui.library.parameters","Parameters")) || dmn.getUserObject() instanceof JRParameter) && jrf.getMainFrame().getValuesDialog().getClipboardParameters().size() > 0) 631 { 632 jMenuItemPaste.setEnabled(true); 633 } 634 } 635 } 636 } 638 private void jLibraryTreeMouseClicked(java.awt.event.MouseEvent evt) { 640 if (evt.getClickCount() == 1 && evt.getButton() == evt.BUTTON3) 641 { 642 jLibraryTree.setSelectionPath( jLibraryTree.getPathForLocation(evt.getX(), evt.getY() ) ); 643 jPopupMenuFields.show( jLibraryTree, evt.getPoint().x, evt.getPoint().y); 644 } 645 if (evt.getClickCount() == 2 && evt.getButton() == evt.BUTTON1) 646 { 647 TreePath[] paths = jLibraryTree.getSelectionPaths(); 648 649 if (paths == null || paths.length == 0) 650 { 651 return; 652 } 653 654 if (paths.length == 1 && paths[0].getLastPathComponent() instanceof DefaultMutableTreeNode) 655 { 656 Object obj = ((DefaultMutableTreeNode)paths[0].getLastPathComponent()).getUserObject(); 657 if (obj instanceof SubDataset ) return; 658 } 659 660 jMenuItemEditActionPerformed(new java.awt.event.ActionEvent (this,0,"")); 661 } 662 } 664 public void languageChanged(it.businesslogic.ireport.util.LanguageChangedEvent evt) { 665 666 fieldsNode.setUserObject( it.businesslogic.ireport.util.I18n.getString("gui.library.fields","Fields")); 667 variablesNode.setUserObject( it.businesslogic.ireport.util.I18n.getString("gui.library.variables","Variables")); 668 parametersNode.setUserObject( it.businesslogic.ireport.util.I18n.getString("gui.library.parameters","Parameters")); 669 jLibraryTree.updateUI(); 670 } 671 672 public void setJReportFrame(JReportFrame jrf) 673 { 674 this.jrf = jrf; 675 updateReportObjects(); 676 677 updateSubDatasets(); 678 679 } 680 681 private void loadCustomObjects() 682 { 683 684 } 685 private void loadSystemObjects() 686 { 687 DefaultMutableTreeNode root = (DefaultMutableTreeNode)jLibraryTree.getModel().getRoot(); 688 root.add(new DefaultMutableTreeNode(new PageNumberObject() )); 689 root.add(new DefaultMutableTreeNode(new TotalPagesObject() )); 690 root.add(new DefaultMutableTreeNode(new PageXYObject() )); 691 root.add(new DefaultMutableTreeNode(new TotalObject() )); 692 root.add(new DefaultMutableTreeNode(new DateObject() )); 693 root.add(new DefaultMutableTreeNode(new PercentageObject() )); 694 } 695 696 private void addLibraryObject(String folder, AbstractLibraryObject obj) 697 { 698 DefaultMutableTreeNode root = (DefaultMutableTreeNode)jLibraryTree.getModel().getRoot(); 699 if (folder == null || folder.length() == 0) 700 { 701 root.add(new DefaultMutableTreeNode(new PageNumberObject() )); 702 } 703 else 704 { 705 Enumeration enum_childrens = root.children(); 707 while (enum_childrens.hasMoreElements()) 708 { 709 DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)enum_childrens.nextElement(); 710 if ( (""+dmtn.getUserObject()).equalsIgnoreCase(folder ) ) 711 { 712 dmtn.add(new DefaultMutableTreeNode( obj )); 713 } 714 } 715 } 716 } 717 718 public void updateReportObjects() 719 { 720 this.fieldsNode.removeAllChildren(); 721 this.parametersNode.removeAllChildren(); 722 this.variablesNode.removeAllChildren(); 723 724 if (jrf == null) { 725 726 jLibraryTree.updateUI(); 727 return; 728 } 729 730 java.util.Enumeration e = jrf.getReport().getFields().elements(); 731 while (e.hasMoreElements()) 732 { 733 fieldsNode.add(new DefaultMutableTreeNode(e.nextElement())); 734 } 735 e = jrf.getReport().getParameters().elements(); 736 while (e.hasMoreElements()) 737 { 738 parametersNode.add(new DefaultMutableTreeNode(e.nextElement())); 739 } 740 741 e = jrf.getReport().getVariables().elements(); 742 while (e.hasMoreElements()) 743 { 744 variablesNode.add(new DefaultMutableTreeNode(e.nextElement())); 745 } 746 747 jLibraryTree.updateUI(); 748 } 749 750 private javax.swing.JTree jLibraryTree; 752 private javax.swing.JMenu jMenuAdd; 753 private javax.swing.JMenuItem jMenuItemCopy; 754 private javax.swing.JMenuItem jMenuItemCut; 755 private javax.swing.JMenuItem jMenuItemDelete; 756 private javax.swing.JMenuItem jMenuItemEdit; 757 private javax.swing.JMenuItem jMenuItemNewField; 758 private javax.swing.JMenuItem jMenuItemNewSubDataset; 759 private javax.swing.JMenuItem jMenuItemNewVariable; 760 private javax.swing.JMenuItem jMenuItemParameter; 761 private javax.swing.JMenuItem jMenuItemPaste; 762 private javax.swing.JMenuItem jMenuItemRefresh; 763 private javax.swing.JPopupMenu jPopupMenuFields; 764 private javax.swing.JScrollPane jScrollPane1; 765 private javax.swing.JSeparator jSeparator1; 766 private javax.swing.JSeparator jSeparator2; 767 private javax.swing.JSeparator jSeparator3; 768 770 public void subDatasetObjectChanged(it.businesslogic.ireport.gui.event.SubDatasetObjectChangedEvent evt) 771 { 772 if (evt != null && evt.getSource() instanceof Report) 773 { 774 this.updateReportObjects(); 775 } 776 else 777 { 778 updateSubDatasetNode( evt.getSource() ); 779 } 780 } 781 782 public void reportSubDatasetChanged(it.businesslogic.ireport.gui.event.ReportSubDatasetChangedEvent evt) { 783 784 DefaultMutableTreeNode root = (DefaultMutableTreeNode)jLibraryTree.getModel().getRoot(); 785 if (evt.getAction() == evt.ADDED && 786 evt.getObjectType() == evt.OBJECT_SUBDATASET) 787 { 788 int lastDatasourceIndex = 3; 789 for (lastDatasourceIndex=3; root.getChildCount() > lastDatasourceIndex; lastDatasourceIndex++) 790 { 791 if ( ((DefaultMutableTreeNode)root.getChildAt(lastDatasourceIndex)).getUserObject() instanceof SubDataset) continue; 792 break; 793 } 794 795 for (int i=0; i<evt.getElements().size(); ++i) 796 { 797 DefaultMutableTreeNode subDatasetNode = new DefaultMutableTreeNode(evt.getElements().elementAt(i)); 798 root.insert(subDatasetNode, lastDatasourceIndex); 799 updateSubDatasetNode( subDatasetNode ); 800 lastDatasourceIndex++; 801 } 802 } else if (evt.getAction() == evt.REMOVED && 803 evt.getObjectType() == evt.OBJECT_SUBDATASET) 804 { 805 806 DefaultMutableTreeNode subDatasetNode = null; 807 for (int i=0; i<evt.getElements().size(); ++i) 808 { 809 for (int k=0; k< root.getChildCount(); ++k) 811 { 812 if (((DefaultMutableTreeNode)root.getChildAt(k)).getUserObject() == evt.getElements().elementAt(i)) 813 { 814 root.remove(k); 815 break; 816 } 817 } 818 } 819 820 jLibraryTree.updateUI(); 821 822 } else if (evt.getAction() == evt.CHANGED && 823 evt.getObjectType() == evt.OBJECT_SUBDATASET) 824 { 825 jLibraryTree.updateUI(); 826 } 827 } 828 829 830 public void updateSubDatasetNode(SubDataset subDataset) 831 { 832 DefaultMutableTreeNode root = (DefaultMutableTreeNode)jLibraryTree.getModel().getRoot(); 833 for (int k=0; k< root.getChildCount(); ++k) 834 { 835 if (((DefaultMutableTreeNode)root.getChildAt(k)).getUserObject() == subDataset) 836 { 837 updateSubDatasetNode((DefaultMutableTreeNode)root.getChildAt(k)); 838 return; 839 } 840 } 841 842 } 843 844 public void updateSubDatasetNode(DefaultMutableTreeNode subDatasetNode ) 845 { 846 DefaultMutableTreeNode dsFieldsNode = null; 847 DefaultMutableTreeNode dsVariablesNode = null; 848 DefaultMutableTreeNode dsParametersNode = null; 849 850 SubDataset subDataset = (SubDataset)subDatasetNode.getUserObject(); 851 852 if (subDatasetNode.getChildCount() == 0) 853 { 854 dsFieldsNode = new DefaultMutableTreeNode(it.businesslogic.ireport.util.I18n.getString("gui.library.fields","Fields"),true); 855 subDatasetNode.add( dsFieldsNode ); 856 857 dsVariablesNode = new DefaultMutableTreeNode(it.businesslogic.ireport.util.I18n.getString("gui.library.variables","Variables"),true); 858 subDatasetNode.add( dsVariablesNode ); 859 860 dsParametersNode = new DefaultMutableTreeNode(it.businesslogic.ireport.util.I18n.getString("gui.library.parameters","Parameters"),true); 861 subDatasetNode.add( dsParametersNode ); 862 } 863 else 864 { 865 dsFieldsNode = (DefaultMutableTreeNode)subDatasetNode.getChildAt(0); 866 dsVariablesNode = (DefaultMutableTreeNode)subDatasetNode.getChildAt(1); 867 dsParametersNode = (DefaultMutableTreeNode)subDatasetNode.getChildAt(2); 868 } 869 870 dsFieldsNode.removeAllChildren(); 871 dsVariablesNode.removeAllChildren(); 872 dsParametersNode.removeAllChildren(); 873 874 java.util.Enumeration e = subDataset.getFields().elements(); 875 while (e.hasMoreElements()) 876 { 877 dsFieldsNode.add(new DefaultMutableTreeNode(e.nextElement())); 878 } 879 e = subDataset.getParameters().elements(); 880 while (e.hasMoreElements()) 881 { 882 dsParametersNode.add(new DefaultMutableTreeNode(e.nextElement())); 883 } 884 885 e = subDataset.getVariables().elements(); 886 while (e.hasMoreElements()) 887 { 888 dsVariablesNode.add(new DefaultMutableTreeNode(e.nextElement())); 889 } 890 891 jLibraryTree.updateUI(); 892 } 893 894 public void updateSubDatasets() 895 { 896 DefaultMutableTreeNode root = (DefaultMutableTreeNode)jLibraryTree.getModel().getRoot(); 897 for (int k=0; k< root.getChildCount(); ++k) 898 { 899 if (((DefaultMutableTreeNode)root.getChildAt(k)).getUserObject() instanceof SubDataset) 900 { 901 root.remove(k); 902 k--; 903 } 904 } 905 906 if (jrf != null) 907 { 908 int lastDatasourceIndex = 3; 909 for (int i=0; i< jrf.getReport().getSubDatasets().size(); ++i) 910 { 911 DefaultMutableTreeNode subDatasetNode = new DefaultMutableTreeNode(jrf.getReport().getSubDatasets().elementAt(i)); 912 root.insert(subDatasetNode, lastDatasourceIndex); 913 updateSubDatasetNode( subDatasetNode ); 914 lastDatasourceIndex++; 915 } 916 } 917 918 jLibraryTree.updateUI(); 919 } 920 public void applyI18n(){ 921 jMenuItemNewField.setText(I18n.getString("libraryPanel.menuItemNewField","Field")); 923 jMenuItemNewSubDataset.setText(I18n.getString("libraryPanel.menuItemNewSubDataset","Sub dataset")); 924 jMenuItemNewVariable.setText(I18n.getString("libraryPanel.menuItemNewVariable","Variable")); 925 jMenuItemParameter.setText(I18n.getString("libraryPanel.menuItemParameter","Parameter")); 926 } 928 } 929 | Popular Tags |