make the GUI update its texts when a new language is chosen
[jSite2.git] / src / net / pterodactylus / jsite / gui / I18nAction.java
index 0d36f01..77733ae 100644 (file)
@@ -5,6 +5,7 @@ import javax.swing.Action;
 import javax.swing.Icon;
 
 import net.pterodactylus.jsite.i18n.I18n;
+import net.pterodactylus.jsite.i18n.I18nable;
 
 /**
  * Helper class that initializes actions with values from {@link I18n}.
@@ -12,7 +13,10 @@ import net.pterodactylus.jsite.i18n.I18n;
  * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
  * @version $Id$
  */
-public abstract class I18nAction extends AbstractAction {
+public abstract class I18nAction extends AbstractAction implements I18nable {
+
+       /** The I18n basename. */
+       private final String i18nName;
 
        /**
         * Creates a new action that uses the given name as base name to get values
@@ -63,15 +67,23 @@ public abstract class I18nAction extends AbstractAction {
         *            The icon for the action
         */
        public I18nAction(String i18nName, boolean enabled, Icon icon) {
+               this.i18nName = i18nName;
+               if (icon != null) {
+                       putValue(Action.SMALL_ICON, icon);
+               }
+               setEnabled(enabled);
+               updateI18n();
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public void updateI18n() {
                putValue(Action.NAME, I18n.get(i18nName + ".name"));
                putValue(Action.MNEMONIC_KEY, I18n.getKey(i18nName + ".mnemonic"));
                putValue(Action.ACCELERATOR_KEY, I18n.getKeyStroke(i18nName + ".accelerator"));
                putValue(Action.SHORT_DESCRIPTION, I18n.get(i18nName + ".shortDescription"));
                putValue(Action.LONG_DESCRIPTION, I18n.get(i18nName + ".longDescription"));
-               if (icon != null) {
-                       putValue(Action.SMALL_ICON, icon);
-               }
-               setEnabled(enabled);
        }
 
 }
\ No newline at end of file