package husacct.control.presentation.menubar;
import husacct.ServiceProvider;
import husacct.common.locale.ILocaleService;
import husacct.common.services.IServiceListener;
import husacct.control.task.MainController;
import javax.swing.JMenuBar;
import javax.swing.KeyStroke;
public class MenuBar extends JMenuBar{
private static final long serialVersionUID = 1L;
private FileMenu fileMenu;
private DefineMenu defineMenu;
private AnalyseMenu analyseMenu;
private ValidateMenu validateMenu;
private ToolMenu configurationMenu;
private HelpMenu helpMenu;
private ILocaleService localeService = ServiceProvider.getInstance().getLocaleService();
private MainController mainController;
public MenuBar(MainController mainController){
this.mainController = mainController;
addComponents();
addListeners();
}
private void addComponents() {
fileMenu = new FileMenu(mainController);
defineMenu = new DefineMenu(mainController);
analyseMenu = new AnalyseMenu(mainController);
validateMenu = new ValidateMenu(mainController);
configurationMenu = new ToolMenu(mainController);
helpMenu = new HelpMenu(mainController);
fileMenu.setMnemonic(getMnemonicKeycode("FileMenuMnemonic"));
defineMenu.setMnemonic(getMnemonicKeycode("DefineMenuMnemonic"));
analyseMenu.setMnemonic(getMnemonicKeycode("AnalyseMenuMnemonic"));
validateMenu.setMnemonic(getMnemonicKeycode("ValidateMenuMnemonic"));
helpMenu.setMnemonic(getMnemonicKeycode("HelpMenuMnemonic"));
add(fileMenu);
add(defineMenu);
add(analyseMenu);
add(validateMenu);
add(configurationMenu);
add(helpMenu);
}
private void addListeners(){
localeService.addServiceListener(new IServiceListener() {
@Override
public void update() {
fileMenu.setMnemonic(getMnemonicKeycode("FileMenuMnemonic"));
defineMenu.setMnemonic(getMnemonicKeycode("DefineMenuMnemonic"));
analyseMenu.setMnemonic(getMnemonicKeycode("AnalyseMenuMnemonic"));
validateMenu.setMnemonic(getMnemonicKeycode("ValidateMenuMnemonic"));
helpMenu.setMnemonic(getMnemonicKeycode("HelpMenuMnemonic"));
}
});
}
private int getMnemonicKeycode(String translatedString) {
String mnemonicString = localeService.getTranslatedString(translatedString);
int keyCode = KeyStroke.getKeyStroke(mnemonicString).getKeyCode();
return keyCode;
}
public FileMenu getFileMenu(){
return fileMenu;
}
public DefineMenu getDefineMenu(){
return defineMenu;
}
public AnalyseMenu getAnalyseMenu(){
return analyseMenu;
}
public ValidateMenu getValidateMenu(){
return validateMenu;
}
}