package husacct.control.presentation.menubar; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.util.List; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.KeyStroke; import husacct.ServiceProvider; import husacct.common.enums.States; import husacct.common.locale.ILocaleService; import husacct.common.services.IServiceListener; import husacct.control.task.IStateChangeListener; import husacct.control.task.MainController; @SuppressWarnings("serial") public class DefineMenu extends JMenu{ private MainController mainController; // private JMenu architectureDiagram; // private JMenuItem moduleAndRuleDiagramItem; //Disabled in vs 5.1; waiting for improvement; see Graphics system documentation private JMenuItem defineArchitectureItem; private JMenuItem definedArchitectureDiagramItem; private JMenuItem reportArchitectureItem; private JMenuItem exportArchitectureItem; private JMenuItem importArchitectureItem; private ILocaleService localeService = ServiceProvider.getInstance().getLocaleService(); public DefineMenu(final MainController mainController){ super(); this.mainController = mainController; setText(localeService.getTranslatedString("Define")); addComponents(); setListeners(); } private void addComponents() { defineArchitectureItem = new JMenuItem(localeService.getTranslatedString("DefineArchitecture")); defineArchitectureItem.setAccelerator(KeyStroke.getKeyStroke('D', InputEvent.CTRL_DOWN_MASK)); defineArchitectureItem.setMnemonic(getMnemonicKeycode("DefineArchitectureMnemonic")); definedArchitectureDiagramItem = new JMenuItem(localeService.getTranslatedString("DefinedArchitectureDiagram")); definedArchitectureDiagramItem.setAccelerator(KeyStroke.getKeyStroke('T', InputEvent.CTRL_DOWN_MASK)); definedArchitectureDiagramItem.setMnemonic(getMnemonicKeycode("DefinedArchitectureDiagramMnemonic")); exportArchitectureItem = new JMenuItem(localeService.getTranslatedString("ExportArchitecture")); exportArchitectureItem.setMnemonic(getMnemonicKeycode("ExportArchitectureMnemonic")); importArchitectureItem = new JMenuItem(localeService.getTranslatedString("ImportArchitecture")); importArchitectureItem.setMnemonic(getMnemonicKeycode("ImportArchitectureMnemonic")); reportArchitectureItem = new JMenuItem(localeService.getTranslatedString("ReportArchitecture")); reportArchitectureItem.setMnemonic(getMnemonicKeycode("ReportArchitectureMnemonic")); /* architectureDiagram = new JMenu(localeService.getTranslatedString("DefinedArchitectureDiagram")); moduleAndDependenciesDiagramItem = new JMenuItem(localeService.getTranslatedString("ModuleAndDependenciesDiagram")); moduleAndDependenciesDiagramItem.setAccelerator(KeyStroke.getKeyStroke('T', KeyEvent.CTRL_DOWN_MASK)); moduleAndDependenciesDiagramItem.setMnemonic(getMnemonicKeycode("DefinedArchitectureDiagramMnemonic")); moduleAndRuleDiagramItem = new JMenuItem(localeService.getTranslatedString("ModuleAndRuleDiagram")); moduleAndRuleDiagramItem.setAccelerator(KeyStroke.getKeyStroke('M', KeyEvent.CTRL_DOWN_MASK)); moduleAndRuleDiagramItem.setMnemonic(getMnemonicKeycode("ModuleAndRuleDiagramMnemonic")); architectureDiagram.add(moduleAndDependenciesDiagramItem); architectureDiagram.add(moduleAndRuleDiagramItem); */ this.add(defineArchitectureItem); this.add(definedArchitectureDiagramItem); this.add(exportArchitectureItem); this.add(importArchitectureItem); this.add(reportArchitectureItem); } private void setListeners() { defineArchitectureItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getViewController().showDefineArchitecture(); } }); definedArchitectureDiagramItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getViewController().showDefinedArchitectureDiagram(); } }); /* moduleAndRuleDiagramItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getViewController().showModuleAndRuleDiagram(); } }); */ exportArchitectureItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getExportImportController().showExportArchitectureGui(); } }); importArchitectureItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getExportImportController().showImportArchitectureGui(); mainController.getViewController().showDefineArchitecture(); } }); reportArchitectureItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getExportImportController().showReportArchitectureGui(); } }); mainController.getStateController().addStateChangeListener(new IStateChangeListener() { @Override public void changeState(List<States> states) { defineArchitectureItem.setEnabled(false); definedArchitectureDiagramItem.setEnabled(false); //moduleAndRuleDiagramItem.setEnabled(false); importArchitectureItem.setEnabled(false); exportArchitectureItem.setEnabled(false); reportArchitectureItem.setEnabled(false); if(states.contains(States.OPENED)){ defineArchitectureItem.setEnabled(true); importArchitectureItem.setEnabled(true); } if(states.contains(States.DEFINED) || states.contains(States.MAPPED)){ exportArchitectureItem.setEnabled(true); definedArchitectureDiagramItem.setEnabled(true); //moduleAndRuleDiagramItem.setEnabled(true); reportArchitectureItem.setEnabled(true); } } }); final DefineMenu defineMenu = this; localeService.addServiceListener(new IServiceListener() { @Override public void update() { defineMenu.setText(localeService.getTranslatedString("Define")); defineArchitectureItem.setText(localeService.getTranslatedString("DefineArchitecture")); definedArchitectureDiagramItem.setText(localeService.getTranslatedString("DefinedArchitectureDiagram")); //moduleAndRuleDiagramItem.setText(localeService.getTranslatedString("ModuleAndRuleDiagram")); exportArchitectureItem.setText(localeService.getTranslatedString("ExportArchitecture")); importArchitectureItem.setText(localeService.getTranslatedString("ImportArchitecture")); reportArchitectureItem.setText(localeService.getTranslatedString("ReportArchitecture")); defineArchitectureItem.setMnemonic(getMnemonicKeycode("DefineArchitectureMnemonic")); definedArchitectureDiagramItem.setMnemonic(getMnemonicKeycode("DefinedArchitectureDiagramMnemonic")); //moduleAndRuleDiagramItem.setMnemonic(getMnemonicKeycode("ModuleAndRuleDiagramMnemonic")); exportArchitectureItem.setMnemonic(getMnemonicKeycode("ExportArchitectureMnemonic")); importArchitectureItem.setMnemonic(getMnemonicKeycode("ImportArchitectureMnemonic")); reportArchitectureItem.setMnemonic(getMnemonicKeycode("ReportArchitectureMnemonic")); } }); } public JMenuItem getDefineArchitectureItem(){ return defineArchitectureItem; } public JMenuItem definedArchitectureDiagramItem(){ return definedArchitectureDiagramItem; } /* public JMenuItem getModuleAndRuleDiagramItem(){ return moduleAndRuleDiagramItem; } */ public JMenuItem getExportArchitectureItem(){ return exportArchitectureItem; } public JMenuItem getIimportArchitectureItem(){ return importArchitectureItem; } public JMenuItem getReportArchitectureItem(){ return reportArchitectureItem; } private int getMnemonicKeycode(String translatedString) { String mnemonicString = localeService.getTranslatedString(translatedString); int keyCode = KeyStroke.getKeyStroke(mnemonicString).getKeyCode(); return keyCode; } }