/*******************************************************************************
* GenPlay, Einstein Genome Analyzer
* Copyright (C) 2009, 2014 Albert Einstein College of Medicine
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* Authors: Julien Lajugie <julien.lajugie@einstein.yu.edu>
* Nicolas Fourel <nicolas.fourel@einstein.yu.edu>
* Eric Bouhassira <eric.bouhassira@einstein.yu.edu>
*
* Website: <http://genplay.einstein.yu.edu>
******************************************************************************/
package edu.yu.einstein.genplay.gui.menu;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import edu.yu.einstein.genplay.core.manager.project.ProjectManager;
import edu.yu.einstein.genplay.gui.action.project.PAAbout;
import edu.yu.einstein.genplay.gui.action.project.PACheckForUpdates;
import edu.yu.einstein.genplay.gui.action.project.PAContactUs;
import edu.yu.einstein.genplay.gui.action.project.PAExit;
import edu.yu.einstein.genplay.gui.action.project.PAFullScreen;
import edu.yu.einstein.genplay.gui.action.project.PAHelp;
import edu.yu.einstein.genplay.gui.action.project.PALoadProject;
import edu.yu.einstein.genplay.gui.action.project.PANewProject;
import edu.yu.einstein.genplay.gui.action.project.PAOption;
import edu.yu.einstein.genplay.gui.action.project.PARNAPosToDNAPos;
import edu.yu.einstein.genplay.gui.action.project.PAReportBug;
import edu.yu.einstein.genplay.gui.action.project.PASaveProject;
import edu.yu.einstein.genplay.gui.action.project.PASaveProjectAs;
import edu.yu.einstein.genplay.gui.action.project.PAShowErrorReport;
import edu.yu.einstein.genplay.gui.action.project.PAShowWarningReport;
import edu.yu.einstein.genplay.gui.action.project.PASortFile;
/**
* Main menu of the application
* @author Julien Lajugie
*/
public final class MainMenu extends JPopupMenu {
private static final long serialVersionUID = -8543113416095307670L; // generated ID
private final JMenuItem jmiNewProject; // menu new project
private final JMenuItem jmiSaveProject; // menu save project
private final JMenuItem jmiSaveProjectAs; // menu save project
private final JMenuItem jmiLoadProject; // menu load project
private final JMenuItem jmiFullScreen; // full screen
private final JMenuItem jmiWarningReport; // warning report
private final JMenuItem jmiErrorReport; // exception report
private final JMenuItem jmiSortFile; // sort file
private final JMenuItem jmiRNAToDNAPos; // option
private final JMenuItem jmiUpdate; // update
private final JMenuItem jmiReportBug; // report bug
private final JMenuItem jmiContactUs; // contact us
private final JMenuItem jmiAbout; // about
private final JMenuItem jmiHelp; // help
private final JMenuItem jmiOption; // option
private final JMenuItem jmiExit; // exit
/**
* Creates an instance of {@link MainMenu}
* @param actionMap {@link ActionMap} containing the {@link Action} of this menu
*/
public MainMenu(ActionMap actionMap) {
super("Main Menu");
jmiNewProject = new JMenuItem(actionMap.get(PANewProject.ACTION_KEY));
jmiLoadProject = new JMenuItem(actionMap.get(PALoadProject.ACTION_KEY));
jmiSaveProject = new JMenuItem(actionMap.get(PASaveProject.ACTION_KEY));
jmiSaveProjectAs = new JMenuItem(actionMap.get(PASaveProjectAs.ACTION_KEY));
jmiFullScreen = new JMenuItem(actionMap.get(PAFullScreen.ACTION_KEY));
jmiWarningReport = new JMenuItem(actionMap.get(PAShowWarningReport.ACTION_KEY));
jmiErrorReport = new JMenuItem(actionMap.get(PAShowErrorReport.ACTION_KEY));
jmiRNAToDNAPos = new JMenuItem(actionMap.get(PARNAPosToDNAPos.ACTION_KEY));
jmiSortFile = new JMenuItem(actionMap.get(PASortFile.ACTION_KEY));
jmiUpdate = new JMenuItem(actionMap.get(PACheckForUpdates.ACTION_KEY));
jmiReportBug = new JMenuItem(actionMap.get(PAReportBug.ACTION_KEY));
jmiContactUs = new JMenuItem(actionMap.get(PAContactUs.ACTION_KEY));
jmiAbout = new JMenuItem(actionMap.get(PAAbout.ACTION_KEY));
jmiHelp = new JMenuItem(actionMap.get(PAHelp.ACTION_KEY));
jmiOption = new JMenuItem(actionMap.get(PAOption.ACTION_KEY));
jmiExit = new JMenuItem(actionMap.get(PAExit.ACTION_KEY));
add(jmiNewProject);
add(jmiLoadProject);
add(jmiSaveProject);
add(jmiSaveProjectAs);
addSeparator();
add(jmiFullScreen);
add(jmiWarningReport);
add(jmiErrorReport);
addSeparator();
add(jmiSortFile);
add(jmiRNAToDNAPos);
addSeparator();
if (PACheckForUpdates.isUpdaterAvailable()) {
add(jmiUpdate);
}
add(jmiReportBug);
add(jmiContactUs);
add(jmiAbout);
addSeparator();
add(jmiHelp);
addSeparator();
add(jmiOption);
addSeparator();
add(jmiExit);
addPopupMenuListener(new PopupMenuListener() {
@Override
public void popupMenuCanceled(PopupMenuEvent e) {}
@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {}
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
jmiSaveProject.setEnabled(ProjectManager.getInstance().getProjectDirectory() != null);
}
});
}
}