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;
}
}