1 15 19 20 package mondrian.gui; 21 22 import java.awt.Dimension ; 23 import java.awt.event.ActionEvent ; 24 import java.awt.event.ActionListener ; 25 import java.awt.event.FocusAdapter ; 26 import java.awt.event.FocusEvent ; 27 import java.util.Iterator ; 28 import java.util.Map ; 29 import javax.swing.event.InternalFrameAdapter ; 30 import javax.swing.filechooser.FileSystemView ; 31 import mondrian.olap.Connection; 32 import mondrian.olap.DriverManager; 33 import mondrian.olap.MondrianProperties; 34 35 import javax.swing.*; 36 37 import java.io.*; 38 import java.net.MalformedURLException ; 39 import java.net.URI ; 40 import java.net.URISyntaxException ; 41 import java.util.HashMap ; 42 import java.util.Locale ; 43 import java.util.Properties ; 44 import java.util.ResourceBundle ; 45 import java.util.MissingResourceException ; 46 import java.util.Vector ; 47 import javax.swing.event.InternalFrameEvent ; 48 import javax.swing.plaf.basic.BasicArrowButton ; 49 import javax.swing.text.DefaultEditorKit ; 50 51 import org.eigenbase.xom.XMLOutput; 52 53 57 public class Workbench extends javax.swing.JFrame { 58 59 private static final String LAST_USED1 = "lastUsed1"; 60 private static final String LAST_USED1_URL = "lastUsedUrl1"; 61 private static final String LAST_USED2 = "lastUsed2"; 62 private static final String LAST_USED2_URL = "lastUsedUrl2"; 63 private static final String LAST_USED3 = "lastUsed3"; 64 private static final String LAST_USED3_URL = "lastUsedUrl3"; 65 private static final String LAST_USED4 = "lastUsed4"; 66 private static final String LAST_USED4_URL = "lastUsedUrl4"; 67 68 private Connection connection; 69 private String jdbcDriverClassName; 70 private String jdbcConnectionUrl; 71 72 private JDBCMetaData jdbcMetaData; 73 74 private final ClassLoader myClassLoader; 75 private final ResourceBundle resources; 76 private Properties workbenchProperties; 77 private static int newSchema = 1; 78 79 private String openFile=null; 80 81 private Map schemaWindowMap = new HashMap (); private Vector mdxWindows = new Vector (); 83 private int windowMenuMapIndex = 1; 84 85 private static ResourceBundle resBundle = null; 86 87 88 public Workbench() { 89 myClassLoader = this.getClass().getClassLoader(); 90 91 loadWorkbenchProperties(); 92 initDataSource(); 93 initComponents(); 94 95 resources = ResourceBundle.getBundle("mondrian.gui.resources.gui", Locale.getDefault(), myClassLoader); 97 98 ImageIcon icon = new javax.swing.ImageIcon (myClassLoader.getResource(resources.getString("cube"))); 99 100 this.setIconImage(icon.getImage()); 101 } 103 104 107 private void loadWorkbenchProperties() { 108 workbenchProperties = new Properties(); 109 try { 110 workbenchProperties.load(new FileInputStream(new File("workbench.properties"))); 111 String resourceName = "mondrian.gui.resources.workbenchInfo"; 112 resBundle = ResourceBundle.getBundle(resourceName); 113 } catch (Exception e) { 114 116 } 118 } 119 120 123 private void storeWorkbenchProperties() { 124 OutputStream out = null; 126 try { 127 out = (OutputStream) new FileOutputStream(new File("workbench.properties")); 128 workbenchProperties.store(out, "Workbench configuration"); 129 } catch (Exception e) { 130 } finally { 132 try { 133 out.close(); 134 } catch (IOException eIO) { 135 } 137 } 138 } 139 140 143 private void initDataSource() { 144 jdbcDriverClassName = workbenchProperties.getProperty("jdbcDriverClassName"); 145 jdbcConnectionUrl = workbenchProperties.getProperty("jdbcConnectionUrl"); 146 } 147 148 151 private void initComponents() { 152 desktopPane = new javax.swing.JDesktopPane (); 153 jToolBar1 = new javax.swing.JToolBar (); 154 jToolBar2 = new javax.swing.JToolBar (); 155 toolbarNewPopupMenu = new JPopupMenu(); 156 toolbarNewButton = new javax.swing.JButton (); 157 toolbarOpenButton = new javax.swing.JButton (); 158 toolbarSaveButton = new javax.swing.JButton (); 159 toolbarSaveAsButton = new javax.swing.JButton (); 160 jPanel1 = new javax.swing.JPanel (); 161 jPanel2 = new javax.swing.JPanel (); 162 toolbarPreferencesButton = new javax.swing.JButton (); 163 menuBar = new javax.swing.JMenuBar (); 164 fileMenu = new javax.swing.JMenu (); 165 newMenu = new javax.swing.JMenu (); 166 newSchemaMenuItem = new javax.swing.JMenuItem (); 167 newQueryMenuItem = new javax.swing.JMenuItem (); 168 newJDBCExplorerMenuItem = new javax.swing.JMenuItem (); 169 newSchemaMenuItem2 = new javax.swing.JMenuItem (); 170 newQueryMenuItem2 = new javax.swing.JMenuItem (); 171 newJDBCExplorerMenuItem2 = new javax.swing.JMenuItem (); 172 openMenuItem = new javax.swing.JMenuItem (); 173 preferencesMenuItem = new javax.swing.JMenuItem (); 174 lastUsed1MenuItem = new javax.swing.JMenuItem (); 175 lastUsed2MenuItem = new javax.swing.JMenuItem (); 176 lastUsed3MenuItem = new javax.swing.JMenuItem (); 177 lastUsed4MenuItem = new javax.swing.JMenuItem (); 178 saveMenuItem = new javax.swing.JMenuItem (); 179 saveAsMenuItem = new javax.swing.JMenuItem (); 180 jSeparator1 = new javax.swing.JSeparator (); 181 jSeparator2 = new javax.swing.JSeparator (); 182 jSeparator3 = new javax.swing.JSeparator (); 183 jSeparator4 = new javax.swing.JSeparator (); 184 exitMenuItem = new javax.swing.JMenuItem (); 185 windowMenu = new javax.swing.JMenu (); 186 helpMenu = new javax.swing.JMenu (); 187 editMenu = new javax.swing.JMenu (); 188 cutMenuItem = new javax.swing.JMenuItem (new DefaultEditorKit.CutAction ()); 189 copyMenuItem = new javax.swing.JMenuItem (new DefaultEditorKit.CopyAction ()); 190 pasteMenuItem = new javax.swing.JMenuItem (new DefaultEditorKit.PasteAction ()); 191 deleteMenuItem = new javax.swing.JMenuItem (); 192 aboutMenuItem = new javax.swing.JMenuItem (); 193 toolsMenu = new javax.swing.JMenu (); 194 viewMenu = new javax.swing.JMenu (); 195 viewDimensionsMenuItem = new javax.swing.JCheckBoxMenuItem (); 196 viewMeasuresMenuItem = new javax.swing.JCheckBoxMenuItem (); 197 viewCubesMenuItem = new javax.swing.JCheckBoxMenuItem (); 198 viewXMLMenuItem = new javax.swing.JCheckBoxMenuItem (); 199 200 setTitle("Schema Workbench"); 201 setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); 202 addWindowListener(new java.awt.event.WindowAdapter () { 203 public void windowClosing(java.awt.event.WindowEvent evt) { 204 closeAllSchemaFrames(true); 205 } 206 }); 207 208 getContentPane().add(desktopPane, java.awt.BorderLayout.CENTER); 209 210 211 newSchemaMenuItem2.setText("Schema"); 212 newSchemaMenuItem2.addActionListener(new java.awt.event.ActionListener () { 213 public void actionPerformed(java.awt.event.ActionEvent evt) { 214 newSchemaMenuItemActionPerformed(evt); 215 } 216 }); 217 218 219 newQueryMenuItem2.setText("MDX Query"); 220 newQueryMenuItem2.addActionListener(new java.awt.event.ActionListener () { 221 public void actionPerformed(java.awt.event.ActionEvent evt) { 222 newQueryMenuItemActionPerformed(evt); 223 } 224 }); 225 226 227 newJDBCExplorerMenuItem2.setText("JDBC Explorer"); 228 newJDBCExplorerMenuItem2.addActionListener(new java.awt.event.ActionListener () { 229 public void actionPerformed(java.awt.event.ActionEvent evt) { 230 newJDBCExplorerMenuItemActionPerformed(evt); 231 } 232 }); 233 234 235 toolbarNewPopupMenu.add(newSchemaMenuItem2); 236 toolbarNewPopupMenu.add(newQueryMenuItem2); 237 toolbarNewPopupMenu.add(newJDBCExplorerMenuItem2); 238 239 240 jPanel2.setLayout(new java.awt.BorderLayout ()); 241 jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder()); 242 jPanel2.setMaximumSize(new java.awt.Dimension (50, 28) ); 244 toolbarNewButton.setIcon(new javax.swing.ImageIcon (getClass().getResource("/toolbarButtonGraphics/general/New16.gif"))); 245 toolbarNewButton.setToolTipText("New"); 246 toolbarNewButton.setBorderPainted(false); 247 toolbarNewButton.addActionListener(new ActionListener () { 248 public void actionPerformed(ActionEvent e) { 249 toolbarNewPopupMenu.show(jPanel2,0,jPanel2.getSize().height); 250 } 251 }); 252 253 jToolBar2.setFloatable(false); 254 jToolBar2.add(toolbarNewButton); 255 256 jPanel2.add(jToolBar2,java.awt.BorderLayout.CENTER); 257 258 toolbarNewArrowButton = new BasicArrowButton (SwingConstants.SOUTH); 259 toolbarNewArrowButton.setToolTipText("New"); 260 toolbarNewArrowButton.setBorderPainted(false); 261 toolbarNewArrowButton.addActionListener(new ActionListener () { 262 public void actionPerformed(ActionEvent e) { 263 toolbarNewPopupMenu.show(jPanel2,0,jPanel2.getSize().height); 264 } 265 }); 266 267 jPanel2.add(toolbarNewArrowButton,java.awt.BorderLayout.EAST); 268 269 jToolBar1.add(jPanel2,0); 272 273 274 275 276 toolbarOpenButton.setIcon(new javax.swing.ImageIcon (getClass().getResource("/toolbarButtonGraphics/general/Open16.gif"))); 277 toolbarOpenButton.setToolTipText("Open"); 278 toolbarOpenButton.addActionListener(new java.awt.event.ActionListener () { 279 public void actionPerformed(java.awt.event.ActionEvent evt) { 280 openMenuItemActionPerformed(evt); 281 } 282 }); 283 284 jToolBar1.add(toolbarOpenButton); 285 286 toolbarSaveButton.setIcon(new javax.swing.ImageIcon (getClass().getResource("/toolbarButtonGraphics/general/Save16.gif"))); 287 toolbarSaveButton.setToolTipText("Save"); 288 toolbarSaveButton.addActionListener(new java.awt.event.ActionListener () { 289 public void actionPerformed(java.awt.event.ActionEvent evt) { 290 saveMenuItemActionPerformed(evt); 291 } 292 }); 293 294 jToolBar1.add(toolbarSaveButton); 295 296 toolbarSaveAsButton.setIcon(new javax.swing.ImageIcon (getClass().getResource("/toolbarButtonGraphics/general/SaveAs16.gif"))); 297 toolbarSaveAsButton.setToolTipText("Save As"); 298 toolbarSaveAsButton.addActionListener(new java.awt.event.ActionListener () { 299 public void actionPerformed(java.awt.event.ActionEvent evt) { 300 saveAsMenuItemActionPerformed(evt); 301 } 302 }); 303 304 jToolBar1.add(toolbarSaveAsButton); 305 306 jPanel1.setMaximumSize(new java.awt.Dimension (8, 8)); jToolBar1.add(jPanel1); 308 309 toolbarPreferencesButton.setIcon(new javax.swing.ImageIcon (getClass().getResource("/toolbarButtonGraphics/general/Preferences16.gif"))); 310 toolbarPreferencesButton.setToolTipText("Preferences"); 311 toolbarPreferencesButton.addActionListener(new java.awt.event.ActionListener () { 312 public void actionPerformed(java.awt.event.ActionEvent evt) { 313 toolbarPreferencesButtonActionPerformed(evt); 314 } 315 }); 316 317 jToolBar1.add(toolbarPreferencesButton); 318 319 320 getContentPane().add(jToolBar1, java.awt.BorderLayout.NORTH); 321 322 fileMenu.setText("File"); 323 newMenu.setText("New"); 324 325 newSchemaMenuItem.setText("Schema"); 326 newSchemaMenuItem.addActionListener(new java.awt.event.ActionListener () { 327 public void actionPerformed(java.awt.event.ActionEvent evt) { 328 newSchemaMenuItemActionPerformed(evt); 329 } 330 }); 331 332 newMenu.add(newSchemaMenuItem); 333 334 newQueryMenuItem.setText("MDX Query"); 335 newQueryMenuItem.addActionListener(new java.awt.event.ActionListener () { 336 public void actionPerformed(java.awt.event.ActionEvent evt) { 337 newQueryMenuItemActionPerformed(evt); 338 } 339 }); 340 341 newMenu.add(newQueryMenuItem); 342 343 newJDBCExplorerMenuItem.setText("JDBC Explorer"); 344 newJDBCExplorerMenuItem.addActionListener(new java.awt.event.ActionListener () { 345 public void actionPerformed(java.awt.event.ActionEvent evt) { 346 newJDBCExplorerMenuItemActionPerformed(evt); 347 } 348 }); 349 350 newMenu.add(newJDBCExplorerMenuItem); 351 352 fileMenu.add(newMenu); 353 354 openMenuItem.setText("Open"); 355 openMenuItem.addActionListener(new java.awt.event.ActionListener () { 356 public void actionPerformed(java.awt.event.ActionEvent evt) { 357 openMenuItemActionPerformed(evt); 358 } 359 }); 360 361 fileMenu.add(openMenuItem); 362 363 saveMenuItem.setText("Save"); 364 saveMenuItem.addActionListener(new java.awt.event.ActionListener () { 365 public void actionPerformed(java.awt.event.ActionEvent evt) { 366 saveMenuItemActionPerformed(evt); 367 } 368 }); 369 370 fileMenu.add(saveMenuItem); 371 372 saveAsMenuItem.setText("Save As ..."); 373 saveAsMenuItem.addActionListener(new java.awt.event.ActionListener () { 374 public void actionPerformed(java.awt.event.ActionEvent evt) { 375 saveAsMenuItemActionPerformed(evt); 376 } 377 }); 378 379 fileMenu.add(saveAsMenuItem); 380 381 fileMenu.add(jSeparator2); 383 384 lastUsed1MenuItem.setText(workbenchProperties.getProperty("lastUsed1")); 385 lastUsed1MenuItem.addActionListener(new java.awt.event.ActionListener () { 386 public void actionPerformed(java.awt.event.ActionEvent evt) { 387 lastUsed1MenuItemActionPerformed(evt); 388 } 389 }); 390 fileMenu.add(lastUsed1MenuItem); 391 392 lastUsed2MenuItem.setText(workbenchProperties.getProperty("lastUsed2")); 393 lastUsed2MenuItem.addActionListener(new java.awt.event.ActionListener () { 394 public void actionPerformed(java.awt.event.ActionEvent evt) { 395 lastUsed2MenuItemActionPerformed(evt); 396 } 397 }); 398 fileMenu.add(lastUsed2MenuItem); 399 400 lastUsed3MenuItem.setText(workbenchProperties.getProperty("lastUsed3")); 401 lastUsed3MenuItem.addActionListener(new java.awt.event.ActionListener () { 402 public void actionPerformed(java.awt.event.ActionEvent evt) { 403 lastUsed3MenuItemActionPerformed(evt); 404 } 405 }); 406 fileMenu.add(lastUsed3MenuItem); 407 408 lastUsed4MenuItem.setText(workbenchProperties.getProperty("lastUsed4")); 409 lastUsed4MenuItem.addActionListener(new java.awt.event.ActionListener () { 410 public void actionPerformed(java.awt.event.ActionEvent evt) { 411 lastUsed4MenuItemActionPerformed(evt); 412 } 413 }); 414 fileMenu.add(lastUsed4MenuItem); 415 416 updateLastUsedMenu(); 417 fileMenu.add(jSeparator1); 418 419 exitMenuItem.setText("Exit"); 420 exitMenuItem.addActionListener(new java.awt.event.ActionListener () { 421 public void actionPerformed(java.awt.event.ActionEvent evt) { 422 exitMenuItemActionPerformed(evt); 423 } 424 }); 425 426 fileMenu.add(exitMenuItem); 427 428 menuBar.add(fileMenu); 429 430 editMenu.setText("Edit"); 431 cutMenuItem.setText("Cut"); 432 editMenu.add(cutMenuItem); 433 434 copyMenuItem.setText("Copy"); 435 editMenu.add(copyMenuItem); 436 437 pasteMenuItem.setText("Paste"); 438 editMenu.add(pasteMenuItem); 439 440 deleteMenuItem.setText("Delete"); 441 editMenu.add(deleteMenuItem); 442 443 menuBar.add(editMenu); 444 editMenu.add(pasteMenuItem); 445 446 viewMenu.setText("View"); 447 viewXMLMenuItem.setText("View XML"); 448 viewXMLMenuItem.addActionListener(new java.awt.event.ActionListener () { 449 public void actionPerformed(java.awt.event.ActionEvent evt) { 450 viewXMLMenuItemActionPerformed(evt); 451 } 452 }); 453 viewMenu.add(viewXMLMenuItem); 454 menuBar.add(viewMenu); 455 456 toolsMenu.setText("Tools"); 457 preferencesMenuItem.setText("Preferences"); 458 preferencesMenuItem.addActionListener(new java.awt.event.ActionListener () { 459 public void actionPerformed(java.awt.event.ActionEvent evt) { 460 toolbarPreferencesButtonActionPerformed(evt); 461 } 462 }); 463 toolsMenu.add(preferencesMenuItem); 464 menuBar.add(toolsMenu); 465 466 467 windowMenu.setText("Windows"); 468 469 cascadeMenuItem = new javax.swing.JMenuItem (); 470 cascadeMenuItem.setText("Cascade Windows"); 471 cascadeMenuItem.addActionListener(new java.awt.event.ActionListener () { 472 public void actionPerformed(java.awt.event.ActionEvent evt) { 473 cascadeMenuItemActionPerformed(evt); 474 } 475 }); 476 477 tileMenuItem = new javax.swing.JMenuItem (); 478 tileMenuItem.setText("Tile Windows"); 479 tileMenuItem.addActionListener(new java.awt.event.ActionListener () { 480 public void actionPerformed(java.awt.event.ActionEvent evt) { 481 tileMenuItemActionPerformed(evt); 482 } 483 }); 484 485 closeAllMenuItem = new javax.swing.JMenuItem (); 486 closeAllMenuItem.setText("Close All"); 487 closeAllMenuItem.addActionListener(new java.awt.event.ActionListener () { 488 public void actionPerformed(java.awt.event.ActionEvent evt) { 489 closeAllMenuItemActionPerformed(evt); 490 } 491 }); 492 493 minimizeMenuItem = new javax.swing.JMenuItem (); 494 minimizeMenuItem.setText("Minimize All"); 495 minimizeMenuItem.addActionListener(new java.awt.event.ActionListener () { 496 public void actionPerformed(java.awt.event.ActionEvent evt) { 497 minimizeMenuItemActionPerformed(evt); 498 } 499 }); 500 501 maximizeMenuItem = new javax.swing.JMenuItem (); 502 maximizeMenuItem.setText("Maximize All"); 503 maximizeMenuItem.addActionListener(new java.awt.event.ActionListener () { 504 public void actionPerformed(java.awt.event.ActionEvent evt) { 505 maximizeMenuItemActionPerformed(evt); 506 } 507 }); 508 509 menuBar.add(windowMenu); 510 511 aboutMenuItem.setText("About"); 512 aboutMenuItem.addActionListener(new java.awt.event.ActionListener () { 513 public void actionPerformed(java.awt.event.ActionEvent evt) { 514 aboutMenuItemActionPerformed(evt); 515 } 516 }); 517 518 helpMenu.add(aboutMenuItem); 519 520 helpMenu.setText("Help"); 521 menuBar.add(helpMenu); 522 523 setJMenuBar(menuBar); 524 525 pack(); 526 } 527 528 private void tileMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 529 Dimension dsize = desktopPane.getSize(); 530 int desktopW = (int) dsize.getWidth(); 531 int desktopH = (int) dsize.getHeight(); 532 int darea = (int) (desktopW*desktopH); 533 534 double eacharea= darea/(schemaWindowMap.size()+mdxWindows.size()); 535 int wh = (int) Math.sqrt(eacharea); 536 537 Iterator []its = new Iterator [2]; 538 539 its[0] = schemaWindowMap.keySet().iterator(); its[1] = mdxWindows.iterator(); 541 542 JInternalFrame sf=null; 543 int x=0, y=0; 544 545 try { 546 for (int i=0; i<its.length; i++) { 547 Iterator it = its[i]; 548 while (it.hasNext()) { 549 sf = (JInternalFrame) it.next(); 550 if (sf != null) { 551 if (sf.isIcon()) { 552 } else { 554 sf.setMaximum(false); 555 sf.moveToFront(); 556 if ((x >= desktopW) || (((desktopW-x)*wh) < (eacharea/2))) { 557 y+=wh; 559 x=0; 560 } 561 int sfwidth = ((x+wh) < desktopW ? wh : desktopW-x); 562 int sfheight = ((y+wh) < desktopH ? wh : desktopH-y); 563 sf.setBounds(x, y, sfwidth, sfheight); 564 x += sfwidth; 565 } 566 } 567 } 568 } 569 } catch (Exception ex) { 570 ex.printStackTrace(); 571 } 573 } 574 private void cascadeMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 576 Iterator []its = new Iterator [2]; 577 578 its[0] = schemaWindowMap.keySet().iterator(); its[1] = mdxWindows.iterator(); 580 int sfi = 1; 581 JInternalFrame sf=null; 582 583 try { 584 for (int i=0; i<its.length; i++) { 585 Iterator it = its[i]; 586 while (it.hasNext()) { 587 sf = (JInternalFrame) it.next(); 588 if (sf != null) { 589 if (sf.isIcon()) { 590 } else { 592 sf.setMaximum(false); 593 sf.setLocation(30*sfi, 30*sfi); 594 sf.moveToFront(); 595 sf.setSelected(true); 596 sfi++; 597 } 598 } 599 } 600 } 601 } catch (Exception ex) { 602 ex.printStackTrace(); 603 } 605 } 606 607 private void closeAllMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 609 closeAllSchemaFrames(false); 610 } 611 612 private void closeAllSchemaFrames(boolean exitAfterClose) { 613 Object [][] its = new Object [2][]; its[0] = schemaWindowMap.keySet().toArray(); its[1] = mdxWindows.toArray(); 616 JInternalFrame sf=null; 617 618 try { 619 for (int i=0; i<its.length; i++) { 620 for (int j=0; j<its[i].length; j++) { 621 sf = (JInternalFrame) its[i][j]; 622 if (sf != null) { 623 if (sf.getContentPane().getComponent(0) instanceof SchemaExplorer) { 624 SchemaExplorer se = (SchemaExplorer) sf.getContentPane().getComponent(0); 625 sf.setSelected(true); 626 int response = confirmFrameClose(sf, se); 627 if (response == 2) { return; 629 } 630 if (response == 3) { sf.setClosed(true); 632 } 633 } 634 } 635 } 636 } 637 if (((schemaWindowMap.keySet().size()) == 0) && exitAfterClose) { 639 System.exit(0); 640 } 641 } catch (Exception ex) { 642 ex.printStackTrace(); 643 } 644 } 645 646 private int confirmFrameClose(JInternalFrame schemaFrame, SchemaExplorer se) { 647 if (se.isDirty()) { 648 JMenuItem schemaMenuItem = (JMenuItem) schemaWindowMap.get(desktopPane.getSelectedFrame()); 649 int answer = JOptionPane.showConfirmDialog(null, 650 "Save changes to "+se.getSchemaFile()+"?" , 651 "Schema", JOptionPane.YES_NO_CANCEL_OPTION); 652 switch(answer) { case 0: 654 saveMenuItemActionPerformed(null); 655 schemaWindowMap.remove(schemaFrame); updateMDXCatalogList(); 657 schemaFrame.dispose(); 658 windowMenu.remove(schemaMenuItem); break; 660 case 1: 661 schemaFrame.dispose(); 662 schemaWindowMap.remove(schemaFrame); 663 windowMenu.remove(schemaMenuItem); 664 break; 665 case 2: 666 try { 667 schemaFrame.setClosed(false); 668 schemaFrame.show(); 669 } catch (Exception ex) { 670 ex.printStackTrace(); 671 } 672 } 673 return answer; 674 } 675 return 3; 676 } 677 678 private void minimizeMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 679 Iterator []its = new Iterator [2]; 680 681 its[0] = schemaWindowMap.keySet().iterator(); its[1] = mdxWindows.iterator(); 683 JInternalFrame sf; 684 685 try { 686 for (int i=0; i<its.length; i++) { 687 Iterator it = its[i]; 688 while (it.hasNext()) { 689 sf = (JInternalFrame) it.next(); 690 if (sf != null) { 691 if (sf.isIcon()) { 692 } else { 694 sf.setIcon(true); 695 } 696 } 697 } 698 } 699 } catch (Exception ex) { 700 ex.printStackTrace(); 701 } 703 } 704 705 private void maximizeMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 706 Iterator []its = new Iterator [2]; 707 708 its[0] = schemaWindowMap.keySet().iterator(); its[1] = mdxWindows.iterator(); 710 JInternalFrame sf; 711 712 try { 713 for (int i=0; i<its.length; i++) { 714 Iterator it = its[i]; 715 while (it.hasNext()) { 716 sf = (JInternalFrame) it.next(); 717 if (sf != null) { 718 sf.setIcon(false); 719 sf.setMaximum(true); 720 } 721 } 722 } 723 } catch (Exception ex) { 724 ex.printStackTrace(); 725 } 727 } 728 729 private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 730 try { 731 JEditorPane jEditorPane = new JEditorPane(myClassLoader.getResource(resources.getString("version")).toString()); 732 jEditorPane.setEditable(false); 733 JScrollPane jScrollPane = new JScrollPane(jEditorPane); 734 JPanel jPanel = new JPanel(); 735 jPanel.setLayout(new java.awt.BorderLayout ()); 736 jPanel.add(jScrollPane, java.awt.BorderLayout.CENTER); 737 738 JInternalFrame jf = new JInternalFrame(); 739 jf.setTitle("About"); 740 jf.getContentPane().add(jPanel); 741 742 Dimension screenSize = this.getSize(); 743 int aboutW = 400; 744 int aboutH = 300; 745 int width = (screenSize.width / 2) - (aboutW/2); 746 int height = (screenSize.height / 2) - (aboutH/2) - 100; ; 747 jf.setBounds(width, height, aboutW, aboutH); 748 jf.setClosable(true); 749 750 desktopPane.add(jf); 751 752 jf.setVisible(true); 753 jf.show(); 754 } catch (Exception ex) { 755 ex.printStackTrace(); 756 } 757 758 } 759 private void newJDBCExplorerMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 760 try { 761 if (this.jdbcDriverClassName==null || this.jdbcConnectionUrl==null) { 762 throw new Exception ("Driver="+this.jdbcDriverClassName+"\nConn Url="+this.jdbcConnectionUrl); 763 } 764 765 JInternalFrame jf = new JInternalFrame(); 766 jf.setTitle("JDBC Explorer - " + this.jdbcConnectionUrl); 767 768 Class.forName(this.jdbcDriverClassName); 769 java.sql.Connection con = java.sql.DriverManager.getConnection(this.jdbcConnectionUrl); 770 771 JDBCExplorer jdbce = new JDBCExplorer(con); 772 773 jf.getContentPane().add(jdbce); 774 jf.setBounds(0, 0, 500, 480); 775 jf.setClosable(true); 776 jf.setIconifiable(true); 777 jf.setMaximizable(true); 778 jf.setResizable(true); 779 jf.setVisible(true); 780 781 desktopPane.add(jf); 782 783 jf.show(); 784 } catch (Exception ex) { 785 JOptionPane.showMessageDialog(this, "Database connection could not be done.\n"+ex.getMessage(), "Database Connection Error" , JOptionPane.ERROR_MESSAGE); 786 } 788 } 789 790 private void toolbarPreferencesButtonActionPerformed(java.awt.event.ActionEvent evt) { 791 PreferencesDialog pd = new PreferencesDialog(this, true); 792 pd.setJDBCConnectionUrl(jdbcConnectionUrl); 793 pd.setJDBCDriverClassName(jdbcDriverClassName); 794 795 pd.show(); 796 797 if (pd.accepted()) { 798 jdbcConnectionUrl = pd.getJDBCConnectionUrl(); 799 jdbcDriverClassName = pd.getJDBCDriverClassName(); 800 801 workbenchProperties.setProperty("jdbcDriverClassName", jdbcDriverClassName); 802 workbenchProperties.setProperty("jdbcConnectionUrl", jdbcConnectionUrl); 803 804 } 805 806 } 807 808 809 private void newSchemaMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 810 MondrianProperties.instance(); 811 815 File defaultDir = FileSystemView.getFileSystemView().getDefaultDirectory(); 816 File outputFile ; do { 818 outputFile = new File(defaultDir, "Schema"+ newSchema++ +".xml"); 819 } while (outputFile.exists()); 820 833 openSchemaFrame(outputFile, true); 834 } 835 836 private void newQueryMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 837 838 843 JMenuItem schemaMenuItem = (JMenuItem) schemaWindowMap.get(desktopPane.getSelectedFrame()); 844 845 final JInternalFrame jf = new JInternalFrame(); 846 jf.setTitle("MDX Query"); 847 QueryPanel qp = new QueryPanel(); 848 849 jf.getContentPane().add(qp); 850 jf.setBounds(0, 0, 500, 480); 851 jf.setClosable(true); 852 jf.setIconifiable(true); 853 jf.setMaximizable(true); 854 jf.setResizable(true); 855 jf.setVisible(true); 856 857 desktopPane.add(jf); 858 jf.show(); 859 try { 860 jf.setSelected(true); 861 } catch(Exception ex) { 862 } 864 865 mdxWindows.add(jf); 867 868 final javax.swing.JMenuItem queryMenuItem = new javax.swing.JMenuItem (); 870 queryMenuItem.setText(windowMenuMapIndex + " MDX"); queryMenuItem.addActionListener(new java.awt.event.ActionListener () { 872 public void actionPerformed(java.awt.event.ActionEvent evt) { 873 try { 874 if (jf.isIcon()) { 875 jf.setIcon(false); 876 } else { 877 jf.setSelected(true); 878 } 879 } catch (Exception ex) { 880 ex.printStackTrace(); 881 } 882 } 883 }); 884 885 jf.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); 888 889 jf.addInternalFrameListener(new InternalFrameAdapter () { 890 public void internalFrameClosing(InternalFrameEvent e) { 891 mdxWindows.remove(jf); 892 jf.dispose(); 893 windowMenu.remove(queryMenuItem); return; 895 } 896 }); 897 898 windowMenu.add(queryMenuItem,-1); 899 windowMenu.add(jSeparator3,-1); 900 windowMenu.add(cascadeMenuItem,-1); 901 windowMenu.add(tileMenuItem,-1); 902 windowMenu.add(minimizeMenuItem, -1); 903 windowMenu.add(maximizeMenuItem, -1); 904 windowMenu.add(closeAllMenuItem,-1); 905 906 qp.setMenuItem(queryMenuItem); 907 qp.setSchemaWindowMap(schemaWindowMap); 908 qp.setWindowMenuIndex(windowMenuMapIndex++); 910 if (schemaMenuItem != null) { 911 qp.initConnection(schemaMenuItem.getText()); 912 } else { 913 JOptionPane.showMessageDialog(this,"No Mondrian connection. Select a Schema to connect.", "Alert", JOptionPane.WARNING_MESSAGE); 914 } 915 } 916 917 private void updateMDXCatalogList() { 919 Iterator it = mdxWindows.iterator(); 920 while (it.hasNext()) { 921 JInternalFrame elem = (JInternalFrame) it.next(); 922 QueryPanel qp = (QueryPanel) elem.getContentPane().getComponent(0); 923 qp.setSchemaWindowMap(schemaWindowMap); 924 } 925 } 926 927 928 private void saveAsMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 929 JInternalFrame jf = desktopPane.getSelectedFrame(); 930 if (jf.getContentPane().getComponent(0) instanceof SchemaExplorer) { 931 SchemaExplorer se = (SchemaExplorer) jf.getContentPane().getComponent(0); 932 java.io.File schemaFile = se.getSchemaFile(); 933 java.io.File oldSchemaFile = schemaFile; 934 java.io.File suggSchemaFile = new File(schemaFile, se.getSchema().name.trim()+".xml"); 935 MondrianGuiDef.Schema schema = se.getSchema(); 936 JFileChooser jfc = new JFileChooser(); 937 MondrianProperties.instance(); 938 jfc.setSelectedFile(suggSchemaFile); 940 if (jfc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { 941 try { 942 schemaFile = jfc.getSelectedFile(); 943 if (!oldSchemaFile.equals(schemaFile) && schemaFile.exists()) { int answer = JOptionPane.showConfirmDialog(null, schemaFile.getAbsolutePath() + " file already exists. Do you want to replace it?", "Save As", JOptionPane.YES_NO_OPTION); 945 if (answer == 1) { return; 947 } 948 } 949 950 if (se.isNewFile() && !oldSchemaFile.equals(schemaFile)) { 951 oldSchemaFile.delete(); 952 } 953 954 if (se.isNewFile()) { 955 se.setNewFile(false); 956 } 957 se.setDirty(false); 958 se.setDirtyFlag(false); 959 960 XMLOutput out = new XMLOutput(new java.io.FileWriter (jfc.getSelectedFile())); 961 schema.displayXML(out); 962 se.setSchemaFile(schemaFile); 963 se.setTitle(); setLastUsed(jfc.getSelectedFile().getName(), jfc.getSelectedFile().toURI().toURL().toString()); 965 JMenuItem sMenuItem = (JMenuItem) schemaWindowMap.get(jf); 967 String mtexttokens[] = sMenuItem.getText().split(" "); 968 sMenuItem.setText(mtexttokens[0]+" "+se.getSchemaFile().getName()); 969 updateMDXCatalogList(); } catch (Exception ex) { 971 ex.printStackTrace(); 972 } 973 } 974 } 975 } 976 977 private void viewXMLMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 978 JInternalFrame jf = desktopPane.getSelectedFrame(); 979 boolean oldValue = viewXMLMenuItem.getState(); 980 if (jf!=null && jf.getContentPane().getComponent(0) instanceof SchemaExplorer) { 981 SchemaExplorer se = (SchemaExplorer) jf.getContentPane().getComponent(0); 982 ((JCheckBoxMenuItem) evt.getSource()).setSelected(se.editMode(evt)); 984 return; 985 } 986 viewXMLMenuItem.setSelected(! oldValue); 987 } 988 989 private void saveMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 990 JInternalFrame jf = desktopPane.getSelectedFrame(); 991 if (jf.getContentPane().getComponent(0) instanceof SchemaExplorer) { 992 SchemaExplorer se = (SchemaExplorer) jf.getContentPane().getComponent(0); 993 994 java.io.File schemaFile = se.getSchemaFile(); 995 996 if (se.isNewFile()) { 997 saveAsMenuItemActionPerformed(evt); 998 return; 999 } 1000 1001 se.setDirty(false); 1002 se.setDirtyFlag(false); 1003 se.setTitle(); 1005 MondrianGuiDef.Schema schema = se.getSchema(); 1006 MondrianProperties.instance(); 1007 try { 1008 XMLOutput out = new XMLOutput(new FileWriter(schemaFile)); 1009 schema.displayXML(out); 1010 setLastUsed(schemaFile.getName(), schemaFile.toURI().toURL().toString()); 1011 } catch (Exception ex) { 1012 ex.printStackTrace(); 1013 } 1014 } 1015 } 1016 1017 1023 private void setLastUsed(String name, String url) { 1024 int match = 4; 1025 String luName = null; 1026 String propname = null; 1027 String lastUsed = "lastUsed"; 1028 String lastUsedUrl = "lastUsedUrl"; 1029 for( int i=1; i<=4; i++) { 1030 propname = lastUsed+i; 1031 luName = workbenchProperties.getProperty(propname) ; 1032 1033 if ( luName != null && luName.equals(name)) { 1034 match=i; 1035 break; 1036 } 1037 } 1038 1039 for(int i=match; i>1; i--) { 1040 if (workbenchProperties.getProperty(lastUsed+(i-1)) != null) { 1041 workbenchProperties.setProperty(lastUsed+i, workbenchProperties.getProperty(lastUsed+(i-1))); 1042 workbenchProperties.setProperty(lastUsedUrl+i, workbenchProperties.getProperty(lastUsedUrl+(i-1))); 1043 } 1044 } 1045 1063 workbenchProperties.setProperty(LAST_USED1, name); 1064 workbenchProperties.setProperty(LAST_USED1_URL, url); 1065 updateLastUsedMenu(); 1066 storeWorkbenchProperties(); 1067 } 1068 1069 private void updateLastUsedMenu() { 1070 if (workbenchProperties.getProperty(LAST_USED1) == null) { 1071 jSeparator2.setVisible(false); } else { 1072 jSeparator2.setVisible(true); } 1073 1074 if (workbenchProperties.getProperty(LAST_USED1) != null) { 1075 lastUsed1MenuItem.setVisible(true);} else { 1076 lastUsed1MenuItem.setVisible(false); } 1077 if (workbenchProperties.getProperty(LAST_USED2) != null) { 1078 lastUsed2MenuItem.setVisible(true); } else { 1079 lastUsed2MenuItem.setVisible(false); } 1080 if (workbenchProperties.getProperty(LAST_USED3) != null) { 1081 lastUsed3MenuItem.setVisible(true); } else { 1082 lastUsed3MenuItem.setVisible(false); } 1083 if (workbenchProperties.getProperty(LAST_USED4) != null) { 1084 lastUsed4MenuItem.setVisible(true); } else { 1085 lastUsed4MenuItem.setVisible(false); } 1086 1087 lastUsed1MenuItem.setText(workbenchProperties.getProperty(LAST_USED1)); 1088 lastUsed2MenuItem.setText(workbenchProperties.getProperty(LAST_USED2)); 1089 lastUsed3MenuItem.setText(workbenchProperties.getProperty(LAST_USED3)); 1090 lastUsed4MenuItem.setText(workbenchProperties.getProperty(LAST_USED4)); 1091 } 1092 1093 private void lastUsed1MenuItemActionPerformed(java.awt.event.ActionEvent evt) { 1094 try { 1095 openSchemaFrame(new File(new URI (workbenchProperties.getProperty(LAST_USED1_URL))), false); 1096 } catch (Exception e) { 1098 e.printStackTrace(); 1099 } 1100 } 1101 1102 private void lastUsed2MenuItemActionPerformed(java.awt.event.ActionEvent evt) { 1103 try { 1104 1108 openSchemaFrame(new File(new URI (workbenchProperties.getProperty(LAST_USED2_URL))), false); 1109 setLastUsed(workbenchProperties.getProperty(LAST_USED2), workbenchProperties.getProperty(LAST_USED2_URL)); 1110 } catch (URISyntaxException e) { 1111 e.printStackTrace(); 1112 } 1113 } 1114 1115 private void lastUsed3MenuItemActionPerformed(java.awt.event.ActionEvent evt) { 1116 try { 1117 openSchemaFrame(new File(new URI (workbenchProperties.getProperty(LAST_USED3_URL))), false); 1118 setLastUsed(workbenchProperties.getProperty(LAST_USED3), workbenchProperties.getProperty(LAST_USED3_URL)); 1119 } catch (URISyntaxException e) { 1120 e.printStackTrace(); 1121 } 1122 } 1123 1124 private void lastUsed4MenuItemActionPerformed(java.awt.event.ActionEvent evt) { 1125 try { 1126 openSchemaFrame(new File(new URI (workbenchProperties.getProperty(LAST_USED4_URL))), false); 1127 setLastUsed(workbenchProperties.getProperty(LAST_USED4), workbenchProperties.getProperty(LAST_USED4_URL)); 1128 } catch (URISyntaxException e) { 1129 e.printStackTrace(); 1130 } 1131 } 1132 1133 1137 private void openSchemaFrame(File file, boolean newFile) { 1138 try { 1139 1140 if (! newFile) { 1141 if (checkFileOpen(file)) { 1143 return; 1144 } 1145 if (! file.exists()) { 1147 JOptionPane.showMessageDialog(this, file.getAbsolutePath() + " File not found.", "Alert", JOptionPane.WARNING_MESSAGE); 1148 return; 1149 } 1150 if (! file.canWrite()) { 1152 JOptionPane.showMessageDialog(this, file.getAbsolutePath() + " File is locked by another application.", "Alert", JOptionPane.WARNING_MESSAGE); 1153 return; 1154 } 1155 try { 1157 String connectString = "Provider=mondrian;" + "Jdbc=" + jdbcConnectionUrl + ";" + "Catalog=" + file.toURL().toString(); 1159 connection = DriverManager.getConnection(connectString, null, false); 1160 } catch (Exception ex) { 1161 System.out.println("Exception : Schema file is invalid."+ex.getMessage()); 1162 } catch (Error err) { 1164 System.out.println("Error : Schema file is invalid."+err.getMessage()); 1165 } 1167 } 1168 1169 final JInternalFrame schemaFrame = new JInternalFrame(); 1170 schemaFrame.setTitle("Schema - " + file.getName()); 1171 jdbcMetaData = new JDBCMetaData(jdbcDriverClassName, jdbcConnectionUrl); 1173 1174 schemaFrame.getContentPane().add(new SchemaExplorer(file, jdbcMetaData, newFile, schemaFrame)); 1175 1176 String errorOpening = ((SchemaExplorer) schemaFrame.getContentPane().getComponent(0)).getErrMsg() ; 1177 if (errorOpening != null) { 1178 JOptionPane.showMessageDialog(this,errorOpening, "Error", JOptionPane.ERROR_MESSAGE); 1179 schemaFrame.setClosed(true); 1180 return; 1181 } 1182 1183 schemaFrame.setBounds(0, 0, 1000, 650); 1184 schemaFrame.setClosable(true); 1185 schemaFrame.setIconifiable(true); 1186 schemaFrame.setMaximizable(true); 1187 schemaFrame.setResizable(true); 1188 schemaFrame.setVisible(true); 1189 1190 desktopPane.add(schemaFrame, javax.swing.JLayeredPane.DEFAULT_LAYER); 1191 schemaFrame.show(); 1192 schemaFrame.setMaximum(true); 1193 1194 if (jdbcMetaData.getErrMsg() != null) { 1196 JOptionPane.showMessageDialog(this, "Database connection could not be done.\n"+jdbcMetaData.getErrMsg()+"\n All validations related to database will be ignored.", "Alert" , JOptionPane.WARNING_MESSAGE); 1197 } 1198 1199 final javax.swing.JMenuItem schemaMenuItem = new javax.swing.JMenuItem (); 1200 schemaMenuItem.setText(windowMenuMapIndex++ + " " +file.getName()); 1201 schemaMenuItem.addActionListener(new java.awt.event.ActionListener () { 1202 public void actionPerformed(java.awt.event.ActionEvent evt) { 1203 try { 1204 if (schemaFrame.isIcon()) { 1205 schemaFrame.setIcon(false); 1206 } else { 1207 schemaFrame.setSelected(true); 1208 } 1209 } catch (Exception ex) { 1210 ex.printStackTrace(); 1211 } 1212 } 1213 }); 1214 1215 windowMenu.add(schemaMenuItem,0); 1216 windowMenu.setEnabled(true); 1217 1218 windowMenu.add(jSeparator3,-1); 1219 windowMenu.add(cascadeMenuItem,-1); 1220 windowMenu.add(tileMenuItem,-1); 1221 windowMenu.add(minimizeMenuItem, -1); 1222 windowMenu.add(maximizeMenuItem, -1); 1223 windowMenu.add(closeAllMenuItem,-1); 1224 1225 schemaWindowMap.put(schemaFrame, schemaMenuItem); 1227 updateMDXCatalogList(); 1228 1229 schemaFrame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); 1230 1231 schemaFrame.addInternalFrameListener(new InternalFrameAdapter () { 1232 public void internalFrameClosing(InternalFrameEvent e) { 1233 if (schemaFrame.getContentPane().getComponent(0) instanceof SchemaExplorer) { 1234 SchemaExplorer se = (SchemaExplorer) schemaFrame.getContentPane().getComponent(0); 1235 int response = confirmFrameClose(schemaFrame, se); 1236 if (response == 3) { if (se.isNewFile()) { 1238 se.getSchemaFile().delete(); 1240 } 1241 schemaWindowMap.remove(schemaFrame); updateMDXCatalogList(); 1244 schemaFrame.dispose(); 1245 windowMenu.remove(schemaMenuItem); 1246 } 1247 } 1248 } 1249 }); 1250 1251 schemaFrame.setFocusable(true); 1252 schemaFrame.addFocusListener(new FocusAdapter () { 1253 public void focusGained(FocusEvent e) { 1254 if (schemaFrame.getContentPane().getComponent(0) instanceof SchemaExplorer) { 1255 SchemaExplorer se = (SchemaExplorer) schemaFrame.getContentPane().getComponent(0); 1256 viewXMLMenuItem.setSelected(se.isEditModeXML()); } 1258 } 1259 1260 public void focusLost(FocusEvent e) { 1261 if (schemaFrame.getContentPane().getComponent(0) instanceof SchemaExplorer) { 1262 SchemaExplorer se = (SchemaExplorer) schemaFrame.getContentPane().getComponent(0); 1263 viewXMLMenuItem.setSelected(se.isEditModeXML()); } 1265 } 1266 1267 }); 1268 viewXMLMenuItem.setSelected(false); 1269 } catch (Exception ex) { 1270 ex.printStackTrace(); 1271 } 1272 1273 } 1274 private void openMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 1275 JFileChooser jfc = new JFileChooser(); 1276 try { 1277 jfc.setFileSelectionMode(JFileChooser.FILES_ONLY) ; 1278 jfc.setFileFilter(new javax.swing.filechooser.FileFilter () { 1279 public boolean accept(File pathname) { 1280 return pathname.getName().toLowerCase().endsWith(".xml") 1281 || pathname.isDirectory(); 1282 } 1283 public String getDescription() { 1284 return "Mondrian Schema files (*.xml)"; 1285 } 1286 1287 }); 1288 jfc.setCurrentDirectory(new File(new URI (workbenchProperties.getProperty(LAST_USED1_URL)))); 1289 } catch (Exception ex) { 1290 } 1293 MondrianProperties.instance(); 1294 if (jfc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { 1295 try { 1296 setLastUsed(jfc.getSelectedFile().getName(), jfc.getSelectedFile().toURI().toURL().toString()); 1298 } catch (MalformedURLException e) { 1299 e.printStackTrace(); 1300 } 1301 1302 openSchemaFrame(jfc.getSelectedFile(), false); 1303 } 1304 } 1305 1306 private boolean checkFileOpen(File file) { 1308 1309 Iterator it = schemaWindowMap.keySet().iterator(); while (it.hasNext()) { 1311 JInternalFrame elem = (JInternalFrame) it.next(); 1312 File f = ((SchemaExplorer) elem.getContentPane().getComponent(0)).getSchemaFile(); 1313 if (f.equals(file)) { 1314 try { 1315 elem.setSelected(true); return true; 1317 } catch(Exception ex) { 1318 schemaWindowMap.remove(elem); break; 1320 } 1321 } 1322 } 1323 return false; 1324 1325 1326 1338 1357 } 1358 1359 1360 private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) { 1361 storeWorkbenchProperties(); 1362 closeAllSchemaFrames(true); 1363 } 1364 1365 1375 private void parseArgs(String args[]) { 1376 for (int argNum=0; argNum < args.length; argNum++) { 1377 if (args[argNum].startsWith("-f=")) { 1378 openFile = args[argNum].substring(3); 1379 } 1380 } 1381 } 1382 1383 public static String getTooltip(String titleName) { 1384 try { 1385 return resBundle.getString(titleName); 1386 } catch (MissingResourceException e) { 1387 return "No help available for '" + titleName + "'"; 1388 } 1389 } 1390 1391 1394 public static void main(String args[]) { 1395 Workbench w = new Workbench(); 1396 w.parseArgs(args); 1397 w.setSize(800, 600); 1398 if (w.openFile != null) { 1400 File f= new File(w.openFile); 1401 if (f.canRead()) { 1402 w.openSchemaFrame(f.getAbsoluteFile(), false); } 1405 } 1406 w.show(); 1407 } 1408 1409 private javax.swing.JButton toolbarSaveAsButton; 1411 private javax.swing.JMenuItem openMenuItem; 1412 private javax.swing.JMenuItem lastUsed1MenuItem; 1413 private javax.swing.JMenuItem lastUsed2MenuItem; 1414 private javax.swing.JMenuItem lastUsed3MenuItem; 1415 private javax.swing.JMenuItem lastUsed4MenuItem; 1416 private javax.swing.JMenu fileMenu; 1417 private javax.swing.JMenuItem newQueryMenuItem; 1418 private javax.swing.JMenuItem newQueryMenuItem2; 1419 private javax.swing.JPanel jPanel1; 1420 private javax.swing.JPanel jPanel2; 1421 private javax.swing.JButton toolbarOpenButton; 1422 private javax.swing.JButton toolbarNewButton; 1423 private javax.swing.JButton toolbarNewArrowButton; 1424 private javax.swing.JSeparator jSeparator1; 1425 private javax.swing.JSeparator jSeparator2; 1426 private javax.swing.JSeparator jSeparator3; 1427 private javax.swing.JSeparator jSeparator4; 1428 private javax.swing.JMenuItem cutMenuItem; 1429 private javax.swing.JMenuBar menuBar; 1430 private javax.swing.JMenuItem saveMenuItem; 1431 private javax.swing.JMenuItem newJDBCExplorerMenuItem; 1432 private javax.swing.JMenuItem newJDBCExplorerMenuItem2; 1433 private javax.swing.JCheckBoxMenuItem viewCubesMenuItem; 1434 private javax.swing.JButton toolbarSaveButton; 1435 private javax.swing.JMenuItem copyMenuItem; 1436 private javax.swing.JDesktopPane desktopPane; 1437 private javax.swing.JMenu viewMenu; 1438 private javax.swing.JMenu toolsMenu; 1439 private javax.swing.JMenu newMenu; 1440 private javax.swing.JMenuItem deleteMenuItem; 1441 private javax.swing.JMenuItem newSchemaMenuItem; 1442 private javax.swing.JMenuItem newSchemaMenuItem2; 1443 private javax.swing.JMenuItem exitMenuItem; 1444 private javax.swing.JButton toolbarPreferencesButton; 1445 private javax.swing.JCheckBoxMenuItem viewMeasuresMenuItem; 1446 private javax.swing.JMenu editMenu; 1447 private javax.swing.JMenuItem pasteMenuItem; 1448 private javax.swing.JMenuItem preferencesMenuItem; 1449 private javax.swing.JCheckBoxMenuItem viewDimensionsMenuItem; 1450 private javax.swing.JCheckBoxMenuItem viewXMLMenuItem; 1451 private javax.swing.JMenuItem saveAsMenuItem; 1452 private javax.swing.JToolBar jToolBar1; 1453 private javax.swing.JToolBar jToolBar2; 1454 private javax.swing.JPopupMenu toolbarNewPopupMenu; 1455 private javax.swing.JMenu windowMenu; 1456 private javax.swing.JMenu helpMenu; 1457 private javax.swing.JMenuItem aboutMenuItem; 1458 private javax.swing.JMenuItem cascadeMenuItem; 1459 private javax.swing.JMenuItem tileMenuItem; 1460 private javax.swing.JMenuItem minimizeMenuItem; 1461 private javax.swing.JMenuItem maximizeMenuItem; 1462 private javax.swing.JMenuItem closeAllMenuItem; 1463 1465 1466 1473 1474 public javax.swing.JCheckBoxMenuItem getViewXMLMenuItem() { 1475 return viewXMLMenuItem; } 1477 1478 1479} 1480 | Popular Tags |