/*
* jMemorize - Learning made easy (and fun) - A Leitner flashcards tool
* Copyright(C) 2004-2006 Riad Djemili
*
* 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 1, 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, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package jmemorize.gui.swing;
import javax.swing.ImageIcon;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import jmemorize.core.Main;
import jmemorize.gui.Localization;
import jmemorize.gui.swing.actions.AboutAction;
import jmemorize.gui.swing.actions.LearnAction;
import jmemorize.gui.swing.actions.OpenURLAction;
import jmemorize.gui.swing.actions.RenameCategoryAction;
import jmemorize.gui.swing.actions.ShowHistoryAction;
import jmemorize.gui.swing.actions.edit.AddCardAction;
import jmemorize.gui.swing.actions.edit.AddCategoryAction;
import jmemorize.gui.swing.actions.edit.CopyAction;
import jmemorize.gui.swing.actions.edit.CutAction;
import jmemorize.gui.swing.actions.edit.EditCardAction;
import jmemorize.gui.swing.actions.edit.FindAction;
import jmemorize.gui.swing.actions.edit.PasteAction;
import jmemorize.gui.swing.actions.edit.RemoveAction;
import jmemorize.gui.swing.actions.edit.ResetCardAction;
import jmemorize.gui.swing.actions.file.ExitAction;
import jmemorize.gui.swing.actions.file.ExportToCSVAction;
import jmemorize.gui.swing.actions.file.ExportToCleanLessonAction;
import jmemorize.gui.swing.actions.file.ExportToPDFAction;
import jmemorize.gui.swing.actions.file.ExportToRTFAction;
import jmemorize.gui.swing.actions.file.ImportCSVAction;
import jmemorize.gui.swing.actions.file.ImportJMLAction;
import jmemorize.gui.swing.actions.file.ImportTSVAction;
import jmemorize.gui.swing.actions.file.NewLessonAction;
import jmemorize.gui.swing.actions.file.OpenLessonAction;
import jmemorize.gui.swing.actions.file.OpenRecentLessonAction;
import jmemorize.gui.swing.actions.file.PreferencesAction;
import jmemorize.gui.swing.actions.file.SaveLessonAction;
import jmemorize.gui.swing.actions.file.SaveLessonAsAction;
import jmemorize.util.RecentItems;
import jmemorize.util.RecentItems.RecentItemsObserver;
/**
* The main menu of jMemorize.
*
* @author djemili
*/
public class MainMenu extends JMenuBar implements RecentItemsObserver
{
private JMenu m_fileMenu;
public MainMenu(SelectionProvider selectionProvider, RecentItems recentFiles)
{
buildMenu(selectionProvider);
recentFiles.addObserver(this);
}
/* (non-Javadoc)
* @see jmemorize.util.RecentItems.RecentItemsObserver
*/
public void onRecentItemChange(RecentItems src)
{
buildFileMenu();
}
private void buildMenu(SelectionProvider provider)
{
m_fileMenu = new JMenu(Localization.get("MainFrame.MENU_FILE")); //$NON-NLS-1$
add(m_fileMenu);
buildFileMenu();
add(buildEditMenu(provider));
add(buildLearnMenu(provider));
add(buildHelpMenu());
}
private JMenu buildLearnMenu(SelectionProvider provider)
{
JMenu learnMenu = new JMenu(Localization.get("MainFrame.MENU_LESSON")); //$NON-NLS-1$
learnMenu.add(new JMenuItem(new AddCardAction(provider)));
learnMenu.add(new JMenuItem(new AddCategoryAction(provider)));
learnMenu.addSeparator();
learnMenu.add(new JMenuItem(new LearnAction(provider)));
learnMenu.add(new JMenuItem(new ShowHistoryAction()));
return learnMenu;
}
private JMenu buildEditMenu(SelectionProvider provider)
{
JMenu editMenu = new JMenu(Localization.get("MainFrame.MENU_EDIT")); //$NON-NLS-1$
editMenu.add(new JMenuItem(new EditCardAction(provider)));
editMenu.addSeparator();
editMenu.add(new JMenuItem(new CutAction(provider)));
editMenu.add(new JMenuItem(new CopyAction(provider)));
editMenu.add(new JMenuItem(new PasteAction(provider)));
editMenu.addSeparator();
editMenu.add(new JMenuItem(new RemoveAction(provider)));
if (Main.isDevel())
editMenu.add(new JMenuItem(new RenameCategoryAction(provider)));
editMenu.add(new JMenuItem(new ResetCardAction(provider)));
editMenu.addSeparator();
editMenu.add(new JMenuItem(new FindAction()));
return editMenu;
}
private JMenu buildHelpMenu()
{
JMenu menu = new JMenu(Localization.get("MainFrame.MENU_HELP")); //$NON-NLS-1$
menu.add(new JMenuItem(new AboutAction()));
menu.addSeparator();
menu.add(new JMenuItem(new OpenURLAction(
Localization.get("URL.HOMEPAGE"), //$NON-NLS-1$
"http://jmemorize.org" //$NON-NLS-1$
)));
menu.add(new JMenuItem(new OpenURLAction(
Localization.get("URL.MANUAL"), //$NON-NLS-1$
"http://wiki.jmemorize.org/User_Manual" //$NON-NLS-1$
)));
menu.add(new JMenuItem(new OpenURLAction(
Localization.get("URL.FEATURE_TRACKER"), //$NON-NLS-1$
"http://sourceforge.net/tracker/?group_id=121967&atid=691941" //$NON-NLS-1$
)));
menu.add(new JMenuItem(new OpenURLAction(
Localization.get("URL.BUG_TRACKER"), //$NON-NLS-1$
"http://sourceforge.net/tracker/?group_id=121967&atid=691938" //$NON-NLS-1$
)));
return menu;
}
private void buildFileMenu()
{
m_fileMenu.removeAll();
m_fileMenu.add(new NewLessonAction());
m_fileMenu.add(new OpenLessonAction());
m_fileMenu.add(new SaveLessonAction());
m_fileMenu.add(new SaveLessonAsAction());
// sub menu for import menu items
JMenu importMenu = new JMenu(Localization.get("MainFrame.IMPORT")); //$NON-NLS-1$
importMenu.setIcon(new ImageIcon(
getClass().getResource("/resource/icons/blank.gif"))); //$NON-NLS-1$
importMenu.add(new ImportCSVAction());
importMenu.add(new ImportTSVAction());
importMenu.add(new ImportJMLAction());
// Sub menu for export menu items
JMenu exportMenu = new JMenu(Localization.get("MainFrame.EXPORT")); //$NON-NLS-1$
exportMenu.setIcon(new ImageIcon(
getClass().getResource("/resource/icons/blank.gif"))); //$NON-NLS-1$
exportMenu.add(new ExportToPDFAction());
exportMenu.add(new ExportToRTFAction());
exportMenu.add(new ExportToCSVAction());
exportMenu.add(new ExportToCleanLessonAction());
m_fileMenu.addSeparator();
m_fileMenu.add(importMenu);
m_fileMenu.add(exportMenu);
// add recent files menu items
int recentFiles = Main.getInstance().getRecentLessonFiles().size();
if (recentFiles > 0)
{
m_fileMenu.addSeparator();
}
for (int i = 0; i < recentFiles; i++)
{
JMenuItem menuItem = new JMenuItem(new OpenRecentLessonAction(i));
m_fileMenu.add(menuItem);
}
m_fileMenu.addSeparator();
m_fileMenu.add(new JMenuItem(new PreferencesAction()));
m_fileMenu.addSeparator();
m_fileMenu.add(new JMenuItem(new ExitAction()));
}
}