001 /* EVolve - an Extensible Software Visualization Framework 002 * Copyright (C) 2001-2002 Qin Wang 003 * 004 * This library is free software; you can redistribute it and/or 005 * modify it under the terms of the GNU Library General Public 006 * License as published by the Free Software Foundation; either 007 * version 2 of the License, or (at your option) any later version. 008 * 009 * This library is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Library General Public License for more details. 013 * 014 * You should have received a copy of the GNU Library General Public 015 * License along with this library; if not, write to the 016 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 017 * Boston, MA 02111-1307, USA. 018 */ 019 020 /* 021 * EVolve is distributed at http://www.sable.mcgill.ca/EVolve/ 022 */ 023 024 package EVolve; 025 026 import EVolve.visualization.*; 027 import EVolve.util.*; 028 import java.awt.*; 029 import java.awt.event.*; 030 import java.util.*; 031 import java.io.*; 032 import javax.swing.*; 033 import javax.swing.event.*; 034 035 public class UIManager { 036 private JFrame frame; 037 private JDesktopPane desktop; 038 private boolean doNotRemoveWindow; 039 040 private ArrayList windowList; 041 042 private JPanel panelStatus; 043 private JLabel labelStatus; 044 045 private JMenuBar menuBar; 046 047 private JMenu menuFile; 048 private JMenuItem itemLoad; 049 private JMenuItem itemExit; 050 051 private JMenu menuVisualization; 052 private JMenu menuNew; 053 private JMenuItem[] itemNew; 054 private JMenuItem itemVisualize; 055 private JMenuItem itemPredefinedVisualize; 056 057 private JMenu menuWindow; 058 private JMenuItem itemArrange; 059 private JMenuItem itemVizNow; 060 061 /** added functions */ 062 private JMenu menuTool; 063 064 private JMenu menuBatch; 065 private JMenuItem itemBuildBatch; 066 private JMenuItem itemRunBatch; 067 068 private JMenu menuPredefinedViz; 069 private JMenuItem itemReadSetting; 070 private JMenuItem itemSaveSetting; 071 private JMenu menuUseSetting; 072 073 private JMenu menuOverlapViz; 074 private JMenuItem itemLinkViz; 075 076 private JMenu menuSelection; 077 private JMenuItem itemCurrentSelection; 078 079 private JRadioButtonMenuItem[] itemSettings; 080 private JMenuItem itemSynOverlap; 081 private JMenuItem itemAsynOverlap; 082 083 private JMenu menuOptions; 084 private JMenuItem itemPath; 085 private JMenuItem itemInfo; 086 087 private JMenu menuHelp; 088 private JMenuItem itemAbout; 089 090 private JDialog dialogTimer; 091 private JLabel labelTimer; 092 private javax.swing.Timer timer; 093 094 private JDialog dialog; 095 private JComboBox comboColumn; 096 private JList listVisualization; 097 private DefaultListModel model; 098 099 private JDialog dialogAbout; 100 101 private String lastConfigDir, lastDataDir, lastResultDir; 102 103 public UIManager() { 104 try { 105 javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getCrossPlatformLookAndFeelClassName()); 106 } catch (Exception e) {} 107 108 frame = new JFrame(Scene.VERSION); 109 110 ImageIcon icon = new ImageIcon(this.getClass().getResource("img/logo_icon.gif")); 111 frame.setIconImage(icon.getImage()); 112 113 frame.addWindowListener(new WindowAdapter() { 114 public void windowClosing(WindowEvent e) { 115 System.exit(0); 116 } 117 }); 118 119 frame.setBounds(0, 0, Toolkit.getDefaultToolkit().getScreenSize().width, Toolkit.getDefaultToolkit().getScreenSize().height); 120 121 windowList = new ArrayList(); 122 123 createMenu(); 124 125 desktop = new JDesktopPane(); 126 desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE); 127 frame.getContentPane().add(desktop, BorderLayout.CENTER); 128 129 panelStatus = new JPanel(new BorderLayout()); 130 panelStatus.setBackground(new Color(240, 240, 240)); 131 panelStatus.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLoweredBevelBorder(), BorderFactory.createLineBorder(new Color(240, 240, 240), 2))); 132 frame.getContentPane().add(panelStatus, BorderLayout.SOUTH); 133 134 labelStatus = new JLabel(Scene.VERSION); 135 panelStatus.add(labelStatus, BorderLayout.WEST); 136 137 frame.setVisible(true); 138 139 createTimer(); 140 createDialog(); 141 createAbout(); 142 doNotRemoveWindow = false; 143 144 lastDataDir = ""; 145 lastConfigDir = ""; 146 lastResultDir=""; 147 } 148 149 private void createMenu() { 150 menuBar = new JMenuBar(); 151 frame.setJMenuBar(menuBar); 152 153 menuFile = new JMenu("File"); 154 menuFile.setMnemonic(KeyEvent.VK_F); 155 menuBar.add(menuFile); 156 157 itemLoad = new JMenuItem("Load Data..."); 158 itemLoad.setMnemonic(KeyEvent.VK_L); 159 itemLoad.addActionListener(new ActionListener() { 160 public void actionPerformed(ActionEvent e) { 161 Scene.loadDataSource(); 162 for (int i = 0; i<Scene.getToolsManager().getPredefinedVisualizationRunner().getPredefinedVisualizationNumber(); i++) { 163 Scene.getToolsManager().getPredefinedVisualizationRunner().getPredefinedVizByIndex(i).setTranslated(false); 164 } 165 } 166 }); 167 menuFile.add(itemLoad); 168 169 menuFile.addSeparator(); 170 171 itemExit = new JMenuItem("Exit"); 172 itemExit.setMnemonic(KeyEvent.VK_X); 173 itemExit.addActionListener(new ActionListener() { 174 public void actionPerformed(ActionEvent e) { 175 System.exit(0); 176 } 177 }); 178 menuFile.add(itemExit); 179 180 menuVisualization = new JMenu("Visualization"); 181 menuVisualization.setMnemonic(KeyEvent.VK_V); 182 menuBar.add(menuVisualization); 183 184 menuNew = new JMenu("New"); 185 menuNew.setMnemonic(KeyEvent.VK_N); 186 menuVisualization.add(menuNew); 187 188 itemPredefinedVisualize = new JMenuItem("Predefined Visualize"); 189 itemPredefinedVisualize.setMnemonic(KeyEvent.VK_P); 190 itemPredefinedVisualize.addActionListener(new ActionListener() { 191 public void actionPerformed(ActionEvent e) { 192 Scene.getToolsManager().getPredefinedVisualizationRunner().runPredefinedVisualization(); 193 } 194 }); 195 menuVisualization.add(itemPredefinedVisualize); 196 197 itemVisualize = new JMenuItem("Visualize..."); 198 itemVisualize.setMnemonic(KeyEvent.VK_V); 199 itemVisualize.addActionListener(new ActionListener() { 200 public void actionPerformed(ActionEvent e) { 201 Scene.getVisualizationManager().preVisualize(); 202 } 203 }); 204 menuVisualization.add(itemVisualize); 205 206 menuWindow = new JMenu("Window"); 207 menuWindow.setMnemonic(KeyEvent.VK_W); 208 menuBar.add(menuWindow); 209 210 itemArrange = new JMenuItem("Arrange..."); 211 itemArrange.setMnemonic(KeyEvent.VK_A); 212 itemArrange.addActionListener(new ActionListener() { 213 public void actionPerformed(ActionEvent e) { 214 arrange(); 215 } 216 }); 217 menuWindow.add(itemArrange); 218 219 menuTool = new JMenu("Tools"); 220 menuTool.setMnemonic(KeyEvent.VK_T); 221 menuBar.add(menuTool); 222 223 itemBuildBatch = new JMenuItem("Build Batch"); 224 itemBuildBatch.setMnemonic(KeyEvent.VK_B); 225 itemBuildBatch.addActionListener(new ActionListener() { 226 public void actionPerformed(ActionEvent e) { 227 Scene.getToolsManager().getBatchRunner().showWindow(); 228 } 229 }); 230 itemRunBatch = new JMenuItem("Run Batch"); 231 itemRunBatch.setMnemonic(KeyEvent.VK_R); 232 itemRunBatch.addActionListener(new ActionListener() { 233 public void actionPerformed(ActionEvent e) { 234 if (Scene.getToolsManager().getBatchRunner() != null) 235 Scene.getToolsManager().getBatchRunner().runBatch(); 236 } 237 }); 238 menuBatch = new JMenu("Auto Generate Visualizations"); 239 menuBatch.setMnemonic(KeyEvent.VK_A); 240 menuBatch.add(itemBuildBatch); 241 menuBatch.add(itemRunBatch); 242 243 itemReadSetting = new JMenuItem("Load Predefined Viz Setting"); 244 itemReadSetting.setMnemonic(KeyEvent.VK_L); 245 itemReadSetting.addActionListener(new ActionListener() { 246 public void actionPerformed(ActionEvent e) { 247 VisualizationSerializer.v().loadConfiguration(); 248 } 249 }); 250 itemSaveSetting = new JMenuItem("Save Current Viz Setting"); 251 itemSaveSetting.setMnemonic(KeyEvent.VK_S); 252 itemSaveSetting.addActionListener(new ActionListener() { 253 public void actionPerformed(ActionEvent e) { 254 ArrayList vizList = Scene.getVisualizationManager().getVisualizationList(); 255 if (vizList.size() == 0) return; 256 257 VisualizationSerializer.v().showSavingDialog(); 258 } 259 }); 260 menuUseSetting = new JMenu("Choose Predefined Viz Setting"); 261 menuUseSetting.setMnemonic(KeyEvent.VK_C); 262 menuPredefinedViz = new JMenu("Predefined Visualization"); 263 menuPredefinedViz.setMnemonic(KeyEvent.VK_P); 264 menuPredefinedViz.add(itemReadSetting); 265 menuPredefinedViz.add(itemSaveSetting); 266 menuPredefinedViz.add(menuUseSetting); 267 268 269 itemLinkViz = new JMenuItem("Unify Visualizations..."); 270 itemLinkViz.setMnemonic(KeyEvent.VK_U); 271 itemLinkViz.addActionListener(new ActionListener() { 272 public void actionPerformed(ActionEvent e) { 273 Scene.getToolsManager().getLinkedVisualizationRunner().showWindow(); 274 } 275 }); 276 277 itemSynOverlap = new JMenuItem("Overlap Viz from Same Data Source"); 278 itemSynOverlap.setMnemonic(KeyEvent.VK_S); 279 itemSynOverlap.addActionListener(new ActionListener() { 280 public void actionPerformed(ActionEvent e) { 281 Scene.getToolsManager().getOverlapVisualizationRunner().getSynOverlapper().showWindow(); 282 } 283 }); 284 itemAsynOverlap = new JMenuItem("Overlap Viz from Different Data Source"); 285 itemAsynOverlap.setMnemonic(KeyEvent.VK_D); 286 itemAsynOverlap.addActionListener(new ActionListener() { 287 public void actionPerformed(ActionEvent e) { 288 Scene.getToolsManager().getOverlapVisualizationRunner().getAsynOverlapper().showWindow(); 289 } 290 }); 291 menuOverlapViz = new JMenu("Overlap Visualizations"); 292 menuOverlapViz.setMnemonic(KeyEvent.VK_O); 293 menuOverlapViz.add(itemSynOverlap); 294 menuOverlapViz.add(itemAsynOverlap); 295 296 297 menuSelection = new JMenu("Selection"); 298 menuSelection.setMnemonic(KeyEvent.VK_S); 299 menuSelection.addMenuListener(new MenuListener() { 300 public void menuSelected(MenuEvent e) { 301 menuSelection.removeAll(); 302 createSelectionMenuItem(); 303 } 304 public void menuDeselected(MenuEvent e) { 305 306 } 307 public void menuCanceled(MenuEvent e) { 308 309 } 310 }); 311 menuBar.add(menuSelection); 312 313 menuTool.add(menuBatch); 314 menuTool.add(menuPredefinedViz); 315 menuTool.add(menuOverlapViz); 316 menuTool.add(itemLinkViz); 317 318 menuOptions = new JMenu("Options"); 319 menuOptions.setMnemonic(KeyEvent.VK_O); 320 menuBar.add(menuOptions); 321 322 itemPath = new JMenuItem("Setting Path..."); 323 itemPath.setMnemonic(KeyEvent.VK_S); 324 itemPath.addActionListener(new ActionListener() { 325 public void actionPerformed(ActionEvent e) { 326 SceneSetting.v().showPathDialog(); 327 } 328 }); 329 330 itemInfo = new JMenuItem("View Current Setting"); 331 itemInfo.setMnemonic(KeyEvent.VK_V); 332 itemInfo.addActionListener(new ActionListener() { 333 public void actionPerformed(ActionEvent e) { 334 SceneSetting.v().showCurrentSetting(); 335 } 336 }); 337 menuOptions.add(itemPath); 338 menuOptions.add(itemInfo); 339 340 menuHelp = new JMenu("Help"); 341 menuHelp.setMnemonic(KeyEvent.VK_H); 342 menuBar.add(menuHelp); 343 344 itemAbout = new JMenuItem("About EVolve..."); 345 itemAbout.setMnemonic(KeyEvent.VK_A); 346 itemAbout.addActionListener(new ActionListener() { 347 public void actionPerformed(ActionEvent e) { 348 showDialog(dialogAbout, 300, 150); 349 } 350 }); 351 menuHelp.add(itemAbout); 352 353 itemVizNow = new JMenuItem("Visualize Now!"); 354 itemVizNow.setMnemonic(KeyEvent.VK_N); 355 itemVizNow.addActionListener(new ActionListener() { 356 public void actionPerformed(ActionEvent e) { 357 Scene.getVisualizationManager().viuslizeNow(); 358 } 359 }); 360 menuBar.add(itemVizNow); 361 } 362 363 private void createTimer() { 364 dialogTimer = new JDialog(frame, "Processing Progress", true); 365 dialogTimer.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); 366 dialogTimer.getContentPane().setLayout(new GridLayout(3, 1)); 367 368 dialogTimer.getContentPane().add(new JLabel("")); 369 370 JPanel panelTimer = new JPanel(new FlowLayout()); 371 dialogTimer.getContentPane().add(panelTimer); 372 373 panelTimer.add(new JLabel("Events processed:")); 374 375 labelTimer = new JLabel(""); 376 panelTimer.add(labelTimer); 377 378 dialogTimer.getContentPane().add(new JLabel("")); 379 380 timer = new javax.swing.Timer(1000, new ActionListener() { 381 public void actionPerformed(ActionEvent e) { 382 labelTimer.setText(" " + Scene.getDataManager().getEventCounter()); 383 } 384 }); 385 } 386 387 private void createDialog() { 388 dialog = new JDialog(frame, "Select Windows", true); 389 model = new DefaultListModel(); 390 listVisualization = new JList(model); 391 listVisualization.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 392 393 JPanel panelColumn = new JPanel(new FlowLayout()); 394 dialog.getContentPane().add(panelColumn, BorderLayout.NORTH); 395 396 panelColumn.add(new JLabel("Number of column: ")); 397 398 comboColumn = new JComboBox(); 399 comboColumn.addItem(" 1 "); 400 comboColumn.addItem(" 2 "); 401 comboColumn.addItem(" 3 "); 402 comboColumn.addItem(" 4 "); 403 panelColumn.add(comboColumn); 404 405 JScrollPane scrollPane = new JScrollPane(listVisualization); 406 scrollPane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Choose windows")); 407 dialog.getContentPane().add(scrollPane, BorderLayout.CENTER); 408 409 JPanel panelButton = new JPanel(new FlowLayout()); 410 dialog.getContentPane().add(panelButton, BorderLayout.SOUTH); 411 412 JButton buttonApply = new JButton("Apply"); 413 buttonApply.addActionListener(new ActionListener() { 414 public void actionPerformed(ActionEvent e) { 415 dialogApply(); 416 } 417 }); 418 panelButton.add(buttonApply); 419 420 JButton buttonCancel = new JButton("Cancel"); 421 buttonCancel.addActionListener(new ActionListener() { 422 public void actionPerformed(ActionEvent e) { 423 dialogCancel(); 424 } 425 }); 426 panelButton.add(buttonCancel); 427 } 428 429 public void createAbout() { 430 dialogAbout = new JDialog(frame, "About EVolve", true); 431 dialogAbout.getContentPane().setBackground(new Color(240, 240, 240)); 432 dialogAbout.getContentPane().add(new JLabel(new ImageIcon(this.getClass().getResource("img/logo_about.gif"))), BorderLayout.CENTER); 433 } 434 435 public void init() { 436 if (doNotRemoveWindow) return; 437 windowList.clear(); 438 JInternalFrame[] frame = desktop.getAllFrames(); 439 for (int i = 0; i < frame.length; i++) { 440 frame[i].dispose(); 441 } 442 menuVisualization.setEnabled(false); 443 menuSelection.setEnabled(false); 444 menuWindow.setEnabled(false); 445 itemVizNow.setEnabled(false); 446 } 447 448 public JFrame getFrame() { 449 return frame; 450 } 451 452 public void setStatus(String status) { 453 labelStatus.setText(status); 454 } 455 456 public void enableMenu() { 457 menuNew.removeAll(); 458 String[] name = Scene.getVisualizationManager().getFactoryName(); 459 itemNew = new JMenuItem[name.length]; 460 for (int i = 0; i < itemNew.length; i++) { 461 itemNew[i] = new JMenuItem(((char)(i + 65)) + " - " + name[i]); 462 itemNew[i].setMnemonic(i + 65); 463 itemNew[i].addActionListener(new ActionListener() { 464 public void actionPerformed(ActionEvent e) { 465 Scene.getVisualizationManager().newVisualization(((JMenuItem)(e.getSource())).getText().substring(4)); 466 menuSelection.removeAll(); 467 createSelectionMenuItem(); 468 } 469 }); 470 menuNew.add(itemNew[i]); 471 } 472 473 menuVisualization.setEnabled(true); 474 menuWindow.setEnabled(true); 475 itemVizNow.setEnabled(true); 476 menuSelection.setEnabled(true); 477 } 478 479 public void showDialog(JDialog dialog, int width, int height) { 480 dialog.setBounds((Toolkit.getDefaultToolkit().getScreenSize().width - width) / 2, (Toolkit.getDefaultToolkit().getScreenSize().height - height) / 2, width, height); 481 dialog.setVisible(true); 482 } 483 484 public void addVisualization(Visualization visualization) { 485 Window newWindow = new Window(visualization); 486 newWindow.setBounds(0, 0, desktop.getSize().width, desktop.getSize().height); 487 newWindow.setVisible(true); 488 489 desktop.add(newWindow); 490 try { 491 newWindow.setSelected(true); 492 } catch (Exception e) {}; 493 494 windowList.add(newWindow); 495 496 visualization.setWindow(newWindow); 497 } 498 499 public Window addOverlappedVisualization(OverlapVisualization visual) { 500 Window newWindow = new Window(visual); 501 newWindow.setBounds(0, 0, desktop.getSize().width/2, desktop.getSize().height/2); 502 newWindow.setVisible(true); 503 504 desktop.add(newWindow); 505 try { 506 newWindow.setSelected(true); 507 } catch (Exception e) {}; 508 509 windowList.add(newWindow); 510 return newWindow; 511 } 512 513 public void removeWindow(Window window) { 514 window.dispose(); 515 Scene.getVisualizationManager().removeVisualization(window.getVisualization()); 516 windowList.remove(window); 517 } 518 519 private void arrange() { 520 int selectedCounter = 0; 521 for (int i = 0; i < windowList.size(); i++) { 522 if (!((Window)(windowList.get(i))).isIcon()) { 523 selectedCounter++; 524 } 525 } 526 527 int[] selected = new int[selectedCounter]; 528 selectedCounter = 0; 529 530 model.removeAllElements(); 531 532 for (int i = 0; i < windowList.size(); i++) { 533 model.addElement(((Window)(windowList.get(i))).getTitle()); 534 if (!((Window)(windowList.get(i))).isIcon()) { 535 selected[selectedCounter] = i; 536 selectedCounter++; 537 } 538 } 539 540 listVisualization.setSelectedIndices(selected); 541 542 showDialog(dialog, 270, 360); 543 } 544 545 public void startTimer() { 546 labelTimer.setText(""); 547 timer.start(); 548 showDialog(dialogTimer, 300, 100); 549 } 550 551 public void endTimer() { 552 timer.stop(); 553 dialogTimer.setVisible(false); 554 } 555 556 private void dialogApply() { 557 dialog.setVisible(false); 558 559 for (int i = 0; i < windowList.size(); i++) { 560 try { 561 ((Window)(windowList.get(i))).setIcon(true); 562 } catch (Exception e) {} 563 } 564 565 int[] selected = listVisualization.getSelectedIndices(); 566 567 if (selected.length != 0) { 568 boolean[] located = new boolean[selected.length]; 569 for (int i = 0; i < located.length; i++) { 570 located[i] = false; 571 } 572 573 int columnNumber = comboColumn.getSelectedIndex() + 1; 574 int width = desktop.getWidth() / columnNumber; 575 int height = desktop.getHeight() / ((selected.length - 1) / columnNumber + 1); 576 577 for (int i = 0; i < selected.length; i++) { 578 int x = (i % columnNumber) * width; 579 int y = (i / columnNumber) * height; 580 581 int minDistance = Integer.MAX_VALUE; 582 int minIndex = -1; 583 584 for (int j = 0; j < selected.length; j++) { 585 if (!located[j]) { 586 int distance = (((Window)(windowList.get(selected[j]))).getX() - x) * (((Window)(windowList.get(selected[j]))).getX() - x) + (((Window)(windowList.get(selected[j]))).getY() - y) * (((Window)(windowList.get(selected[j]))).getY() - y); 587 if (distance < minDistance) { 588 minDistance = distance; 589 minIndex = j; 590 } 591 } 592 } 593 594 try { 595 ((Window)(windowList.get(selected[minIndex]))).setIcon(false); 596 ((Window)(windowList.get(selected[minIndex]))).setBounds(x, y, width, height); 597 located[minIndex] = true; 598 } catch (Exception e) {} 599 } 600 } 601 } 602 603 private void dialogCancel() { 604 dialog.setVisible(false); 605 } 606 607 public void refreshMenu(String filename,String configureName) { 608 int selIndex = 0; 609 if (Scene.getToolsManager().getPredefinedVisualizationRunner().containsConfigure(configureName)) { 610 Scene.showErrorMessage("Visualization configuration for this name already exists!"); 611 return; 612 } 613 614 Scene.getToolsManager().getPredefinedVisualizationRunner().addPredefinedVisualization(filename,configureName); 615 menuUseSetting.removeAll(); 616 itemSettings = new JRadioButtonMenuItem[Scene.getToolsManager().getPredefinedVisualizationRunner().getPredefinedVisualizationNumber()]; 617 for (int i = 0; i < itemSettings.length; i++) { 618 String addConfigureName = Scene.getToolsManager().getPredefinedVisualizationRunner().getConfigureName(i); 619 if (addConfigureName.equals(configureName)) { 620 Scene.getToolsManager().getPredefinedVisualizationRunner().setSelected(i); 621 selIndex = i; 622 } 623 itemSettings[i] = new JRadioButtonMenuItem(addConfigureName); 624 itemSettings[i].addActionListener(new ActionListener() { 625 public void actionPerformed(ActionEvent e) { 626 for (int i=0; i<itemSettings.length; i++) { 627 if (itemSettings[i].isSelected()) itemSettings[i].setSelected(false); 628 } 629 int selected = Scene.getToolsManager().getPredefinedVisualizationRunner().getIdFromName( 630 ((JRadioButtonMenuItem)(e.getSource())).getText()); 631 Scene.getToolsManager().getPredefinedVisualizationRunner().setSelected(selected); 632 itemSettings[selected].setSelected(true); 633 } 634 }); 635 menuUseSetting.add(itemSettings[i]); 636 } 637 itemSettings[selIndex].setSelected(true); 638 } 639 640 public void clearWindowsList() { 641 windowList.clear(); 642 } 643 644 public void setDoNotRemoveWindow(boolean newValue) { 645 doNotRemoveWindow = newValue; 646 } 647 648 public JDesktopPane getDesktop() { 649 return desktop; 650 } 651 652 public String getLastDataDir() { 653 return lastDataDir; 654 } 655 656 public void setLastDataDir(String dir) { 657 lastDataDir = dir; 658 } 659 660 public String getLastConfigDir() { 661 return lastConfigDir; 662 } 663 664 public void setLastConfigDir(String dir) { 665 lastConfigDir = dir; 666 } 667 668 public String getLastResultDir() { 669 return lastResultDir; 670 } 671 672 public void setLastResultDir(String dir) { 673 lastResultDir = dir; 674 } 675 676 public void disableVisualizationMenu() { 677 menuVisualization.setEnabled(false); 678 itemVizNow.setEnabled(false); 679 } 680 681 public void disableFileMenus() { 682 menuFile.setEnabled(false); 683 menuTool.setEnabled(false); 684 } 685 686 public void enableFileMenus() { 687 menuFile.setEnabled(true); 688 menuTool.setEnabled(true); 689 } 690 691 public void loadSelection() { 692 RandomAccessFile selectionFile; 693 JFileChooser fc = new JFileChooser(getLastConfigDir()); 694 String filename = null; 695 696 if(fc.showOpenDialog(frame) != JFileChooser.APPROVE_OPTION) return; 697 698 try { 699 filename = fc.getSelectedFile().getPath(); 700 setLastConfigDir(filename); 701 selectionFile = new RandomAccessFile(filename, "r"); 702 703 //String version = selectionFile.readLine().trim(); 704 //if (!version.equals(Scene.VERSION)) throw (new IOException()); 705 //selectionName = selectionFile.readLine().trim(); 706 707 Scene.getFilter().loadSelection(selectionFile); 708 709 } catch (Exception e) { 710 Scene.showErrorMessage("Invalid selection file format."); 711 return; 712 } 713 } 714 715 private void createSelectionMenuItem() { 716 ArrayList list = Scene.getVisualizationManager().getVisualizationList(); 717 JMenuItem[] tempMenus = null; 718 Visualization visual = null; 719 720 for (int i=0; i<list.size(); i++) { 721 visual = (Visualization)list.get(i); 722 if (visual.getWindow().isSelected()) { 723 tempMenus = visual.createSelectionMenuItem(); 724 break; 725 } 726 } 727 728 if (tempMenus != null) { 729 for (int i=0; i<tempMenus.length; i++) 730 menuSelection.add(tempMenus[i]); 731 } 732 733 itemCurrentSelection = new JMenuItem("Current Selections..."); 734 itemCurrentSelection.setMnemonic(KeyEvent.VK_C); 735 itemCurrentSelection.addActionListener(new ActionListener() { 736 public void actionPerformed(ActionEvent e) { 737 Scene.getFilter().load(); 738 } 739 }); 740 741 menuSelection.add(itemCurrentSelection); 742 } 743 744 public String getSelectionOptions() { 745 String retString = ""; 746 747 MenuElement[] subItems = menuSelection.getSubElements()[0].getSubElements(); 748 749 for (int i=0; i<subItems.length - 1; i++) { 750 String menuText = ((JCheckBoxMenuItem)subItems[i]).getText(); 751 if (((JCheckBoxMenuItem)(subItems[i])).isSelected()) { 752 if (menuText.indexOf("Entit") != -1) 753 menuText = menuText + " inside box"; 754 retString = retString + "-" + menuText + "\n"; 755 } 756 } 757 758 return retString.length() == 0 ? "Occurred Entities\n" : retString; 759 } 760 }