package husacct.control.presentation.menubar;
import husacct.ServiceProvider;
import husacct.common.locale.ILocaleService;
import husacct.common.services.IServiceListener;
import husacct.control.task.MainController;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Locale;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenu;
import org.apache.log4j.Logger;
@SuppressWarnings("serial")
public class LanguageMenu extends JMenu{
private Logger logger = Logger.getLogger(LanguageMenu.class);
private ILocaleService localeService = ServiceProvider.getInstance().getLocaleService();
public LanguageMenu(MainController mainController){
super();
setText(localeService.getTranslatedString("Language"));
addComponents();
addListeners();
}
private void addComponents(){
for(Locale locale : localeService.getAvailableLocales()){
String language = locale.getLanguage();
final JCheckBoxMenuItem languageItem = new JCheckBoxMenuItem(language);
if(language.equals(localeService.getLocale().getLanguage())){
languageItem.setSelected(true);
}
languageItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
setLocaleFromString(languageItem.getText());
}
});
localeService.addServiceListener(new IServiceListener() {
@Override
public void update() {
if(localeService.getLocale().getLanguage().equals(languageItem.getText())){
languageItem.setSelected(true);
} else {
languageItem.setSelected(false);
}
}
});
add(languageItem);
}
}
private void addListeners(){
localeService.addServiceListener(new IServiceListener() {
@Override
public void update() {
setText(localeService.getTranslatedString("Language"));
}
});
}
private void setLocaleFromString(String locale){
logger.debug("User sets language to: " + locale);
localeService.setLocale(new Locale(locale, locale));
}
}