r661 - in trunk/lutinui/src/main: java/org/codelutin/ui/config resources resources/i18n resources/icons
Author: tchemit Date: 2008-05-13 23:02:55 +0000 (Tue, 13 May 2008) New Revision: 661 Added: trunk/lutinui/src/main/java/org/codelutin/ui/config/CancelAction.java trunk/lutinui/src/main/java/org/codelutin/ui/config/ModifyAction.java trunk/lutinui/src/main/java/org/codelutin/ui/config/ResetAction.java trunk/lutinui/src/main/java/org/codelutin/ui/config/SaveAction.java trunk/lutinui/src/main/resources/i18n/ trunk/lutinui/src/main/resources/i18n/lutinui-en_GB.properties trunk/lutinui/src/main/resources/i18n/lutinui-fr_FR.properties trunk/lutinui/src/main/resources/icons/ trunk/lutinui/src/main/resources/icons/action-cancel-config.png trunk/lutinui/src/main/resources/icons/action-reset-config.png trunk/lutinui/src/main/resources/icons/action-save-config.png Modified: trunk/lutinui/src/main/java/org/codelutin/ui/config/DialogConfigUI.java trunk/lutinui/src/main/java/org/codelutin/ui/config/DialogConfigUIHandler.java trunk/lutinui/src/main/java/org/codelutin/ui/config/DialogConfigUIModel.java Log: generic dialog config with actions cancel, reset and save Added: trunk/lutinui/src/main/java/org/codelutin/ui/config/CancelAction.java =================================================================== --- trunk/lutinui/src/main/java/org/codelutin/ui/config/CancelAction.java (rev 0) +++ trunk/lutinui/src/main/java/org/codelutin/ui/config/CancelAction.java 2008-05-13 23:02:55 UTC (rev 661) @@ -0,0 +1,43 @@ +/** + * ##% Copyright (C) 2008 Code Lutin, Tony Chemit + * This program is free software; you + * can redistribute it and/or modify it under the terms of the GNU General + * Public License as published by the Free Software Foundation; either version 2 + * 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 Public License for more details. You + * should have received a copy of the GNU General Public License along with this + * program; if not, write to the Free Software Foundation, Inc., 59 Temple Place + * - Suite 330, Boston, MA 02111-1307, USA. + * ##% + */ +package org.codelutin.ui.config; + +import org.codelutin.ui.AbstractUIAction; +import org.codelutin.ui.DialogUI; +import org.codelutin.ui.UIHelper; + +import java.awt.event.ActionEvent; + +/** @author chemit */ +public class CancelAction<E extends Enum<E>, H extends DialogConfigUIHandler<E, ?, ?>> extends AbstractUIAction<H> { + private static final long serialVersionUID = 1L; + + public CancelAction(DialogUI<? extends H> dialogUI, boolean showLabel) { + super(null, UIHelper.createActionIcon("cancel-config"), dialogUI); + if (showLabel) { + String text = org.codelutin.i18n.I18n._("lutinui.config.cancel"); + putValue(NAME, text); + putValue(DISPLAYED_MNEMONIC_INDEX_KEY, 0); + putValue(MNEMONIC_KEY, (int) text.charAt(0)); + } + String libelle = org.codelutin.i18n.I18n._("lutinui.config.cancel.tooltip"); + putValue(SHORT_DESCRIPTION, libelle); + + } + + public void actionPerformed(ActionEvent e) { + getUi().dispose(); + } +} \ No newline at end of file Modified: trunk/lutinui/src/main/java/org/codelutin/ui/config/DialogConfigUI.java =================================================================== --- trunk/lutinui/src/main/java/org/codelutin/ui/config/DialogConfigUI.java 2008-05-13 22:30:23 UTC (rev 660) +++ trunk/lutinui/src/main/java/org/codelutin/ui/config/DialogConfigUI.java 2008-05-13 23:02:55 UTC (rev 661) @@ -16,7 +16,14 @@ import org.codelutin.ui.DialogUI; -import javax.swing.*; +import javax.swing.AbstractButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPasswordField; +import javax.swing.JRadioButton; +import javax.swing.JTextField; import java.util.Arrays; /** @@ -33,13 +40,13 @@ public abstract AbstractButton getReset(); public abstract AbstractButton getCancel(); - - public JComponent getElement(E element) { - return (JComponent) getObjectById(element.name()); + + public JComponent getElement(E key) { + return (JComponent) getObjectById(key.name()); } - public String getElementValue(E element) { - JComponent o = getElement(element); + public String getElementValue(E key) { + JComponent o = getElement(key); if (o instanceof JPasswordField) { return Arrays.toString(((JPasswordField) o).getPassword()); } @@ -52,6 +59,10 @@ if (o instanceof JCheckBox) { return String.valueOf(((JCheckBox) o).isSelected()); } + + if (o instanceof JComboBox) { + return String.valueOf(((JComboBox) o).getSelectedItem()); + } return ""; } @@ -69,28 +80,18 @@ if (o instanceof JCheckBox) { ((JCheckBox) o).setSelected(Boolean.valueOf(value + "")); } + if (o instanceof JComboBox) { + ((JComboBox) o).setSelectedItem(value); + } } - public JLabel getElementLabel(E element) { - return (JLabel) getObjectById(element.name() + "Label"); + public JLabel getElementLabel(E key) { + return (JLabel) getObjectById(key.name() + "Label"); } - public boolean isConfigValid() { - return getHandler().isConfigValid(); + public void doCheck(E key) { + getHandler().doCheck(key); } - protected void reset() { - getHandler().reset(); - } - protected void save() { - getHandler().save(); - dispose(); - } - - protected void doCheck(E element) { - getHandler().doCheck(element); - } - - } \ No newline at end of file Modified: trunk/lutinui/src/main/java/org/codelutin/ui/config/DialogConfigUIHandler.java =================================================================== --- trunk/lutinui/src/main/java/org/codelutin/ui/config/DialogConfigUIHandler.java 2008-05-13 22:30:23 UTC (rev 660) +++ trunk/lutinui/src/main/java/org/codelutin/ui/config/DialogConfigUIHandler.java 2008-05-13 23:02:55 UTC (rev 661) @@ -16,30 +16,26 @@ import org.codelutin.ui.DialogUIHandler; -import javax.swing.text.JTextComponent; -import javax.swing.*; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.util.EnumMap; +import javax.swing.JComponent; +import java.awt.Color; import java.beans.PropertyChangeEvent; -import java.awt.*; +import java.util.EnumMap; +import java.util.EnumSet; +import java.util.Map; /** * DialogUI handler * * @author chemit */ -public abstract class DialogConfigUIHandler<E extends Enum<E>, M extends DialogConfigUIModel<E,?>, U extends DialogConfigUI<E,? extends DialogConfigUIHandler<E,M,U>>> extends DialogUIHandler<M, U> { +public abstract class DialogConfigUIHandler<E extends Enum<E>, M extends DialogConfigUIModel<E, ?>, U extends DialogConfigUI<E, ?>> extends DialogUIHandler<M, U> { + protected ModifyAction<E, ? extends DialogConfigUIHandler<E, ?, ?>> modifyAction; + protected DialogConfigUIHandler(U ui, M model) { super(ui, model); - errors = new ArrayList<E>(); } - - protected List<E> errors; - public void propertyChange(PropertyChangeEvent evt) { if (log.isDebugEnabled()) { log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue()); @@ -49,6 +45,7 @@ if (DialogConfigUIModel.CONFIG_PROPERTY_CHANGED.equals(action)) { // update ui with model values, populateUI(); + // revalidate form doCheck(null); return; } @@ -57,101 +54,58 @@ Boolean newValue = (Boolean) evt.getNewValue(); boolean modified = newValue != null && newValue; getUi().getReset().setEnabled(modified); + getUi().getOk().setEnabled(modified && getModel().isConfigValid()); return; } - throw new IllegalStateException("unimplemented property changed : " + evt + " for " + this); - } - public synchronized List<E> validateModel(E element) { - errors.clear(); - U ui = getUi(); - if (element != null) { - // compute modifed - setModified(element, ui); + if (DialogConfigUIModel.UNVALID_PROPERTY_CHANGED.equals(action)) { + updateUI(); + return; } - //checkData(ui.getFirstName(), firstName); - //checkData(ui.getLastName(), lastName); - //checkData(ui.getEmail(), email); - - return errors; + throw new IllegalStateException("unimplemented property changed : " + evt + " for " + this); } - public void setModified(E element, U ui) { - boolean modify = false; - M model = getModel(); - - String value = ui.getElementValue(element); - //TODO - if (modify) { - model.addModified(element); - } else if (model.getModifieds().contains(element)) { - model.removeModified(element); + public void doCheck(E key) { + if (key == null) { + getModifyAction().doCheckAll(); + } else { + getModifyAction().doCheck(key); } } - public void doCheck(E element) { - List<E> errors = validateModel(element); - updateUI(errors); - } - - public boolean isConfigValid() { - return errors.isEmpty(); - } - - public void reset() { - getModel().reset(); - } - protected void populateUI() { U ui = getUi(); M model = getModel(); - EnumMap<E,Object> map = model.getCurrent().getProperties(); - for (Map.Entry<E, Object> entry : map.entrySet()) { + EnumMap<E, Object> map = model.getCurrent().getProperties(); + for (Map.Entry<E, Object> entry : map.entrySet()) { ui.setElementValue(entry.getKey(), entry.getValue()); } - //ui.getFirstName().setText(model.getCurrent().getFirstName()); - //ui.getLastName().setText(model.getCurrent().getLastName()); - //ui.getEmail().setText(model.getCurrent().getEmail()); } - protected void updateUI(List<E> errors) { - U ui = getUi(); - boolean valid = isConfigValid(); - ui.getOk().setEnabled(valid && getModel().isModified()); - for (E element : errors) { - setLabelColor(errors, element); + protected void updateUI() { + EnumSet<E> unvalids = getModel().getUnvalids(); + for (E key : unvalids) { + setLabelColor(key, false); } - } - - protected void checkData(JTextComponent component, E errorName) { - if (component.getText().isEmpty()) { - errors.add(errorName); + for (E key : EnumSet.complementOf(unvalids)) { + setLabelColor(key, true); } } - protected void checkData(boolean notValid, E errorName) { - if (notValid) { - errors.add(errorName); - } - } - - protected void setLabelColor(List<E> errors, E element) { - JComponent component = getUi().getElementLabel(element); + protected void setLabelColor(E key, boolean valid) { + JComponent component = getUi().getElementLabel(key); if (component != null && component.isVisible()) { - component.setForeground(errors.contains(element) ? Color.red : Color.black); + component.setForeground(valid ? Color.black : Color.red); } } - public void save() { - if (!getModel().isModified()) { - log.warn("nothing to save"); + protected ModifyAction<E, ? extends DialogConfigUIHandler<E, ?, ?>> getModifyAction() { + if (modifyAction == null) { + modifyAction = new ModifyAction<E, DialogConfigUIHandler<E, ?, ?>>(getUi().getHandler().getUi()); } - for (E element : getModel().getModifieds()) { - String value = getUi().getElementValue(element); - //TODO - //getModel().save(element, value); - log.info("save " + element); - } + return modifyAction; } + + } \ No newline at end of file Modified: trunk/lutinui/src/main/java/org/codelutin/ui/config/DialogConfigUIModel.java =================================================================== --- trunk/lutinui/src/main/java/org/codelutin/ui/config/DialogConfigUIModel.java 2008-05-13 22:30:23 UTC (rev 660) +++ trunk/lutinui/src/main/java/org/codelutin/ui/config/DialogConfigUIModel.java 2008-05-13 23:02:55 UTC (rev 661) @@ -14,11 +14,10 @@ */ package org.codelutin.ui.config; +import org.codelutin.ui.DialogUIModel; import org.codelutin.util.config.Config; -import org.codelutin.ui.DialogUIModel; import java.util.EnumSet; -import java.util.Set; /** * Abstract config ui model. @@ -31,32 +30,41 @@ public static final String MODIFIED_PROPERTY_CHANGED = "modify"; public static final String UNVALID_PROPERTY_CHANGED = "unvalid"; + /** @return a empty config */ + protected abstract C newConfig(); + /** - * @return a empty config + * @param key property key + * @param value value to validate + * @return <code>true</code> if given value is valid for property, <code>false>/code> otherwise */ - protected abstract C newConfig(); + protected abstract boolean isValid(E key, Object value); /** - * object used to init model and save model + * object used to init model and save model, this is an external object. + * <p/> + * The object must have bean read-write properties for each value of E */ protected Object src; - /** - * current config used in model - */ + /** current config used in model */ protected C current; - /** - * set of modified properties - */ + /** set of modified properties */ protected EnumSet<E> modifieds; - - /** - * set of unvalid properties - */ + /** set of unvalid properties */ protected EnumSet<E> unvalids; + protected Class<E> klass; + + protected DialogConfigUIModel(Class<E> klass) { + this.klass = klass; + this.current = newConfig(); + this.modifieds = EnumSet.noneOf(klass); + this.unvalids = EnumSet.noneOf(klass); + } + public Object getSrc() { return src; } @@ -65,6 +73,10 @@ return current; } + public EnumSet<E> getUnivserse() { + return getCurrent().getUniverse(); + } + public EnumSet<E> getModifieds() { return modifieds; } @@ -73,14 +85,14 @@ return unvalids; } - public Set<E> getUnivserse() { - return getCurrent().getUniverse(); - } public boolean isModified() { return !modifieds.isEmpty(); } + public boolean isConfigValid() { + return unvalids.isEmpty(); + } public void populate(Object src) { this.src = src; @@ -91,10 +103,11 @@ firePropertyChange(CONFIG_PROPERTY_CHANGED, null, this); } + public void reset() { + populate(src); + } + public void setModified(boolean modified) { - if (!modified) { - modifieds.clear(); - } firePropertyChange(MODIFIED_PROPERTY_CHANGED, null, modified); } @@ -102,19 +115,15 @@ firePropertyChange(UNVALID_PROPERTY_CHANGED, null, unvalid); } - public void reset() { - populate(src); - } - - public void addModified(E names) { - if (!modifieds.contains(names)) { - modifieds.add(names); + public void addModified(E key) { + if (!modifieds.contains(key)) { + modifieds.add(key); } setModified(!modifieds.isEmpty()); } - public void removeModified(E... names) { - for (E elementname : names) { + public void removeModified(E... keys) { + for (E elementname : keys) { if (modifieds.contains(elementname)) { modifieds.remove(elementname); } @@ -122,30 +131,39 @@ setModified(!modifieds.isEmpty()); } - public void addUnvalid(E names) { - if (!unvalids.contains(names)) { - unvalids.add(names); + public void addUnvalid(EnumSet<E> keys) { + for (E name : keys) { + if (!unvalids.contains(name)) { + unvalids.add(name); + } } + for (E name : EnumSet.complementOf(keys)) { + if (unvalids.contains(name)) { + unvalids.remove(name); + } + } setUnvalid(!unvalids.isEmpty()); } - public void removeUnvalid(E... names) { - for (E elementname : names) { - if (unvalids.contains(elementname)) { - unvalids.remove(elementname); - } + + public void addUnvalid(E key) { + if (!unvalids.contains(key)) { + unvalids.add(key); } setUnvalid(!unvalids.isEmpty()); } + public void removeUnvalid(E key) { + if (unvalids.contains(key)) { + unvalids.remove(key); + } + setUnvalid(!unvalids.isEmpty()); + } - protected DialogConfigUIModel(Class<E> klass) { - - current = newConfig(); - - modifieds = EnumSet.noneOf(klass); - - unvalids = EnumSet.noneOf(klass); + public void save() { + current.copyTo(src, modifieds); + modifieds.clear(); + // redisplay config + firePropertyChange(CONFIG_PROPERTY_CHANGED, null, this); } - } \ No newline at end of file Added: trunk/lutinui/src/main/java/org/codelutin/ui/config/ModifyAction.java =================================================================== --- trunk/lutinui/src/main/java/org/codelutin/ui/config/ModifyAction.java (rev 0) +++ trunk/lutinui/src/main/java/org/codelutin/ui/config/ModifyAction.java 2008-05-13 23:02:55 UTC (rev 661) @@ -0,0 +1,109 @@ +/** + * ##% Copyright (C) 2008 Code Lutin, Tony Chemit + * This program is free software; you + * can redistribute it and/or modify it under the terms of the GNU General + * Public License as published by the Free Software Foundation; either version 2 + * 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 Public License for more details. You + * should have received a copy of the GNU General Public License along with this + * program; if not, write to the Free Software Foundation, Inc., 59 Temple Place + * - Suite 330, Boston, MA 02111-1307, USA. + * ##% + */ +package org.codelutin.ui.config; + +import org.codelutin.ui.AbstractUIAction; + +import java.awt.event.ActionEvent; +import java.util.EnumSet; + +/** @author chemit */ +public class ModifyAction<E extends Enum<E>, H extends DialogConfigUIHandler<E, ?, ?>> extends AbstractUIAction<H> { + + private static final long serialVersionUID = 1L; + + protected transient Boolean checkAll; + + protected transient E key; + + protected transient String uiValue; + + protected transient Object currentValue; + + protected transient EnumSet<E> unvalids; + + public ModifyAction(DialogConfigUI<E, ? extends H> dialogUI) { + super(null, null, dialogUI); + } + + public void doCheckAll() { + if (unvalids == null) { + unvalids = EnumSet.noneOf(getHandler().getModel().klass); + } + checkAll = true; + try { + for (E e : getHandler().getModel().getCurrent().getUniverse()) { + doCheck(e); + } + getHandler().getModel().addUnvalid(unvalids); + } finally { + unvalids.clear(); + this.key = null; + this.uiValue = null; + this.currentValue = null; + this.checkAll = null; + } + } + + public void doCheck(E key) { + this.key = key; + this.uiValue = getHandler().getUi().getElementValue(key); + DialogConfigUIModel<E, ?> model = getHandler().getModel(); + Object currentValue = model.getCurrent().getProperty(key); + if (currentValue == null) { + currentValue = ""; + } + this.currentValue = String.valueOf(currentValue); + if (checkAll!=null && checkAll) { + if (!model.isValid(key, uiValue)) { + unvalids.add(key); + } + } else { + actionPerformed(new ActionEvent(getHandler().getUi().getElement(key), 0, "modify-" + key.name())); + } + } + + public void actionPerformed(ActionEvent e) { + try { + DialogConfigUIModel<E, ?> model = getHandler().getModel(); + + validateProperty(model); + + changeModifiedState(model); + + } finally { + this.key = null; + this.uiValue = null; + this.currentValue = null; + this.checkAll = null; + } + } + + public void changeModifiedState(DialogConfigUIModel<E, ?> model) { + if (uiValue.equals(currentValue)) { + model.removeModified(key); + } else { + model.addModified(key); + } + } + + protected void validateProperty(DialogConfigUIModel<E, ?> model) { + if (model.isValid(key, uiValue)) { + model.removeUnvalid(key); + } else { + model.addUnvalid(key); + } + } +} \ No newline at end of file Added: trunk/lutinui/src/main/java/org/codelutin/ui/config/ResetAction.java =================================================================== --- trunk/lutinui/src/main/java/org/codelutin/ui/config/ResetAction.java (rev 0) +++ trunk/lutinui/src/main/java/org/codelutin/ui/config/ResetAction.java 2008-05-13 23:02:55 UTC (rev 661) @@ -0,0 +1,43 @@ +/** + * ##% Copyright (C) 2008 Code Lutin, Tony Chemit + * This program is free software; you + * can redistribute it and/or modify it under the terms of the GNU General + * Public License as published by the Free Software Foundation; either version 2 + * 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 Public License for more details. You + * should have received a copy of the GNU General Public License along with this + * program; if not, write to the Free Software Foundation, Inc., 59 Temple Place + * - Suite 330, Boston, MA 02111-1307, USA. + * ##% + */ +package org.codelutin.ui.config; + +import org.codelutin.ui.AbstractUIAction; +import org.codelutin.ui.DialogUI; +import org.codelutin.ui.UIHelper; + +import java.awt.event.ActionEvent; + +/** @author chemit */ +public class ResetAction<E extends Enum<E>, H extends DialogConfigUIHandler<E, ?, ?>> extends AbstractUIAction<H> { + private static final long serialVersionUID = 1L; + + public ResetAction(DialogUI<? extends H> dialogUI, boolean showLabel) { + super(null, UIHelper.createActionIcon("reset-config"), dialogUI); + if (showLabel) { + String text = org.codelutin.i18n.I18n._("lutinui.config.reset"); + putValue(NAME, text); + putValue(DISPLAYED_MNEMONIC_INDEX_KEY, 0); + putValue(MNEMONIC_KEY, (int) text.charAt(0)); + } + String libelle = org.codelutin.i18n.I18n._("lutinui.config.reset.tooltip"); + putValue(SHORT_DESCRIPTION, libelle); + + } + + public void actionPerformed(ActionEvent e) { + getHandler().getModel().reset(); + } +} \ No newline at end of file Added: trunk/lutinui/src/main/java/org/codelutin/ui/config/SaveAction.java =================================================================== --- trunk/lutinui/src/main/java/org/codelutin/ui/config/SaveAction.java (rev 0) +++ trunk/lutinui/src/main/java/org/codelutin/ui/config/SaveAction.java 2008-05-13 23:02:55 UTC (rev 661) @@ -0,0 +1,67 @@ +/** + * ##% Copyright (C) 2008 Code Lutin, Tony Chemit + * This program is free software; you + * can redistribute it and/or modify it under the terms of the GNU General + * Public License as published by the Free Software Foundation; either version 2 + * 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 Public License for more details. You + * should have received a copy of the GNU General Public License along with this + * program; if not, write to the Free Software Foundation, Inc., 59 Temple Place + * - Suite 330, Boston, MA 02111-1307, USA. + * ##% + */ +package org.codelutin.ui.config; + +import org.codelutin.ui.AbstractUIAction; +import org.codelutin.ui.DialogUI; +import org.codelutin.ui.UIHelper; +import org.codelutin.util.config.Config; + +import java.awt.event.ActionEvent; + +/** @author chemit */ +public class SaveAction<E extends Enum<E>, H extends DialogConfigUIHandler<E, ?, ?>> extends AbstractUIAction<H> { + private static final long serialVersionUID = 1L; + + public SaveAction(DialogUI<? extends H> dialogUI, boolean showLabel) { + super(null, UIHelper.createActionIcon("save-config"), dialogUI); + if (showLabel) { + String text = org.codelutin.i18n.I18n._("lutinui.config.save"); + putValue(NAME, text); + putValue(DISPLAYED_MNEMONIC_INDEX_KEY, 0); + putValue(MNEMONIC_KEY, (int) text.charAt(0)); + } + String libelle = org.codelutin.i18n.I18n._("lutinui.config.save.tooltip"); + putValue(SHORT_DESCRIPTION, libelle); + + } + + public void actionPerformed(ActionEvent e) { + H handler = getHandler(); + DialogConfigUI<E, ?> ui = handler.getUi(); + DialogConfigUIModel<E, ?> model = handler.getModel(); + Config<E> current = model.getCurrent(); + + if (!model.isConfigValid()) { + log.warn("do not save a unvalid config : " + model.getUnvalids()); + return; + } + + if (!model.isModified()) { + log.warn("nothing to save"); + return; + } + // transfert values from ui to model + for (E key : model.getModifieds()) { + String value = ui.getElementValue(key); + current.setProperty(key, value); + } + // save model to src + model.save(); + + // close ui + ui.dispose(); + } +} Added: trunk/lutinui/src/main/resources/i18n/lutinui-en_GB.properties =================================================================== --- trunk/lutinui/src/main/resources/i18n/lutinui-en_GB.properties (rev 0) +++ trunk/lutinui/src/main/resources/i18n/lutinui-en_GB.properties 2008-05-13 23:02:55 UTC (rev 661) @@ -0,0 +1,6 @@ +lutinui.config.cancel=Cancel +lutinui.config.cancel.tooltip=Cancel and quit +lutinui.config.reset=Reset +lutinui.config.reset.tooltip=Reset configuration +lutinui.config.save=Save +lutinui.config.save.tooltip=Save configuration and quit Added: trunk/lutinui/src/main/resources/i18n/lutinui-fr_FR.properties =================================================================== --- trunk/lutinui/src/main/resources/i18n/lutinui-fr_FR.properties (rev 0) +++ trunk/lutinui/src/main/resources/i18n/lutinui-fr_FR.properties 2008-05-13 23:02:55 UTC (rev 661) @@ -0,0 +1,6 @@ +lutinui.config.cancel=Annuler +lutinui.config.cancel.tooltip=Annuler les modification et quitter +lutinui.config.reset=R\u00E9initialiser +lutinui.config.reset.tooltip=R\u00E9initialiser la configuration +lutinui.config.save=Sauver +lutinui.config.save.tooltip=Sauver la configuration et quitter Added: trunk/lutinui/src/main/resources/icons/action-cancel-config.png =================================================================== (Binary files differ) Property changes on: trunk/lutinui/src/main/resources/icons/action-cancel-config.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lutinui/src/main/resources/icons/action-reset-config.png =================================================================== (Binary files differ) Property changes on: trunk/lutinui/src/main/resources/icons/action-reset-config.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lutinui/src/main/resources/icons/action-save-config.png =================================================================== (Binary files differ) Property changes on: trunk/lutinui/src/main/resources/icons/action-save-config.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream
participants (1)
-
tchemit@users.labs.libre-entreprise.org