Jmexico-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- 164 discussions
r88 - in trunk: jmexico-editor/src/main/java/fr/reseaumexico/editor jmexico-editor/src/main/resources/i18n jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo
by tchemit@users.forge.codelutin.com 07 Oct '12
by tchemit@users.forge.codelutin.com 07 Oct '12
07 Oct '12
Author: tchemit
Date: 2012-10-07 18:24:50 +0200 (Sun, 07 Oct 2012)
New Revision: 88
Url: http://forge.codelutin.com/repositories/revision/jmexico/88
Log:
fixes #1576: Add import scenario action (add UI)
fixes #1577: Add export scenario operation (add UI)
Added:
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/AbstractScenarioModel.java
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioModel.java
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioPanel.css
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioPanel.jaxx
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioModel.java
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioPanel.css
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioPanel.jaxx
Modified:
trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUIHandler.java
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java
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/java/fr/reseaumexico/editor/InputDesignEditorModel.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
Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/AbstractScenarioModel.java
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/AbstractScenarioModel.java (rev 0)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/AbstractScenarioModel.java 2012-10-07 16:24:50 UTC (rev 88)
@@ -0,0 +1,71 @@
+package fr.reseaumexico.editor;
+
+/*
+ * #%L
+ * JMexico :: Swing Editor
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 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%
+ */
+
+import fr.reseaumexico.model.Scenario;
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import java.io.File;
+import java.util.Collection;
+
+/**
+ * Model toimport a scenarion into a input design.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.7
+ */
+public class AbstractScenarioModel<M extends AbstractScenarioModel> extends AbstractSerializableBean {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Collection<Scenario> scenarios;
+
+ protected Scenario selectedScenario;
+
+ public Collection<Scenario> getScenarios() {
+ return scenarios;
+ }
+
+ public Scenario getSelectedScenario() {
+ return selectedScenario;
+ }
+
+ public void setSelectedScenario(Scenario selectedScenario) {
+ Object oldValue = this.selectedScenario;
+ this.selectedScenario = selectedScenario;
+ firePropertyChange("selectedScenario", oldValue, selectedScenario);
+ }
+
+
+ public void setScenarios(Collection<Scenario> scenarios) {
+ this.scenarios = scenarios;
+ firePropertyChange("scenarios", null, scenarios);
+ }
+
+ public void copyTo(M model) {
+ model.setScenarios(getScenarios());
+ model.setSelectedScenario(getSelectedScenario());
+ }
+}
\ No newline at end of file
Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/AbstractScenarioModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java 2012-10-07 16:24:03 UTC (rev 87)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java 2012-10-07 16:24:50 UTC (rev 88)
@@ -35,48 +35,25 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.7
*/
-public class CloneScenarioModel extends AbstractSerializableBean {
+public class CloneScenarioModel extends AbstractScenarioModel<CloneScenarioModel> {
private static final long serialVersionUID = 1L;
- protected Collection<Scenario> scenarios;
-
- protected Scenario selectedScenario;
-
protected String scenarioName;
- public Collection<Scenario> getScenarios() {
- return scenarios;
- }
-
- public Scenario getSelectedScenario() {
- return selectedScenario;
- }
-
public String getScenarioName() {
return scenarioName;
}
- public void setSelectedScenario(Scenario selectedScenario) {
- Object oldValue = this.selectedScenario;
- this.selectedScenario = selectedScenario;
- firePropertyChange("selectedScenario", oldValue, selectedScenario);
- }
-
public void setScenarioName(String scenarioName) {
Object oldValue = this.scenarioName;
this.scenarioName = scenarioName;
firePropertyChange("scenarioName", oldValue, scenarioName);
}
- public void setScenarios(Collection<Scenario> scenarios) {
- this.scenarios = scenarios;
- firePropertyChange("scenarios", null, scenarios);
- }
-
+ @Override
public void copyTo(CloneScenarioModel model) {
+ super.copyTo(model);
model.setScenarioName(getScenarioName());
- model.setScenarios(getScenarios());
- model.setSelectedScenario(getSelectedScenario());
}
}
Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioModel.java
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioModel.java (rev 0)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioModel.java 2012-10-07 16:24:50 UTC (rev 88)
@@ -0,0 +1,57 @@
+package fr.reseaumexico.editor;
+
+/*
+ * #%L
+ * JMexico :: Swing Editor
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 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%
+ */
+
+import java.io.File;
+
+/**
+ * Model to export a scenario.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.7
+ */
+public class ExportScenarioModel extends AbstractScenarioModel<ExportScenarioModel> {
+
+ private static final long serialVersionUID = 1L;
+
+ protected File exportFile;
+
+ public File getExportFile() {
+ return exportFile;
+ }
+
+ public void setExportFile(File exportFile) {
+ Object oldValue = this.exportFile;
+ this.exportFile = exportFile;
+ firePropertyChange("exportFile", oldValue, exportFile);
+ }
+
+
+ @Override
+ public void copyTo(ExportScenarioModel model) {
+ super.copyTo(model);
+ model.setExportFile(getExportFile());
+ }
+}
\ No newline at end of file
Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioPanel.css
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioPanel.css (rev 0)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioPanel.css 2012-10-07 16:24:50 UTC (rev 88)
@@ -0,0 +1,38 @@
+/*
+ * #%L
+ * JMexico :: Swing Editor
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin, Tony Chemit
+ * %%
+ * 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%
+ */
+#exportFileLabel {
+ text:"jmexico.label.scenario.export.file";
+}
+
+#exportFileEditor {
+ selectedFile:{model.getExportFile()};
+}
+
+#selectedScenarioLabel {
+ text:"jmexico.label.scenario.export.selected";
+}
+
+#selectedScenarioEditor {
+ selectedItem:{model.getSelectedScenario()};
+}
Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioPanel.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioPanel.jaxx
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioPanel.jaxx (rev 0)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioPanel.jaxx 2012-10-07 16:24:50 UTC (rev 88)
@@ -0,0 +1,63 @@
+<!--
+ #%L
+ JMexico :: Swing Editor
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin, Tony Chemit
+ %%
+ 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%
+ -->
+<Table id='panel' layout='{new BorderLayout()}'>
+
+ <import>
+ jaxx.runtime.swing.editor.FileEditor
+ </import>
+
+ <ExportScenarioModel id='model'/>
+
+ <script>
+ <![CDATA[
+public void init(ExportScenarioModel model) {
+ model.copyTo(this.model);
+
+ // init selected scenario
+ SwingUtil.fillComboBox(selectedScenarioEditor,
+ model.getScenarios(),
+ model.getSelectedScenario());
+ }
+ ]]>
+ </script>
+
+ <row fill='both'>
+ <cell>
+ <JLabel id='selectedScenarioLabel'/>
+ </cell>
+ <cell>
+ <JComboBox id='selectedScenarioEditor'
+ onItemStateChanged='InputDesignEditorHandler.onSelectedScenarioChanged(model, event)'/>
+ </cell>
+ </row>
+ <row fill='both'>
+ <cell>
+ <JLabel id='exportFileLabel'/>
+ </cell>
+ <cell>
+ <FileEditor id='exportFileEditor'
+ onActionPerformed='model.setExportFile(((FileEditor) event.getSource()).getSelectedFile())'/>
+ </cell>
+ </row>
+</Table>
Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ExportScenarioPanel.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioModel.java
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioModel.java (rev 0)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioModel.java 2012-10-07 16:24:50 UTC (rev 88)
@@ -0,0 +1,69 @@
+package fr.reseaumexico.editor;
+
+/*
+ * #%L
+ * JMexico :: Swing Editor
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 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%
+ */
+
+import java.io.File;
+
+/**
+ * Model toimport a scenarion into a input design.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.7
+ */
+public class ImportScenarioModel extends AbstractScenarioModel<ImportScenarioModel> {
+
+ private static final long serialVersionUID = 1L;
+
+ protected File importFile;
+
+ protected String scenarioName;
+
+ public String getScenarioName() {
+ return scenarioName;
+ }
+
+ public File getImportFile() {
+ return importFile;
+ }
+
+ public void setScenarioName(String scenarioName) {
+ Object oldValue = this.scenarioName;
+ this.scenarioName = scenarioName;
+ firePropertyChange("scenarioName", oldValue, scenarioName);
+ }
+
+ public void setImportFile(File importFile) {
+ Object oldValue = this.importFile;
+ this.importFile = importFile;
+ firePropertyChange("importFile", oldValue, importFile);
+ }
+
+ @Override
+ public void copyTo(ImportScenarioModel model) {
+ super.copyTo(model);
+ model.setImportFile(getImportFile());
+ model.setScenarioName(getScenarioName());
+ }
+}
\ No newline at end of file
Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioPanel.css
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioPanel.css (rev 0)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioPanel.css 2012-10-07 16:24:50 UTC (rev 88)
@@ -0,0 +1,38 @@
+/*
+ * #%L
+ * JMexico :: Swing Editor
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin, Tony Chemit
+ * %%
+ * 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%
+ */
+#scenarioNameLabel {
+ text:"jmexico.label.scenario.import.name";
+}
+
+#scenarioNameEditor {
+ text:{model.getScenarioName()};
+}
+
+#importFileLabel {
+ text:"jmexico.label.scenario.import.file";
+}
+
+#importFileEditor {
+ selectedFile:{model.getImportFile()};
+}
Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioPanel.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioPanel.jaxx
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioPanel.jaxx (rev 0)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioPanel.jaxx 2012-10-07 16:24:50 UTC (rev 88)
@@ -0,0 +1,57 @@
+<!--
+ #%L
+ JMexico :: Swing Editor
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin, Tony Chemit
+ %%
+ 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%
+ -->
+<Table id='panel' layout='{new BorderLayout()}'>
+
+ <import>
+ jaxx.runtime.swing.editor.FileEditor
+ </import>
+
+ <ImportScenarioModel id='model'/>
+
+ <script>
+ <![CDATA[
+public void init(ImportScenarioModel model) {
+ model.copyTo(this.model);
+}
+ ]]>
+ </script>
+ <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='importFileLabel'/>
+ </cell>
+ <cell>
+ <FileEditor id='importFileEditor'
+ onActionPerformed='model.setImportFile(((FileEditor) event.getSource()).getSelectedFile())'/>
+ </cell>
+ </row>
+</Table>
Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/ImportScenarioPanel.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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 16:24:03 UTC (rev 87)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.css 2012-10-07 16:24:50 UTC (rev 88)
@@ -42,6 +42,16 @@
enabled:{model.isScenarioExists()};
}
+#importScenarioButton {
+ text:"jmexico.action.import.scenario";
+ enabled:{model.getInputDesign() != null};
+}
+
+#exportScenarioButton {
+ text:"jmexico.action.export.scenario";
+ enabled:{model.isScenarioExists()};
+}
+
#selectedScenarioEditor {
selectedItem:{model.getSelectedScenario()};
}
\ No newline at end of file
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 16:24:03 UTC (rev 87)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.jaxx 2012-10-07 16:24:50 UTC (rev 88)
@@ -61,6 +61,10 @@
onActionPerformed='getHandler().removeScenario()'/>
<JButton id='cloneScenarioButton' constraints='BorderLayout.EAST'
onActionPerformed='getHandler().cloneScenario()'/>
+ <JButton id='importScenarioButton' constraints='BorderLayout.EAST'
+ onActionPerformed='getHandler().importScenario()'/>
+ <JButton id='exportScenarioButton' constraints='BorderLayout.EAST'
+ onActionPerformed='getHandler().exportScenario()'/>
</JPanel>
</JPanel>
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 16:24:03 UTC (rev 87)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorHandler.java 2012-10-07 16:24:50 UTC (rev 88)
@@ -24,6 +24,7 @@
*/
package fr.reseaumexico.editor;
+import com.google.common.base.Function;
import com.google.common.collect.Maps;
import fr.reseaumexico.editor.factorValue.FactorValueCellEditor;
import fr.reseaumexico.editor.factorValue.FactorValueCellRenderer;
@@ -32,15 +33,24 @@
import fr.reseaumexico.model.InputDesign;
import fr.reseaumexico.model.Scenario;
import fr.reseaumexico.model.ScenarioImpl;
+import fr.reseaumexico.model.parser.ScenarioXmlParser;
+import fr.reseaumexico.model.writer.ScenarioXmlWriter;
+import jaxx.runtime.swing.editor.FileEditor;
import jaxx.runtime.swing.renderer.DecoratorProviderTableCellRenderer;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jdesktop.swingx.JXTable;
import javax.swing.JOptionPane;
import java.awt.event.ItemEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.io.IOException;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
import static org.nuiton.i18n.I18n._;
@@ -52,6 +62,10 @@
*/
public class InputDesignEditorHandler {
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(InputDesignEditorHandler.class);
+
private final InputDesignEditor ui;
public InputDesignEditorHandler(InputDesignEditor ui) {
@@ -70,14 +84,18 @@
}
}
});
+
+ JXTable table = ui.getInputDesignTable();
+
// table renderer
- // TODO sletellier 20111221 : do on time for all, put in context ?
- MexicoDecoratorProvider mexicoDecoratorProvider = new MexicoDecoratorProvider();
- ui.inputDesignTable.setDefaultRenderer(Factor.class, new DecoratorProviderTableCellRenderer(mexicoDecoratorProvider));
- ui.inputDesignTable.setDefaultRenderer(Object.class, new FactorValueCellRenderer(ui));
+ table.setDefaultRenderer(
+ Factor.class,
+ new DecoratorProviderTableCellRenderer(
+ new MexicoDecoratorProvider()));
+ table.setDefaultRenderer(Object.class, new FactorValueCellRenderer(ui));
// cell editor
- ui.inputDesignTable.setDefaultEditor(Object.class, new FactorValueCellEditor(ui));
+ table.setDefaultEditor(Object.class, new FactorValueCellEditor(ui));
}
public void addScenario() {
@@ -181,7 +199,79 @@
}
}
- public static void onSelectedScenarioChanged(CloneScenarioModel model,
+ public void importScenario() {
+
+ InputDesign inputDesign = ui.getInputDesign();
+
+ ImportScenarioModel model = new ImportScenarioModel();
+ model.setScenarios(inputDesign.getScenario());
+
+ boolean accept = showImportScenarioUI(model);
+
+ if (accept) {
+
+ // import scenario
+
+ File importFile = model.getImportFile();
+
+ String scenarioName = model.getScenarioName();
+
+ if (log.isInfoEnabled()) {
+ log.info("Import scenario '" + scenarioName + "' from " + importFile);
+ }
+ List<Factor> factors = ui.getModel().getFactors();
+ ScenarioXmlParser parser = new ScenarioXmlParser(Maps.uniqueIndex(factors, new Function<Factor, String>() {
+ @Override
+ public String apply(Factor input) {
+ return input.getId();
+ }
+ }));
+ try {
+ Scenario scenario = parser.getModel(importFile);
+
+ scenario.setName(scenarioName);
+ scenario.setOrderNumber(getMaxOrder());
+ inputDesign.addScenario(scenario);
+
+ } catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error("Could not import scenario", e);
+ }
+ }
+ }
+ }
+
+ public void exportScenario() {
+
+ InputDesign inputDesign = ui.getInputDesign();
+
+ ExportScenarioModel model = new ExportScenarioModel();
+ model.setScenarios(inputDesign.getScenario());
+
+ boolean accept = showExportScenarioUI(model);
+
+ if (accept) {
+
+ // export scenario
+
+ File exportFile = model.getExportFile();
+ Scenario scenario = model.getSelectedScenario();
+
+ if (log.isInfoEnabled()) {
+ log.info("Export scenario '" + scenario.getName() +
+ "' to file " + exportFile);
+ }
+ try {
+ ScenarioXmlWriter.write(scenario, exportFile);
+ } catch (IOException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Could not export scenario to " + exportFile, e);
+ }
+ }
+ }
+ }
+
+ public static void onSelectedScenarioChanged(AbstractScenarioModel<?> model,
ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) {
@@ -246,7 +336,6 @@
} else {
valid = isScenarioNameAvailable(selectedName);
}
-
}
doIt = valid || showCloneScenarioUI(model);
@@ -255,6 +344,142 @@
return doIt;
}
+ protected boolean showExportScenarioUI(ExportScenarioModel model) {
+
+ // show ui
+
+ ExportScenarioPanel panel = new ExportScenarioPanel();
+ panel.init(model);
+
+ FileEditor fileEditor = panel.getExportFileEditor();
+
+ fileEditor.setAcceptAllFileFilterUsed(false);
+ fileEditor.setExts(_("jmexico.config.scenario.extension"));
+ fileEditor.setExtsDescription(
+ _("jmexico.config.scenario.extension.description"));
+
+ int response = JOptionPane.showConfirmDialog(
+ ui,
+ panel,
+ _("jmexico.title.scenario.export"),
+ JOptionPane.OK_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+
+ boolean doIt = response == JOptionPane.OK_OPTION;
+
+ if (doIt) {
+
+ // user ask to perform operation
+
+ //copy back model
+ panel.getModel().copyTo(model);
+
+ // validate model
+ boolean valid = true;
+
+ Scenario selectedScenario = model.getSelectedScenario();
+ if (selectedScenario == null) {
+
+ // no scenario selected
+ JOptionPane.showMessageDialog(
+ ui,
+ _("jmexico.error.scenario.not.selected"),
+ _("jmexico.title.error"),
+ JOptionPane.ERROR_MESSAGE);
+
+ valid = false;
+ }
+
+ if (valid) {
+
+ // check export file is filled
+ File exportFile = model.getExportFile();
+
+ if (exportFile == null) {
+ valid = false;
+ JOptionPane.showMessageDialog(
+ ui,
+ _("jmexico.error.scenario.exportFile.required"),
+ _("jmexico.title.error"),
+ JOptionPane.ERROR_MESSAGE);
+
+ }
+ }
+ doIt = valid || showExportScenarioUI(model);
+ }
+ return doIt;
+ }
+
+ protected boolean showImportScenarioUI(ImportScenarioModel model) {
+
+ // show ui
+
+ ImportScenarioPanel panel = new ImportScenarioPanel();
+ panel.init(model);
+
+ FileEditor fileEditor = panel.getImportFileEditor();
+
+ fileEditor.setAcceptAllFileFilterUsed(false);
+ fileEditor.setExts(_("jmexico.config.scenario.extension"));
+ fileEditor.setExtsDescription(
+ _("jmexico.config.scenario.extension.description"));
+
+
+ int response = JOptionPane.showConfirmDialog(
+ ui,
+ panel,
+ _("jmexico.title.scenario.import"),
+ JOptionPane.OK_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+
+ boolean doIt = response == JOptionPane.OK_OPTION;
+
+ if (doIt) {
+
+ // user ask to perform operation
+
+ //copy back model
+ panel.getModel().copyTo(model);
+
+ // validate model
+ boolean valid = true;
+
+
+ // check import file filled
+ File importFile = model.getImportFile();
+
+ if (importFile == null) {
+ valid = false;
+ JOptionPane.showMessageDialog(
+ ui,
+ _("jmexico.error.scenario.importFile.required"),
+ _("jmexico.title.error"),
+ JOptionPane.ERROR_MESSAGE);
+ }
+
+ if (valid) {
+
+ // check scenario name is not used
+ String selectedName = model.getScenarioName();
+
+ if (StringUtils.isBlank(selectedName)) {
+
+ valid = false;
+ JOptionPane.showMessageDialog(
+ ui,
+ _("jmexico.error.scenario.name.required"),
+ _("jmexico.title.error"),
+ JOptionPane.ERROR_MESSAGE);
+
+ } else {
+ valid = isScenarioNameAvailable(selectedName);
+ }
+ }
+ doIt = valid || showImportScenarioUI(model);
+ }
+ return doIt;
+ }
+
protected int getMaxOrder() {
int maxOrder = 0;
Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java 2012-10-07 16:24:03 UTC (rev 87)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java 2012-10-07 16:24:50 UTC (rev 88)
@@ -81,6 +81,10 @@
return tableModel;
}
+ public List<Factor> getFactors() {
+ return factors;
+ }
+
public void setInputDesign(InputDesign inputDesign) {
InputDesign oldValue = this.inputDesign;
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 16:24:03 UTC (rev 87)
+++ trunk/jmexico-editor/src/main/resources/i18n/jmexico-editor_en_GB.properties 2012-10-07 16:24:50 UTC (rev 88)
@@ -1,15 +1,27 @@
jmexico.action.add.scenario=Add scenario
jmexico.action.clone.scenario=Clone scenario
+jmexico.action.export.scenario=Export scenario
+jmexico.action.import.scenario=Import scenario
jmexico.action.remove.scenario=Remove scenario
-jmexico.error.scenario.name.required=Error\: Name of scenario is mandatory
+jmexico.config.scenario.extension=scenario
+jmexico.config.scenario.extension.description=JMexico scenario file (*.scenario)
+jmexico.error.scenario.exportFile.required=Error\: Export file is mandatory.
+jmexico.error.scenario.importFile.required=Error\: Import file is mandatory.
+jmexico.error.scenario.name.required=Error\: Name of scenario is mandatory.
jmexico.error.scenario.name.used=Error\: Name of scenario '%1$s' is already used.
jmexico.error.scenario.not.selected=Error\: No scenario selected.
jmexico.factor.name=Factor
-jmexico.label.scenario.add.name=Name of scenario to add \:
+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.export.file=Export file
+jmexico.label.scenario.export.selected=Scenario to export
+jmexico.label.scenario.import.file=Import file
+jmexico.label.scenario.import.name=Name of new scenario
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.export=Import a scenario
+jmexico.title.scenario.import=Export 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 16:24:03 UTC (rev 87)
+++ trunk/jmexico-editor/src/main/resources/i18n/jmexico-editor_fr_FR.properties 2012-10-07 16:24:50 UTC (rev 88)
@@ -1,6 +1,12 @@
jmexico.action.add.scenario=Ajouter un scénario
jmexico.action.clone.scenario=Dupliquer un scénario
+jmexico.action.export.scenario=Exporter un scénario
+jmexico.action.import.scenario=Importer un scénario
jmexico.action.remove.scenario=Supprimer un scénario
+jmexico.config.scenario.extension=scenario
+jmexico.config.scenario.extension.description=Scénario jmexico (*.scenario)
+jmexico.error.scenario.exportFile.required=Erreur \: pas de fichier d'export choisi
+jmexico.error.scenario.importFile.required=
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é.
@@ -8,8 +14,14 @@
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.label.scenario.export.file=Fichier d'export
+jmexico.label.scenario.export.selected=Sélection du scénarion à exporter
+jmexico.label.scenario.import.file=Fichier d'import
+jmexico.label.scenario.import.name=Nom du scénario à importer
+jmexico.label.scenario.remove.selected=Sélection 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.export=Exporter un scénario
+jmexico.title.scenario.import=Importer un scénario
jmexico.title.scenario.remove=Supprimer un scénario
Modified: trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUIHandler.java
===================================================================
--- trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUIHandler.java 2012-10-07 16:24:03 UTC (rev 87)
+++ trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUIHandler.java 2012-10-07 16:24:50 UTC (rev 88)
@@ -125,11 +125,10 @@
// save modified model
try {
- InputDesignXmlWriter writer = new InputDesignXmlWriter(selectedFile, ui.getInputDesign());
+ InputDesignXmlWriter writer = new InputDesignXmlWriter(ui.getInputDesign());
try {
- writer.write();
+ writer.write(selectedFile);
} finally {
- writer.close();
ui.getModel().setOptionChanged(false);
}
} catch (IOException eee) {
@@ -139,21 +138,16 @@
}
protected InputDesign readInputDesignFile(File selectedFile) {
- InputDesign inputDesignModel = null;
+ InputDesign result = null;
try {
- // parse inputDesign
- InputDesignParser inputDesignParser = new InputDesignParser(selectedFile);
- try {
- inputDesignModel = inputDesignParser.getModel();
- } finally {
- inputDesignParser.close();
- }
+ InputDesignParser parser = new InputDesignParser();
+ result = parser.getModel(selectedFile);
} catch (Exception eee) {
log.error("Failed to read inputDesign file '" + selectedFile.getName() + "'", eee);
ErrorDialogUI.showError(eee);
}
- return inputDesignModel;
+ return result;
}
}
1
0
Author: tchemit
Date: 2012-10-07 18:24:03 +0200 (Sun, 07 Oct 2012)
New Revision: 87
Url: http://forge.codelutin.com/repositories/revision/jmexico/87
Log:
refs #1572: Upgrade some librairies and plugins (jaxx ast snapshot)
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-10-07 16:22:58 UTC (rev 86)
+++ trunk/pom.xml 2012-10-07 16:24:03 UTC (rev 87)
@@ -80,7 +80,7 @@
<nuitonI18nVersion>2.5</nuitonI18nVersion>
<nuitonUtilsVersion>2.6.3</nuitonUtilsVersion>
<eugenePluginVersion>2.5</eugenePluginVersion>
- <jaxxVersion>2.5.5</jaxxVersion>
+ <jaxxVersion>2.5.6-SNAPSHOT</jaxxVersion>
<swingXVersion>1.6.4</swingXVersion>
<license.organizationName>Réseau Mexico, Codelutin</license.organizationName>
1
0
r86 - in trunk/jmexico-model/src/main/java/fr/reseaumexico/model: parser writer
by tchemit@users.forge.codelutin.com 07 Oct '12
by tchemit@users.forge.codelutin.com 07 Oct '12
07 Oct '12
Author: tchemit
Date: 2012-10-07 18:22:58 +0200 (Sun, 07 Oct 2012)
New Revision: 86
Url: http://forge.codelutin.com/repositories/revision/jmexico/86
Log:
fixes #1578: Import model parsers and writers
refs #1576: Add import scenario action (implements Scenario parser)
refs #1577: Add export scenario operation (implementsScenario writer)
Added:
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ScenarioXmlParser.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ScenarioXmlWriter.java
Modified:
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/InputDesignParser.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/MexicoXmlParser.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/XmlParser.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ExperimentDesignXmlWriter.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/InputDesignXmlWriter.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/MexicoXmlWriter.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/XmlWriter.java
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java 2012-10-07 12:00:10 UTC (rev 85)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java 2012-10-07 16:22:58 UTC (rev 86)
@@ -41,15 +41,13 @@
import fr.reseaumexico.model.MexicoTechnicalException;
import fr.reseaumexico.model.MexicoXmlConstant;
import fr.reseaumexico.model.ValueType;
-import java.io.File;
-import java.io.FileNotFoundException;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.util.List;
import java.util.Map;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
/**
* Parser for experiment design xml files, build a {@link ExperimentDesign} model.
@@ -59,15 +57,18 @@
*/
public class ExperimentDesignParser extends MexicoXmlParser<ExperimentDesign> implements MexicoXmlConstant {
- protected Map<String, Factor> factors;
+ /**
+ * Cache of factors indexed by their id.
+ *
+ * @since 0.1
+ */
+ protected Map<String, Factor> factorCache;
- public ExperimentDesignParser(File file) throws FileNotFoundException, UnsupportedEncodingException {
- super(file);
- factors = Maps.newLinkedHashMap();
- }
-
@Override
protected ExperimentDesign parseModel(XmlPullParser parser) throws IOException, XmlPullParserException, ParseException {
+
+ factorCache = Maps.newLinkedHashMap();
+
ExperimentDesign model = new ExperimentDesignImpl();
parseExperimentDesignMeta(parser, model);
@@ -76,11 +77,12 @@
return model;
}
- protected void parseExperimentDesignMeta(XmlPullParser parser, ExperimentDesign model) throws IOException, XmlPullParserException, ParseException {
+ protected void parseExperimentDesignMeta(XmlPullParser parser,
+ ExperimentDesign model) throws IOException, XmlPullParserException, ParseException {
// file must start with experiment design tag
if (parser.nextTag() == XmlPullParser.START_TAG &&
- !parserEqual(parser, EXPERIMENT_DESIGN)) {
+ !parserEqual(parser, EXPERIMENT_DESIGN)) {
throw new MexicoTechnicalException("Experiment design file must start with " + EXPERIMENT_DESIGN + " tag");
}
@@ -101,8 +103,7 @@
model.setLicence(license);
// parse description
- if (parser.nextTag() == XmlPullParser.START_TAG &&
- parserEqual(parser, EXPERIMENT_DESIGN_DESCRIPTION)) {
+ if (testNextStartTag(parser, EXPERIMENT_DESIGN_DESCRIPTION)) {
model.setDescription(parser.nextText());
@@ -111,16 +112,14 @@
}
}
- protected void parseFactors(XmlPullParser parser, ExperimentDesign model) throws IOException, XmlPullParserException {
+ protected void parseFactors(XmlPullParser parser,
+ ExperimentDesign model) throws IOException, XmlPullParserException {
// factors
- int eventType = parser.getEventType();
- if (eventType == XmlPullParser.START_TAG &&
- parserEqual(parser, FACTORS)) {
+ if (testCurrentStartTag(parser, FACTORS)) {
List<Factor> factors = Lists.newArrayList();
- while (!(parser.nextTag() == XmlPullParser.END_TAG &&
- parserEqual(parser, FACTORS))) {
+ while (!testNextEndTag(parser, FACTORS)) {
// factor
factors.add(parseFactor(parser));
@@ -145,28 +144,23 @@
factor.setName(name);
// while all child attributes is not parsed
- while (!(parser.getEventType() == XmlPullParser.END_TAG &&
- parserEqual(parser, FACTOR))) {
+ while (!(testCurrentEndTag(parser, FACTOR))) {
// parse description
- int eventType = parser.nextTag();
- if (eventType == XmlPullParser.START_TAG &&
- parserEqual(parser, FACTOR_DESCRIPTION)) {
+ if (testNextStartTag(parser, FACTOR_DESCRIPTION)) {
factor.setDescription(parser.nextText());
// read function close tag
- eventType = parser.nextTag();
+ parser.nextTag();
}
// domain
- if (eventType == XmlPullParser.START_TAG &&
- parserEqual(parser, DOMAIN)) {
+ if (testCurrentStartTag(parser, DOMAIN)) {
factor.setDomain(parseDomain(parser));
}
// features
- if (parser.getEventType() == XmlPullParser.START_TAG &&
- parserEqual(parser, FEATURE)) {
+ if (testCurrentStartTag(parser, FEATURE)) {
List<Feature> features = Lists.newArrayList();
@@ -186,7 +180,7 @@
}
// keep factors
- factors.put(factor.getId(), factor);
+ factorCache.put(factor.getId(), factor);
return factor;
}
@@ -213,13 +207,10 @@
domain.setNominalValue(getTypedValue(domaineType, nominaleValue));
// while all child attributes is not parsed
- while (!(parser.getEventType() == XmlPullParser.END_TAG &&
- parserEqual(parser, DOMAIN))) {
+ while (!(testCurrentEndTag(parser, DOMAIN))) {
// distributionParameters
- int eventType = parser.nextTag();
- if (eventType == XmlPullParser.START_TAG &&
- parserEqual(parser, DOMAIN_DISTRIBUTION_PARAMETER)) {
+ if (testNextStartTag(parser, DOMAIN_DISTRIBUTION_PARAMETER)) {
List<DistributionParameter> distributionParameters = Lists.newArrayList();
while (parserEqual(parser, DOMAIN_DISTRIBUTION_PARAMETER)) {
@@ -244,14 +235,13 @@
parser.nextTag();
// read next start tag
- eventType = parser.nextTag();
+ parser.nextTag();
}
domain.setDistributionParameter(distributionParameters);
}
// level
- if (eventType == XmlPullParser.START_TAG &&
- parserEqual(parser, DOMAIN_LEVEL)) {
+ if (testCurrentStartTag(parser, DOMAIN_LEVEL)) {
List<Level> levels = Lists.newArrayList();
while (parserEqual(parser, DOMAIN_LEVEL)) {
@@ -292,7 +282,7 @@
return feature;
}
- public Map<String, Factor> getFactors() {
- return factors;
+ public Map<String, Factor> getFactorCache() {
+ return factorCache;
}
}
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/InputDesignParser.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/InputDesignParser.java 2012-10-07 12:00:10 UTC (rev 85)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/InputDesignParser.java 2012-10-07 16:22:58 UTC (rev 86)
@@ -25,35 +25,23 @@
package fr.reseaumexico.model.parser;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
import fr.reseaumexico.model.ExperimentDesign;
-import fr.reseaumexico.model.Factor;
import fr.reseaumexico.model.InputDesign;
import fr.reseaumexico.model.InputDesignImpl;
-import fr.reseaumexico.model.MexicoTechnicalException;
import fr.reseaumexico.model.Scenario;
-import fr.reseaumexico.model.ScenarioImpl;
-import fr.reseaumexico.model.ValueType;
-import java.io.File;
-import java.io.FileNotFoundException;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.util.List;
-import java.util.Map;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR;
import static fr.reseaumexico.model.MexicoXmlConstant.INPUT_DESIGN;
import static fr.reseaumexico.model.MexicoXmlConstant.INPUT_DESIGN_DATE;
import static fr.reseaumexico.model.MexicoXmlConstant.SCENARIO;
-import static fr.reseaumexico.model.MexicoXmlConstant.SCENARIO_FACTOR_VALUES;
-import static fr.reseaumexico.model.MexicoXmlConstant.SCENARIO_NAME;
-import static fr.reseaumexico.model.MexicoXmlConstant.SCENARIO_ORDER_NUMBER;
/**
- * Parser for input design xml files, build a {@link InputDesign} model
+ * Parser for input design xml files, build a {@link InputDesign} model.
*
* @author sletellier <letellier(a)codelutin.com>
* @since 0.1
@@ -62,9 +50,9 @@
protected ExperimentDesignParser experimentDesignParser;
- public InputDesignParser(File file) throws FileNotFoundException, UnsupportedEncodingException {
- super(file);
- experimentDesignParser = new ExperimentDesignParser(file);
+ public InputDesignParser() {
+ super();
+ experimentDesignParser = new ExperimentDesignParser();
}
@Override
@@ -85,72 +73,31 @@
protected void parseInputDesignMeta(XmlPullParser parser, InputDesign model) throws IOException, XmlPullParserException, ParseException {
// file must start with input design tag
- if (parser.next() == XmlPullParser.START_TAG &&
- !parserEqual(parser, INPUT_DESIGN)) {
- throw new MexicoTechnicalException("Input design file must start with " + INPUT_DESIGN + " tag");
- }
+ checkStartFile(
+ parser, INPUT_DESIGN,
+ "Input design file must start with " + INPUT_DESIGN + " tag");
// parse date
String dateAsString = parser.getAttributeValue(null, INPUT_DESIGN_DATE);
model.setDate(parseDate(dateAsString));
}
- protected void parseScenarios(XmlPullParser parser, InputDesign model) throws IOException, XmlPullParserException {
+ protected void parseScenarios(XmlPullParser parser, InputDesign model) throws IOException, XmlPullParserException, ParseException {
// scenarios
- if (parser.nextTag() == XmlPullParser.START_TAG &&
- parserEqual(parser, SCENARIO)) {
+ if (testNextStartTag(parser, SCENARIO)) {
+ ScenarioXmlParser scenarioXmlParser =
+ new ScenarioXmlParser(
+ experimentDesignParser.getFactorCache(), false);
+
List<Scenario> scenarios = Lists.newArrayList();
- while (!(parser.getEventType() == XmlPullParser.END_TAG &&
- parserEqual(parser, INPUT_DESIGN))) {
+ while (!(testCurrentEndTag(parser, INPUT_DESIGN))) {
- // factor
- scenarios.add(parseScenario(parser));
+ Scenario scenario = scenarioXmlParser.parseModel(parser);
+ scenarios.add(scenario);
}
model.setScenario(scenarios);
}
}
-
- protected Scenario parseScenario(XmlPullParser parser) throws IOException, XmlPullParserException {
- Scenario scenario = new ScenarioImpl();
-
- // name
- String name = parser.getAttributeValue(null, SCENARIO_NAME);
- scenario.setName(name);
-
- // orderValue
- String orderValue = parser.getAttributeValue(null, SCENARIO_ORDER_NUMBER);
- scenario.setOrderNumber(Integer.parseInt(orderValue));
-
- // factor values
- if (parser.nextTag() == XmlPullParser.START_TAG &&
- parserEqual(parser, SCENARIO_FACTOR_VALUES)) {
-
- Map<Factor, Object> factorValues = Maps.newLinkedHashMap();
- while (!(parser.getEventType() == XmlPullParser.END_TAG &&
- parserEqual(parser, SCENARIO))) {
-
- // get factor
- String factorId = parser.getAttributeValue(null, FACTOR);
- Factor factor = experimentDesignParser.getFactors().get(factorId);
-
- ValueType valueType = factor.getDomain().getValueType();
-
- // factor value
- String value = parser.nextText();
-
- factorValues.put(factor, getTypedValue(valueType, value));
-
- // read next tag
- parser.nextTag();
- }
- scenario.setFactorValues(factorValues);
- }
-
- // read next tag
- parser.nextTag();
-
- return scenario;
- }
}
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/MexicoXmlParser.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/MexicoXmlParser.java 2012-10-07 12:00:10 UTC (rev 85)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/MexicoXmlParser.java 2012-10-07 16:22:58 UTC (rev 86)
@@ -27,9 +27,7 @@
import fr.reseaumexico.model.DateFormatFactory;
import fr.reseaumexico.model.MexicoUtil;
import fr.reseaumexico.model.ValueType;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.UnsupportedEncodingException;
+
import java.text.ParseException;
import java.util.Date;
@@ -41,10 +39,6 @@
*/
public abstract class MexicoXmlParser<M> extends XmlParser<M> {
- public MexicoXmlParser(File file) throws FileNotFoundException, UnsupportedEncodingException {
- super(file);
- }
-
public Date parseDate(String toParse) throws ParseException {
return DateFormatFactory.getMexicoDateFormat().parse(toParse);
}
Added: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ScenarioXmlParser.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ScenarioXmlParser.java (rev 0)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ScenarioXmlParser.java 2012-10-07 16:22:58 UTC (rev 86)
@@ -0,0 +1,133 @@
+package fr.reseaumexico.model.parser;
+
+/*
+ * #%L
+ * JMexico :: Model
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 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%
+ */
+
+import com.google.common.collect.Maps;
+import fr.reseaumexico.model.Factor;
+import fr.reseaumexico.model.Scenario;
+import fr.reseaumexico.model.ScenarioImpl;
+import fr.reseaumexico.model.ValueType;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.Map;
+
+import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR;
+import static fr.reseaumexico.model.MexicoXmlConstant.SCENARIO;
+import static fr.reseaumexico.model.MexicoXmlConstant.SCENARIO_FACTOR_VALUES;
+import static fr.reseaumexico.model.MexicoXmlConstant.SCENARIO_NAME;
+import static fr.reseaumexico.model.MexicoXmlConstant.SCENARIO_ORDER_NUMBER;
+
+/**
+ * Parser for input design xml files, build a {@link Scenario} model.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.7
+ */
+public class ScenarioXmlParser extends MexicoXmlParser<Scenario> {
+
+ /**
+ * Factors in input design model indexed by their id.
+ *
+ * @since 0.7
+ */
+ protected final Map<String, Factor> factors;
+
+ /**
+ * Flag to know if parser is used standalone (says to import a scenario) or
+ * as part of input designer parser.
+ *
+ * @since 0.7
+ */
+ protected final boolean standalone;
+
+ public ScenarioXmlParser(Map<String, Factor> factors) {
+ this(factors, true);
+ }
+
+ public ScenarioXmlParser(Map<String, Factor> factors, boolean standalone) {
+ this.factors = factors;
+ this.standalone = standalone;
+ }
+
+ @Override
+ protected Scenario parseModel(XmlPullParser parser) throws IOException, XmlPullParserException, ParseException {
+
+ if (standalone) {
+ // file must start with input design tag
+ checkStartFile(
+ parser, SCENARIO,
+ "Scenario file must start with " + SCENARIO + " tag");
+ }
+
+ Scenario scenario = new ScenarioImpl();
+
+ // name
+ String name = parser.getAttributeValue(null, SCENARIO_NAME);
+ scenario.setName(name);
+
+ // orderValue
+ String orderValue = parser.getAttributeValue(null, SCENARIO_ORDER_NUMBER);
+ scenario.setOrderNumber(Integer.parseInt(orderValue));
+
+ // factor values
+ if (testNextStartTag(parser, SCENARIO_FACTOR_VALUES)) {
+
+ Map<Factor, Object> factorValues = Maps.newLinkedHashMap();
+ while (!(testCurrentEndTag(parser, SCENARIO))) {
+
+ // get factor
+ String factorId = parser.getAttributeValue(null, FACTOR);
+ Factor factor = factors.get(factorId);
+
+ if (factor == null) {
+ throw new IOException(
+ "Could not find factor named '" +
+ factorId + "' at line " + parser.getLineNumber());
+ }
+ ValueType valueType = factor.getDomain().getValueType();
+
+ // factor value
+ String value = parser.nextText();
+
+ factorValues.put(factor, getTypedValue(valueType, value));
+
+ // read next tag
+ parser.nextTag();
+ }
+ scenario.setFactorValues(factorValues);
+ }
+
+ if (!standalone) {
+
+ // read next tag
+ parser.nextTag();
+ }
+
+ return scenario;
+ }
+}
Property changes on: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ScenarioXmlParser.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/XmlParser.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/XmlParser.java 2012-10-07 12:00:10 UTC (rev 85)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/XmlParser.java 2012-10-07 16:22:58 UTC (rev 86)
@@ -24,17 +24,19 @@
*/
package fr.reseaumexico.model.parser;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
-import java.text.ParseException;
+import com.google.common.base.Charsets;
+import com.google.common.io.Closeables;
+import com.google.common.io.Files;
+import fr.reseaumexico.model.MexicoTechnicalException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+import java.text.ParseException;
+
/**
* Abstract parser to get model from xml file using XPP3
*
@@ -42,20 +44,32 @@
* @see XmlPullParser
* @since 0.1
*/
-public abstract class XmlParser<M> extends InputStreamReader {
+public abstract class XmlParser<M> {
- public XmlParser(File file) throws FileNotFoundException, UnsupportedEncodingException {
- super(new FileInputStream(file), "UTF-8");
- }
+ public M getModel(File file) throws XmlPullParserException, IOException, ParseException {
- public M getModel() throws XmlPullParserException, IOException, ParseException {
+ Reader reader = Files.newReader(file, Charsets.UTF_8);
- XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
- XmlPullParser parser = factory.newPullParser();
- parser.setInput(this);
+ try {
- // parse model
- return parseModel(parser);
+ // create xpp parser
+ XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
+ XmlPullParser parser = factory.newPullParser();
+ parser.setInput(reader);
+
+ // parse model
+ M result = parseModel(parser);
+
+ // close reader
+ reader.close();
+
+ // return model
+ return result;
+ } finally {
+
+ // make sure model is closed
+ Closeables.closeQuietly(reader);
+ }
}
protected abstract M parseModel(XmlPullParser parser) throws IOException, XmlPullParserException, ParseException;
@@ -64,4 +78,48 @@
String tagName = parser.getName();
return tagName.equals(name);
}
+
+ /**
+ * Check that parser starts with the given tag.
+ *
+ * @param parser xpp parser used
+ * @param requiredTag required first tag
+ * @param errorMessage error message to send if required tag was not found
+ * @throws IOException
+ * @throws XmlPullParserException
+ */
+ protected void checkStartFile(XmlPullParser parser,
+ String requiredTag,
+ String errorMessage) throws IOException, XmlPullParserException {
+
+ // file must start with input design tag
+ if (parser.next() == XmlPullParser.START_TAG &&
+ !parserEqual(parser, requiredTag)) {
+ throw new MexicoTechnicalException(errorMessage);
+ }
+ }
+
+ protected boolean testNextStartTag(XmlPullParser parser,
+ String requiredTag) throws IOException, XmlPullParserException {
+ return parser.nextTag() == XmlPullParser.START_TAG &&
+ parserEqual(parser, requiredTag);
+ }
+
+ protected boolean testNextEndTag(XmlPullParser parser,
+ String requiredTag) throws IOException, XmlPullParserException {
+ return parser.nextTag() == XmlPullParser.END_TAG &&
+ parserEqual(parser, requiredTag);
+ }
+
+ protected boolean testCurrentEndTag(XmlPullParser parser,
+ String requiredTag) throws IOException, XmlPullParserException {
+ return parser.getEventType() == XmlPullParser.END_TAG &&
+ parserEqual(parser, requiredTag);
+ }
+
+ protected boolean testCurrentStartTag(XmlPullParser parser,
+ String requiredTag) throws IOException, XmlPullParserException {
+ return parser.getEventType() == XmlPullParser.START_TAG &&
+ parserEqual(parser, requiredTag);
+ }
}
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ExperimentDesignXmlWriter.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ExperimentDesignXmlWriter.java 2012-10-07 12:00:10 UTC (rev 85)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ExperimentDesignXmlWriter.java 2012-10-07 16:22:58 UTC (rev 86)
@@ -29,11 +29,11 @@
import fr.reseaumexico.model.ExperimentDesign;
import fr.reseaumexico.model.Factor;
import fr.reseaumexico.model.Level;
-import java.io.File;
+import org.apache.commons.lang3.StringUtils;
+
import java.io.IOException;
import java.util.Collection;
import java.util.Date;
-import org.apache.commons.lang3.StringUtils;
/**
* Writer to create experiment design file with {@link ExperimentDesign} model
@@ -43,8 +43,8 @@
*/
public class ExperimentDesignXmlWriter extends MexicoXmlWriter<ExperimentDesign> {
- public ExperimentDesignXmlWriter(File file, ExperimentDesign model) throws IOException {
- super(file, model);
+ public ExperimentDesignXmlWriter(ExperimentDesign model) throws IOException {
+ super(model);
}
@Override
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/InputDesignXmlWriter.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/InputDesignXmlWriter.java 2012-10-07 12:00:10 UTC (rev 85)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/InputDesignXmlWriter.java 2012-10-07 16:22:58 UTC (rev 86)
@@ -24,14 +24,12 @@
*/
package fr.reseaumexico.model.writer;
-import fr.reseaumexico.model.Factor;
import fr.reseaumexico.model.InputDesign;
import fr.reseaumexico.model.Scenario;
-import java.io.File;
+
import java.io.IOException;
import java.util.Collection;
import java.util.Date;
-import java.util.Map;
/**
* Writer to create input design file with {@link InputDesign} model
@@ -43,9 +41,9 @@
protected ExperimentDesignXmlWriter experimentDesignXmlWriter;
- public InputDesignXmlWriter(File file, InputDesign model) throws IOException {
- super(file, model);
- experimentDesignXmlWriter = new ExperimentDesignXmlWriter(file, model.getExperimentDesign());
+ public InputDesignXmlWriter(InputDesign model) throws IOException {
+ super(model);
+ experimentDesignXmlWriter = new ExperimentDesignXmlWriter(model.getExperimentDesign());
}
@Override
@@ -73,20 +71,11 @@
Collection<Scenario> scenarios = model.getScenario();
if (scenarios != null) {
for (Scenario scenario : scenarios) {
- XmlNode scenariosXmlNode = XmlNode.createElement(rootXmlNode, SCENARIO);
- addParameter(scenariosXmlNode, SCENARIO_NAME, scenario.getName());
- addParameter(scenariosXmlNode, SCENARIO_ORDER_NUMBER, scenario.getOrderNumber());
- // factor values
- Map<Factor, Object> factorValues = scenario.getFactorValues();
- for (Map.Entry<Factor, Object> entry : factorValues.entrySet()) {
- Object value = entry.getValue();
- XmlNode factorValueXmlNode = XmlNode.createElement(scenariosXmlNode, SCENARIO_FACTOR_VALUES, String.valueOf(value));
- factorValueXmlNode.addAttribute(FACTOR, entry.getKey().getId());
- }
+ ScenarioXmlWriter scenarioXmlWriter = new ScenarioXmlWriter(scenario);
- // features
- addAllFeature(scenariosXmlNode, scenario.getFeature());
+ XmlNode scenariosXmlNode = scenarioXmlWriter.getRootElement();
+ rootXmlNode.add(scenariosXmlNode);
}
}
}
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/MexicoXmlWriter.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/MexicoXmlWriter.java 2012-10-07 12:00:10 UTC (rev 85)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/MexicoXmlWriter.java 2012-10-07 16:22:58 UTC (rev 86)
@@ -40,8 +40,8 @@
*/
public abstract class MexicoXmlWriter<M> extends XmlWriter<M> implements MexicoXmlConstant {
- protected MexicoXmlWriter(File file, M model) throws IOException {
- super(file, model);
+ protected MexicoXmlWriter(M model) {
+ super(model);
}
public void addParameter(XmlNode xmlNode, String parameterName, Object value) {
Added: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ScenarioXmlWriter.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ScenarioXmlWriter.java (rev 0)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ScenarioXmlWriter.java 2012-10-07 16:22:58 UTC (rev 86)
@@ -0,0 +1,70 @@
+package fr.reseaumexico.model.writer;
+
+/*
+ * #%L
+ * JMexico :: Model
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 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%
+ */
+
+import fr.reseaumexico.model.Factor;
+import fr.reseaumexico.model.Scenario;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * Writes a scenario from a input design as a xml file.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.7
+ */
+public class ScenarioXmlWriter extends MexicoXmlWriter<Scenario> {
+
+ public static void write(Scenario model, File exportFile) throws IOException {
+ ScenarioXmlWriter writer = new ScenarioXmlWriter(model);
+ writer.write(exportFile);
+ }
+
+ public ScenarioXmlWriter(Scenario model) {
+ super(model);
+ }
+
+ @Override
+ public XmlNode getRootElement() {
+ XmlNode rootXmlNode = new XmlNode(SCENARIO);
+ addParameter(rootXmlNode, Scenario.PROPERTY_NAME, model.getName());
+ addParameter(rootXmlNode, Scenario.PROPERTY_ORDER_NUMBER, model.getOrderNumber());
+
+ // factor values
+ Map<Factor, Object> factorValues = model.getFactorValues();
+ for (Map.Entry<Factor, Object> entry : factorValues.entrySet()) {
+ Object value = entry.getValue();
+ XmlNode factorValueXmlNode = XmlNode.createElement(
+ rootXmlNode, Scenario.PROPERTY_FACTOR_VALUES, String.valueOf(value));
+ factorValueXmlNode.addAttribute(FACTOR, entry.getKey().getId());
+ }
+
+ // features
+ addAllFeature(rootXmlNode, model.getFeature());
+ return rootXmlNode;
+ }
+}
Property changes on: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ScenarioXmlWriter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/XmlWriter.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/XmlWriter.java 2012-10-07 12:00:10 UTC (rev 85)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/XmlWriter.java 2012-10-07 16:22:58 UTC (rev 86)
@@ -24,10 +24,13 @@
*/
package fr.reseaumexico.model.writer;
+import com.google.common.base.Charsets;
+import com.google.common.io.Closeables;
+import com.google.common.io.Files;
+
import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.OutputStreamWriter;
+import java.io.Writer;
/**
* Abstract writer to create xml files using {@link XmlNode}
@@ -35,23 +38,37 @@
* @author sletellier <letellier(a)codelutin.com>
* @since 0.1
*/
-public abstract class XmlWriter<M> extends OutputStreamWriter {
+public abstract class XmlWriter<M> {
public static final int INDENT = 2;
protected M model;
- public XmlWriter(File file, M model) throws IOException {
- super(new FileOutputStream(file), "UTF-8");
+ protected abstract XmlNode getRootElement();
+
+ protected XmlWriter(M model) {
this.model = model;
}
- public void write() throws IOException {
+ public void write(File file) throws IOException {
- String toWrite = getRootElement().toXml(INDENT);
- write(toWrite);
+ Writer writer = Files.newWriter(file, Charsets.UTF_8);
+ try {
+
+ // get root xml node
+ XmlNode rootElement = getRootElement();
+
+ // transform it to string
+ String toWrite = rootElement.toXml(INDENT);
+
+ // write it into file
+ writer.write(toWrite);
+
+ // close writer
+ writer.close();
+ } finally {
+ Closeables.closeQuietly(writer);
+ }
}
- public abstract XmlNode getRootElement();
-
}
1
0
r85 - trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor
by tchemit@users.forge.codelutin.com 07 Oct '12
by tchemit@users.forge.codelutin.com 07 Oct '12
07 Oct '12
Author: tchemit
Date: 2012-10-07 14:00:10 +0200 (Sun, 07 Oct 2012)
New Revision: 85
Url: http://forge.codelutin.com/repositories/revision/jmexico/85
Log:
fixes #1575: Improve editor (improve bindings)
Modified:
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java
Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java 2012-10-07 11:38:35 UTC (rev 84)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java 2012-10-07 12:00:10 UTC (rev 85)
@@ -65,7 +65,6 @@
protected final AbstractTableModel tableModel;
public InputDesignEditorModel() {
-
tableModel = new InputDesignTableModel();
}
@@ -96,26 +95,29 @@
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();
+ fireScenarioModified();
}
@Override
public void scenarioAdded(InputDesignScenarioEvent event) {
- tableModel.fireTableStructureChanged();
+ fireScenarioModified();
}
@Override
public void scenarioRemoved(InputDesignScenarioEvent event) {
- tableModel.fireTableStructureChanged();
+ fireScenarioModified();
}
public Collection<Scenario> getScenario() {
return inputDesign == null ? null : inputDesign.getScenario();
}
+ protected void fireScenarioModified() {
+ firePropertyChange(PROPERTY_SCENARIO_EXISTS, null, isScenarioExists());
+ tableModel.fireTableStructureChanged();
+ }
+
protected class InputDesignTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
1
0
r84 - trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor
by tchemit@users.forge.codelutin.com 07 Oct '12
by tchemit@users.forge.codelutin.com 07 Oct '12
07 Oct '12
Author: tchemit
Date: 2012-10-07 13:38:35 +0200 (Sun, 07 Oct 2012)
New Revision: 84
Url: http://forge.codelutin.com/repositories/revision/jmexico/84
Log:
add myself in copyright
immrove factor decorator (fallback on id if no name found)
Modified:
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java
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/java/fr/reseaumexico/editor/InputDesignEditorModel.java
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/MexicoDecoratorProvider.java
Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java 2012-10-07 11:30:09 UTC (rev 83)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java 2012-10-07 11:38:35 UTC (rev 84)
@@ -6,7 +6,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin
+ * Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin, Tony Chemit
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
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 11:30:09 UTC (rev 83)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.css 2012-10-07 11:38:35 UTC (rev 84)
@@ -4,7 +4,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin
+ * Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin, Tony Chemit
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
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 11:30:09 UTC (rev 83)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.jaxx 2012-10-07 11:38:35 UTC (rev 84)
@@ -4,7 +4,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin
+ Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin, Tony Chemit
%%
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
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 11:30:09 UTC (rev 83)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.css 2012-10-07 11:38:35 UTC (rev 84)
@@ -4,7 +4,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin
+ * Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin, Tony Chemit
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
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 11:30:09 UTC (rev 83)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.jaxx 2012-10-07 11:38:35 UTC (rev 84)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2011 Réseau Mexico, Codelutin
+ Copyright (C) 2011 Réseau Mexico, Codelutin, Tony Chemit
%%
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
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 11:30:09 UTC (rev 83)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorHandler.java 2012-10-07 11:38:35 UTC (rev 84)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2011 Réseau Mexico, Codelutin
+ * Copyright (C) 2011 Réseau Mexico, Codelutin, Tony Chemit
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -47,6 +47,7 @@
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @author tchemit <chemit(a)codelutin.com>
* @since 0.1
*/
public class InputDesignEditorHandler {
Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java 2012-10-07 11:30:09 UTC (rev 83)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java 2012-10-07 11:38:35 UTC (rev 84)
@@ -1,5 +1,29 @@
package fr.reseaumexico.editor;
+/*
+ * #%L
+ * JMexico :: Swing Editor
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin, Tony Chemit
+ * %%
+ * 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%
+ */
+
import com.google.common.collect.Lists;
import fr.reseaumexico.model.Factor;
import fr.reseaumexico.model.InputDesign;
@@ -24,7 +48,7 @@
* Model of {@link InputDesignEditor} UI.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 1.6
+ * @since 0.7
*/
public class InputDesignEditorModel extends AbstractSerializableBean implements InputDesignScenarioListener {
Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorModel.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/MexicoDecoratorProvider.java
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/MexicoDecoratorProvider.java 2012-10-07 11:30:09 UTC (rev 83)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/MexicoDecoratorProvider.java 2012-10-07 11:38:35 UTC (rev 84)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin
+ * Copyright (C) 2011 - 2012 Réseau Mexico, Codelutin, Tony Chemit
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -25,15 +25,39 @@
package fr.reseaumexico.editor;
import fr.reseaumexico.model.Factor;
+import org.apache.commons.lang3.StringUtils;
+import org.nuiton.util.decorator.Decorator;
import org.nuiton.util.decorator.DecoratorProvider;
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.1
*/
public class MexicoDecoratorProvider extends DecoratorProvider {
@Override
protected void loadDecorators() {
- registerJXPathDecorator(Factor.class, "${" + Factor.PROPERTY_NAME + "}$s");
+ registerDecorator(new Decorator<Factor>(Factor.class) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String toString(Object bean) {
+ String result = null;
+ if (bean != null) {
+ Factor f = (Factor) bean;
+ if (StringUtils.isNotEmpty(f.getName())) {
+
+ // use name
+ result = f.getName();
+ } else {
+
+ // fallback on id
+ result = f.getId();
+ }
+ }
+ return result;
+ }
+ });
}
}
1
0
r83 - in trunk/jmexico-editor/src/main: java/fr/reseaumexico/editor resources/i18n
by tchemit@users.forge.codelutin.com 07 Oct '12
by tchemit@users.forge.codelutin.com 07 Oct '12
07 Oct '12
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(a)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(a)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
1
0
r82 - trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor
by tchemit@users.forge.codelutin.com 07 Oct '12
by tchemit@users.forge.codelutin.com 07 Oct '12
07 Oct '12
Author: tchemit
Date: 2012-10-07 11:50:46 +0200 (Sun, 07 Oct 2012)
New Revision: 82
Url: http://forge.codelutin.com/repositories/revision/jmexico/82
Log:
revert actions layout
Modified:
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.css
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.jaxx
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-06 19:11:43 UTC (rev 81)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.css 2012-10-07 09:50:46 UTC (rev 82)
@@ -27,11 +27,6 @@
rowHeight:20;
}
-#editorToolBar {
- floatable:false;
- opaque:false;
-}
-
#addScenarioButton {
text:"jmexico.action.add.scenario";
}
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-06 19:11:43 UTC (rev 81)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.jaxx 2012-10-07 09:50:46 UTC (rev 82)
@@ -54,14 +54,13 @@
<JXTable id='inputDesignTable'/>
</JScrollPane>
- <JToolBar id='editorToolBar' constraints='BorderLayout.SOUTH'
- layout='{new GridLayout(1,0)}'>
- <JButton id='addScenarioButton'
+ <JPanel id='editorToolBar' constraints='BorderLayout.SOUTH'>
+ <JButton id='addScenarioButton' constraints='BorderLayout.WEST'
onActionPerformed='getHandler().addScenario()'/>
- <JButton id='removeScenarioButton'
+ <JButton id='removeScenarioButton' constraints='BorderLayout.EAST'
onActionPerformed='getHandler().removeScenario()'/>
- <JButton id='cloneScenarioButton'
+ <JButton id='cloneScenarioButton' constraints='BorderLayout.EAST'
onActionPerformed='getHandler().cloneScenario()'/>
- </JToolBar>
+ </JPanel>
</JPanel>
1
0
r81 - trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor
by tchemit@users.forge.codelutin.com 06 Oct '12
by tchemit@users.forge.codelutin.com 06 Oct '12
06 Oct '12
Author: tchemit
Date: 2012-10-06 21:11:43 +0200 (Sat, 06 Oct 2012)
New Revision: 81
Url: http://forge.codelutin.com/repositories/revision/jmexico/81
Log:
fix NPE
Modified:
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorHandler.java
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-06 14:56:19 UTC (rev 80)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorHandler.java 2012-10-06 19:11:43 UTC (rev 81)
@@ -32,6 +32,7 @@
import fr.reseaumexico.model.Scenario;
import fr.reseaumexico.model.ScenarioImpl;
import jaxx.runtime.swing.renderer.DecoratorProviderTableCellRenderer;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import javax.swing.JOptionPane;
@@ -270,9 +271,11 @@
protected int getMaxOrder(Collection<Scenario> scenarios) {
int maxOrder = 0;
- for (Scenario scenario : scenarios) {
- int orderNumber = scenario.getOrderNumber();
- maxOrder = Math.max(maxOrder, orderNumber);
+ if (CollectionUtils.isNotEmpty(scenarios)) {
+ for (Scenario scenario : scenarios) {
+ int orderNumber = scenario.getOrderNumber();
+ maxOrder = Math.max(maxOrder, orderNumber);
+ }
}
return maxOrder;
}
1
0
r80 - in trunk: . jmexico-editor jmexico-editor/src jmexico-editor/src/main/java/fr/reseaumexico/editor jmexico-editor/src/main/resources/i18n jmexico-editor-demo jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo
by tchemit@users.forge.codelutin.com 06 Oct '12
by tchemit@users.forge.codelutin.com 06 Oct '12
06 Oct '12
Author: tchemit
Date: 2012-10-06 16:56:19 +0200 (Sat, 06 Oct 2012)
New Revision: 80
Url: http://forge.codelutin.com/repositories/revision/jmexico/80
Log:
fixes #1573: Add Clone scenario operation
fixes #1574: Improve jaxx files
refs #1572: Upgrade some librairies and plugins (optimize dependencies)
Added:
trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java
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
Removed:
trunk/jmexico-editor/src/site/
Modified:
trunk/jmexico-editor-demo/pom.xml
trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUI.jaxx
trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUIHandler.java
trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUIModel.java
trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/RunMexicoEditorDemo.java
trunk/jmexico-editor/pom.xml
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/java/fr/reseaumexico/editor/InputDesignTableModel.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
trunk/pom.xml
Modified: trunk/jmexico-editor/pom.xml
===================================================================
--- trunk/jmexico-editor/pom.xml 2012-10-06 11:29:06 UTC (rev 79)
+++ trunk/jmexico-editor/pom.xml 2012-10-06 14:56:19 UTC (rev 80)
@@ -65,6 +65,11 @@
<dependency>
<groupId>org.swinglabs.swingx</groupId>
+ <artifactId>swingx-common</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.swinglabs.swingx</groupId>
<artifactId>swingx-core</artifactId>
</dependency>
Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java (rev 0)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java 2012-10-06 14:56:19 UTC (rev 80)
@@ -0,0 +1,82 @@
+package fr.reseaumexico.editor;
+
+/*
+ * #%L
+ * JMexico :: Swing Editor
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 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%
+ */
+
+import fr.reseaumexico.model.Scenario;
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import java.util.Collection;
+
+/**
+ * Model for clone scenario operation.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.7
+ */
+public class CloneScenarioModel extends AbstractSerializableBean {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Collection<Scenario> scenarios;
+
+ protected Scenario selectedScenario;
+
+ protected String scenarioName;
+
+ public Collection<Scenario> getScenarios() {
+ return scenarios;
+ }
+
+ public Scenario getSelectedScenario() {
+ return selectedScenario;
+ }
+
+ public String getScenarioName() {
+ return scenarioName;
+ }
+
+ public void setSelectedScenario(Scenario selectedScenario) {
+ Object oldValue = this.selectedScenario;
+ this.selectedScenario = selectedScenario;
+ firePropertyChange("selectedScenario", oldValue, selectedScenario);
+ }
+
+ public void setScenarioName(String scenarioName) {
+ Object oldValue = this.scenarioName;
+ this.scenarioName = scenarioName;
+ firePropertyChange("scenarioName", oldValue, scenarioName);
+ }
+
+ public void setScenarios(Collection<Scenario> scenarios) {
+ this.scenarios = scenarios;
+ firePropertyChange("scenarios", null, scenarios);
+ }
+
+ public void copyTo(CloneScenarioModel model) {
+ model.setScenarioName(getScenarioName());
+ model.setScenarios(getScenarios());
+ model.setSelectedScenario(getSelectedScenario());
+ }
+}
Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.css
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.css (rev 0)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.css 2012-10-06 14:56:19 UTC (rev 80)
@@ -0,0 +1,38 @@
+/*
+ * #%L
+ * JMexico :: Swing Editor
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 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%
+ */
+#scenarioNameLabel {
+ text:"jmexico.scenario.clone.name";
+}
+
+#scenarioNameEditor {
+ text:{model.getScenarioName()};
+}
+
+#selectedScenarioLabel {
+ text:"jmexico.scenario.clone.selected";
+}
+
+#selectedScenarioEditor {
+ selectedItem:{model.getSelectedScenario()};
+}
\ No newline at end of file
Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.jaxx
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.jaxx (rev 0)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.jaxx 2012-10-06 14:56:19 UTC (rev 80)
@@ -0,0 +1,59 @@
+<!--
+ #%L
+ JMexico :: Swing Editor
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2011 - 2012 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%
+ -->
+<Table id='panel' layout='{new BorderLayout()}'>
+
+ <CloneScenarioModel id='model'/>
+
+ <script>
+ <![CDATA[
+public void init(CloneScenarioModel model) {
+ model.copyTo(this.model);
+
+ // init selected scenario
+ SwingUtil.fillComboBox(selectedScenarioEditor,
+ model.getScenarios(),
+ model.getSelectedScenario());
+ }
+ ]]>
+ </script>
+
+ <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>
+ <JComboBox id='selectedScenarioEditor'
+ onItemStateChanged='InputDesignEditorHandler.onSelectedScenarioChanged(model, event)'/>
+ </cell>
+ </row>
+</Table>
Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/CloneScenarioPanel.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.css
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.css (rev 0)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.css 2012-10-06 14:56:19 UTC (rev 80)
@@ -0,0 +1,49 @@
+/*
+ * #%L
+ * JMexico :: Swing Editor
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 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%
+ */
+#inputDesignTable {
+ model:{getModel()};
+ columnControlVisible:true;
+ rowHeight:20;
+}
+
+#editorToolBar {
+ floatable:false;
+ opaque:false;
+}
+
+#addScenarioButton {
+ text:"jmexico.action.add.scenario";
+}
+
+#removeScenarioButton {
+ text:"jmexico.action.remove.scenario";
+}
+
+#cloneScenarioButton {
+ text:"jmexico.action.clone.scenario";
+}
+
+#selectedScenarioEditor {
+ selectedItem:{model.getSelectedScenario()};
+}
\ No newline at end of file
Property changes on: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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-06 11:29:06 UTC (rev 79)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditor.jaxx 2012-10-06 14:56:19 UTC (rev 80)
@@ -26,37 +26,18 @@
<import>
fr.reseaumexico.model.InputDesign
- fr.reseaumexico.model.Factor
- fr.reseaumexico.editor.InputDesignTableModel
- fr.reseaumexico.editor.factorValue.FactorValueCellEditor
- fr.reseaumexico.editor.factorValue.FactorValueCellRenderer
- fr.reseaumexico.editor.MexicoDecoratorProvider
- jaxx.runtime.swing.renderer.DecoratorProviderTableCellRenderer
org.jdesktop.swingx.JXTable
- javax.swing.JTable
</import>
- <InputDesignEditorHandler id='handler'/>
+ <InputDesignEditorHandler id='handler' constructorParams='this'/>
<InputDesignTableModel id='model' constructorParams='this'/>
- <FactorValueCellEditor id='cellEditor' constructorParams='this'/>
-
- <FactorValueCellRenderer id='cellRenderer' constructorParams='this'/>
-
<script>
<![CDATA[
private void $afterCompleteSetup() {
-
- // table renderer
- // TODO sletellier 20111221 : do on time for all, put in context ?
- MexicoDecoratorProvider mexicoDecoratorProvider = new MexicoDecoratorProvider();
- inputDesignTable.setDefaultRenderer(Factor.class, new DecoratorProviderTableCellRenderer(mexicoDecoratorProvider));
- inputDesignTable.setDefaultRenderer(Object.class, getCellRenderer());
-
- // cell editor
- inputDesignTable.setDefaultEditor(Object.class, getCellEditor());
+ getHandler().initUI();
}
public void setInputDesign(InputDesign inputDesign) {
@@ -70,21 +51,17 @@
</script>
<JScrollPane constraints='BorderLayout.CENTER'>
- <JXTable id='inputDesignTable'
- model='{getModel()}'
- columnControlVisible='true'
- rowHeight='20'/>
+ <JXTable id='inputDesignTable'/>
</JScrollPane>
- <JPanel id='factorActionPanel' constraints='BorderLayout.SOUTH'>
+ <JToolBar id='editorToolBar' constraints='BorderLayout.SOUTH'
+ layout='{new GridLayout(1,0)}'>
<JButton id='addScenarioButton'
- text='jmexico.add.scenario'
- constraints='BorderLayout.WEST'
- onActionPerformed='getHandler().addScenario(this)'/>
+ onActionPerformed='getHandler().addScenario()'/>
<JButton id='removeScenarioButton'
- text='jmexico.remove.scenario'
- constraints='BorderLayout.EAST'
- onActionPerformed='getHandler().removeScenario(this)'/>
- </JPanel>
+ onActionPerformed='getHandler().removeScenario()'/>
+ <JButton id='cloneScenarioButton'
+ onActionPerformed='getHandler().cloneScenario()'/>
+ </JToolBar>
</JPanel>
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-06 11:29:06 UTC (rev 79)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignEditorHandler.java 2012-10-06 14:56:19 UTC (rev 80)
@@ -25,14 +25,19 @@
package fr.reseaumexico.editor;
import com.google.common.collect.Maps;
+import fr.reseaumexico.editor.factorValue.FactorValueCellEditor;
+import fr.reseaumexico.editor.factorValue.FactorValueCellRenderer;
import fr.reseaumexico.model.Factor;
import fr.reseaumexico.model.InputDesign;
import fr.reseaumexico.model.Scenario;
import fr.reseaumexico.model.ScenarioImpl;
+import jaxx.runtime.swing.renderer.DecoratorProviderTableCellRenderer;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.swing.JOptionPane;
+import java.awt.event.ItemEvent;
import java.util.Collection;
import java.util.Map;
-import javax.swing.JOptionPane;
-import org.apache.commons.lang3.StringUtils;
import static org.nuiton.i18n.I18n._;
@@ -42,72 +47,98 @@
*/
public class InputDesignEditorHandler {
- public void addScenario(InputDesignEditor editor) {
- InputDesign inputDesign = editor.getInputDesign();
+ private final InputDesignEditor ui;
- String selectedName = JOptionPane.showInputDialog(editor,
+ public InputDesignEditorHandler(InputDesignEditor ui) {
+ this.ui = ui;
+ }
+
+ public void initUI() {
+
+ // table renderer
+ // TODO sletellier 20111221 : do on time for all, put in context ?
+ MexicoDecoratorProvider mexicoDecoratorProvider = new MexicoDecoratorProvider();
+ ui.inputDesignTable.setDefaultRenderer(Factor.class, new DecoratorProviderTableCellRenderer(mexicoDecoratorProvider));
+ ui.inputDesignTable.setDefaultRenderer(Object.class, new FactorValueCellRenderer(ui));
+
+ // cell editor
+ ui.inputDesignTable.setDefaultEditor(Object.class, new FactorValueCellEditor(ui));
+ }
+
+ public void addScenario() {
+ InputDesign inputDesign = ui.getInputDesign();
+
+ String selectedName = JOptionPane.showInputDialog(
+ ui,
_("jmexico.scenario.inputName"),
_("jmexico.scenario.inputName.title"),
JOptionPane.QUESTION_MESSAGE);
+ if (StringUtils.isBlank(selectedName)) {
+
+ JOptionPane.showMessageDialog(
+ ui,
+ _("jmexico.error.scenario.name.required"),
+ _("jmexico.error.title"),
+ JOptionPane.ERROR_MESSAGE);
+
+ return;
+ }
+
// if user enter name
- if (StringUtils.isNotBlank(selectedName)) {
- // check that name is never used
- Collection<Scenario> scenarios = inputDesign.getScenario();
+ // check that name is never used
+ Collection<Scenario> scenarios = inputDesign.getScenario();
- int maxOrder = 0;
+ if (scenarios != null) {
+ for (Scenario scenario : scenarios) {
+ if (selectedName.equalsIgnoreCase(scenario.getName())) {
- if (scenarios != null) {
- for (Scenario scenario : scenarios) {
- if (selectedName.equalsIgnoreCase(scenario.getName())) {
+ JOptionPane.showMessageDialog(
+ ui,
+ _("jmexico.error.title"),
+ _("jmexico.error.scenario.name.used", selectedName),
+ JOptionPane.ERROR_MESSAGE);
- JOptionPane.showMessageDialog(editor,
- _("jmexico.error.title"),
- _("jmexico.error.scenario.name.used"),
- JOptionPane.ERROR_MESSAGE);
-
- return;
- }
- int orderNumber = scenario.getOrderNumber();
- if (maxOrder < orderNumber) {
- maxOrder = orderNumber;
- }
+ return;
}
}
+ }
- // create new scenario
- Scenario scenarioToAdd = new ScenarioImpl();
- // set last order
- // TODO sletellier 20111219 : ask user order number
- scenarioToAdd.setOrderNumber(maxOrder + 1);
+ int maxOrder = getMaxOrder(scenarios);
- // set name
- scenarioToAdd.setName(selectedName);
+ // create new scenario
+ Scenario scenarioToAdd = new ScenarioImpl();
- // 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);
+ // set last order
+ // TODO sletellier 20111219 : ask user order number
+ scenarioToAdd.setOrderNumber(maxOrder + 1);
- inputDesign.addScenario(scenarioToAdd);
+ // 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);
}
+ scenarioToAdd.setFactorValues(factorValues);
+
+ inputDesign.addScenario(scenarioToAdd);
}
- public void removeScenario(InputDesignEditor editor) {
- InputDesign inputDesign = editor.getInputDesign();
+ public void removeScenario() {
+ InputDesign inputDesign = ui.getInputDesign();
// show scenario select dialog
Collection<Scenario> scenarios = inputDesign.getScenario();
Scenario scenario = (Scenario) JOptionPane.showInputDialog(
- editor,
+ ui,
_("jmexico.scenario.selectRemove"),
_("jmexico.scenario.selectRemove.title"),
- JOptionPane.PLAIN_MESSAGE,
+ JOptionPane.QUESTION_MESSAGE,
null,
scenarios.toArray(),
null);
@@ -117,4 +148,141 @@
inputDesign.removeScenario(scenario);
}
}
+
+ public void cloneScenario() {
+
+ InputDesign inputDesign = ui.getInputDesign();
+
+ Collection<Scenario> scenarios = inputDesign.getScenario();
+
+ CloneScenarioModel model = new CloneScenarioModel();
+ model.setScenarios(scenarios);
+
+ boolean accept = showCloneScenarioUI(model);
+
+ if (accept) {
+
+ // clone scenario
+
+ int maxOrder = getMaxOrder(scenarios);
+
+ Scenario scenarioToAdd = new ScenarioImpl();
+
+ // set last order
+ // TODO sletellier 20111219 : ask user order number
+ scenarioToAdd.setOrderNumber(maxOrder + 1);
+
+ // set name
+ scenarioToAdd.setName(model.getScenarioName());
+
+ Scenario selectedScenario = model.getSelectedScenario();
+
+ // create all factor values (clone selected scenario values)
+ Collection<Factor> factors = inputDesign.getExperimentDesign().getFactor();
+ Map<Factor, Object> factorValues = Maps.newLinkedHashMap();
+ for (Factor factor : factors) {
+ Object factorValue = selectedScenario.getFactorValue(factor);
+
+ factorValues.put(factor, factorValue);
+ }
+ scenarioToAdd.setFactorValues(factorValues);
+
+ inputDesign.addScenario(scenarioToAdd);
+ }
+ }
+
+ protected boolean showCloneScenarioUI(CloneScenarioModel model) {
+
+ // show ui
+
+ CloneScenarioPanel panel = new CloneScenarioPanel();
+ panel.init(model);
+
+ int response = JOptionPane.showConfirmDialog(
+ ui,
+ panel,
+ _("jmexico.scenario.clone.title"),
+ JOptionPane.OK_CANCEL_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
+
+ boolean doIt = response == JOptionPane.OK_OPTION;
+
+ if (doIt) {
+
+ // user ask to perform operation
+
+ //copy back model
+ panel.getModel().copyTo(model);
+
+ // validate model
+ boolean valid = true;
+
+ Scenario selectedScenario = model.getSelectedScenario();
+ if (selectedScenario == null) {
+
+ // no scenario selected
+ JOptionPane.showMessageDialog(
+ ui,
+ _("jmexico.error.scenario.not.selected"),
+ _("jmexico.error.title"),
+ JOptionPane.ERROR_MESSAGE);
+
+ valid = false;
+ }
+
+ if (valid) {
+
+ // check scenario name is not used
+ String selectedName = model.getScenarioName();
+
+ if (StringUtils.isBlank(selectedName)) {
+
+ valid = false;
+ JOptionPane.showMessageDialog(
+ ui,
+ _("jmexico.error.scenario.name.required"),
+ _("jmexico.error.title"),
+ 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;
+ }
+ }
+ }
+
+ }
+
+ doIt = valid || showCloneScenarioUI(model);
+ }
+
+ return doIt;
+ }
+
+ protected int getMaxOrder(Collection<Scenario> scenarios) {
+ int maxOrder = 0;
+ for (Scenario scenario : scenarios) {
+ int orderNumber = scenario.getOrderNumber();
+ maxOrder = Math.max(maxOrder, orderNumber);
+ }
+ return maxOrder;
+ }
+
+ public static void onSelectedScenarioChanged(CloneScenarioModel model,
+ ItemEvent event) {
+
+ if (event.getStateChange() == ItemEvent.SELECTED) {
+ Scenario item = (Scenario) event.getItem();
+ model.setSelectedScenario(item);
+ }
+ }
}
Modified: trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignTableModel.java
===================================================================
--- trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignTableModel.java 2012-10-06 11:29:06 UTC (rev 79)
+++ trunk/jmexico-editor/src/main/java/fr/reseaumexico/editor/InputDesignTableModel.java 2012-10-06 14:56:19 UTC (rev 80)
@@ -41,6 +41,8 @@
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._;
@@ -52,6 +54,9 @@
private static final long serialVersionUID = 1L;
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(InputDesignTableModel.class);
+
protected TableModel delegate;
protected InputDesign inputDesign;
@@ -63,6 +68,9 @@
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();
}
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-06 11:29:06 UTC (rev 79)
+++ trunk/jmexico-editor/src/main/resources/i18n/jmexico-editor_en_GB.properties 2012-10-06 14:56:19 UTC (rev 80)
@@ -1,9 +1,18 @@
-jmexico.add.scenario=Add scenario
-jmexico.error.scenario.name.used=Error \: scenario name '%1$s' is already used.
+jmexico.action.add.scenario=Add scenario
+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.not.selected=Error\: No scenario selected.
jmexico.error.title=Error
jmexico.factor.name=Factor
-jmexico.remove.scenario=Delete scenario
+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
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-06 11:29:06 UTC (rev 79)
+++ trunk/jmexico-editor/src/main/resources/i18n/jmexico-editor_fr_FR.properties 2012-10-06 14:56:19 UTC (rev 80)
@@ -1,9 +1,19 @@
-jmexico.add.scenario=Ajouter un scénario
+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.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=Enter un nom pour le scenario à ajouter
+jmexico.scenario.inputName.title=
jmexico.scenario.selectRemove=Selection du scénario à supprimer
-jmexico.scenario.selectRemove.title=Select scenario to remove
+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
Modified: trunk/jmexico-editor-demo/pom.xml
===================================================================
--- trunk/jmexico-editor-demo/pom.xml 2012-10-06 11:29:06 UTC (rev 79)
+++ trunk/jmexico-editor-demo/pom.xml 2012-10-06 14:56:19 UTC (rev 80)
@@ -46,6 +46,11 @@
<artifactId>jaxx-widgets</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.swinglabs.swingx</groupId>
+ <artifactId>swingx-common</artifactId>
+ </dependency>
+
<!-- logging dependencies -->
<dependency>
<groupId>commons-logging</groupId>
Modified: trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUI.jaxx
===================================================================
--- trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUI.jaxx 2012-10-06 11:29:06 UTC (rev 79)
+++ trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUI.jaxx 2012-10-06 14:56:19 UTC (rev 80)
@@ -25,21 +25,24 @@
<JFrame id='mainFrame' decorator='help'
width='800' height='800'
layout='{new BorderLayout()}'
- onWindowClosing='getHandler().closeApplication(this)'>
+ onWindowClosing='getHandler().closeApplication()'>
<import>
fr.reseaumexico.editor.InputDesignEditor
fr.reseaumexico.model.InputDesign
</import>
- <MexicoEditorDemoUIHandler id="handler"
- initializer='getContextValue(MexicoEditorDemoUIHandler.class)'/>
+ <MexicoEditorDemoUIHandler id="handler" constructorParams='this'/>
<MexicoEditorDemoUIModel id="model"/>
<script>
<![CDATA[
+public void init() {
+ getHandler().initUI();
+}
+
public void setInputDesign(InputDesign inputDesign) {
getModel().setInputDesign(inputDesign);
inputDesignEditor.setInputDesign(inputDesign);
@@ -55,18 +58,19 @@
<JMenuBar id='menu'>
<JMenu id='menuFile'>
<JMenuItem id='menuFileOpen'
- onActionPerformed="getHandler().openFile(this)"/>
+ onActionPerformed="getHandler().openFile()"/>
<JMenuItem id='menuFileSave'
enabled='{getModel().isOptionChanged()}'
- onActionPerformed="getHandler().saveFile(this)"/>
+ onActionPerformed="getHandler().saveFile()"/>
<JSeparator/>
<JMenuItem id='exit'
- onActionPerformed="getHandler().closeApplication(this)"/>
+ onActionPerformed="getHandler().closeApplication()"/>
</JMenu>
</JMenuBar>
- <InputDesignEditor id='inputDesignEditor' constraints='BorderLayout.CENTER'/>
+ <InputDesignEditor id='inputDesignEditor' constructorParams='this'
+ constraints='BorderLayout.CENTER'/>
</JFrame>
Modified: trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUIHandler.java
===================================================================
--- trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUIHandler.java 2012-10-06 11:29:06 UTC (rev 79)
+++ trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUIHandler.java 2012-10-06 14:56:19 UTC (rev 80)
@@ -31,14 +31,14 @@
import fr.reseaumexico.model.event.InputDesignScenarioListener;
import fr.reseaumexico.model.parser.InputDesignParser;
import fr.reseaumexico.model.writer.InputDesignXmlWriter;
-import java.io.File;
-import java.io.IOException;
-import javax.swing.JFileChooser;
-import jaxx.runtime.context.JAXXInitialContext;
import jaxx.runtime.swing.ErrorDialogUI;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.JFileChooser;
+import java.io.File;
+import java.io.IOException;
+
import static org.nuiton.i18n.I18n._;
/**
@@ -49,23 +49,21 @@
*/
public class MexicoEditorDemoUIHandler {
- /**
- * Logger
- */
+ /** Logger */
private static Log log = LogFactory.getLog(MexicoEditorDemoUIHandler.class);
- public void closeApplication(MexicoEditorDemoUI ui) {
+ private final MexicoEditorDemoUI ui;
+
+ public MexicoEditorDemoUIHandler(MexicoEditorDemoUI ui) {
+ this.ui = ui;
+ }
+
+ public void closeApplication() {
ui.dispose();
}
- public MexicoEditorDemoUI initUI(JAXXInitialContext context) {
+ public MexicoEditorDemoUI initUI() {
- // share handler
- context.add(this);
-
- // construt main UI
- MexicoEditorDemoUI ui = new MexicoEditorDemoUI(context);
-
// display
ui.setVisible(true);
@@ -75,44 +73,53 @@
return ui;
}
- public void openFile(final MexicoEditorDemoUI ui) {
+ public void openFile() {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle(_("jmexico.file.open.dialog"));
int returnVal = fileChooser.showOpenDialog(ui);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
- InputDesign inputDesign = readInputDesignFile(selectedFile);
- // add listener to listen option values changes
- inputDesign.addInputDesignFactorListener(new InputDesignFactorListener() {
+ loadInputFile(selectedFile);
+ }
+ }
- @Override
- public void factorValueChanged(InputDesignFactorEvent event) {
- ui.setInputDesign(event.getSource());
- }
- });
- // add listener to listen option values changes
- inputDesign.addInputDesignScenarioListener(new InputDesignScenarioListener() {
+ public void loadInputFile(File selectedFile) {
- @Override
- public void scenarioAdded(InputDesignScenarioEvent event) {
- ui.setInputDesign(event.getSource());
- }
+ if (log.isInfoEnabled()) {
+ log.info("Load input file: " + selectedFile);
+ }
+ InputDesign inputDesign = readInputDesignFile(selectedFile);
- @Override
- public void scenarioRemoved(InputDesignScenarioEvent event) {
- ui.setInputDesign(event.getSource());
- }
- });
+ // add listener to listen option values changes
+ inputDesign.addInputDesignFactorListener(new InputDesignFactorListener() {
- ui.setInputDesign(inputDesign);
+ @Override
+ public void factorValueChanged(InputDesignFactorEvent event) {
+ ui.setInputDesign(event.getSource());
+ }
+ });
+ // add listener to listen option values changes
+ inputDesign.addInputDesignScenarioListener(new InputDesignScenarioListener() {
- // keep selected file
- ui.getModel().setInputDesignFile(selectedFile);
- }
+ @Override
+ public void scenarioAdded(InputDesignScenarioEvent event) {
+ ui.setInputDesign(event.getSource());
+ }
+
+ @Override
+ public void scenarioRemoved(InputDesignScenarioEvent event) {
+ ui.setInputDesign(event.getSource());
+ }
+ });
+
+ ui.setInputDesign(inputDesign);
+
+ // keep selected file
+ ui.getModel().setInputDesignFile(selectedFile);
}
- public void saveFile(MexicoEditorDemoUI ui) {
+ public void saveFile() {
// get selected file
File selectedFile = ui.getModel().getInputDesignFile();
Modified: trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUIModel.java
===================================================================
--- trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUIModel.java 2012-10-06 11:29:06 UTC (rev 79)
+++ trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/MexicoEditorDemoUIModel.java 2012-10-06 14:56:19 UTC (rev 80)
@@ -25,23 +25,25 @@
package fr.reseaumexico.editor.demo;
import fr.reseaumexico.model.InputDesign;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
+import org.jdesktop.beans.AbstractSerializableBean;
+
import java.io.File;
-/**
- * @author sletellier <letellier(a)codelutin.com>
- */
-public class MexicoEditorDemoUIModel {
+/** @author sletellier <letellier(a)codelutin.com> */
+public class MexicoEditorDemoUIModel extends AbstractSerializableBean {
- protected final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
+ private static final long serialVersionUID = 1L;
public static final String PROPERTY_OPTION_CHANGED = "optionChanged";
+
public static final String PROPERTY_INPUT_DESIGN = "inputDesign";
+
public static final String PROPERTY_INPUT_DESIGN_FILE = "inputDesignFile";
protected InputDesign inputDesign;
+
protected File inputDesignFile;
+
protected boolean optionChanged;
public File getInputDesignFile() {
@@ -75,23 +77,4 @@
firePropertyChange(PROPERTY_OPTION_CHANGED, oldValue, optionChanged);
}
- public void addPropertyChangeListener(PropertyChangeListener listener) {
- pcs.addPropertyChangeListener(listener);
- }
-
- public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
- pcs.addPropertyChangeListener(propertyName, listener);
- }
-
- public void removePropertyChangeListener(PropertyChangeListener listener) {
- pcs.removePropertyChangeListener(listener);
- }
-
- public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
- pcs.removePropertyChangeListener(propertyName, listener);
- }
-
- protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
- pcs.firePropertyChange(propertyName, oldValue, newValue);
- }
}
Modified: trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/RunMexicoEditorDemo.java
===================================================================
--- trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/RunMexicoEditorDemo.java 2012-10-06 11:29:06 UTC (rev 79)
+++ trunk/jmexico-editor-demo/src/main/java/fr/reseaumexico/editor/demo/RunMexicoEditorDemo.java 2012-10-06 14:56:19 UTC (rev 80)
@@ -24,6 +24,8 @@
*/
package fr.reseaumexico.editor.demo;
+import fr.reseaumexico.editor.factorValue.FactorValueCellEditor;
+import fr.reseaumexico.editor.factorValue.FactorValueEditorFactory;
import jaxx.runtime.context.JAXXInitialContext;
import jaxx.runtime.swing.ErrorDialogUI;
import org.apache.commons.logging.Log;
@@ -31,26 +33,36 @@
import org.nuiton.i18n.I18n;
import org.nuiton.i18n.init.DefaultI18nInitializer;
+import java.io.File;
+
/**
* @author sletellier <letellier(a)codelutin.com>
* @since 0.1
*/
public class RunMexicoEditorDemo {
- /**
- * Logger
- */
+ /** Logger */
private static Log log = LogFactory.getLog(RunMexicoEditorDemo.class);
- public static void main(String[] args) {
+ public static void main(String... args) {
try {
I18n.init(new DefaultI18nInitializer("jmexico-editor-demo-i18n"), null);
- JAXXInitialContext jaxxContext = new JAXXInitialContext();
- MexicoEditorDemoUIHandler mainHandler = new MexicoEditorDemoUIHandler();
- MexicoEditorDemoUI mainUI = mainHandler.initUI(jaxxContext);
+ JAXXInitialContext context = new JAXXInitialContext();
+ context.add(new FactorValueEditorFactory());
+ MexicoEditorDemoUI mainUI = new MexicoEditorDemoUI(context);
+
+ mainUI.init();
+
+ if (args.length == 1) {
+
+ // load input model
+ File file = new File(args[0]);
+
+ mainUI.getHandler().loadInputFile(file);
+ }
} catch (Exception eee) {
log.error(eee.getMessage(), eee);
ErrorDialogUI.showError(eee);
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-10-06 11:29:06 UTC (rev 79)
+++ trunk/pom.xml 2012-10-06 14:56:19 UTC (rev 80)
@@ -117,6 +117,12 @@
<dependency>
<groupId>org.swinglabs.swingx</groupId>
+ <artifactId>swingx-common</artifactId>
+ <version>${swingXVersion}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.swinglabs.swingx</groupId>
<artifactId>swingx-core</artifactId>
<version>${swingXVersion}</version>
</dependency>
1
0
r79 - in trunk: . jmexico-editor jmexico-editor-demo jmexico-model
by tchemit@users.forge.codelutin.com 06 Oct '12
by tchemit@users.forge.codelutin.com 06 Oct '12
06 Oct '12
Author: tchemit
Date: 2012-10-06 13:29:06 +0200 (Sat, 06 Oct 2012)
New Revision: 79
Url: http://forge.codelutin.com/repositories/revision/jmexico/79
Log:
fixes #1572: Upgrade some librairies and plugins
Modified:
trunk/jmexico-editor-demo/pom.xml
trunk/jmexico-editor/pom.xml
trunk/jmexico-model/pom.xml
trunk/pom.xml
Modified: trunk/jmexico-editor/pom.xml
===================================================================
--- trunk/jmexico-editor/pom.xml 2012-08-30 14:46:50 UTC (rev 78)
+++ trunk/jmexico-editor/pom.xml 2012-10-06 11:29:06 UTC (rev 79)
@@ -64,7 +64,7 @@
</dependency>
<dependency>
- <groupId>org.swinglabs</groupId>
+ <groupId>org.swinglabs.swingx</groupId>
<artifactId>swingx-core</artifactId>
</dependency>
@@ -114,7 +114,7 @@
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<executions>
<execution>
<id>scan-sources</id>
Modified: trunk/jmexico-editor-demo/pom.xml
===================================================================
--- trunk/jmexico-editor-demo/pom.xml 2012-08-30 14:46:50 UTC (rev 78)
+++ trunk/jmexico-editor-demo/pom.xml 2012-10-06 11:29:06 UTC (rev 79)
@@ -145,7 +145,7 @@
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<executions>
<execution>
<id>scan-sources</id>
Modified: trunk/jmexico-model/pom.xml
===================================================================
--- trunk/jmexico-model/pom.xml 2012-08-30 14:46:50 UTC (rev 78)
+++ trunk/jmexico-model/pom.xml 2012-10-06 11:29:06 UTC (rev 79)
@@ -75,7 +75,7 @@
<plugin>
<groupId>org.nuiton.eugene</groupId>
- <artifactId>maven-eugene-plugin</artifactId>
+ <artifactId>eugene-maven-plugin</artifactId>
<configuration>
<resolver>org.nuiton.util.FasterCachedResourceResolver</resolver>
<templates>
@@ -93,7 +93,7 @@
<inputs>src/main/xmi:mexico.zargo</inputs>
</configuration>
<goals>
- <goal>smart-generate</goal>
+ <goal>generate</goal>
</goals>
</execution>
</executions>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-08-30 14:46:50 UTC (rev 78)
+++ trunk/pom.xml 2012-10-06 11:29:06 UTC (rev 79)
@@ -11,7 +11,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmineAndCentral</artifactId>
- <version>3.3.7</version>
+ <version>3.3.8</version>
</parent>
<groupId>fr.reseaumexico</groupId>
@@ -46,22 +46,22 @@
<developer>
<id>sletellier</id>
<name>Sylvain Letellier</name>
- <email>letellier(a)codelutin.com</email>
+ <email>letellier at codelutin dot com</email>
<organization>CodeLutin</organization>
<roles>
<role>Developer</role>
</roles>
- <timezone>+2</timezone>
+ <timezone>Europe/Paris</timezone>
</developer>
<developer>
<id>tchemit</id>
<name>Tony Chemit</name>
- <email>chemit(a)codelutin.com</email>
+ <email>chemit at codelutin dot com</email>
<organization>CodeLutin</organization>
<roles>
<role>Developer</role>
</roles>
- <timezone>+2</timezone>
+ <timezone>Europe/Paris</timezone>
</developer>
</developers>
@@ -77,10 +77,11 @@
<projectId>jmexico</projectId>
<!-- libraries version -->
- <nuitonI18nVersion>2.4.1</nuitonI18nVersion>
- <nuitonUtilsVersion>2.5</nuitonUtilsVersion>
- <eugenePluginVersion>2.4.2</eugenePluginVersion>
- <jaxxVersion>2.5</jaxxVersion>
+ <nuitonI18nVersion>2.5</nuitonI18nVersion>
+ <nuitonUtilsVersion>2.6.3</nuitonUtilsVersion>
+ <eugenePluginVersion>2.5</eugenePluginVersion>
+ <jaxxVersion>2.5.5</jaxxVersion>
+ <swingXVersion>1.6.4</swingXVersion>
<license.organizationName>Réseau Mexico, Codelutin</license.organizationName>
</properties>
@@ -115,9 +116,9 @@
</dependency>
<dependency>
- <groupId>org.swinglabs</groupId>
+ <groupId>org.swinglabs.swingx</groupId>
<artifactId>swingx-core</artifactId>
- <version>1.6.2-2</version>
+ <version>${swingXVersion}</version>
</dependency>
<!-- xml parser -->
@@ -158,7 +159,7 @@
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<version>${nuitonI18nVersion}</version>
<configuration>
</configuration>
@@ -172,7 +173,7 @@
<plugin>
<groupId>org.nuiton.eugene</groupId>
- <artifactId>maven-eugene-plugin</artifactId>
+ <artifactId>eugene-maven-plugin</artifactId>
<version>${eugenePluginVersion}</version>
</plugin>
@@ -187,7 +188,9 @@
<!-- Source control management. -->
<scm>
- <connection>scm:svn:http://svn.forge.codelutin.com/svn/jmexico/trunk</connection>
+ <connection>
+ scm:svn:http://svn.forge.codelutin.com/svn/jmexico/trunk
+ </connection>
<developerConnection>
scm:svn:http://svn.forge.codelutin.com/svn/jmexico/trunk
</developerConnection>
1
0