package com.revolsys.swing.action; import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.Icon; import com.revolsys.i18n.I18n; import com.revolsys.i18n.I18nCharSequence; public class I18nAction extends AbstractAction { /** * */ private static final long serialVersionUID = 256392126027298835L; public I18nAction() { final Class<? extends I18nAction> clazz = getClass(); final String nameKey = clazz.getName(); init(clazz, nameKey, nameKey, nameKey, null); } public I18nAction(final Class<?> clazz, final String nameKey) { init(clazz, nameKey, nameKey, nameKey, null); } public I18nAction(final Class<?> clazz, final String nameKey, final Icon icon) { init(clazz, nameKey, nameKey, nameKey, icon); } public I18nAction(final Class<?> clazz, final String nameKey, final String shortDescriptionKey, final Icon icon) { init(clazz, nameKey, nameKey, shortDescriptionKey, icon); } public I18nAction(final Icon icon) { final Class<? extends I18nAction> clazz = getClass(); final String nameKey = clazz.getName(); init(getClass(), nameKey, nameKey, nameKey, icon); } public I18nAction(final String nameKey) { init(getClass(), nameKey, nameKey, nameKey, null); } public I18nAction(final String nameKey, final Icon icon) { init(getClass(), nameKey, nameKey, nameKey, icon); } public I18nAction(final String nameKey, final String shortDescriptionKey) { init(getClass(), nameKey, nameKey, shortDescriptionKey, null); } public I18nAction(final String nameKey, final String shortDescriptionKey, final Icon icon) { init(getClass(), nameKey, nameKey, shortDescriptionKey, icon); } public I18nAction(final String actionCommand, final String nameKey, final String shortDescriptionKey, final Icon icon) { init(getClass(), actionCommand, nameKey, shortDescriptionKey, icon); } @Override public void actionPerformed(final ActionEvent e) { } private void init(final Class<?> clazz, final String actionCommand, final String nameKey, final String shortDescriptionKey, final Icon icon) { putValue(ACTION_COMMAND_KEY, actionCommand); if (nameKey != null) { final CharSequence name = I18n.getCharSequence(clazz, nameKey); setName(name); } if (shortDescriptionKey != null) { final CharSequence shortDescription = I18n.getCharSequence(clazz, shortDescriptionKey); setShortDescription(shortDescription); } putValue(SMALL_ICON, icon); } public void setName(final CharSequence name) { if (name != null) { putValue(NAME, name.toString()); if (name instanceof I18nCharSequence) { final I18nCharSequence i18nName = (I18nCharSequence)name; i18nName.getI18n().addPropertyChangeListener("locale", new PropertyChangeListener() { @Override public void propertyChange(final PropertyChangeEvent evt) { putValue(NAME, name.toString()); } }); } } } public void setShortDescription(final CharSequence shortDescription) { if (shortDescription != null) { putValue(SHORT_DESCRIPTION, shortDescription.toString()); if (shortDescription instanceof I18nCharSequence) { final I18nCharSequence i18nName = (I18nCharSequence)shortDescription; i18nName.getI18n().addPropertyChangeListener("locale", new PropertyChangeListener() { @Override public void propertyChange(final PropertyChangeEvent evt) { putValue(SHORT_DESCRIPTION, shortDescription.toString()); } }); } } } }