package ilarkesto.ui.swing; import ilarkesto.base.Str; import ilarkesto.di.app.AApplication; import ilarkesto.locale.LearningLocalizer; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Locale; public abstract class ASwingApplication extends AApplication { protected abstract void onStartSwing(); protected void onShutdownSwing() {} @Override protected final void onStart() { onStartSwing(); } @Override protected final void onShutdown() { onShutdownSwing(); getTaskManager().shutdown(3000); System.exit(0); } // --- default beans --- private SwingUi ui; public SwingUi getUi() { if (ui == null) { ui = new SwingUi(); autowire(ui); } return ui; } private LearningLocalizer localizer; public LearningLocalizer getLocalizer() { if (localizer == null) { localizer = new LearningLocalizer(); autowire(localizer); localizer.setLocale(Locale.GERMANY); } return localizer; } private WindowAdapter shutdownWindowListener; public WindowAdapter getShutdownWindowListener() { if (shutdownWindowListener == null) { shutdownWindowListener = new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { shutdown(); } }; autowire(shutdownWindowListener); } return shutdownWindowListener; } // --- --- @Override public String getApplicationName() { return Str.removeSuffix(super.getApplicationName(), "Swing"); } }