MenuBar.java
package com.nilhcem.fakesmtp.gui;
import com.nilhcem.fakesmtp.core.ArgsHandler;
import com.nilhcem.fakesmtp.core.I18n;
import com.nilhcem.fakesmtp.gui.listeners.AboutActionListener;
import com.nilhcem.fakesmtp.gui.listeners.ExitActionListener;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Observable;
/**
* Provides the menu bar of the application.
*
* @author Nilhcem
* @since 1.0
*/
public final class MenuBar extends Observable {
private final I18n i18n = I18n.INSTANCE;
private final JMenuBar menuBar = new JMenuBar();
private final MainFrame mainFrame;
/**
* Creates the menu bar and the different menus (file / edit / help).
*
* @param mainFrame MainFrame class required for the closing action.
*/
public MenuBar(MainFrame mainFrame) {
this.mainFrame = mainFrame;
menuBar.add(createFileMenu());
menuBar.add(createEditMenu());
menuBar.add(createHelpMenu());
}
/**
* Returns the JMenuBar object.
*
* @return the JMenuBar object.
*/
public JMenuBar get() {
return menuBar;
}
/**
* Creates the file menu.
* <p>
* The file menu contains an "Exit" item, to quit the application.
* </p>
*
* @return the newly created file menu.
*/
private JMenu createFileMenu() {
JMenu fileMenu = new JMenu(i18n.get("menubar.file"));
fileMenu.setMnemonic(i18n.get("menubar.mnemo.file").charAt(0));
JMenuItem exit = new JMenuItem(i18n.get("menubar.exit"));
exit.setMnemonic(i18n.get("menubar.mnemo.exit").charAt(0));
exit.addActionListener(new ExitActionListener(mainFrame));
fileMenu.add(exit);
return fileMenu;
}
/**
* Creates the edit menu.
* <p>
* The edit menu contains a "Messages location" item, to define the location of the incoming mails.
* </p>
*
* @return the newly created edit menu.
*/
private JMenu createEditMenu() {
JMenu editMenu = new JMenu(i18n.get("menubar.edit"));
editMenu.setMnemonic(i18n.get("menubar.mnemo.edit").charAt(0));
JMenuItem mailsLocation = new JMenuItem(i18n.get("menubar.messages.location"));
mailsLocation.setMnemonic(i18n.get("menubar.mnemo.msglocation").charAt(0));
if (ArgsHandler.INSTANCE.memoryModeEnabled()) {
mailsLocation.setEnabled(false);
} else {
mailsLocation.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
setChanged();
notifyObservers();
}
});
}
editMenu.add(mailsLocation);
return editMenu;
}
/**
* Creates the help menu.
* <p>
* The help menu contains an "About" item, to display some software information.
* </p>
*
* @return the newly created help menu.
*/
private JMenu createHelpMenu() {
JMenu helpMenu = new JMenu(i18n.get("menubar.help"));
helpMenu.setMnemonic(i18n.get("menubar.mnemo.help").charAt(0));
JMenuItem about = new JMenuItem(i18n.get("menubar.about"));
about.setMnemonic(i18n.get("menubar.mnemo.about").charAt(0));
about.addActionListener(new AboutActionListener(menuBar.getParent()));
helpMenu.add(about);
return helpMenu;
}
}