X-Git-Url: https://git.pterodactylus.net/?p=jkeytool.git;a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Futil%2Fi18n%2Fgui%2FI18nAction.java;fp=src%2Fnet%2Fpterodactylus%2Futil%2Fi18n%2Fgui%2FI18nAction.java;h=60783358c2fbb13162e06d281171fd6515ddb1b2;hp=0000000000000000000000000000000000000000;hb=a3df2217d22c7a2d90320690126fd80dfb94a921;hpb=6b6991240365fb0cf0706d9059fc9ca9af8ca3f8 diff --git a/src/net/pterodactylus/util/i18n/gui/I18nAction.java b/src/net/pterodactylus/util/i18n/gui/I18nAction.java new file mode 100644 index 0000000..6078335 --- /dev/null +++ b/src/net/pterodactylus/util/i18n/gui/I18nAction.java @@ -0,0 +1,89 @@ + +package net.pterodactylus.util.i18n.gui; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.Icon; + +import net.pterodactylus.util.i18n.I18n; +import net.pterodactylus.util.i18n.I18nable; + +/** + * Helper class that initializes actions with values from {@link I18n}. + * + * @author David ‘Bombe’ Roden <bombe@freenetproject.org> + */ +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 + * from {@link I18n}. + * + * @param i18nName + * The base name of the action + */ + public I18nAction(String i18nName) { + this(i18nName, null); + } + + /** + * Creates a new action that uses the given name as base name to get values + * from {@link I18n} and the given icon. + * + * @param i18nName + * The base name of the action + * @param icon + * The icon for the action + */ + public I18nAction(String i18nName, Icon icon) { + this(i18nName, true, icon); + } + + /** + * Creates a new action that uses the given name as base name to get values + * from {@link I18n}. + * + * @param i18nName + * The base name of the action + * @param enabled + * Whether the action should be enabled + */ + public I18nAction(String i18nName, boolean enabled) { + this(i18nName, enabled, null); + } + + /** + * Creates a new action that uses the given name as base name to get values + * from {@link I18n} and the given icon. + * + * @param i18nName + * The base name of the action + * @param enabled + * Whether the action should be enabled + * @param icon + * 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")); + } + +} \ No newline at end of file