package husacct.control.presentation.menubar; 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; 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; @SuppressWarnings("serial") public class AnalyseMenu extends JMenu{ private MainController mainController; private JMenuItem setApplicationPropertiesItem; private JMenuItem analyseNowItem; private JMenuItem analysedArchitectureDiagramItem; private JMenuItem analysedApplicationOverviewItem; private JMenuItem analysisHistoryItem; private JMenuItem reportDependenciesItem; private JMenuItem reconstructArchitectureItem; private JMenuItem exportAnalysisModelItem; private JMenuItem importAnalysisModelItem; private ILocaleService localeService = ServiceProvider.getInstance().getLocaleService(); public AnalyseMenu(final MainController mainController){ super(); this.mainController = mainController; setText(localeService.getTranslatedString("Analyse")); addComponents(); setListeners(); } private void addComponents(){ setApplicationPropertiesItem = new JMenuItem(localeService.getTranslatedString("ApplicationProperties")); setApplicationPropertiesItem.setMnemonic(getMnemonicKeycode("ApplicationPropertiesMnemonic")); analyseNowItem = new JMenuItem(localeService.getTranslatedString("AnalyseNow")); analyseNowItem.setMnemonic(getMnemonicKeycode("AnalyseNowMnemonic")); analysedApplicationOverviewItem = new JMenuItem(localeService.getTranslatedString("AnalysedApplicationOverview")); analysedApplicationOverviewItem.setAccelerator(KeyStroke.getKeyStroke('A', InputEvent.CTRL_DOWN_MASK)); analysedApplicationOverviewItem.setMnemonic(getMnemonicKeycode("AnalysedApplicationOverviewMnemonic")); analysedArchitectureDiagramItem = new JMenuItem(localeService.getTranslatedString("AnalysedArchitectureDiagram")); analysedArchitectureDiagramItem.setAccelerator(KeyStroke.getKeyStroke('P', InputEvent.CTRL_DOWN_MASK)); analysedArchitectureDiagramItem.setMnemonic(getMnemonicKeycode("AnalysedArchitectureDiagramMnemonic")); reconstructArchitectureItem = new JMenuItem(localeService.getTranslatedString("ReconstructArchitecture")); reconstructArchitectureItem.setMnemonic(getMnemonicKeycode("ReconstructArchitectureNowMnemonic")); analysisHistoryItem = new JMenuItem(localeService.getTranslatedString("AnalysisHistory")); analysisHistoryItem.setMnemonic(getMnemonicKeycode("AnalyseHistoryMnemonic")); exportAnalysisModelItem = new JMenuItem(localeService.getTranslatedString("ExportAnalysisModel")); exportAnalysisModelItem.setMnemonic(getMnemonicKeycode("ExportAnalysisModelMnemonic")); importAnalysisModelItem = new JMenuItem(localeService.getTranslatedString("ImportAnalysisModel")); importAnalysisModelItem.setMnemonic(getMnemonicKeycode("ImportAnalysisModelMnemonic")); reportDependenciesItem = new JMenuItem(localeService.getTranslatedString("ExportDependencies")); reportDependenciesItem.setMnemonic(getMnemonicKeycode("ReportDependenciesMnemonic")); this.add(setApplicationPropertiesItem); this.add(analyseNowItem); this.add(analysedApplicationOverviewItem); this.add(analysedArchitectureDiagramItem); this.add(reconstructArchitectureItem); this.add(analysisHistoryItem); this.add(exportAnalysisModelItem); this.add(importAnalysisModelItem); this.add(reportDependenciesItem); } private void setListeners() { setApplicationPropertiesItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getApplicationController().showApplicationDetailsGui(); } }); analyseNowItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getApplicationController().analyseApplication(); } }); analysedApplicationOverviewItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getViewController().showApplicationOverviewGui(); } }); analysedArchitectureDiagramItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getViewController().showAnalysedArchitectureDiagram(); } }); analysisHistoryItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getApplicationAnalysisHistoryLogController().showApplicationAnalysisHistoryOverview(); } }); reportDependenciesItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getExportImportController().showReportDependenciesGui(); } }); reconstructArchitectureItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getViewController().showAnalyseSarGui(); } }); exportAnalysisModelItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getExportImportController().showExportAnalysisModelGui(); } }); importAnalysisModelItem.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ mainController.getExportImportController().showImportAnalyseModelGui(); } }); mainController.getStateController().addStateChangeListener(new IStateChangeListener() { @Override public void changeState(List<States> states) { setApplicationPropertiesItem.setEnabled(false); analyseNowItem.setEnabled(false); analysedArchitectureDiagramItem.setEnabled(false); analysedApplicationOverviewItem.setEnabled(false); analysisHistoryItem.setEnabled(false); reportDependenciesItem.setEnabled(false); reconstructArchitectureItem.setEnabled(false); exportAnalysisModelItem.setEnabled(false); importAnalysisModelItem.setEnabled(false); if(states.contains(States.OPENED)){ setApplicationPropertiesItem.setEnabled(true); analysisHistoryItem.setEnabled(true); } if(states.contains(States.APPSET) && (!states.contains(States.VALIDATING))){ analyseNowItem.setEnabled(true); importAnalysisModelItem.setEnabled(true); } if(states.contains(States.ANALYSED)){ analysedArchitectureDiagramItem.setEnabled(true); analysedApplicationOverviewItem.setEnabled(true); reportDependenciesItem.setEnabled(true); analysisHistoryItem.setEnabled(true); reconstructArchitectureItem.setEnabled(true); exportAnalysisModelItem.setEnabled(true); } } }); final AnalyseMenu analyseMenu = this; localeService.addServiceListener(new IServiceListener() { @Override public void update() { analyseMenu.setText(localeService.getTranslatedString("Analyse")); setApplicationPropertiesItem.setText(localeService.getTranslatedString("ApplicationProperties")); analyseNowItem.setText(localeService.getTranslatedString("AnalyseNow")); analysedApplicationOverviewItem.setText(localeService.getTranslatedString("AnalysedApplicationOverview")); analysedArchitectureDiagramItem.setText(localeService.getTranslatedString("AnalysedArchitectureDiagram")); analysisHistoryItem.setText(localeService.getTranslatedString("AnalysisHistory")); importAnalysisModelItem.setText(localeService.getTranslatedString("ImportAnalysisModel")); exportAnalysisModelItem.setText(localeService.getTranslatedString("ExportAnalysisModel")); reportDependenciesItem.setText(localeService.getTranslatedString("ExportDependencies")); reconstructArchitectureItem.setText(localeService.getTranslatedString("ReconstructArchitecture")); setApplicationPropertiesItem.setMnemonic(getMnemonicKeycode("ApplicationPropertiesMnemonic")); analyseNowItem.setMnemonic(getMnemonicKeycode("AnalyseNowMnemonic")); analysedApplicationOverviewItem.setMnemonic(getMnemonicKeycode("AnalysedApplicationOverviewMnemonic")); analysedArchitectureDiagramItem.setMnemonic(getMnemonicKeycode("AnalysedArchitectureDiagramMnemonic")); analysisHistoryItem.setMnemonic(getMnemonicKeycode("AnalyseHistoryMnemonic")); importAnalysisModelItem.setMnemonic(getMnemonicKeycode("ImportAnalysisModelMnemonic")); exportAnalysisModelItem.setMnemonic(getMnemonicKeycode("ExportAnalysisModelMnemonic")); reportDependenciesItem.setMnemonic(getMnemonicKeycode("ReportDependenciesMnemonic")); reconstructArchitectureItem.setMnemonic(getMnemonicKeycode("ReconstructArchitectureNowMnemonic")); } }); } public JMenuItem getSetApplicationPropertiesItem(){ return setApplicationPropertiesItem; } public JMenuItem getAnalysedArchitectureDiagramItem(){ return analysedArchitectureDiagramItem; } public JMenuItem getAnalysedApplicationOverviewItem(){ return analysedApplicationOverviewItem; } private int getMnemonicKeycode(String translatedString) { String mnemonicString = localeService.getTranslatedString(translatedString); int keyCode = KeyStroke.getKeyStroke(mnemonicString).getKeyCode(); return keyCode; } }