r2527 - in trunk/jaxx-widgets/src/main: java/jaxx/runtime/swing/editor/bean resources/i18n
Author: kmorin Date: 2012-12-10 18:55:53 +0100 (Mon, 10 Dec 2012) New Revision: 2527 Url: http://nuiton.org/projects/jaxx/repository/revisions/2527 Log: refs feature #2474 Create a double list widget Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListModel.java Modified: trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_en_GB.properties trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_es_ES.properties trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_fr_FR.properties Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx (rev 0) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx 2012-12-10 17:55:53 UTC (rev 2527) @@ -0,0 +1,54 @@ +<Table genericType='O'> + +<import> + org.nuiton.util.decorator.JXPathDecorator + javax.swing.DefaultListModel +</import> + + <!-- bean property --> + <Class genericType='O' id='beanType' javaBean='null'/> + + <!-- label --> + <String id='labelText' javaBean='null'/> + + <BeanDoubleListModel id='model' genericType='O' + universeModel='{universeList.getModel()}' + selectedModel='{selectedList.getModel()}'/> + + <BeanDoubleListHandler id='handler' genericType='O' constructorParams='this'/> + + <row weightx='1' fill='both'> + <cell weightx='0.5' weighty='1' fill='both'> + <JScrollPane> + <JList id='universeList' model='{new DefaultListModel()}'/> + </JScrollPane> + </cell> + <cell weighty='1'> + <VBox> + <JButton id='addButton' text="beandoublelist.button.add"/> + <JButton id='removeButton' text="beandoublelist.button.remove"/> + </VBox> + </cell> + <cell weightx='0.5' weighty='1' fill='both'> + <JScrollPane> + <JList id='selectedList' model='{new DefaultListModel()}'/> + </JScrollPane> + </cell> + </row> + + +<!-- <BeanListHeader id='doubleListHeader' genericType='O' list='{firstList}'/>--> + +<script><![CDATA[ + +public void init(JXPathDecorator<O> decorator, List<O> data) { + handler.init(decorator, data); +} + +public O getSelectedValue() { + return handler.getSelectedValue(); +} + +]]></script> + +</Table> \ No newline at end of file Copied: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java (from rev 2526, trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanListHeaderHandler.java) =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java (rev 0) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java 2012-12-10 17:55:53 UTC (rev 2527) @@ -0,0 +1,157 @@ +package jaxx.runtime.swing.editor.bean; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import javax.swing.event.ListSelectionEvent; +import org.nuiton.util.decorator.JXPathDecorator; +import org.nuiton.util.decorator.MultiJXPathDecorator; +import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.JList; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import javax.swing.DefaultListModel; +import javax.swing.ListModel; +import javax.swing.event.ListSelectionListener; +import jaxx.runtime.SwingUtil; + +/** + * Le handler d'un {@link BeanDoubleList}. + * <p/> + * + * @author kmorin <morin@codelutin.com> + * @param <O> le type des objet contenus dans le modèle du composant. + * @see BeanDoubleList + * @since 2.5.8 + */ +public class BeanDoubleListHandler<O> implements PropertyChangeListener { + + public static final Log log = LogFactory.getLog(BeanDoubleListHandler.class); + + /** ui if the handler */ + protected BeanDoubleList<O> ui; + + /** the decorator of data */ + protected MultiJXPathDecorator<O> decorator; + + /** flag to mark when handler was init (it can be init only once). */ + protected boolean init; + + public BeanDoubleListHandler(BeanDoubleList<O> ui) { + this.ui = ui; + } + + /** + * Initialise le handler de l'ui + * + * @param decorator le decorateur a utiliser + * @param data la liste des données a gérer + */ + public void init(JXPathDecorator<O> decorator, List<O> data) { + if (init) { + throw new IllegalStateException("can not init the handler twice"); + } + init = true; + + ui.getModel().setUniverse(data); + +// // set datas +// ui.getDoubleListHeader().setBeanType(ui.getBeanType()); +// ui.getDoubleListHeader().setLabelText(ui.getLabelText()); +// ui.getDoubleListHeader().init(decorator, data); + +// // list could have changed and the complex binding is not registred... +// ui.removeDataBinding(BeanDoubleListHandler.BINDING_RESET_SELECTION_ENABLED); +// ui.applyDataBinding(BeanDoubleListHandler.BINDING_RESET_SELECTION_ENABLED); + + this.decorator = BeanUIUtil.createDecorator(decorator); +// + // init combobox renderer base on given decorator + final JList universeList = ui.getUniverseList(); + universeList.setCellRenderer(new DecoratorListCellRenderer(this.decorator)); + SwingUtil.fillList(universeList, data, null); + + final JList selectedList = ui.getSelectedList(); + selectedList.setCellRenderer(new DecoratorListCellRenderer(this.decorator)); + +// // build popup +// popupHandler.preparePopup(ui.getSelectedToolTipText(), +// ui.getNotSelectedToolTipText(), +// ui.getI18nPrefix(), +// ui.getPopupTitleText(), +// indexes, +// ui.getPopupSeparator(), +// ui.getPopupLabel(), +// ui.getSortUp(), +// ui.getSortDown(), +// this.decorator); +// + + universeList.addMouseListener(new MouseAdapter() { + + public void mouseClicked(MouseEvent event) { + if (event.getClickCount() == 2) { + int index = universeList.locationToIndex(event.getPoint()); + O item = (O) universeList.getModel().getElementAt(index); + ui.getModel().addToSelected(item); + } + } + }); + + selectedList.addMouseListener(new MouseAdapter() { + + public void mouseClicked(MouseEvent event) { + if (event.getClickCount() == 2) { + int index = selectedList.locationToIndex(event.getPoint()); + O item = (O) selectedList.getModel().getElementAt(index); + ui.getModel().removeFromSelected(item); + } + } + }); + + ui.getAddButton().addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + List<O> selection = (List<O>) Arrays.asList(universeList.getSelectedValues()); + ui.getModel().addToSelected(selection); + } + }); + + ui.getRemoveButton().addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + List<O> selection = (List<O>) Arrays.asList(selectedList.getSelectedValues()); + ui.getModel().removeFromSelected(selection); + } + }); + + ui.addPropertyChangeListener(this); + + } + + protected void switchElement(MouseEvent event, JList container, JList receiver) { + int index = container.locationToIndex(event.getPoint()); + DefaultListModel containerModel = (DefaultListModel)container.getModel(); + Object item = containerModel.remove(index); + + DefaultListModel receiverModel = (DefaultListModel)receiver.getModel(); + receiverModel.addElement(item); + } + + @Override + public void propertyChange(PropertyChangeEvent evt) { + } + + public O getSelectedValue() { + JList list = ui.getUniverseList(); + return list == null ? null : (O) list.getSelectedValue(); + } +} Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListModel.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListModel.java (rev 0) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListModel.java 2012-12-10 17:55:53 UTC (rev 2527) @@ -0,0 +1,83 @@ +package jaxx.runtime.swing.editor.bean; + +import java.util.ArrayList; +import java.util.List; +import javax.swing.DefaultListModel; +import javax.swing.ListModel; + +/** + * The model of the BeanDoubleList widget + * @author kmorin <morin@codelutin.com> + * @since 2.5.8 + */ +public class BeanDoubleListModel<O> { + + protected List<O> universe = new ArrayList<O>(); + + protected ListModel universeModel = new DefaultListModel(); + + protected List<O> selected = new ArrayList<O>(); + + protected ListModel selectedModel = new DefaultListModel(); + + public List<O> getSelected() { + return selected; + } + + public void setSelected(List<O> selected) { + this.selected = selected; + } + + public List<O> getUniverse() { + return universe; + } + + public void setUniverse(List<O> universe) { + this.universe = universe; + } + + public ListModel getSelectedModel() { + return selectedModel; + } + + public void setSelectedModel(ListModel selectedModel) { + this.selectedModel = selectedModel; + } + + public ListModel getUniverseModel() { + return universeModel; + } + + public void setUniverseModel(ListModel universeModel) { + this.universeModel = universeModel; + } + + public void addToSelected(O item) { + selected.add(item); + ((DefaultListModel)selectedModel).addElement(item); + ((DefaultListModel)universeModel).removeElement(item); + } + + public void addToSelected(List<O> items) { + selected.addAll(items); + for (O item : items) { + ((DefaultListModel)selectedModel).addElement(item); + ((DefaultListModel)universeModel).removeElement(item); + } + } + + public void removeFromSelected(O item) { + selected.remove(item); + ((DefaultListModel)selectedModel).removeElement(item); + ((DefaultListModel)universeModel).addElement(item); + } + + public void removeFromSelected(List<O> items){ + selected.removeAll(items); + for (O item : items) { + ((DefaultListModel)selectedModel).removeElement(item); + ((DefaultListModel)universeModel).addElement(item); + } + } + +} Modified: trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_en_GB.properties =================================================================== --- trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_en_GB.properties 2012-11-23 10:19:07 UTC (rev 2526) +++ trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_en_GB.properties 2012-12-10 17:55:53 UTC (rev 2527) @@ -16,6 +16,8 @@ beancombobox.action.reset.tip=Reset the selected value beancombobox.action.sort.tip=Change the sorted property beancombobox.popup.title=Change the sorted property +beandoublelist.button.add=Add +beandoublelist.button.remove=Remove beanlist.action.reset.tip=Reset the selected selection beanlist.action.sort.tip=Change the sorted property beanlist.popup.title=Change the sorted property Modified: trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_es_ES.properties =================================================================== --- trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_es_ES.properties 2012-11-23 10:19:07 UTC (rev 2526) +++ trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_es_ES.properties 2012-12-10 17:55:53 UTC (rev 2527) @@ -3,64 +3,66 @@ aboutframe.ok=OK aboutframe.thirdparty=Tierce partie bean.popup.label=Objeto '%1$s' -bean.sort.down=Calsificación decreciente -bean.sort.down.tip=Clasificación decreciente actualmente utilizada -bean.sort.down.toSelect.tip=Clic para clasificar según orden decreciente -bean.sort.label=Orden de clasificación -bean.sort.off=Click para activar la clasificación de la propiedad '%1$s' -bean.sort.on=Clasificación realizada sobre la propiedad '%1$s' -bean.sort.up=Clasificación creciente -bean.sort.up.tip=Clasificación creciente actualmente utilizada -bean.sort.up.toSelect.tip=Clic para clasificar según orden creciente +bean.sort.down=Calsificaci\u00c3\u00b3n decreciente +bean.sort.down.tip=Clasificaci\u00c3\u00b3n decreciente actualmente utilizada +bean.sort.down.toSelect.tip=Clic para clasificar seg\u00c3\u00ban orden decreciente +bean.sort.label=Orden de clasificaci\u00c3\u00b3n +bean.sort.off=Click para activar la clasificaci\u00c3\u00b3n de la propiedad '%1$s' +bean.sort.on=Clasificaci\u00c3\u00b3n realizada sobre la propiedad '%1$s' +bean.sort.up=Clasificaci\u00c3\u00b3n creciente +bean.sort.up.tip=Clasificaci\u00c3\u00b3n creciente actualmente utilizada +bean.sort.up.toSelect.tip=Clic para clasificar seg\u00c3\u00ban orden creciente bean.unknown.type=Objeto de tipo desconocido beancombobox.action.reset.tip=Reiniciar el valor de la lista desplegable -beancombobox.action.sort.tip=Modificar la clasificación de la lista desplegable -beancombobox.popup.title=Modificar la clasificación -beanlist.action.reset.tip=Eliminar la selección -beanlist.action.sort.tip=Modificar la clasificación de la lista despleglable -beanlist.popup.title=Modificar la clasificación +beancombobox.action.sort.tip=Modificar la clasificaci\u00c3\u00b3n de la lista desplegable +beancombobox.popup.title=Modificar la clasificaci\u00c3\u00b3n +beandoublelist.button.add=Add +beandoublelist.button.remove=Remove +beanlist.action.reset.tip=Eliminar la selecci\u00c3\u00b3n +beanlist.action.sort.tip=Modificar la clasificaci\u00c3\u00b3n de la lista despleglable +beanlist.popup.title=Modificar la clasificaci\u00c3\u00b3n config.action.quit=Salir -config.action.quit.tip=Salir del editor de configuración +config.action.quit.tip=Salir del editor de configuraci\u00c3\u00b3n config.action.reset=Cancelar -config.action.reset.tip=Cancelar las modificaciones de esta categoría +config.action.reset.tip=Cancelar las modificaciones de esta categor\u00c3\u00ada config.action.save=Guardar -config.action.save.tip=Guardar las modificaciones de esta categoría +config.action.save.tip=Guardar las modificaciones de esta categor\u00c3\u00ada config.choice.cancel=Cancelar config.choice.continue=Continuar config.choice.doNotSave=No guardar config.choice.save=Guardar config.defaultValue=Valor por defecto -config.defaultValue.tip=Valor por defecto de la opción -config.description=Descripción +config.defaultValue.tip=Valor por defecto de la opci\u00c3\u00b3n +config.description=Descripci\u00c3\u00b3n config.detected.callBack=Acciones detectadas para las opciones modificadas -config.error.category.already.exists=la categoría '%1$s' ya existe\! +config.error.category.already.exists=la categor\u00c3\u00ada '%1$s' ya existe\! config.error.category.not.found=La categoria '%1$s' no existe\! config.key=Clave config.key.tip=Calve de la opcion config.launch.callBack=Lanzar config.launch.callBack.tip=Lanzar las acciones necesarias -config.message.quit.invalid.category=La categoría '%1$s' no es valida\! +config.message.quit.invalid.category=La categor\u00c3\u00ada '%1$s' no es valida\! config.message.quit.valid.and.modified.category=La categoria '%1$s' tiene opciones modificadas \: -config.modified=Opción modificada (valor original \: %1$s) +config.modified=Opci\u00c3\u00b3n modificada (valor original \: %1$s) config.no.option.selected=< No hay opciones seleccionadas > -config.option.final=Opción no modificable -config.option.label=Opción '%1$s' (%2$s) +config.option.final=Opci\u00c3\u00b3n no modificable +config.option.label=Opci\u00c3\u00b3n '%1$s' (%2$s) config.option.modified=Valor modificado < valor anterior \: '%1$s' - nuevo valor \: '%2$s' > config.title=Preferencias -config.title.need.confirm=Se requiere confirmación del usuario... +config.title.need.confirm=Se requiere confirmaci\u00c3\u00b3n del usuario... config.unmodifiable=No puede ser modificado -config.unvalid=Opción no valida (valor original \: %1$s, tipo requerido \: %2$s) +config.unvalid=Opci\u00c3\u00b3n no valida (valor original \: %1$s, tipo requerido \: %2$s) config.value=Valor -config.value.tip=Valor de la opción +config.value.tip=Valor de la opci\u00c3\u00b3n errorUI.action.close=Cerrar errorUI.message=ha habido un error \! errorUI.title=Error... -fontsize.action.default.tip=Volver al tamaño por defecto -fontsize.action.down.tip=Disminuir el tamaño del origen -fontsize.action.up.tip=Aumentar el tamaño de la fuente +fontsize.action.default.tip=Volver al tama\u00c3\u00b1o por defecto +fontsize.action.down.tip=Disminuir el tama\u00c3\u00b1o del origen +fontsize.action.up.tip=Aumentar el tama\u00c3\u00b1o de la fuente hidor.hideTip=Ocultar hidor.showTip=Ver -i18neditor.empty.locales=< Aucune locale à sélectionner > +i18neditor.empty.locales=< Aucune locale \u00c3\u00a0 s\u00c3\u00a9lectionner > i18neditor.popup.title=Cambiar idioma i18neditor.selected=Idioma usado actualmente \: %1$s i18neditor.unselected=Para usar este idioma \: %1$s @@ -79,7 +81,7 @@ numbereditor.8=8 numbereditor.9=9 numbereditor.action.reset.tip=Reinicializar -numbereditor.action.show.tip=Mostar el teclado numérico +numbereditor.action.show.tip=Mostar el teclado num\u00c3\u00a9rico numbereditor.clearAll=C numbereditor.clearOne=CE numbereditor.toggleSign=+/- Modified: trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_fr_FR.properties =================================================================== --- trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_fr_FR.properties 2012-11-23 10:19:07 UTC (rev 2526) +++ trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_fr_FR.properties 2012-12-10 17:55:53 UTC (rev 2527) @@ -1,68 +1,70 @@ -aboutframe.about=À propos +aboutframe.about=\u00c3\u0080 propos aboutframe.license=Licence aboutframe.ok=OK aboutframe.thirdparty=Tierce partie bean.popup.label=Objet '%1$s' -bean.sort.down=Tri décroissant -bean.sort.down.tip=Tri décroissant actuellement utilisé -bean.sort.down.toSelect.tip=Cliquer pour trier selon l'ordre décroissant +bean.sort.down=Tri d\u00c3\u00a9croissant +bean.sort.down.tip=Tri d\u00c3\u00a9croissant actuellement utilis\u00c3\u00a9 +bean.sort.down.toSelect.tip=Cliquer pour trier selon l'ordre d\u00c3\u00a9croissant bean.sort.label=Ordre de tri -bean.sort.off=Cliquer pour activer le tri sur la propriété '%1$s' -bean.sort.on=Le tri est effectué sur la propriété '%1$s' +bean.sort.off=Cliquer pour activer le tri sur la propri\u00c3\u00a9t\u00c3\u00a9 '%1$s' +bean.sort.on=Le tri est effectu\u00c3\u00a9 sur la propri\u00c3\u00a9t\u00c3\u00a9 '%1$s' bean.sort.up=Tri croissant -bean.sort.up.tip=Tri croissant actuellement utilisé +bean.sort.up.tip=Tri croissant actuellement utilis\u00c3\u00a9 bean.sort.up.toSelect.tip=Cliquer pour trier selon l'ordre croissant bean.unknown.type=Objet de type inconnu -beancombobox.action.reset.tip=Réinitialiser la valeur de la liste déroulante -beancombobox.action.sort.tip=Modifier le tri de la liste déroulante +beancombobox.action.reset.tip=R\u00c3\u00a9initialiser la valeur de la liste d\u00c3\u00a9roulante +beancombobox.action.sort.tip=Modifier le tri de la liste d\u00c3\u00a9roulante beancombobox.popup.title=Modifier le tri -beanlist.action.reset.tip=Supprimer la sélection -beanlist.action.sort.tip=Modifier le tri de la liste déroulante +beandoublelist.button.add=Add +beandoublelist.button.remove=Remove +beanlist.action.reset.tip=Supprimer la s\u00c3\u00a9lection +beanlist.action.sort.tip=Modifier le tri de la liste d\u00c3\u00a9roulante beanlist.popup.title=Modifier le tri config.action.quit=Quitter -config.action.quit.tip=Quitter l'éditeur de configuration +config.action.quit.tip=Quitter l'\u00c3\u00a9diteur de configuration config.action.reset=Annuler -config.action.reset.tip=Annuler les modifications de cette catégorie +config.action.reset.tip=Annuler les modifications de cette cat\u00c3\u00a9gorie config.action.save=Enregistrer -config.action.save.tip=Sauver les modifications de cette catégorie +config.action.save.tip=Sauver les modifications de cette cat\u00c3\u00a9gorie config.choice.cancel=Annuler config.choice.continue=Continuer config.choice.doNotSave=Ne pas enregistrer config.choice.save=Enregistrer -config.defaultValue=Valeur par défaut -config.defaultValue.tip=Valeur par défaut de l'option +config.defaultValue=Valeur par d\u00c3\u00a9faut +config.defaultValue.tip=Valeur par d\u00c3\u00a9faut de l'option config.description=Description -config.detected.callBack=Actions détectées pour les options modifiées -config.error.category.already.exists=La catégorie de nom '%1$s' existe déjà\! -config.error.category.not.found=La catégorie de nom '%1$s' n'existe pas\! +config.detected.callBack=Actions d\u00c3\u00a9tect\u00c3\u00a9es pour les options modifi\u00c3\u00a9es +config.error.category.already.exists=La cat\u00c3\u00a9gorie de nom '%1$s' existe d\u00c3\u00a9j\u00c3\u00a0\! +config.error.category.not.found=La cat\u00c3\u00a9gorie de nom '%1$s' n'existe pas\! config.key=Clef config.key.tip=Clef de l'option config.launch.callBack=Lancer -config.launch.callBack.tip=Lancer les actions nécessaires -config.message.quit.invalid.category=La catégorie '%1$s' n'est pas valide\! -config.message.quit.valid.and.modified.category=La catégorie '%1$s' possèdent des options modifiées \: -config.modified=Option modifiée (valeur originale \: %1$s) -config.no.option.selected=< Pas d'option sélectionnée > +config.launch.callBack.tip=Lancer les actions n\u00c3\u00a9cessaires +config.message.quit.invalid.category=La cat\u00c3\u00a9gorie '%1$s' n'est pas valide\! +config.message.quit.valid.and.modified.category=La cat\u00c3\u00a9gorie '%1$s' poss\u00c3\u00a8dent des options modifi\u00c3\u00a9es \: +config.modified=Option modifi\u00c3\u00a9e (valeur originale \: %1$s) +config.no.option.selected=< Pas d'option s\u00c3\u00a9lectionn\u00c3\u00a9e > config.option.final=Option non modifiable config.option.label=Option '%1$s' (%2$s) -config.option.modified=Valeur modifiée < ancienne valeur \: '%1$s' - nouvelle valeur \: '%2$s' > -config.title=Préférences +config.option.modified=Valeur modifi\u00c3\u00a9e < ancienne valeur \: '%1$s' - nouvelle valeur \: '%2$s' > +config.title=Pr\u00c3\u00a9f\u00c3\u00a9rences config.title.need.confirm=Une confirmation de votre part est requise... -config.unmodifiable=Ne peut pas être modifié +config.unmodifiable=Ne peut pas \u00c3\u00aatre modifi\u00c3\u00a9 config.unvalid=Option non valide (valeur originale \: %1$s, type requis \: %2$s) config.value=Valeur config.value.tip=Valeur de l'option errorUI.action.close=Fermer errorUI.message=Une erreur est survenue \! errorUI.title=Erreur... -fontsize.action.default.tip=Retour sur la taille par défaut +fontsize.action.default.tip=Retour sur la taille par d\u00c3\u00a9faut fontsize.action.down.tip=Diminuer la taille de la police fontsize.action.up.tip=Augmenter la taille de la police hidor.hideTip=Cacher hidor.showTip=Voir -i18neditor.empty.locales=< Aucune locale à sélectionner > +i18neditor.empty.locales=< Aucune locale \u00c3\u00a0 s\u00c3\u00a9lectionner > i18neditor.popup.title=Changer de langue -i18neditor.selected=Langue actuellement utilisée \: %1$s +i18neditor.selected=Langue actuellement utilis\u00c3\u00a9e \: %1$s i18neditor.unselected=Pour utiliser cette langue \: %1$s listSelector.hideList=Cacher la liste listSelector.showList=Afficher la liste @@ -78,8 +80,8 @@ numbereditor.7=7 numbereditor.8=8 numbereditor.9=9 -numbereditor.action.reset.tip=Réinitialiser -numbereditor.action.show.tip=Afficher le pavé numérique +numbereditor.action.reset.tip=R\u00c3\u00a9initialiser +numbereditor.action.show.tip=Afficher le pav\u00c3\u00a9 num\u00c3\u00a9rique numbereditor.clearAll=C numbereditor.clearOne=CE numbereditor.toggleSign=+/-
participants (1)
-
kmorin@users.nuiton.org