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 ValidateMenu extends JMenu{
private MainController mainController;
private JMenuItem validateItem;
private JMenuItem exportViolationsItem;
private JMenuItem reportViolationsItem;
ILocaleService localeService = ServiceProvider.getInstance().getLocaleService();
public ValidateMenu(final MainController mainController){
super();
this.mainController = mainController;
setText(localeService.getTranslatedString("Validate"));
addComponents();
setListeners();
}
private void addComponents() {
validateItem = new JMenuItem(localeService.getTranslatedString("Validate"));
validateItem.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_DOWN_MASK));
validateItem.setMnemonic(getMnemonicKeycode("ValidateMnemonic"));
exportViolationsItem = new JMenuItem(localeService.getTranslatedString("ValidateExport"));
exportViolationsItem.setMnemonic(getMnemonicKeycode("ValidateExportMnemonic"));
reportViolationsItem = new JMenuItem(localeService.getTranslatedString("ValidateReport"));
reportViolationsItem.setMnemonic(getMnemonicKeycode("ValidateReportMnemonic"));
this.add(validateItem);
this.add(exportViolationsItem);
this.add(reportViolationsItem);
}
private void setListeners() {
validateItem.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
mainController.getViewController().showValidateGui();
}
});
exportViolationsItem.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
mainController.getExportImportController().showExportViolationsGui();
}
});
reportViolationsItem.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
mainController.getExportImportController().showReportViolationsGui();
}
});
mainController.getStateController().addStateChangeListener(new IStateChangeListener() {
@Override
public void changeState(List<States> states) {
validateItem.setEnabled(false);
exportViolationsItem.setEnabled(false);
reportViolationsItem.setEnabled(false);
if(states.contains(States.VALIDATED)){
exportViolationsItem.setEnabled(true);
reportViolationsItem.setEnabled(true);
}
if(states.contains(States.MAPPED) && states.contains(States.ANALYSED)){
validateItem.setEnabled(true);
}
}
});
final ValidateMenu validateMenu = this;
localeService.addServiceListener(new IServiceListener() {
@Override
public void update() {
validateMenu.setText(localeService.getTranslatedString("Validate"));
validateItem.setText(localeService.getTranslatedString("ValidateNow"));
validateItem.setMnemonic(getMnemonicKeycode("ValidateMnemonic"));
exportViolationsItem.setText(localeService.getTranslatedString("ValidateExport"));
exportViolationsItem.setMnemonic(getMnemonicKeycode("ValidateExportMnemonic"));
reportViolationsItem.setText(localeService.getTranslatedString("ValidateReport"));
reportViolationsItem.setMnemonic(getMnemonicKeycode("ValidateReportMnemonic"));
}
});
}
private int getMnemonicKeycode(String translatedString) {
String mnemonicString = localeService.getTranslatedString(translatedString);
int keyCode = KeyStroke.getKeyStroke(mnemonicString).getKeyCode();
return keyCode;
}
public JMenuItem getValidateItem(){
return validateItem;
}
}