/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.kapti.administration;
import com.kapti.administration.actions.ActionsFactory;
import com.kapti.administration.helpers.StockPlayPreferences;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.swing.Action;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JSeparator;
import org.jdesktop.swingx.JXLoginPane;
import org.jdesktop.swingx.JXLoginPane.JXLoginFrame;
import org.jdesktop.swingx.JXLoginPane.Status;
/**
*
* @author Thijs
*/
public class MenuBar extends JMenuBar {
private static final ResourceBundle translations = ResourceBundle.getBundle("com/kapti/administration/translations");
JCheckBoxMenuItem saveUsernamesMenuItem = null;
JCheckBoxMenuItem savePasswordsMenuItem = null;
JCheckBoxMenuItem loginWithEidMenuItem = null;
public MenuBar() {
StockPlayPreferences preferences = new StockPlayPreferences();
ActionsFactory actFactory = ActionsFactory.getInstance();
JMenu fileMenu = new JMenu(translations.getString("FILE"));
JMenuItem exitItem = new JMenuItem(translations.getString("EXIT"));
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
MainFrame.getInstance().dispose();
}
});
fileMenu.add(exitItem);
add(fileMenu);
JMenu statusMenu = new JMenu(translations.getString("STATUS"));
for (Action act : actFactory.getStatusActions()) {
statusMenu.add(act);
}
add(statusMenu);
JMenu securitiesMenu = new JMenu(translations.getString("SECURITIESMANAGEMENTMENUITEM"));
for (Action act : actFactory.getSecuritiesActions()) {
securitiesMenu.add(act);
}
add(securitiesMenu);
JMenu usersMenu = new JMenu(translations.getString("USERMANAGEMENTMENUITEM"));
for (Action act : actFactory.getUsersActions()) {
usersMenu.add(act);
}
add(usersMenu);
JMenu settingsMenu = new JMenu(translations.getString("SETTINGS"));
JMenuItem languageItem = new JMenuItem(translations.getString("LANGUAGE"));
languageItem.setEnabled(false);
languageItem.setFont(languageItem.getFont().deriveFont(Font.BOLD));
settingsMenu.add(languageItem);
ButtonGroup localesGroup = new ButtonGroup();
for (Locale l : StockPlayPreferences.getSupportedLocales()) {
JRadioButtonMenuItem langRadioItem = new JRadioButtonMenuItem(l.getDisplayName(l));
if (l.equals(preferences.getLocale())) {
langRadioItem.setSelected(true);
}
langRadioItem.addActionListener(new ChangeLanguageActionListener(l));
localesGroup.add(langRadioItem);
settingsMenu.add(langRadioItem);
}
settingsMenu.add(new JSeparator());
JMenuItem loginItem = new JMenuItem(translations.getString("LOGIN"));
loginItem.setEnabled(false);
loginItem.setFont(languageItem.getFont().deriveFont(Font.BOLD));
settingsMenu.add(loginItem);
saveUsernamesMenuItem = new JCheckBoxMenuItem(translations.getString("SAVE_USERNAMES"));
saveUsernamesMenuItem.setState(preferences.getSaveUsernames());
saveUsernamesMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StockPlayPreferences preferences = new StockPlayPreferences();
preferences.setSaveUsernames(saveUsernamesMenuItem.getState());
}
});
settingsMenu.add(saveUsernamesMenuItem);
savePasswordsMenuItem = new JCheckBoxMenuItem(translations.getString("SAVE_PASSWORDS"));
savePasswordsMenuItem.setState(preferences.getSavePasswords());
savePasswordsMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StockPlayPreferences preferences = new StockPlayPreferences();
preferences.setSavePasswords(savePasswordsMenuItem.getState());
}
});
settingsMenu.add(savePasswordsMenuItem);
loginWithEidMenuItem = new JCheckBoxMenuItem(translations.getString("LOGIN_WITH_EID"));
loginWithEidMenuItem.setState(preferences.getLoginWithEid());
loginWithEidMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StockPlayPreferences prefs = new StockPlayPreferences();
if (loginWithEidMenuItem.getState()) {
//credentials opvragen
JXLoginPane loginPane = new JXLoginPane();
JXLoginFrame loginFrame;
loginPane.setBannerText(translations.getString("LOGIN_EID_BANNER"));
JOptionPane.showMessageDialog(null, translations.getString("LOGIN_EID_MESSAGE"), translations.getString("LOGIN_EID_TITLE"), JOptionPane.INFORMATION_MESSAGE);
loginPane.setMessage(translations.getString("LOGIN_EID_MESSAGE2"));
loginFrame = JXLoginPane.showLoginFrame(loginPane);
loginFrame.setTitle(translations.getString("LOGIN_EID_TITLE2"));
loginFrame.setVisible(true);
loginFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
StockPlayPreferences prefs = new StockPlayPreferences();
JXLoginFrame loginFrame = (JXLoginFrame) e.getSource();
if (loginFrame.getStatus() == Status.SUCCEEDED) {
prefs.setEidAdminUsername(loginFrame.getPanel().getUserName());
prefs.setEidAdminPassword(new String(loginFrame.getPanel().getPassword()));
prefs.setLoginWithEid(true);
JOptionPane.showMessageDialog(null, translations.getString("LOGIN_EID_SUCCESS"), translations.getString("LOGIN_EID_SUCCESS_TITLE"), JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, translations.getString("LOGIN_EID_FAIL"), translations.getString("LOGIN_EID_FAIL_TITLE"), JOptionPane.ERROR_MESSAGE);
loginWithEidMenuItem.setState(false);
}
}
});
}
else{
prefs.setLoginWithEid(false);
}
}
});
settingsMenu.add(loginWithEidMenuItem);
add(settingsMenu);
}
private class ChangeLanguageActionListener implements ActionListener {
private Locale locale;
public ChangeLanguageActionListener(Locale locale) {
this.locale = locale;
}
public void actionPerformed(ActionEvent e) {
StockPlayPreferences preferences = new StockPlayPreferences();
preferences.setLocale(locale);
JOptionPane.showMessageDialog(null, translations.getString("LANGUAGE_CHANGED_MESSAGE"));
}
}
}