Пример #1
0
  private JMenu createHelpMenu() {

    List<JComponent> menuItems = new ArrayList<JComponent>();

    MenuAction menuAction = null;

    menuAction =
        new MenuAction("User Guide ... ") {

          @Override
          public void actionPerformed(ActionEvent e) {
            try {
              BrowserLauncher.openURL(SERVER_BASE_URL + "igv/UserGuide");
            } catch (IOException ex) {
              log.error("Error opening browser", ex);
            }
          }
        };
    menuAction.setToolTipText(HELP_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    if (Desktop.isDesktopSupported()) {
      final Desktop desktop = Desktop.getDesktop();
      if (desktop.isSupported(Desktop.Action.MAIL)) {

        menuAction =
            new MenuAction("Help Forum...") {

              @Override
              public void actionPerformed(ActionEvent e) {
                try {
                  URI uri = new URI("http://groups.google.com/forum/#!forum/igv-help");
                  Desktop.getDesktop().browse(uri);
                } catch (Exception ex) {
                  log.error("Error opening igv-help uri", ex);
                }
              }
            };
        menuAction.setToolTipText("Email support");
        menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));
      }
    }

    menuAction =
        new MenuAction("About IGV ") {

          @Override
          public void actionPerformed(ActionEvent e) {
            (new AboutDialog(IGV.getMainFrame(), true)).setVisible(true);
          }
        };
    menuAction.setToolTipText(ABOUT_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    MenuAction helpMenuAction = new MenuAction("Help");
    return MenuAndToolbarUtils.createMenu(menuItems, helpMenuAction);
  }
Пример #2
0
  private JMenu createGenomeSpaceMenu() {

    JMenu menu = new JMenu("GenomeSpace");

    MenuAction menuAction = null;
    menuAction = new LoadFromGSMenuAction("Load File from GenomeSpace...", KeyEvent.VK_U, igv);
    menu.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menu.addSeparator();
    menuAction =
        new LoadGenomeFromGSMenuAction("Load Genome from GenomeSpace...", KeyEvent.VK_Z, igv);
    menu.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menu.addSeparator();

    menuAction = new GSSaveSessionMenuAction("Save Session to GenomeSpace...", igv);
    menu.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuAction = new GSOpenSessionMenuAction("Load Session from GenomeSpace...", igv);
    menu.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menu.add(new JSeparator());
    menuAction =
        new MenuAction("Logout") {
          @Override
          public void actionPerformed(ActionEvent e) {
            GSUtils.logout();
            if (MessageUtils.confirm(
                "You must shutdown IGV to complete the GenomeSpace logout. Shutdown now?")) {
              doExitApplication();
            }
          }
        };
    menu.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menu.add(new JSeparator());
    menuAction =
        new MenuAction("Register... ") {

          @Override
          public void actionPerformed(ActionEvent e) {
            try {
              BrowserLauncher.openURL(GENOMESPACE_REG_PAGE);
            } catch (IOException ex) {
              log.error("Error opening browser", ex);
            }
          }
        };
    menuAction.setToolTipText(GENOMESPACE_REG_TOOLTIP);
    menu.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menu.setVisible(
        PreferenceManager.getInstance().getAsBoolean(PreferenceManager.GENOME_SPACE_ENABLE));

    return menu;
  }
Пример #3
0
  private JMenu createRegionsMenu() {

    List<JComponent> menuItems = new ArrayList<JComponent>();
    MenuAction menuAction = null;

    menuAction = new NavigateRegionsMenuAction("Region Navigator ...", IGV.getInstance());
    menuAction.setToolTipText(UIConstants.REGION_NAVIGATOR_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuAction =
        new MenuAction("Gene Lists...", null, KeyEvent.VK_S) {
          @Override
          public void actionPerformed(ActionEvent e) {
            (GeneListManagerUI.getInstance(IGV.getMainFrame())).setVisible(true);
          }
        };
    menuAction.setToolTipText("Open gene list manager");
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuItems.add(new JSeparator());

    // Export Regions
    menuAction =
        new ExportRegionsMenuAction("Export Regions ...", KeyEvent.VK_E, IGV.getInstance());
    menuAction.setToolTipText(UIConstants.EXPORT_REGION_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    // Import Regions
    menuAction =
        new ImportRegionsMenuAction("Import Regions ...", KeyEvent.VK_I, IGV.getInstance());
    menuAction.setToolTipText(IMPORT_REGION_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    // Import Regions
    //         menuAction = new ClearRegionsMenuAction("Clear Regions ...", IGV.getInstance());
    //         menuAction.setToolTipText(IMPORT_REGION_TOOLTIP);
    //         menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    MenuAction dataMenuAction = new MenuAction("Regions", null, KeyEvent.VK_V);
    viewMenu = MenuAndToolbarUtils.createMenu(menuItems, dataMenuAction);
    return viewMenu;
  }
Пример #4
0
  private JMenu createTracksMenu() {

    List<JComponent> menuItems = new ArrayList<JComponent>();
    MenuAction menuAction = null;

    // Sort Context
    menuAction = new SortTracksMenuAction("Sort Tracks...", KeyEvent.VK_S, IGV.getInstance());
    menuAction.setToolTipText(SORT_TRACKS_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuAction = new GroupTracksMenuAction("Group Tracks... ", KeyEvent.VK_G, IGV.getInstance());
    menuAction.setToolTipText(UIConstants.GROUP_TRACKS_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    // Filter Tracks
    filterTracksAction =
        new FilterTracksMenuAction("Filter Tracks...", KeyEvent.VK_F, IGV.getInstance());
    filterTracksAction.setToolTipText(UIConstants.FILTER_TRACKS_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(filterTracksAction));

    menuItems.add(new JSeparator());

    // Reset Tracks
    menuAction =
        new FitDataToWindowMenuAction("Fit Data to Window", KeyEvent.VK_W, IGV.getInstance());
    menuAction.setToolTipText(UIConstants.FIT_DATA_TO_WINDOW_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    // Set track height
    menuAction =
        new SetTrackHeightMenuAction("Set Track Height...", KeyEvent.VK_H, IGV.getInstance());
    menuAction.setToolTipText(UIConstants.SET_DEFAULT_TRACK_HEIGHT_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    MenuAction dataMenuAction = new MenuAction("Tracks", null, KeyEvent.VK_K);

    // menuItems.add(exportData);

    return MenuAndToolbarUtils.createMenu(menuItems, dataMenuAction);
  }
Пример #5
0
  private JMenu createViewMenu() {

    List<JComponent> menuItems = new ArrayList<JComponent>();
    MenuAction menuAction = null;

    // Preferences
    menuAction =
        new MenuAction("Preferences...", null, KeyEvent.VK_P) {
          @Override
          public void actionPerformed(ActionEvent e) {
            UIUtilities.invokeOnEventThread(
                new Runnable() {
                  public void run() {
                    IGV.getInstance().doViewPreferences();
                  }
                });
          }
        };
    menuAction.setToolTipText(PREFERENCE_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuAction =
        new MenuAction("Color Legends ...", null, KeyEvent.VK_H) {
          @Override
          public void actionPerformed(ActionEvent e) {
            (new LegendDialog(IGV.getMainFrame())).setVisible(true);
          }
        };
    menuAction.setToolTipText(SHOW_HEATMAP_LEGEND_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuItems.add(new JSeparator());

    menuAction =
        new MenuAction("Show Name Panel", null, KeyEvent.VK_A) {
          @Override
          public void actionPerformed(ActionEvent e) {

            JCheckBoxMenuItem menuItem = (JCheckBoxMenuItem) e.getSource();
            if (menuItem.isSelected()) {
              IGV.getInstance().getMainPanel().expandNamePanel();
            } else {
              IGV.getInstance().getMainPanel().collapseNamePanel();
            }
            IGV.getInstance().doRefresh();
          }
        };
    boolean isShowing = IGV.getInstance().getMainPanel().isExpanded();
    JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem();
    menuItem.setSelected(isShowing);
    menuItem.setAction(menuAction);
    menuItems.add(menuItem);

    JMenuItem panelWidthmenuItem = new JMenuItem();
    menuAction =
        new MenuAction("Set Name Panel Width...", null, KeyEvent.VK_A) {
          @Override
          public void actionPerformed(ActionEvent e) {
            MainPanel mainPanel = IGV.getInstance().getMainPanel();
            String currentValue = String.valueOf(mainPanel.getNamePanelWidth());
            String newValue =
                MessageUtils.showInputDialog("Enter track name panel width: ", currentValue);
            if (newValue != null) {
              try {
                Integer w = Integer.parseInt(newValue);
                if (w <= 0 || w == 1000) throw new NumberFormatException();
                PreferenceManager.getInstance().put(PreferenceManager.NAME_PANEL_WIDTH, newValue);
                mainPanel.setNamePanelWidth(w);
              } catch (NumberFormatException ex) {
                MessageUtils.showErrorMessage(
                    "Error: value must be a positive integer < 1000.", ex);
              }
            }
          }
        };
    panelWidthmenuItem.setAction(menuAction);
    menuItems.add(panelWidthmenuItem);

    // Hide or Show the attribute panels
    boolean isShow =
        PreferenceManager.getInstance().getAsBoolean(PreferenceManager.SHOW_ATTRIBUTE_VIEWS_KEY);
    IGV.getInstance().doShowAttributeDisplay(isShow); // <= WEIRD doing IGV.getInstance() here!

    menuAction =
        new MenuAction("Show Attribute Display", null, KeyEvent.VK_A) {
          @Override
          public void actionPerformed(ActionEvent e) {

            JCheckBoxMenuItem menuItem = (JCheckBoxMenuItem) e.getSource();
            PreferenceManager.getInstance().setShowAttributeView(menuItem.getState());
            IGV.getInstance().getMainPanel().invalidate();
            IGV.getInstance().doRefresh();
          }
        };
    menuItem = MenuAndToolbarUtils.createMenuItem(menuAction, isShow);
    menuItems.add(menuItem);

    menuAction =
        new MenuAction("Select Attributes to Show...", null, KeyEvent.VK_S) {

          @Override
          public void actionPerformed(ActionEvent e) {
            IGV.getInstance().doSelectDisplayableAttribute();
          }
        };
    menuAction.setToolTipText(SELECT_DISPLAYABLE_ATTRIBUTES_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuAction =
        new MenuAction("Show Header Panel", null, KeyEvent.VK_A) {
          @Override
          public void actionPerformed(ActionEvent e) {

            JCheckBoxMenuItem menuItem = (JCheckBoxMenuItem) e.getSource();
            if (menuItem.isSelected()) {
              IGV.getInstance().getMainPanel().restoreHeader();
            } else {
              IGV.getInstance().getMainPanel().removeHeader();
            }
            IGV.getInstance().doRefresh();
          }
        };
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction, true));

    menuItems.add(new JSeparator());
    menuAction =
        new MenuAction("Reorder Panels...", null, KeyEvent.VK_S) {

          @Override
          public void actionPerformed(ActionEvent e) {
            ReorderPanelsDialog dlg = new ReorderPanelsDialog(IGV.getMainFrame());
            dlg.setVisible(true);
          }
        };
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuItems.add(new JSeparator());
    menuItems.add(new HistoryMenu("Go to"));

    // Add to IGVPanel menu
    MenuAction dataMenuAction = new MenuAction("View", null, KeyEvent.VK_V);
    viewMenu = MenuAndToolbarUtils.createMenu(menuItems, dataMenuAction);
    return viewMenu;
  }
Пример #6
0
  private JMenu createGenomesMenu() {
    List<JComponent> menuItems = new ArrayList<JComponent>();
    MenuAction menuAction = null;

    // Load genome
    menuAction =
        new MenuAction("Load Genome from File...", null, KeyEvent.VK_I) {
          @Override
          public void actionPerformed(ActionEvent event) {
            try {
              org.broad.igv.ui.util.ProgressMonitor monitor =
                  new org.broad.igv.ui.util.ProgressMonitor();
              igv.doLoadGenome(monitor);
            } catch (Exception e) {
              MessageUtils.showErrorMessage(e.getMessage(), e);
            }
          }
        };

    menuAction.setToolTipText("Load a FASTA or .genome file...");
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    // Load genome from URL
    menuAction = new LoadFromURLMenuAction(LoadFromURLMenuAction.LOAD_GENOME_FROM_URL, 0, igv);
    menuAction.setToolTipText("Load a FASTA or .genome file...");
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    // Add genome to combo box from server
    menuAction =
        new MenuAction("Load Genome From Server...", null) {
          @Override
          public void actionPerformed(ActionEvent event) {
            IGV.getInstance().loadGenomeFromServerAction();
          }
        };
    menuAction.setToolTipText(LOAD_GENOME_SERVER_TOOLTIP);
    loadFromServerMenuItem = MenuAndToolbarUtils.createMenuItem(menuAction);
    menuItems.add(loadFromServerMenuItem);

    menuItems.add(new JSeparator());

    menuAction =
        new MenuAction("Create .genome File...", null, KeyEvent.VK_D) {
          @Override
          public void actionPerformed(ActionEvent event) {
            org.broad.igv.ui.util.ProgressMonitor monitor =
                new org.broad.igv.ui.util.ProgressMonitor();
            igv.doDefineGenome(monitor);
          }
        };

    menuAction.setToolTipText(UIConstants.IMPORT_GENOME_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuItems.add(new JSeparator());

    // Add genome to combo box from server
    menuAction =
        new MenuAction("Manage Genome List...", null) {
          @Override
          public void actionPerformed(ActionEvent event) {
            ManageGenomesDialog dialog2 = new ManageGenomesDialog(IGV.getMainFrame());
            dialog2.setVisible(true);
            boolean cancelled = dialog2.isCancelled();
            List<GenomeListItem> removedValuesList = dialog2.getRemovedValuesList();
            if (!cancelled) {
              GenomeManager.getInstance().buildGenomeItemList();
              igv.getContentPane().getCommandBar().refreshGenomeListComboBox();
              if (removedValuesList != null && !removedValuesList.isEmpty()) {
                try {
                  GenomeManager.getInstance().deleteDownloadedGenomes(removedValuesList);
                } catch (IOException e) {
                  MessageUtils.showErrorMessage("Error deleting genome files", e);
                }
                GenomeManager.getInstance().updateImportedGenomePropertyFile();
                notifyGenomesAddedRemoved(removedValuesList, false);
              }
            }
          }
        };
    menuAction.setToolTipText("Add, remove, or reorder genomes which appear in the dropdown list");
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    MenuAction genomeMenuAction = new MenuAction("Genomes", null);
    return MenuAndToolbarUtils.createMenu(menuItems, genomeMenuAction);
  }
Пример #7
0
  void createFileMenu() {

    List<JComponent> menuItems = new ArrayList<JComponent>();
    MenuAction menuAction = null;
    // We disable certain load items when there is no genome.
    boolean genomeLoaded = GenomeManager.getInstance().getCurrentGenome() != null;

    menuItems.add(new JSeparator());

    // Load menu items
    menuAction = new LoadFilesMenuAction("Load from File...", KeyEvent.VK_L, igv);
    menuAction.setToolTipText(UIConstants.LOAD_TRACKS_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuAction = new LoadFromURLMenuAction(LoadFromURLMenuAction.LOAD_FROM_URL, KeyEvent.VK_U, igv);
    menuAction.setToolTipText(UIConstants.LOAD_TRACKS_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuAction = new LoadFromServerAction("Load from Server...", KeyEvent.VK_S, igv);
    menuAction.setToolTipText(UIConstants.LOAD_SERVER_DATA_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuAction = new LoadFromURLMenuAction(LoadFromURLMenuAction.LOAD_FROM_DAS, KeyEvent.VK_D, igv);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    if (PreferenceManager.getInstance().getAsBoolean(PreferenceManager.DB_ENABLED)) {
      menuAction = new LoadFromDatabaseAction("Load from Database...", 0, igv);
      menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));
    }

    String genomeId = IGV.getInstance().getGenomeManager().getGenomeId();
    if (EncodeFileBrowser.genomeSupported(genomeId)) {
      menuAction = new BrowseEncodeAction("Load from ENCODE...", KeyEvent.VK_E, igv);
      menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));
    }

    // Disable loading if no genome loaded. Something of an edge case
    if (!genomeLoaded) {
      for (JComponent menuItem : menuItems) {
        menuItem.setEnabled(false);
      }
    }

    menuItems.add(new JSeparator());

    // Session menu items
    menuAction = new NewSessionMenuAction("New Session...", KeyEvent.VK_N, igv);
    menuAction.setToolTipText(UIConstants.NEW_SESSION_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuAction = new OpenSessionMenuAction("Open Session...", KeyEvent.VK_O, igv);
    menuAction.setToolTipText(UIConstants.RESTORE_SESSION_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    menuAction = new SaveSessionMenuAction("Save Session...", KeyEvent.VK_V, igv);
    menuAction.setToolTipText(UIConstants.SAVE_SESSION_TOOLTIP);
    JMenuItem saveSessionItem = MenuAndToolbarUtils.createMenuItem(menuAction);
    menuItems.add(saveSessionItem);
    saveSessionItem.setEnabled(genomeLoaded);

    menuItems.add(new JSeparator());

    // ***** Snapshots
    // Snapshot Application
    menuAction =
        new MenuAction("Save Image ...", null, KeyEvent.VK_A) {
          @Override
          public void actionPerformed(ActionEvent e) {
            igv.saveImage(igv.getMainPanel());
          }
        };

    menuAction.setToolTipText(SAVE_IMAGE_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    // TODO -- change "Exit" to "Close" for BioClipse
    menuItems.add(new JSeparator()); // Exit
    menuAction =
        new MenuAction("Exit", null, KeyEvent.VK_X) {

          @Override
          public void actionPerformed(ActionEvent e) {
            doExitApplication();
          }
        };

    menuAction.setToolTipText(EXIT_TOOLTIP);
    menuItems.add(MenuAndToolbarUtils.createMenuItem(menuAction));

    // Empty the recent sessions list before we start to do
    // anything with it
    igv.getRecentSessionList().clear();

    // Retrieve the stored session paths
    String recentSessions = PreferenceManager.getInstance().getRecentSessions();
    if (recentSessions != null) {
      String[] sessions = recentSessions.split(";");
      for (String sessionPath : sessions) {
        if (!igv.getRecentSessionList().contains(sessionPath)) {
          igv.getRecentSessionList().add(sessionPath);
        }
      }
    }

    if (!IGV.getInstance().getRecentSessionList().isEmpty()) {

      menuItems.add(new JSeparator());

      // Now add menu items
      for (final String session : IGV.getInstance().getRecentSessionList()) {
        OpenSessionMenuAction osMenuAction =
            new OpenSessionMenuAction(session, session, IGV.getInstance());
        menuItems.add(MenuAndToolbarUtils.createMenuItem(osMenuAction));
      }
    }

    MenuAction fileMenuAction = new MenuAction("File", null, KeyEvent.VK_F);
    if (fileMenu == null) {
      fileMenu = MenuAndToolbarUtils.createMenu(menuItems, fileMenuAction);
    } else {
      fileMenu.removeAll();
      for (JComponent item : menuItems) {
        fileMenu.add(item);
      }
    }
  }