Author: sletellier Date: 2012-07-06 12:11:43 +0200 (Fri, 06 Jul 2012) New Revision: 2387 Url: http://nuiton.org/repositories/revision/jaxx/2387 Log: - fixes #2173 : Add keyStroke editor to input shortcut key in config ui - Up to nuiton-util 2.5.1-SNAPSHOT Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/KeyStrokeEditor.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/KeyStrokeCellEditor.java Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoConfig.java trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/model/GenericListSelectionModel.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/JAXXWidgetUtil.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java trunk/pom.xml Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoConfig.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoConfig.java 2012-07-06 08:42:54 UTC (rev 2386) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoConfig.java 2012-07-06 10:11:43 UTC (rev 2387) @@ -30,6 +30,7 @@ import java.io.InputStream; import java.util.Locale; import java.util.Properties; +import javax.swing.KeyStroke; import jaxx.demo.feature.nav.NavDemo; import jaxx.runtime.JAXXUtil; import org.apache.commons.logging.Log; @@ -69,6 +70,8 @@ public static final String PROPERTY_LOG_PATTERN_LAYOUT = "logPatternLayout"; + public static final String PROPERTY_KEY_OPEN_CONFIG = "keyOpenConfig"; + public DemoConfig() { setConfigFileName(Option.CONFIG_FILE.defaultValue); @@ -148,6 +151,10 @@ return result; } + public KeyStroke getKeyOpenConfig() { + return getOptionAsKeyStroke(Option.KEY_OPEN_CONFIG.key); + } + public void setFullscreen(boolean fullscreen) { Object oldValue = null; setOption(Option.FULL_SCREEN.key, fullscreen + ""); @@ -180,6 +187,12 @@ firePropertyChange(PROPERTY_LOG_PATTERN_LAYOUT, oldValue, logPatternLayout); } + public void setKeyOpenConfig(KeyStroke keyStroke) { + KeyStroke oldValue = getKeyOpenConfig(); + setOption(Option.KEY_OPEN_CONFIG.key, keyStroke.toString()); + firePropertyChange(PROPERTY_KEY_OPEN_CONFIG, oldValue, keyStroke); + } + /** * Save configuration, in user home directory using the * {@link #getConfigFileName}. Default, env and commande line note saved @@ -264,6 +277,13 @@ String.class, false, false), + KEY_OPEN_CONFIG( + "ui." + PROPERTY_KEY_OPEN_CONFIG, + _("jaxxdemo.config.ui.keyOpenConfig"), + "ctrl alt pressed S", + KeyStroke.class, + false, + false), DEMO_PATH( "ui.demo.path", _("jaxxdemo.config.ui.demo.path"), Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java 2012-07-06 08:42:54 UTC (rev 2386) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java 2012-07-06 10:11:43 UTC (rev 2387) @@ -44,6 +44,25 @@ */ package jaxx.demo; +import java.awt.Component; +import java.awt.Desktop; +import java.awt.event.ActionEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.lang.reflect.Constructor; +import java.net.URL; +import java.util.Arrays; +import java.util.Locale; +import javax.swing.AbstractAction; +import javax.swing.InputMap; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JTree; +import javax.swing.KeyStroke; +import javax.swing.SwingUtilities; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; +import javax.swing.tree.TreePath; import jaxx.demo.tree.DemoNode; import jaxx.demo.tree.DemoTreeHelper; import jaxx.runtime.JAXXContext; @@ -52,29 +71,16 @@ import jaxx.runtime.context.DefaultApplicationContext; import jaxx.runtime.context.JAXXContextEntryDef; import jaxx.runtime.context.JAXXInitialContext; -import jaxx.runtime.swing.log.JAXXLog4jUI; -import org.nuiton.util.decorator.DecoratorProvider; import jaxx.runtime.swing.AboutPanel; import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.swing.editor.config.ConfigUIHelper; +import jaxx.runtime.swing.log.JAXXLog4jUI; import jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.i18n.I18n; +import org.nuiton.util.decorator.DecoratorProvider; -import javax.swing.JPanel; -import javax.swing.JTree; -import javax.swing.SwingUtilities; -import javax.swing.event.TreeSelectionEvent; -import javax.swing.event.TreeSelectionListener; -import javax.swing.tree.TreePath; -import java.awt.Component; -import java.awt.Desktop; -import java.lang.reflect.Constructor; -import java.net.URL; -import java.util.Arrays; -import java.util.Locale; - import static org.nuiton.i18n.I18n._; import static org.nuiton.i18n.I18n.n_; @@ -92,6 +98,8 @@ static final JAXXContextEntryDef<DemoUI> MAIN_UI_ENTRY_DEF = JAXXUtil.newContextEntryDef("mainui", DemoUI.class); + public static final String OPEN_CONFIG_ACTION = "openConfig"; + /** * Methode pour initialiser l'ui principale sans l'afficher. * @@ -138,6 +146,9 @@ // instanciate ui DemoUI ui = new DemoUI(context); + // add key strokes + addKeyStrokes(ui, config); + // keep it in root context MAIN_UI_ENTRY_DEF.setContextValue(rootContext, ui); @@ -150,6 +161,34 @@ return ui; } + protected void addKeyStrokes(final DemoUI ui, DemoConfig config) { + + // Use WHEN_IN_FOCUSED_WINDOW to don't have focus check for binding keys + JPanel mainPane = ui.getMainPane(); + mainPane.getActionMap().put(OPEN_CONFIG_ACTION, new AbstractAction() { + + @Override + public void actionPerformed(ActionEvent e) { + showConfig(ui); + } + }); + final InputMap inputMap = mainPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); + config.addPropertyChangeListener(DemoConfig.PROPERTY_KEY_OPEN_CONFIG, new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + KeyStroke oldValue = (KeyStroke) evt.getOldValue(); + inputMap.remove(oldValue); + setShowConfigInputMap(inputMap, (KeyStroke) evt.getNewValue()); + } + }); + setShowConfigInputMap(inputMap, config.getKeyOpenConfig()); + } + + protected void setShowConfigInputMap(InputMap inputMap, KeyStroke keyStroke) { + inputMap.put(keyStroke, OPEN_CONFIG_ACTION); + } + public void initUI(final DemoUI ui) { // Creation of selection listener to open ui when tree selection change @@ -450,6 +489,10 @@ helper.setOptionPropertyName(DemoConfig.PROPERTY_LOCALE); helper.setOptionCallBack("ui"); + helper.addOption(DemoConfig.Option.KEY_OPEN_CONFIG); + helper.setOptionPropertyName(DemoConfig.PROPERTY_KEY_OPEN_CONFIG); +// helper.setOptionCallBack("keymap"); + helper.addOption(DemoConfig.Option.LOG_LEVEL); helper.setOptionPropertyName(DemoConfig.PROPERTY_LOG_LEVEL); helper.setOptionCallBack("log"); Modified: trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties =================================================================== --- trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2012-07-06 08:42:54 UTC (rev 2386) +++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2012-07-06 10:11:43 UTC (rev 2387) @@ -185,6 +185,7 @@ jaxxdemo.config.ui.demo.path=Path of demo to select when starting application jaxxdemo.config.ui.fontSize=default font size to use in sources jaxxdemo.config.ui.fullscreen=To change the screen mode (true for full screen) +jaxxdemo.config.ui.keyOpenConfig=To change key for open config ui jaxxdemo.config.ui.locale=Language used in application jaxxdemo.config.ui.logLevel=Log level jaxxdemo.config.ui.logPatternLayout=Log pattern Modified: trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties =================================================================== --- trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2012-07-06 08:42:54 UTC (rev 2386) +++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2012-07-06 10:11:43 UTC (rev 2387) @@ -21,7 +21,7 @@ Blue=Bleu Blue\:=bleu \: Bold=En gras -Button\ label\:=Libellé de l'action +Button\ label\:=Libell\u00E9 de l'action C=C CE=CE Cancel=Annuler @@ -35,12 +35,12 @@ Editable=Editable Email\ Address\:=Courriel Email\:=Courriel -Enabled=Activé +Enabled=Activ\u00E9 EnumEditor\ (country)\ \:=Editeur de pays EnumEditor\ (language)\ \:=Editeur de langue Fancy\ Button=Bouton 'Fancy' -First\ Name\:=Prénom -FirstName\:=Prénom \: +First\ Name\:=Pr\u00E9nom +FirstName\:=Pr\u00E9nom \: Font\ size=Taille de la police Font\ size\:\ = Fool\ me\ once= @@ -49,7 +49,7 @@ Green\:=Vert \: Greet= Help= -Inc\ (+)=Incrémenter (+) +Inc\ (+)=Incr\u00E9menter (+) Italic=Italique JAXX\ Demo= JMenu\ demo= @@ -70,26 +70,26 @@ Red\:=rouge \: Reset=Reinitialiser Show\ Background=Voir le fond -Show\ password\ dialog=Voir l'éditeur de mot de passe +Show\ password\ dialog=Voir l'\u00E9diteur de mot de passe Sign\ on=Signer Simple\ Button=Bouton simple Size\:=Taille \: Sources=Sources Spacing\:=Espacement \: -Start=Démarrer -Stop=Arrêter -Supported\ Swing\ components\:=Composants Swing supportés +Start=D\u00E9marrer +Stop=Arr\u00EAter +Supported\ Swing\ components\:=Composants Swing support\u00E9s Text2\:=Text 2 Text\:=Texte \: Total\:\ = -Underline=souligné +Underline=soulign\u00E9 Upper\ case\ text\:=Texte en majuscule Use\ the\ spinner\ to=Utiliser la jauge pour Username\:=Utilisateur \: -Vegetable=Légumes +Vegetable=L\u00E9gumes View=Vue Welcome\ to\ the\ JAXX\ framework\!=Bienvenu dans le framework JAXX -Working\ directory\:=Répertoire de travail +Working\ directory\:=R\u00E9pertoire de travail Yellow=Jaune You\ entered\:\ = Your\ name\:=Votre nom \: @@ -98,8 +98,8 @@ between\ these\ lines= button\ A=Bouton A button\ B=Bouton B -button\ C\ (full\ block)=Bouton C (blocage complêt) -button\ D\ (full\ block\ 2)=Bouton D (blocage complêt) +button\ C\ (full\ block)=Bouton C (blocage compl\u00EAt) +button\ D\ (full\ block\ 2)=Bouton D (blocage compl\u00EAt) cancel=Annuler close=Fermer close2=Fermer 2 @@ -143,12 +143,12 @@ jaxxdemo.action.configuration.tip=Modifier la configuration jaxxdemo.action.exit=Quitter jaxxdemo.action.exit.tip=Quitter JAXX Demo -jaxxdemo.action.fullscreen=Plein écran -jaxxdemo.action.fullscreen.tip=Passer en mode pleine écran +jaxxdemo.action.fullscreen=Plein \u00E9cran +jaxxdemo.action.fullscreen.tip=Passer en mode pleine \u00E9cran jaxxdemo.action.help=Aide jaxxdemo.action.help.tip=Affichier l'aide -jaxxdemo.action.locale.fr=Français -jaxxdemo.action.locale.fr.tip=Changer la langue en français +jaxxdemo.action.locale.fr=Fran\u00E7ais +jaxxdemo.action.locale.fr.tip=Changer la langue en fran\u00E7ais jaxxdemo.action.locale.uk=Anglais jaxxdemo.action.locale.uk.tip=Changer la langue en anglais jaxxdemo.action.normalscreen=Ecran normal @@ -156,10 +156,10 @@ jaxxdemo.action.remove=Supprimer jaxxdemo.action.show=Voir jaxxdemo.action.site=Site internet -jaxxdemo.action.site.tip=Accéder au site de l'application sur internet +jaxxdemo.action.site.tip=Acc\u00E9der au site de l'application sur internet jaxxdemo.common.actors=Acteurs jaxxdemo.common.age=Age -jaxxdemo.common.firstName=Prénom +jaxxdemo.common.firstName=Pr\u00E9nom jaxxdemo.common.id=Identifiant jaxxdemo.common.image=Image jaxxdemo.common.lastName=Nom @@ -167,7 +167,7 @@ jaxxdemo.common.movies=Films jaxxdemo.common.people=Acteur jaxxdemo.common.title=Titre -jaxxdemo.common.year=Année +jaxxdemo.common.year=Ann\u00E9e jaxxdemo.component.jaxx=Composants JAXX jaxxdemo.component.jaxx.editor=Editeurs jaxxdemo.component.swing=Composants Swing @@ -176,51 +176,52 @@ jaxxdemo.component.swing.form.text=Texte jaxxdemo.component.swing.layout=Layouts jaxxdemo.component.swing.menu=Menus -jaxxdemo.component.swing.window=Fenêtres -jaxxdemo.config.category.directories=Répertoires -jaxxdemo.config.category.directories.description=Répertoires de l'application +jaxxdemo.component.swing.window=Fen\u00EAtres +jaxxdemo.config.category.directories=R\u00E9pertoires +jaxxdemo.config.category.directories.description=R\u00E9pertoires de l'application jaxxdemo.config.category.other=Autre jaxxdemo.config.category.other.description=Autres options jaxxdemo.config.configFileName.description=Le nom du fichier de configuration -jaxxdemo.config.ui.demo.path=Chemin de la démo par défaut -jaxxdemo.config.ui.fontSize=La taille de la police à utiliser pour visualiser dans les sources -jaxxdemo.config.ui.fullscreen=Pour afficher l'aplication en mode pleine écran -jaxxdemo.config.ui.locale=La langue utilisée par l'application +jaxxdemo.config.ui.demo.path=Chemin de la d\u00E9mo par d\u00E9faut +jaxxdemo.config.ui.fontSize=La taille de la police \u00E0 utiliser pour visualiser dans les sources +jaxxdemo.config.ui.fullscreen=Pour afficher l'aplication en mode pleine \u00E9cran +jaxxdemo.config.ui.keyOpenConfig=Pour changer le racourcie clavier pour ouvrir l'\u00E9cran de configuration +jaxxdemo.config.ui.locale=La langue utilis\u00E9e par l'application jaxxdemo.config.ui.logLevel=Level de log jaxxdemo.config.ui.logPatternLayout=Pattern des log -jaxxdemo.datePickerEditor.dateResult=Affichage du résultat +jaxxdemo.datePickerEditor.dateResult=Affichage du r\u00E9sultat jaxxdemo.datePickerEditor.patternLayout=Pattern de date jaxxdemo.datePickerEditor.showPopupButton=Afficher le boutton pour ouvrir la popup -jaxxdemo.feature=Fonctionnalités +jaxxdemo.feature=Fonctionnalit\u00E9s jaxxdemo.feature.databinding=Data binding jaxxdemo.feature.nav=API JAXX pour les arbres jaxxdemo.feature.validation=Validation -jaxxdemo.fileEditor.acceptAllFileFilterUsed=Accèpte tout les FileFilter -jaxxdemo.fileEditor.directoryEnabled=Activer la sélection des files -jaxxdemo.fileEditor.extsDescLbl=Description des extensions (séparées par des virgules, ex \: Texte (*.txt), Images (*.png)) +jaxxdemo.fileEditor.acceptAllFileFilterUsed=Acc\u00E8pte tout les FileFilter +jaxxdemo.fileEditor.directoryEnabled=Activer la s\u00E9lection des files +jaxxdemo.fileEditor.extsDescLbl=Description des extensions (s\u00E9par\u00E9es par des virgules, ex \: Texte (*.txt), Images (*.png)) jaxxdemo.fileEditor.extsLbl=Extensions (separated by comma, ex \: txt, png) -jaxxdemo.fileEditor.fileEnabled=Activer la sélection des fichiers +jaxxdemo.fileEditor.fileEnabled=Activer la s\u00E9lection des fichiers jaxxdemo.fileEditor.titleLbl=Titre du dialog d'ouverture de fichier jaxxdemo.fun=Fun jaxxdemo.i18neditor.configuration=Configuration jaxxdemo.i18neditor.popup.title=Titre de la popup jaxxdemo.i18neditor.popupBorderText=Titre de la popup -jaxxdemo.i18neditor.selected.locale=Langue sélectionnée +jaxxdemo.i18neditor.selected.locale=Langue s\u00E9lectionn\u00E9e jaxxdemo.i18neditor.showIcon=Afficher les icones jaxxdemo.i18neditor.showPopupIcon=Afficher les icones dans la popup jaxxdemo.i18neditor.showPopupText=Afficher les textes dans la popup jaxxdemo.i18neditor.showText=Afficher le text -jaxxdemo.init.closed=JAXX Demo a été fermé à %1$s -jaxxdemo.init.context.done=Initialisation du contexte terminée en %1$s. -jaxxdemo.init.ui.done=Initialisation de l'interface graphique terminée. +jaxxdemo.init.closed=JAXX Demo a \u00E9t\u00E9 ferm\u00E9 \u00E0 %1$s +jaxxdemo.init.context.done=Initialisation du contexte termin\u00E9e en %1$s. +jaxxdemo.init.ui.done=Initialisation de l'interface graphique termin\u00E9e. jaxxdemo.listSelector.addToolTipLbl=Add button toolTip jaxxdemo.listSelector.removeToolTipLbl=Remove button toolTip jaxxdemo.menu.file=Fichier jaxxdemo.menu.file.locale=Langues jaxxdemo.menu.help=Aide jaxxdemo.menu.showLogs=Afficher les logs -jaxxdemo.message.config.loaded=Configuration de JAXX Demo v. %1$s chargée. -jaxxdemo.message.goto.site=Accéder au site de JAXX Demo (%1$s) +jaxxdemo.message.config.loaded=Configuration de JAXX Demo v. %1$s charg\u00E9e. +jaxxdemo.message.goto.site=Acc\u00E9der au site de JAXX Demo (%1$s) jaxxdemo.navigation.actor.title=Acteur jaxxdemo.navigation.actors.title=Acteurs jaxxdemo.navigation.movie.title=Film @@ -228,25 +229,25 @@ jaxxdemo.numbereditor.applyNumberPattern=Appliquer le pattern jaxxdemo.numbereditor.autoPopup=Affichage automatique popup jaxxdemo.numbereditor.configuration=Configuration -jaxxdemo.numbereditor.model=Résultat -jaxxdemo.numbereditor.model.float=Valeur décimale \: %1$s -jaxxdemo.numbereditor.model.int=Valeur entière \: %1$s -jaxxdemo.numbereditor.model.numberPattern=Format de l'éditeur \: %s +jaxxdemo.numbereditor.model=R\u00E9sultat +jaxxdemo.numbereditor.model.float=Valeur d\u00E9cimale \: %1$s +jaxxdemo.numbereditor.model.int=Valeur enti\u00E8re \: %1$s +jaxxdemo.numbereditor.model.numberPattern=Format de l'\u00E9diteur \: %s jaxxdemo.numbereditor.numberPattern.configuration=Pattern du nombre jaxxdemo.numbereditor.showPopupButton=Afficher le boutton de popup jaxxdemo.numbereditor.showReset=Afficher le boutton de reset -jaxxdemo.numbereditor.useFloat=Utiliser les décimales +jaxxdemo.numbereditor.useFloat=Utiliser les d\u00E9cimales jaxxdemo.numbereditor.useSign=Utiliser le signe jaxxdemo.timeeditor.editor=Editeur de temps jaxxdemo.timeeditor.label=Label -jaxxdemo.timeeditor.model=Résultat -jaxxdemo.timeeditor.value=Heure sélectionnée \: %1$tH\:%1$tM +jaxxdemo.timeeditor.model=R\u00E9sultat +jaxxdemo.timeeditor.value=Heure s\u00E9lectionn\u00E9e \: %1$tH\:%1$tM jaxxdemo.title.about=A propos de JAXX Demo... jaxxdemo.title.showLog=Logs de JAXX Demo jaxxdemo.tree.tabtitle=Arbre jaxxdemo.treeTable.tabtitle=Arbre tableau -jaxxdemo.warning.nimbus.landf=Le look and Feel Nimbus n'a pas été trouvé, il faut au moins la version 1.6u10 de java. -jaxxdemo.warning.no.ui=Aucun environnement graphique détecté +jaxxdemo.warning.nimbus.landf=Le look and Feel Nimbus n'a pas \u00E9t\u00E9 trouv\u00E9, il faut au moins la version 1.6u10 de java. +jaxxdemo.warning.no.ui=Aucun environnement graphique d\u00E9tect\u00E9 model0.f0= model0.f1= model0.file...= Modified: trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties =================================================================== --- trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2012-07-06 08:42:54 UTC (rev 2386) +++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2012-07-06 10:11:43 UTC (rev 2387) @@ -21,7 +21,7 @@ Blue=Bleu Blue\:=bleu \: Bold=En gras -Button\ label\:=Libellé de l'action +Button\ label\:=Libell\u00E9 de l'action C=C CE=CE Cancel=Annuler @@ -35,12 +35,12 @@ Editable=Editable Email\ Address\:=Courriel Email\:=Courriel -Enabled=Activé +Enabled=Activ\u00E9 EnumEditor\ (country)\ \:=Editeur de pays EnumEditor\ (language)\ \:=Editeur de langue Fancy\ Button=Bouton 'Fancy' -First\ Name\:=Prénom -FirstName\:=Prénom \: +First\ Name\:=Pr\u00E9nom +FirstName\:=Pr\u00E9nom \: Font\ size=Taille de la police Font\ size\:\ = Fool\ me\ once= @@ -49,7 +49,7 @@ Green\:=Vert \: Greet= Help= -Inc\ (+)=Incrémenter (+) +Inc\ (+)=Incr\u00E9menter (+) Italic=Italique JAXX\ Demo= JMenu\ demo= @@ -70,26 +70,26 @@ Red\:=rouge \: Reset=Reinitialiser Show\ Background=Voir le fond -Show\ password\ dialog=Voir l'éditeur de mot de passe +Show\ password\ dialog=Voir l'\u00E9diteur de mot de passe Sign\ on=Signer Simple\ Button=Bouton simple Size\:=Taille \: Sources=Sources Spacing\:=Espacement \: -Start=Démarrer -Stop=Arrêter -Supported\ Swing\ components\:=Composants Swing supportés +Start=D\u00E9marrer +Stop=Arr\u00EAter +Supported\ Swing\ components\:=Composants Swing support\u00E9s Text2\:=Text 2 Text\:=Texte \: Total\:\ = -Underline=souligné +Underline=soulign\u00E9 Upper\ case\ text\:=Texte en majuscule Use\ the\ spinner\ to=Utiliser la jauge pour Username\:=Utilisateur \: -Vegetable=Légumes +Vegetable=L\u00E9gumes View=Vue Welcome\ to\ the\ JAXX\ framework\!=Bienvenu dans le framework JAXX -Working\ directory\:=Répertoire de travail +Working\ directory\:=R\u00E9pertoire de travail Yellow=Jaune You\ entered\:\ = Your\ name\:=Votre nom \: @@ -98,8 +98,8 @@ between\ these\ lines= button\ A=Bouton A button\ B=Bouton B -button\ C\ (full\ block)=Bouton C (blocage complêt) -button\ D\ (full\ block\ 2)=Bouton D (blocage complêt) +button\ C\ (full\ block)=Bouton C (blocage compl\u00EAt) +button\ D\ (full\ block\ 2)=Bouton D (blocage compl\u00EAt) cancel=Annuler close=Fermer close2=Fermer 2 @@ -143,12 +143,12 @@ jaxxdemo.action.configuration.tip=Modifier la configuration jaxxdemo.action.exit=Quitter jaxxdemo.action.exit.tip=Quitter JAXX Demo -jaxxdemo.action.fullscreen=Plein écran -jaxxdemo.action.fullscreen.tip=Passer en mode pleine écran +jaxxdemo.action.fullscreen=Plein \u00E9cran +jaxxdemo.action.fullscreen.tip=Passer en mode pleine \u00E9cran jaxxdemo.action.help=Aide jaxxdemo.action.help.tip=Affichier l'aide -jaxxdemo.action.locale.fr=Français -jaxxdemo.action.locale.fr.tip=Changer la langue en français +jaxxdemo.action.locale.fr=Fran\u00E7ais +jaxxdemo.action.locale.fr.tip=Changer la langue en fran\u00E7ais jaxxdemo.action.locale.uk=Anglais jaxxdemo.action.locale.uk.tip=Changer la langue en anglais jaxxdemo.action.normalscreen=Ecran normal @@ -156,10 +156,10 @@ jaxxdemo.action.remove=Supprimer jaxxdemo.action.show=Voir jaxxdemo.action.site=Site internet -jaxxdemo.action.site.tip=Accéder au site de l'application sur internet +jaxxdemo.action.site.tip=Acc\u00E9der au site de l'application sur internet jaxxdemo.common.actors=Acteurs jaxxdemo.common.age=Age -jaxxdemo.common.firstName=Prénom +jaxxdemo.common.firstName=Pr\u00E9nom jaxxdemo.common.id=Identifiant jaxxdemo.common.image=Image jaxxdemo.common.lastName=Nom @@ -167,7 +167,7 @@ jaxxdemo.common.movies=Films jaxxdemo.common.people=Acteur jaxxdemo.common.title=Titre -jaxxdemo.common.year=Année +jaxxdemo.common.year=Ann\u00E9e jaxxdemo.component.jaxx=Composants JAXX jaxxdemo.component.jaxx.editor=Editeurs jaxxdemo.component.swing=Composants Swing @@ -176,51 +176,52 @@ jaxxdemo.component.swing.form.text=Texte jaxxdemo.component.swing.layout=Layouts jaxxdemo.component.swing.menu=Menus -jaxxdemo.component.swing.window=Fenêtres -jaxxdemo.config.category.directories=Répertoires -jaxxdemo.config.category.directories.description=Répertoires de l'application +jaxxdemo.component.swing.window=Fen\u00EAtres +jaxxdemo.config.category.directories=R\u00E9pertoires +jaxxdemo.config.category.directories.description=R\u00E9pertoires de l'application jaxxdemo.config.category.other=Autre jaxxdemo.config.category.other.description=Autres options jaxxdemo.config.configFileName.description=Le nom du fichier de configuration -jaxxdemo.config.ui.demo.path=Chemin de la démo par défaut -jaxxdemo.config.ui.fontSize=La taille de la police à utiliser pour visualiser dans les sources -jaxxdemo.config.ui.fullscreen=Pour afficher l'aplication en mode pleine écran -jaxxdemo.config.ui.locale=La langue utilisée par l'application +jaxxdemo.config.ui.demo.path=Chemin de la d\u00E9mo par d\u00E9faut +jaxxdemo.config.ui.fontSize=La taille de la police \u00E0 utiliser pour visualiser dans les sources +jaxxdemo.config.ui.fullscreen=Pour afficher l'aplication en mode pleine \u00E9cran +jaxxdemo.config.ui.keyOpenConfig=Pour changer le racourcie clavier pour ouvrir l'\u00E9cran de configuration +jaxxdemo.config.ui.locale=La langue utilis\u00E9e par l'application jaxxdemo.config.ui.logLevel=Level de log jaxxdemo.config.ui.logPatternLayout=Pattern des log -jaxxdemo.datePickerEditor.dateResult=Affichage du résultat +jaxxdemo.datePickerEditor.dateResult=Affichage du r\u00E9sultat jaxxdemo.datePickerEditor.patternLayout=Pattern de date jaxxdemo.datePickerEditor.showPopupButton=Afficher le boutton pour ouvrir la popup -jaxxdemo.feature=Fonctionnalités +jaxxdemo.feature=Fonctionnalit\u00E9s jaxxdemo.feature.databinding=Data binding jaxxdemo.feature.nav=API JAXX pour les arbres jaxxdemo.feature.validation=Validation -jaxxdemo.fileEditor.acceptAllFileFilterUsed=Accèpte tout les FileFilter -jaxxdemo.fileEditor.directoryEnabled=Activer la sélection des files -jaxxdemo.fileEditor.extsDescLbl=Description des extensions (séparées par des virgules, ex \: Texte (*.txt), Images (*.png)) +jaxxdemo.fileEditor.acceptAllFileFilterUsed=Acc\u00E8pte tout les FileFilter +jaxxdemo.fileEditor.directoryEnabled=Activer la s\u00E9lection des files +jaxxdemo.fileEditor.extsDescLbl=Description des extensions (s\u00E9par\u00E9es par des virgules, ex \: Texte (*.txt), Images (*.png)) jaxxdemo.fileEditor.extsLbl=Extensions (separated by comma, ex \: txt, png) -jaxxdemo.fileEditor.fileEnabled=Activer la sélection des fichiers -jaxxdemo.fileEditor.titleLbl=Titre de la fenêtre de sélection de fichier +jaxxdemo.fileEditor.fileEnabled=Activer la s\u00E9lection des fichiers +jaxxdemo.fileEditor.titleLbl=Titre de la fen\u00EAtre de s\u00E9lection de fichier jaxxdemo.fun=Fun jaxxdemo.i18neditor.configuration=Configuration jaxxdemo.i18neditor.popup.title=Titre de la popup jaxxdemo.i18neditor.popupBorderText=Titre de la popup -jaxxdemo.i18neditor.selected.locale=Langue sélectionnée +jaxxdemo.i18neditor.selected.locale=Langue s\u00E9lectionn\u00E9e jaxxdemo.i18neditor.showIcon=Afficher les icones jaxxdemo.i18neditor.showPopupIcon=Afficher les icones dans la popup jaxxdemo.i18neditor.showPopupText=Afficher les textes dans la popup jaxxdemo.i18neditor.showText=Afficher le text -jaxxdemo.init.closed=JAXX Demo a été fermé à %1$s -jaxxdemo.init.context.done=Initialisation du contexte terminée en %1$s. -jaxxdemo.init.ui.done=Initialisation de l'interface graphique terminée. +jaxxdemo.init.closed=JAXX Demo a \u00E9t\u00E9 ferm\u00E9 \u00E0 %1$s +jaxxdemo.init.context.done=Initialisation du contexte termin\u00E9e en %1$s. +jaxxdemo.init.ui.done=Initialisation de l'interface graphique termin\u00E9e. jaxxdemo.listSelector.addToolTipLbl=Tooltip du boutton ajouter jaxxdemo.listSelector.removeToolTipLbl=Tooltip du boutton enlever jaxxdemo.menu.file=Fichier jaxxdemo.menu.file.locale=Langues jaxxdemo.menu.help=Aide jaxxdemo.menu.showLogs=Afficher les logs -jaxxdemo.message.config.loaded=Configuration de JAXX Demo v. %1$s chargée. -jaxxdemo.message.goto.site=Accéder au site de JAXX Demo (%1$s) +jaxxdemo.message.config.loaded=Configuration de JAXX Demo v. %1$s charg\u00E9e. +jaxxdemo.message.goto.site=Acc\u00E9der au site de JAXX Demo (%1$s) jaxxdemo.navigation.actor.title=Acteur jaxxdemo.navigation.actors.title=Acteurs jaxxdemo.navigation.movie.title=Film @@ -228,25 +229,25 @@ jaxxdemo.numbereditor.applyNumberPattern=Appliquer le pattern jaxxdemo.numbereditor.autoPopup=Affichage automatique popup jaxxdemo.numbereditor.configuration=Configuration -jaxxdemo.numbereditor.model=Résultat -jaxxdemo.numbereditor.model.float=Valeur décimale \: %1$s -jaxxdemo.numbereditor.model.int=Valeur entière \: %1$s -jaxxdemo.numbereditor.model.numberPattern=Format de l'éditeur \: %s +jaxxdemo.numbereditor.model=R\u00E9sultat +jaxxdemo.numbereditor.model.float=Valeur d\u00E9cimale \: %1$s +jaxxdemo.numbereditor.model.int=Valeur enti\u00E8re \: %1$s +jaxxdemo.numbereditor.model.numberPattern=Format de l'\u00E9diteur \: %s jaxxdemo.numbereditor.numberPattern.configuration=Pattern du nombre jaxxdemo.numbereditor.showPopupButton=Afficher le boutton de popup jaxxdemo.numbereditor.showReset=Afficher le boutton de reset -jaxxdemo.numbereditor.useFloat=Utiliser les décimales +jaxxdemo.numbereditor.useFloat=Utiliser les d\u00E9cimales jaxxdemo.numbereditor.useSign=Utiliser le signe jaxxdemo.timeeditor.editor=Editeur de temps jaxxdemo.timeeditor.label=Label -jaxxdemo.timeeditor.model=Résultat -jaxxdemo.timeeditor.value=Heure sélectionnée \: %1$tH\:%1$tM +jaxxdemo.timeeditor.model=R\u00E9sultat +jaxxdemo.timeeditor.value=Heure s\u00E9lectionn\u00E9e \: %1$tH\:%1$tM jaxxdemo.title.about=A propos de JAXX Demo... jaxxdemo.title.showLog=Logs de JAXX Demo jaxxdemo.tree.tabtitle=Arbre jaxxdemo.treeTable.tabtitle=Arbre tableau -jaxxdemo.warning.nimbus.landf=Le look and Feel Nimbus n'a pas été trouvé, il faut au moins la version 1.6u10 de java. -jaxxdemo.warning.no.ui=Aucun environnement graphique détecté +jaxxdemo.warning.nimbus.landf=Le look and Feel Nimbus n'a pas \u00E9t\u00E9 trouv\u00E9, il faut au moins la version 1.6u10 de java. +jaxxdemo.warning.no.ui=Aucun environnement graphique d\u00E9tect\u00E9 model0.f0= model0.f1= model0.file...= Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/model/GenericListSelectionModel.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/model/GenericListSelectionModel.java 2012-07-06 08:42:54 UTC (rev 2386) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/model/GenericListSelectionModel.java 2012-07-06 10:11:43 UTC (rev 2387) @@ -1,3 +1,26 @@ +/* + * #%L + * JAXX :: Runtime + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2008 - 2012 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ package jaxx.runtime.swing.model; import com.google.common.collect.Lists; Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/JAXXWidgetUtil.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/JAXXWidgetUtil.java 2012-07-06 08:42:54 UTC (rev 2386) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/JAXXWidgetUtil.java 2012-07-06 10:11:43 UTC (rev 2387) @@ -28,6 +28,7 @@ import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.editor.cell.DateCellEditor; import jaxx.runtime.swing.editor.cell.FileCellEditor; +import jaxx.runtime.swing.editor.cell.KeyStrokeCellEditor; import jaxx.runtime.swing.editor.cell.NumberCellEditor; import jaxx.runtime.swing.renderer.DateCellRenderer; @@ -52,6 +53,10 @@ return new FileCellEditor(); } + public static TableCellEditor newKeyStrokeTableCellEditor() { + return new KeyStrokeCellEditor(); + } + public static <E extends Number> NumberCellEditor<E> newNumberTableCellEditor(Class<E> type, boolean useSign) { return new NumberCellEditor<E>(type, useSign); } Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java 2012-07-06 08:42:54 UTC (rev 2386) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java 2012-07-06 10:11:43 UTC (rev 2387) @@ -53,7 +53,6 @@ String startPath = view.getStartPath(); if (startFile == null && StringUtils.isNotEmpty(startPath)) { - // else filed start path startFile = new File(startPath); } else if (startFile == null) { Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/KeyStrokeEditor.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/KeyStrokeEditor.java (rev 0) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/KeyStrokeEditor.java 2012-07-06 10:11:43 UTC (rev 2387) @@ -0,0 +1,81 @@ +/* + * #%L + * JAXX :: Widgets + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2008 - 2012 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ +package jaxx.runtime.swing.editor; + +import java.awt.event.KeyEvent; +import javax.swing.JTextField; +import javax.swing.KeyStroke; +import javax.swing.SwingUtilities; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Custom text field to disable default key events + * + * @author sletellier <letellier@codelutin.com> + */ +public class KeyStrokeEditor extends JTextField { + + private static final Log log = LogFactory.getLog(KeyStrokeEditor.class); + + protected KeyStroke keyStroke; + + public KeyStrokeEditor() { + enableEvents(KeyEvent.KEY_EVENT_MASK); + setFocusTraversalKeysEnabled(false); + } + + @Override + protected void processKeyEvent(KeyEvent e) { + if (e.getID() == KeyEvent.KEY_PRESSED) { + int keyCode = e.getKeyCode(); + if (keyCode == KeyEvent.VK_SHIFT || + keyCode == KeyEvent.VK_ALT || + keyCode == KeyEvent.VK_CONTROL || + keyCode == KeyEvent.VK_ALT_GRAPH || + keyCode == KeyEvent.VK_META) { + + return; + } + + setKeyStroke(KeyStroke.getKeyStroke(keyCode, e.getModifiers())); + } + } + + public KeyStroke getKeyStroke() { + return keyStroke; + } + + public void setKeyStroke(KeyStroke keyStroke) { + KeyStroke oldValue = getKeyStroke(); + this.keyStroke = keyStroke; + firePropertyChange("keyStroke", oldValue, keyStroke); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + setText(getKeyStroke().toString()); + } + }); + } +} Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/KeyStrokeCellEditor.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/KeyStrokeCellEditor.java (rev 0) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/KeyStrokeCellEditor.java 2012-07-06 10:11:43 UTC (rev 2387) @@ -0,0 +1,55 @@ +/* + * #%L + * JAXX :: Widgets + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2008 - 2012 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ +package jaxx.runtime.swing.editor.cell; + +import java.awt.Component; +import javax.swing.AbstractCellEditor; +import javax.swing.JTable; +import javax.swing.KeyStroke; +import javax.swing.table.TableCellEditor; +import jaxx.runtime.swing.editor.KeyStrokeEditor; + +/** + * @author sletellier <letellier@codelutin.com> + */ +public class KeyStrokeCellEditor extends AbstractCellEditor + implements TableCellEditor { + + protected KeyStrokeEditor keyStrokeEditor; + + public KeyStrokeCellEditor() { + keyStrokeEditor = new KeyStrokeEditor(); + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + keyStrokeEditor.setKeyStroke((KeyStroke) value); + return keyStrokeEditor; + } + + @Override + public Object getCellEditorValue() { + return keyStrokeEditor.getKeyStroke(); + } +} Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java 2012-07-06 08:42:54 UTC (rev 2386) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java 2012-07-06 10:11:43 UTC (rev 2387) @@ -31,6 +31,7 @@ import java.util.Locale; import javax.swing.DefaultCellEditor; import javax.swing.JTable; +import javax.swing.KeyStroke; import javax.swing.event.CellEditorListener; import javax.swing.table.TableCellEditor; import jaxx.runtime.swing.JAXXWidgetUtil; @@ -111,23 +112,23 @@ if (type.isEnum()) { // add a EnumEditor to table editor = new DefaultCellEditor(EnumEditor.newEditor((Class<Enum>) type)); - table.setDefaultEditor(type, editor); } else if (type.equals(Class.class)) { editor = new ClassCellEditor(); - table.setDefaultEditor(type, editor); } else if (type.equals(File.class)){ editor = JAXXWidgetUtil.newFileTableCellEditor(); - table.setDefaultEditor(type, editor); + } else if (type.equals(KeyStroke.class)){ + editor = JAXXWidgetUtil.newKeyStrokeTableCellEditor(); + } else if (type.equals(Locale.class)) { editor = new DefaultCellEditor(LocaleEditor.newEditor()); - table.setDefaultEditor(Locale.class, editor); } else { editor = table.getDefaultEditor(String.class); } + table.setDefaultEditor(type, editor); } if (editor == null) { throw new IllegalStateException("could not find a editor for type +" + type); Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2012-07-06 08:42:54 UTC (rev 2386) +++ trunk/pom.xml 2012-07-06 10:11:43 UTC (rev 2387) @@ -107,7 +107,7 @@ <!-- pour un muli module on doit fixer le projectId --> <projectId>jaxx</projectId> - <nuitonUtilsVersion>2.5</nuitonUtilsVersion> + <nuitonUtilsVersion>2.5.1-SNAPSHOT</nuitonUtilsVersion> <nuitonI18nVersion>2.4.1</nuitonI18nVersion> <eugeneVersion>2.4.2</eugeneVersion> <xworkVersion>2.3.1.2</xworkVersion>