package ro.nextreports.designer.i18n.action;
import java.awt.event.ActionEvent;
import java.util.List;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.KeyStroke;
import ro.nextreports.designer.Globals;
import ro.nextreports.designer.LayoutHelper;
import ro.nextreports.designer.action.chart.SaveChartAction;
import ro.nextreports.designer.action.report.SaveReportAction;
import ro.nextreports.designer.ui.BaseDialog;
import ro.nextreports.designer.util.I18NSupport;
import ro.nextreports.designer.util.ImageUtil;
import ro.nextreports.designer.util.ShortcutsUtil;
import ro.nextreports.designer.util.Show;
import ro.nextreports.engine.i18n.I18nLanguage;
public class ManageI18NAction extends AbstractAction {
public ManageI18NAction() {
super();
putValue(Action.NAME, I18NSupport.getString("languages.manage"));
putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("languages"));
putValue(MNEMONIC_KEY, ShortcutsUtil.getMnemonic("i18n.mnemonic", new Integer('I')));
putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(ShortcutsUtil.getShortcut("i18n.accelerator", "control I")));
putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("languages.manage"));
putValue(Action.LONG_DESCRIPTION, I18NSupport.getString("languages.manage"));
}
@Override
public void actionPerformed(ActionEvent e) {
final ManageI18nPanel panel = new ManageI18nPanel();
//Report report = FormLoader.getInstance().load(Globals.getCurrentReportAbsolutePath());
if (Globals.isReportLoaded()) {
panel.setKeys(LayoutHelper.getReportLayout().getI18nkeys());
panel.setLanguages(LayoutHelper.getReportLayout().getLanguages());
} else if (Globals.isChartLoaded()) {
panel.setKeys(I18nManager.getInstance().getKeys());
panel.setLanguages(I18nManager.getInstance().getLanguages());
}
BaseDialog dialog = new BaseDialog(panel, I18NSupport.getString("languages.manage"), true) {
@Override
protected boolean ok() {
List<String> keys = panel.getKeys();
if (keys.size() == 0) {
Show.info(I18NSupport.getString("languages.keys.add.invalid"));
return false;
}
List<I18nLanguage> languages = panel.getLanguages();
if (languages.size() == 0) {
Show.info(I18NSupport.getString("languages.add.invalid"));
return false;
}
boolean isDefault = false;
for (I18nLanguage language : languages) {
if (language.isDefault()) {
isDefault = true;
break;
}
}
if (!isDefault) {
Show.info(I18NSupport.getString("languages.default.notdefined"));
return false;
}
I18nManager.getInstance().setKeys(keys);
I18nManager.getInstance().setLanguages(languages);
if (Globals.isReportLoaded()) {
LayoutHelper.getReportLayout().setI18nkeys(I18nManager.getInstance().getKeys());
LayoutHelper.getReportLayout().setLanguages(I18nManager.getInstance().getLanguages());
SaveReportAction action = new SaveReportAction();
action.actionPerformed(null);
} else if (Globals.isChartLoaded()) {
SaveChartAction action = new SaveChartAction();
action.actionPerformed(null);
}
return true;
}
};
dialog.pack();
dialog.setLocationRelativeTo(Globals.getMainFrame());
dialog.setVisible(true);
}
}