Author: tchemit Date: 2008-08-09 10:20:46 +0000 (Sat, 09 Aug 2008) New Revision: 988 Modified: trunk/commandline/commandline-demo/src/main/java/org/codelutin/commandline/demo/DemoContext.java trunk/commandline/commandline-ui-action/src/main/java/org/codelutin/option/ui/actions/ActionHelper.java trunk/commandline/commandline-ui-action/src/main/java/org/codelutin/option/ui/actions/ChangeLocaleAction.java Log: simplification dans jaxx : suppression du paquetage factory et provider Modified: trunk/commandline/commandline-demo/src/main/java/org/codelutin/commandline/demo/DemoContext.java =================================================================== --- trunk/commandline/commandline-demo/src/main/java/org/codelutin/commandline/demo/DemoContext.java 2008-08-06 13:14:05 UTC (rev 987) +++ trunk/commandline/commandline-demo/src/main/java/org/codelutin/commandline/demo/DemoContext.java 2008-08-09 10:20:46 UTC (rev 988) @@ -18,8 +18,8 @@ import org.codelutin.commandline.demo.ui.JDemoMainUI; import org.codelutin.commandline.demo.ui.actions.CommandLineDemoBaseAction; import org.codelutin.i18n.I18n; -import org.codelutin.jaxx.action.factory.ActionFactory; -import org.codelutin.jaxx.action.factory.ActionFactoryFromProvider; +import org.codelutin.jaxx.action.ActionFactory; +import org.codelutin.jaxx.action.ActionFactoryFromProvider; /** @author chemit */ public class DemoContext extends CommandLineDemoAbstractContext { Modified: trunk/commandline/commandline-ui-action/src/main/java/org/codelutin/option/ui/actions/ActionHelper.java =================================================================== --- trunk/commandline/commandline-ui-action/src/main/java/org/codelutin/option/ui/actions/ActionHelper.java 2008-08-06 13:14:05 UTC (rev 987) +++ trunk/commandline/commandline-ui-action/src/main/java/org/codelutin/option/ui/actions/ActionHelper.java 2008-08-09 10:20:46 UTC (rev 988) @@ -16,8 +16,8 @@ import jaxx.runtime.JAXXObject; import static org.codelutin.i18n.I18n._; +import org.codelutin.jaxx.action.ActionFactory; import org.codelutin.jaxx.action.MyAbstractAction; -import org.codelutin.jaxx.action.factory.ActionFactory; import org.codelutin.option.Context; import javax.swing.AbstractButton; Modified: trunk/commandline/commandline-ui-action/src/main/java/org/codelutin/option/ui/actions/ChangeLocaleAction.java =================================================================== --- trunk/commandline/commandline-ui-action/src/main/java/org/codelutin/option/ui/actions/ChangeLocaleAction.java 2008-08-06 13:14:05 UTC (rev 987) +++ trunk/commandline/commandline-ui-action/src/main/java/org/codelutin/option/ui/actions/ChangeLocaleAction.java 2008-08-09 10:20:46 UTC (rev 988) @@ -37,18 +37,17 @@ */ @org.codelutin.jaxx.action.ActionConfig( actionCommand = "changeLocale", + actionCommandProvider = I18nActionNameProvider.class, shortDescription = "commandline.action.changeLocale.tooltip", longDescription = "commandline.action.changeLocale.help", - hideActionText = false, - //actionCommands = {"i18n_fr", "i18n_en"}, - actionCommandProvider = I18nActionNameProvider.class + hideActionText = false ) public class ChangeLocaleAction extends CommandLineBaseAction { public static final Pattern PATTERN_NAME = Pattern.compile("i18n_(\\w\\w)"); - protected Locale locale; + protected transient Locale locale; private static final long serialVersionUID = 4180668477670765253L; @@ -61,8 +60,6 @@ locale = org.codelutin.i18n.I18n.newLocale(matcher.group(1)); - //putValue(Action.NAME, _(locale.getLibelle())); - //TODO Make it works again :) putValue(Action.NAME, _(locale.getDisplayLanguage())); putValue(Action.SMALL_ICON, org.codelutin.jaxx.util.UIHelper.createImageIcon(getIcon())); } @@ -112,21 +109,38 @@ return locale; } - /** @author chemit */ + /** + * Cette classe définit dynamiquement les clefs d'actions associées à cette action. + * <p/> + * La recherche de telles actions est faite au démarrage de l'application par une + * {@link org.codelutin.jaxx.action.ActionProvider}. + * <p/> + * Les clefs d'actions sont en faites toutes les locales trouvées par + * {@link org.codelutin.i18n.bundle.I18nBundleManager} dont on récupère le pays. + * <p/> + * Actuellement, on ne tient compte que du pays dans les locales trouvées. Il est de la responsabilité du système + * I18n de charger les bon bundles en faisant des promotions si nécessaire (par exemple si on trouve un bundle fr + * mais aussi des bundles fr_FR)... + * + * @author chemit + */ public static class I18nActionNameProvider implements ActionNameProvider { public String[] getActionCommands() { + //TODO Il faudrait ajuter une méthode à I18n pour initialiser le système uniquement si nécessaire. org.codelutin.i18n.I18n.init(); Locale[] locales = I18n.getBundleManager().getLocales(); + java.util.List<String> tmpList = new java.util.ArrayList<String>(); - final String[] result = new String[locales.length]; - for (int i = 0; i < locales.length; i++) { - Locale locale = locales[i]; - result[i] = "i18n_" + locale.getLanguage(); + for (Locale locale : locales) { + String actionKey = "i18n_" + locale.getLanguage(); + if (tmpList.contains(actionKey)) { + tmpList.add(actionKey); + } } - return result; + return tmpList.toArray(new String[tmpList.size()]); } } -} \ No newline at end of file +}