Author: tchemit Date: 2012-10-07 13:30:09 +0200 (Sun, 07 Oct 2012) New Revision: 83 Url: http://forge.codelutin.com/repositories/revision/jmexico/83 Log: fixes #1575: Improve editor Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java Removed: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignTableModel.java Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.css trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.jaxx trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.css trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.jaxx trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorHandler.java trunk/jmexico-editor/src/main/resources/i18n/jmexico-editor_en_GB.properties trunk/jmexico-editor/src/main/resources/i18n/jmexico-editor_fr_FR.properties Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.css =================================================================== --- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.css 2012-10-07 09:50:46 UTC (rev 82) +++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.css 2012-10-07 11:30:09 UTC (rev 83) @@ -22,7 +22,7 @@ * #L% */ #scenarioNameLabel { - text:"jmexico.scenario.clone.name"; + text:"jmexico.label.scenario.clone.name"; } #scenarioNameEditor { @@ -30,7 +30,7 @@ } #selectedScenarioLabel { - text:"jmexico.scenario.clone.selected"; + text:"jmexico.label.scenario.clone.selected"; } #selectedScenarioEditor { Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.jaxx =================================================================== --- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.jaxx 2012-10-07 09:50:46 UTC (rev 82) +++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.jaxx 2012-10-07 11:30:09 UTC (rev 83) @@ -40,15 +40,6 @@ <row fill='both'> <cell> - <JLabel id='scenarioNameLabel'/> - </cell> - <cell> - <JTextField id='scenarioNameEditor' - onKeyReleased='model.setScenarioName(((JTextField)event.getSource()).getText())'/> - </cell> - </row> - <row fill='both'> - <cell> <JLabel id='selectedScenarioLabel'/> </cell> <cell> @@ -56,4 +47,13 @@ onItemStateChanged='InputDesignEditorHandler.onSelectedScenarioChanged(model, event)'/> </cell> </row> + <row fill='both'> + <cell> + <JLabel id='scenarioNameLabel'/> + </cell> + <cell> + <JTextField id='scenarioNameEditor' + onKeyReleased='model.setScenarioName(((JTextField)event.getSource()).getText())'/> + </cell> + </row> </Table> Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.css =================================================================== --- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.css 2012-10-07 09:50:46 UTC (rev 82) +++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.css 2012-10-07 11:30:09 UTC (rev 83) @@ -22,21 +22,24 @@ * #L% */ #inputDesignTable { - model:{getModel()}; + model:{model.getTableModel()}; columnControlVisible:true; rowHeight:20; } #addScenarioButton { text:"jmexico.action.add.scenario"; + enabled:{model.getInputDesign() != null}; } #removeScenarioButton { text:"jmexico.action.remove.scenario"; + enabled:{model.isScenarioExists()}; } #cloneScenarioButton { text:"jmexico.action.clone.scenario"; + enabled:{model.isScenarioExists()}; } #selectedScenarioEditor { Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.jaxx =================================================================== --- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.jaxx 2012-10-07 09:50:46 UTC (rev 82) +++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.jaxx 2012-10-07 11:30:09 UTC (rev 83) @@ -31,7 +31,7 @@ <InputDesignEditorHandler id='handler' constructorParams='this'/> - <InputDesignTableModel id='model' constructorParams='this'/> + <InputDesignEditorModel id='model'/> <script> <![CDATA[ Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorHandler.java =================================================================== --- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorHandler.java 2012-10-07 09:50:46 UTC (rev 82) +++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorHandler.java 2012-10-07 11:30:09 UTC (rev 83) @@ -27,6 +27,7 @@ import com.google.common.collect.Maps; import fr.reseaumexico.editor.factorValue.FactorValueCellEditor; import fr.reseaumexico.editor.factorValue.FactorValueCellRenderer; +import fr.reseaumexico.editor.factorValue.FactorValueEditorFactory; import fr.reseaumexico.model.Factor; import fr.reseaumexico.model.InputDesign; import fr.reseaumexico.model.Scenario; @@ -37,6 +38,8 @@ import javax.swing.JOptionPane; import java.awt.event.ItemEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.Collection; import java.util.Map; @@ -56,6 +59,16 @@ public void initUI() { + ui.getModel().addPropertyChangeListener(InputDesignEditorModel.PROPERTY_INPUT_DESIGN, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + FactorValueEditorFactory factorValueEditorFactory = + ui.getContextValue(FactorValueEditorFactory.class); + if (factorValueEditorFactory != null) { + factorValueEditorFactory.clearCache(); + } + } + }); // table renderer // TODO sletellier 20111221 : do on time for all, put in context ? MexicoDecoratorProvider mexicoDecoratorProvider = new MexicoDecoratorProvider(); @@ -67,67 +80,44 @@ } public void addScenario() { - InputDesign inputDesign = ui.getInputDesign(); String selectedName = JOptionPane.showInputDialog( ui, - _("jmexico.scenario.inputName"), - _("jmexico.scenario.inputName.title"), + _("jmexico.label.scenario.add.name"), + _("jmexico.title.scenario.add"), JOptionPane.QUESTION_MESSAGE); - if (StringUtils.isBlank(selectedName)) { + // check that name is filled and is available - JOptionPane.showMessageDialog( - ui, - _("jmexico.error.scenario.name.required"), - _("jmexico.error.title"), - JOptionPane.ERROR_MESSAGE); + boolean valid = StringUtils.isNotBlank(selectedName) && + isScenarioNameAvailable(selectedName); - return; - } + if (valid) { - // if user enter name + int maxOrder = getMaxOrder(); - // check that name is never used - Collection<Scenario> scenarios = inputDesign.getScenario(); + // create new scenario + Scenario scenarioToAdd = new ScenarioImpl(); - if (scenarios != null) { - for (Scenario scenario : scenarios) { - if (selectedName.equalsIgnoreCase(scenario.getName())) { + // set last order + // TODO sletellier 20111219 : ask user order number + scenarioToAdd.setOrderNumber(maxOrder + 1); - JOptionPane.showMessageDialog( - ui, - _("jmexico.error.title"), - _("jmexico.error.scenario.name.used", selectedName), - JOptionPane.ERROR_MESSAGE); + // set name + scenarioToAdd.setName(selectedName); - return; - } + InputDesign inputDesign = ui.getInputDesign(); + + // create all empty factor values + Collection<Factor> factors = inputDesign.getExperimentDesign().getFactor(); + Map<Factor, Object> factorValues = Maps.newLinkedHashMap(); + for (Factor factor : factors) { + factorValues.put(factor, null); } - } + scenarioToAdd.setFactorValues(factorValues); - - int maxOrder = getMaxOrder(scenarios); - - // create new scenario - Scenario scenarioToAdd = new ScenarioImpl(); - - // set last order - // TODO sletellier 20111219 : ask user order number - scenarioToAdd.setOrderNumber(maxOrder + 1); - - // set name - scenarioToAdd.setName(selectedName); - - // create all empty factor values - Collection<Factor> factors = inputDesign.getExperimentDesign().getFactor(); - Map<Factor, Object> factorValues = Maps.newLinkedHashMap(); - for (Factor factor : factors) { - factorValues.put(factor, null); + inputDesign.addScenario(scenarioToAdd); } - scenarioToAdd.setFactorValues(factorValues); - - inputDesign.addScenario(scenarioToAdd); } public void removeScenario() { @@ -137,8 +127,8 @@ Collection<Scenario> scenarios = inputDesign.getScenario(); Scenario scenario = (Scenario) JOptionPane.showInputDialog( ui, - _("jmexico.scenario.selectRemove"), - _("jmexico.scenario.selectRemove.title"), + _("jmexico.label.scenario.remove.selected"), + _("jmexico.title.scenario.remove"), JOptionPane.QUESTION_MESSAGE, null, scenarios.toArray(), @@ -154,10 +144,8 @@ InputDesign inputDesign = ui.getInputDesign(); - Collection<Scenario> scenarios = inputDesign.getScenario(); - CloneScenarioModel model = new CloneScenarioModel(); - model.setScenarios(scenarios); + model.setScenarios(inputDesign.getScenario()); boolean accept = showCloneScenarioUI(model); @@ -165,7 +153,7 @@ // clone scenario - int maxOrder = getMaxOrder(scenarios); + int maxOrder = getMaxOrder(); Scenario scenarioToAdd = new ScenarioImpl(); @@ -192,6 +180,15 @@ } } + public static void onSelectedScenarioChanged(CloneScenarioModel model, + ItemEvent event) { + + if (event.getStateChange() == ItemEvent.SELECTED) { + Scenario item = (Scenario) event.getItem(); + model.setSelectedScenario(item); + } + } + protected boolean showCloneScenarioUI(CloneScenarioModel model) { // show ui @@ -202,7 +199,7 @@ int response = JOptionPane.showConfirmDialog( ui, panel, - _("jmexico.scenario.clone.title"), + _("jmexico.title.scenario.clone"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); @@ -225,7 +222,7 @@ JOptionPane.showMessageDialog( ui, _("jmexico.error.scenario.not.selected"), - _("jmexico.error.title"), + _("jmexico.title.error"), JOptionPane.ERROR_MESSAGE); valid = false; @@ -242,23 +239,11 @@ JOptionPane.showMessageDialog( ui, _("jmexico.error.scenario.name.required"), - _("jmexico.error.title"), + _("jmexico.title.error"), JOptionPane.ERROR_MESSAGE); } else { - for (Scenario scenario : model.getScenarios()) { - if (selectedName.equalsIgnoreCase(scenario.getName())) { - - JOptionPane.showMessageDialog( - ui, - _("jmexico.error.scenario.name.used", selectedName), - _("jmexico.error.title"), - JOptionPane.ERROR_MESSAGE); - - valid = false; - break; - } - } + valid = isScenarioNameAvailable(selectedName); } } @@ -269,8 +254,11 @@ return doIt; } - protected int getMaxOrder(Collection<Scenario> scenarios) { + protected int getMaxOrder() { int maxOrder = 0; + + Collection<Scenario> scenarios = ui.getModel().getScenario(); + if (CollectionUtils.isNotEmpty(scenarios)) { for (Scenario scenario : scenarios) { int orderNumber = scenario.getOrderNumber(); @@ -280,12 +268,24 @@ return maxOrder; } - public static void onSelectedScenarioChanged(CloneScenarioModel model, - ItemEvent event) { + protected boolean isScenarioNameAvailable(String selectedName) { + boolean result = true; - if (event.getStateChange() == ItemEvent.SELECTED) { - Scenario item = (Scenario) event.getItem(); - model.setSelectedScenario(item); + Collection<Scenario> scenarios = ui.getModel().getScenario(); + + if (CollectionUtils.isNotEmpty(scenarios)) { + for (Scenario scenario : scenarios) { + if (selectedName.equalsIgnoreCase(scenario.getName())) { + result = false; + JOptionPane.showMessageDialog( + ui, + _("jmexico.error.scenario.name.used", selectedName), + _("jmexico.title.error"), + JOptionPane.ERROR_MESSAGE); + break; + } + } } + return result; } } Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java =================================================================== --- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java (rev 0) +++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java 2012-10-07 11:30:09 UTC (rev 83) @@ -0,0 +1,195 @@ +package fr.reseaumexico.editor; + +import com.google.common.collect.Lists; +import fr.reseaumexico.model.Factor; +import fr.reseaumexico.model.InputDesign; +import fr.reseaumexico.model.MexicoUtil; +import fr.reseaumexico.model.Scenario; +import fr.reseaumexico.model.ValueType; +import fr.reseaumexico.model.event.InputDesignScenarioEvent; +import fr.reseaumexico.model.event.InputDesignScenarioListener; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.jdesktop.beans.AbstractSerializableBean; + +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableModel; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import static org.nuiton.i18n.I18n._; + +/** + * Model of {@link InputDesignEditor} UI. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.6 + */ +public class InputDesignEditorModel extends AbstractSerializableBean implements InputDesignScenarioListener { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_INPUT_DESIGN = "inputDesign"; + + public static final String PROPERTY_SCENARIO_EXISTS = "scenarioExists"; + + protected InputDesign inputDesign; + + protected List<Factor> factors; + + protected final AbstractTableModel tableModel; + + public InputDesignEditorModel() { + + tableModel = new InputDesignTableModel(); + } + + public InputDesign getInputDesign() { + return inputDesign; + } + + public boolean isScenarioExists() { + return inputDesign != null && + CollectionUtils.isNotEmpty(inputDesign.getScenario()); + } + + public TableModel getTableModel() { + return tableModel; + } + + public void setInputDesign(InputDesign inputDesign) { + InputDesign oldValue = this.inputDesign; + + if (oldValue != null) { + inputDesign.removeInputDesignScenarioListener(this); + } + this.inputDesign = inputDesign; + inputDesign.addInputDesignScenarioListener(this); + + // extract factors + factors = Lists.newLinkedList( + inputDesign.getExperimentDesign().getFactor()); + + firePropertyChange(PROPERTY_INPUT_DESIGN, oldValue, inputDesign); + firePropertyChange(PROPERTY_SCENARIO_EXISTS, null, isScenarioExists()); + + // notify table structure has changed after notify new model is in + tableModel.fireTableStructureChanged(); + } + + @Override + public void scenarioAdded(InputDesignScenarioEvent event) { + tableModel.fireTableStructureChanged(); + } + + @Override + public void scenarioRemoved(InputDesignScenarioEvent event) { + tableModel.fireTableStructureChanged(); + } + + public Collection<Scenario> getScenario() { + return inputDesign == null ? null : inputDesign.getScenario(); + } + + protected class InputDesignTableModel extends AbstractTableModel { + + private static final long serialVersionUID = 1L; + + @Override + public int getRowCount() { + return factors == null ? 0 : factors.size(); + } + + @Override + public int getColumnCount() { + int result = 0; + if (inputDesign != null) { + result = 1; + Collection<Scenario> scenarios = inputDesign.getScenario(); + + if (scenarios != null) { + result = scenarios.size() + 1; + } + } + return result; + } + + @Override + public String getColumnName(int rowIndex) { + String result = null; + if (rowIndex == 0) { + result = _("jmexico.factor.name"); + } else if (inputDesign != null) { + + Scenario scenario = inputDesign.getScenario(rowIndex - 1); + result = scenario == null ? "" : scenario.getName(); + } + return result; + } + + @Override + public Class<?> getColumnClass(int rowIndex) { + Class<?> result = Object.class; + if (rowIndex == 0) { + result = Factor.class; + } + return result; + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return inputDesign != null && columnIndex > 0; + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + Object result = null; + + if (inputDesign != null) { + + // get key on rowIndex + Factor factor = factors.get(rowIndex); + + // first column is factors + if (columnIndex == 0) { + result = factor; + } else { + + // others are scenarios + columnIndex = columnIndex - 1; + Scenario scenario = inputDesign.getScenario(columnIndex); + if (scenario != null) { + + Map<Factor, Object> factorValues = + scenario.getFactorValues(); + + result = factorValues.get(factor); + } + } + } + return result; + } + + @Override + public void setValueAt(Object o, int rowIndex, int columnIndex) { + + if (inputDesign != null && columnIndex > 0) { + + Scenario scenario = inputDesign.getScenario(columnIndex - 1); + + // get key if rowIndex + Factor factor = factors.get(rowIndex); + + // take care of type + ValueType valueType = factor.getDomain().getValueType(); + + String toStringValue = ObjectUtils.toString(o); + Object value = MexicoUtil.getTypedValue(valueType, toStringValue); + scenario.setFactorValue(factor, value); + + fireTableCellUpdated(rowIndex, columnIndex); + } + } + } +} Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Deleted: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignTableModel.java =================================================================== --- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignTableModel.java 2012-10-07 09:50:46 UTC (rev 82) +++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignTableModel.java 2012-10-07 11:30:09 UTC (rev 83) @@ -1,227 +0,0 @@ -/* - * #%L - * JMexico :: Swing Editor - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2011 Réseau Mexico, 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 fr.reseaumexico.editor; - -import fr.reseaumexico.editor.factorValue.FactorValueEditorFactory; -import fr.reseaumexico.model.Factor; -import fr.reseaumexico.model.InputDesign; -import fr.reseaumexico.model.MexicoUtil; -import fr.reseaumexico.model.Scenario; -import fr.reseaumexico.model.ValueType; -import fr.reseaumexico.model.event.InputDesignScenarioEvent; -import fr.reseaumexico.model.event.InputDesignScenarioListener; -import java.util.Collection; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import javax.swing.table.AbstractTableModel; -import javax.swing.table.DefaultTableModel; -import javax.swing.table.TableModel; -import jaxx.runtime.JAXXContext; -import org.apache.commons.lang3.ObjectUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import static org.nuiton.i18n.I18n._; - -/** - * @author sletellier <letellier@codelutin.com> - * @since 0.1 - */ -public class InputDesignTableModel extends AbstractTableModel implements InputDesignScenarioListener { - - private static final long serialVersionUID = 1L; - - /** Logger. */ - private static final Log log = LogFactory.getLog(InputDesignTableModel.class); - - protected TableModel delegate; - - protected InputDesign inputDesign; - - protected List<Factor> factors; - - protected FactorValueEditorFactory factory; - - public InputDesignTableModel(JAXXContext context) { - // search specific factory in context - factory = context.getContextValue(FactorValueEditorFactory.class); - if (log.isInfoEnabled()) { - log.info("Factory to use: "+factory); - } - - delegate = new DefaultTableModel(); - } - - public void setInputDesign(InputDesign inputDesign) { - this.inputDesign = inputDesign; - inputDesign.addInputDesignScenarioListener(this); - - // extract factors - factors = new LinkedList<Factor>(inputDesign.getExperimentDesign().getFactor()); - - // sort on id -// Collections.sort(factors, new Comparator<Factor>() { -// -// @Override -// public int compare(Factor o1, Factor o2) { -// return o1.getName().compareTo(o2.getName()); -// } -// }); - - factory.clearCache(); - - fireTableStructureChanged(); - } - - @Override - public void scenarioAdded(InputDesignScenarioEvent event) { - fireTableStructureChanged(); - } - - @Override - public void scenarioRemoved(InputDesignScenarioEvent event) { - fireTableStructureChanged(); - } - - public InputDesign getInputDesign() { - return inputDesign; - } - - public Collection<Scenario> getScenarios() { - return inputDesign.getScenario(); - } - - public Scenario getScenario(int i) { - return inputDesign.getScenario(i); - } - - public Factor getFactor(int i) { - return factors.get(i); - } - - @Override - public int getRowCount() { - if (inputDesign == null) { - return delegate.getRowCount(); - } - return factors == null ? 0 : factors.size(); - } - - @Override - public int getColumnCount() { - if (inputDesign == null) { - return delegate.getColumnCount(); - } - Collection<Scenario> scenarios = getScenarios(); - if (scenarios == null) { - return 1; - } - return scenarios.size() + 1; - } - - @Override - public String getColumnName(int rowIndex) { - if (inputDesign == null) { - return delegate.getColumnName(rowIndex); - } - if (rowIndex == 0) { - return _("jmexico.factor.name"); - } - Scenario scenario = getScenario(rowIndex - 1); - return scenario == null ? "" : scenario.getName(); - } - - @Override - public Class<?> getColumnClass(int rowIndex) { - if (inputDesign == null) { - return delegate.getColumnClass(rowIndex); - } - if (rowIndex == 0) { - return Factor.class; - } - return Object.class; - } - - @Override - public boolean isCellEditable(int rowIndex, int columnIndex) { - if (inputDesign == null) { - return delegate.isCellEditable(rowIndex, columnIndex); - } - return columnIndex > 0; - } - - @Override - public Object getValueAt(int rowIndex, int columnIndex) { - if (inputDesign == null) { - return delegate.getValueAt(rowIndex, columnIndex); - } - - // get key on rowIndex - Factor factor = getFactor(rowIndex); - - // first column is factors - if (columnIndex == 0) { - return factor; - } - - // others are scenarios - columnIndex = columnIndex - 1; - Scenario scenario = getScenario(columnIndex); - if (scenario == null) { - return null; - } - Map<Factor, Object> factorValues = scenario.getFactorValues(); - - Object result = factorValues.get(factor); - return result; - } - - @Override - public void setValueAt(Object o, int rowIndex, int columnIndex) { - if (inputDesign == null) { - delegate.setValueAt(o, rowIndex, columnIndex); - return; - } - if (columnIndex == 0) { - - // must never append - return; - } - int scenarioIndex = columnIndex - 1; - Scenario scenario = getScenario(scenarioIndex); - - // get key if rowIndex - Factor factor = getFactor(rowIndex); - - // take care of type - ValueType valueType = factor.getDomain().getValueType(); - - String value = ObjectUtils.toString(o); - scenario.setFactorValue(factor, MexicoUtil.getTypedValue(valueType, value)); - - fireTableCellUpdated(rowIndex, columnIndex); - } -} Modified: trunk/jmexico-editor/src/main/resources/i18n/jmexico-editor_en_GB.properties =================================================================== --- trunk/jmexico-editor/src/main/resources/i18n/jmexico-editor_en_GB.properties 2012-10-07 09:50:46 UTC (rev 82) +++ trunk/jmexico-editor/src/main/resources/i18n/jmexico-editor_en_GB.properties 2012-10-07 11:30:09 UTC (rev 83) @@ -2,17 +2,14 @@ jmexico.action.clone.scenario=Clone scenario jmexico.action.remove.scenario=Remove scenario jmexico.error.scenario.name.required=Error\: Name of scenario is mandatory -jmexico.error.scenario.name.used=Error\: scenario name '%1$s' is already used. +jmexico.error.scenario.name.used=Error\: Name of scenario '%1$s' is already used. jmexico.error.scenario.not.selected=Error\: No scenario selected. -jmexico.error.title=Error jmexico.factor.name=Factor -jmexico.scenario.clone.name=Name of new scenario -jmexico.scenario.clone.selected=Scenario to clone -jmexico.scenario.clone.title=Clone a scenario -jmexico.scenario.inputName=Name of scenario to add \: -jmexico.scenario.inputName.title=Input a name for scenario to add -jmexico.scenario.selectRemove=Select scenario to delete -jmexico.scenario.selectRemove.title=Select scenario to remove -jmexico.title.add.scenario=Add scenario -jmexico.title.clone.scenario=Clone scenario -jmexico.title.remove.scenario=Remove scenario +jmexico.label.scenario.add.name=Name of scenario to add \: +jmexico.label.scenario.clone.name=Name of new scenario +jmexico.label.scenario.clone.selected=Scenario to clone +jmexico.label.scenario.remove.selected=Scenario to delete +jmexico.title.error=Error +jmexico.title.scenario.add=Add a scenario +jmexico.title.scenario.clone=Clone a scenario +jmexico.title.scenario.remove=Remove a scenario Modified: trunk/jmexico-editor/src/main/resources/i18n/jmexico-editor_fr_FR.properties =================================================================== --- trunk/jmexico-editor/src/main/resources/i18n/jmexico-editor_fr_FR.properties 2012-10-07 09:50:46 UTC (rev 82) +++ trunk/jmexico-editor/src/main/resources/i18n/jmexico-editor_fr_FR.properties 2012-10-07 11:30:09 UTC (rev 83) @@ -1,19 +1,15 @@ jmexico.action.add.scenario=Ajouter un scénario jmexico.action.clone.scenario=Dupliquer un scénario jmexico.action.remove.scenario=Supprimer un scénario -jmexico.error.scenario.name.required=Erreur \: Le nom du scénario est obligatoire +jmexico.error.scenario.name.required=Erreur \: le nom du scénario est obligatoire jmexico.error.scenario.name.used=Erreur \: le scenario '%1$s' est déjà utilisé. jmexico.error.scenario.not.selected=Erreur \: scénario à cloner non sélectionné. -jmexico.error.title=Erreur jmexico.factor.name=Facteur -jmexico.remove.scenario=Supprimer un scénario -jmexico.scenario.clone.name=Nom du nouveau scénario -jmexico.scenario.clone.selected=Scénario à cloner -jmexico.scenario.clone.title= -jmexico.scenario.inputName=Nom du scénario à ajouter \: -jmexico.scenario.inputName.title= -jmexico.scenario.selectRemove=Selection du scénario à supprimer -jmexico.scenario.selectRemove.title= -jmexico.title.add.scenario=Ajouter un scénario -jmexico.title.clone.scenario=Dupliquer un scénario -jmexico.title.remove.scenario=Supprimer un scénario +jmexico.label.scenario.add.name=Nom du scénario +jmexico.label.scenario.clone.name=Nom du nouveau scénario +jmexico.label.scenario.clone.selected=Scénario à dupliquer +jmexico.label.scenario.remove.selected=Selection du scénario à supprimer +jmexico.title.error=Erreur +jmexico.title.scenario.add=Ajouter un scénario +jmexico.title.scenario.clone=Dupliquer un scénario +jmexico.title.scenario.remove=Supprimer un scénario
participants (1)
-
tchemit@users.forge.codelutin.com