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
December 2011
- 2 participants
- 11 discussions
r15 - trunk/jmexico-model/src/main/java/fr/reseaumexico/model
by sletellier@users.forge.codelutin.com 29 Dec '11
by sletellier@users.forge.codelutin.com 29 Dec '11
29 Dec '11
Author: sletellier
Date: 2011-12-29 15:16:05 +0100 (Thu, 29 Dec 2011)
New Revision: 15
Url: http://forge.codelutin.com/repositories/revision/jmexico/15
Log:
Use same listener list
Modified:
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java 2011-12-28 16:13:13 UTC (rev 14)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java 2011-12-29 14:16:05 UTC (rev 15)
@@ -46,15 +46,13 @@
private static final long serialVersionUID = 1L;
- protected final EventListenerList scenarioListenerList;
- protected final EventListenerList factorListenerList;
+ protected final EventListenerList listenerList;
protected final Map<Scenario, ScenarioFactorValueListener> scenarioFactorValueListenerMap;
public InputDesignImpl() {
this.scenarioFactorValueListenerMap = Maps.newHashMap();
- this.scenarioListenerList = new EventListenerList();
- this.factorListenerList = new EventListenerList();
+ this.listenerList = new EventListenerList();
addPropertyChangeListener(PROPERTY_SCENARIO, new PropertyChangeListener() {
@Override
@@ -126,27 +124,27 @@
@Override
public void addInputDesignScenarioListener(InputDesignScenarioListener scenarioListener) {
- scenarioListenerList.add(InputDesignScenarioListener.class, scenarioListener);
+ listenerList.add(InputDesignScenarioListener.class, scenarioListener);
}
@Override
public void removeInputDesignScenarioListener(InputDesignScenarioListener scenarioListener) {
- scenarioListenerList.remove(InputDesignScenarioListener.class, scenarioListener);
+ listenerList.remove(InputDesignScenarioListener.class, scenarioListener);
}
@Override
public void addInputDesignFactorListener(InputDesignFactorListener factorListener) {
- factorListenerList.add(InputDesignFactorListener.class, factorListener);
+ listenerList.add(InputDesignFactorListener.class, factorListener);
}
@Override
public void removeInputDesignFactorListener(InputDesignFactorListener factorListener) {
- factorListenerList.remove(InputDesignFactorListener.class, factorListener);
+ listenerList.remove(InputDesignFactorListener.class, factorListener);
}
protected void fireInputDesignScenarioAdded(Scenario scenario) {
InputDesignScenarioEvent event = new InputDesignScenarioEvent(this, scenario);
- InputDesignScenarioListener[] listeners = scenarioListenerList.getListeners(InputDesignScenarioListener.class);
+ InputDesignScenarioListener[] listeners = listenerList.getListeners(InputDesignScenarioListener.class);
for (InputDesignScenarioListener listener : listeners) {
listener.onScenarioAdded(event);
}
@@ -154,7 +152,7 @@
protected void fireInputDesignScenarioRemoved(Scenario scenario) {
InputDesignScenarioEvent event = new InputDesignScenarioEvent(this, scenario);
- InputDesignScenarioListener[] listeners = scenarioListenerList.getListeners(InputDesignScenarioListener.class);
+ InputDesignScenarioListener[] listeners = listenerList.getListeners(InputDesignScenarioListener.class);
for (InputDesignScenarioListener listener : listeners) {
listener.onScenarioRemoved(event);
}
@@ -162,7 +160,7 @@
protected void fireFactorChanged(Scenario scenario, String factorId, Object oldValue, Object newValue) {
InputDesignFactorEvent event = new InputDesignFactorEvent(this, scenario, factorId, oldValue, newValue);
- InputDesignFactorListener[] listeners = factorListenerList.getListeners(InputDesignFactorListener.class);
+ InputDesignFactorListener[] listeners = listenerList.getListeners(InputDesignFactorListener.class);
for (InputDesignFactorListener listener : listeners) {
listener.onFactorValueChange(event);
}
1
0
r14 - in trunk: jmexico-model/src/main/java/fr/reseaumexico/model jmexico-model/src/main/java/fr/reseaumexico/model/parser jmexico-model/src/main/java/fr/reseaumexico/model/writer jmexico-model/src/main/xmi jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model
by sletellier@users.forge.codelutin.com 28 Dec '11
by sletellier@users.forge.codelutin.com 28 Dec '11
28 Dec '11
Author: sletellier
Date: 2011-12-28 17:13:13 +0100 (Wed, 28 Dec 2011)
New Revision: 14
Url: http://forge.codelutin.com/repositories/revision/jmexico/14
Log:
- Remove s for association names
Modified:
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/MexicoXmlConstant.java
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/writer/ExperimentDesignXmlWriter.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/InputDesignXmlWriter.java
trunk/jmexico-model/src/main/xmi/mexico.zargo
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditorHandler.java
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java 2011-12-27 09:54:49 UTC (rev 13)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java 2011-12-28 16:13:13 UTC (rev 14)
@@ -55,7 +55,7 @@
this.scenarioFactorValueListenerMap = Maps.newHashMap();
this.scenarioListenerList = new EventListenerList();
this.factorListenerList = new EventListenerList();
- addPropertyChangeListener(PROPERTY_SCENARIOS, new PropertyChangeListener() {
+ addPropertyChangeListener(PROPERTY_SCENARIO, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
@@ -75,11 +75,11 @@
}
@Override
- public void addScenarios(final Scenario scenarios) {
- if (this.scenarios == null) {
- this.scenarios = Lists.newArrayList();
+ public void addScenario(final Scenario scenarios) {
+ if (this.scenario == null) {
+ this.scenario = Lists.newArrayList();
}
- super.addScenarios(scenarios);
+ super.addScenario(scenarios);
ScenarioFactorValueListener scenarioFactorValueListener = new ScenarioFactorValueListener() {
@@ -95,31 +95,31 @@
}
@Override
- public void addAllScenarios(Collection<Scenario> scenarios) {
+ public void addAllScenario(Collection<Scenario> scenarios) {
for (Scenario scenario : scenarios) {
- addScenarios(scenario);
+ addScenario(scenario);
}
}
- public void setScenarios(Collection<Scenario> scenarios) {
- addAllScenarios(scenarios);
+ public void setScenario(Collection<Scenario> scenarios) {
+ addAllScenario(scenarios);
}
@Override
- public boolean removeScenarios(Scenario scenarios) {
+ public boolean removeScenario(Scenario scenario) {
// Remove listener
- scenarios.removeFactorValueListener(scenarioFactorValueListenerMap.get(scenarios));
- scenarioFactorValueListenerMap.remove(scenarios);
+ scenario.removeFactorValueListener(scenarioFactorValueListenerMap.get(scenario));
+ scenarioFactorValueListenerMap.remove(scenario);
- return super.removeScenarios(scenarios);
+ return super.removeScenario(scenario);
}
@Override
- public boolean removeAllScenarios(Collection<Scenario> scenarios) {
+ public boolean removeAllScenario(Collection<Scenario> scenarios) {
boolean removed = false;
for (Scenario scenario : scenarios) {
- removed = removeScenarios(scenario);
+ removed = removeScenario(scenario);
}
return removed;
}
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/MexicoXmlConstant.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/MexicoXmlConstant.java 2011-12-27 09:54:49 UTC (rev 13)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/MexicoXmlConstant.java 2011-12-28 16:13:13 UTC (rev 14)
@@ -40,7 +40,7 @@
public static final String EXPERIMENT_DESIGN_AUTHOR = ExperimentDesign.PROPERTY_AUTHOR;
public static final String EXPERIMENT_DESIGN_LICENCE = ExperimentDesign.PROPERTY_LICENCE;
public static final String EXPERIMENT_DESIGN_DESCRIPTION = ExperimentDesign.PROPERTY_DESCRIPTION;
- public static final String FACTORS = ExperimentDesign.PROPERTY_FACTORS;
+ public static final String FACTORS = "factors";
public static final String FACTOR = Introspector.decapitalize(Factor.class.getSimpleName());
public static final String FACTOR_ID = Factor.PROPERTY_ID;
public static final String FACTOR_NAME = Factor.PROPERTY_NAME;
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 2011-12-27 09:54:49 UTC (rev 13)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java 2011-12-28 16:13:13 UTC (rev 14)
@@ -147,7 +147,7 @@
// factor
factors.add(parseFactor(parser));
}
- model.setFactors(factors);
+ model.setFactor(factors);
}
// read experience design next tag
@@ -199,7 +199,7 @@
// read next tag
parser.nextTag();
}
- factor.setFeatures(features);
+ factor.setFeature(features);
}
}
@@ -262,7 +262,7 @@
// read next start tag
eventType = parser.nextTag();
}
- domain.setDistributionParameters(distributionParameters);
+ domain.setDistributionParameter(distributionParameters);
}
// level
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 2011-12-27 09:54:49 UTC (rev 13)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/InputDesignParser.java 2011-12-28 16:13:13 UTC (rev 14)
@@ -104,7 +104,7 @@
// factor
scenarios.add(parseScenario(parser));
}
- model.setScenarios(scenarios);
+ model.setScenario(scenarios);
}
}
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 2011-12-27 09:54:49 UTC (rev 13)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ExperimentDesignXmlWriter.java 2011-12-28 16:13:13 UTC (rev 14)
@@ -103,7 +103,7 @@
}
protected void composeFactors(XmlNode rootXmlNode) {
- Collection<Factor> factors = model.getFactors();
+ Collection<Factor> factors = model.getFactor();
// do nothing if no factors in model
if (factors.isEmpty()) {
@@ -136,7 +136,7 @@
addParameter(domainXmlNode, DOMAIN_DISTRIBUTION_NAME, domain.getDistributionName());
// distributionParameters
- Collection<DistributionParameter> distributionParameters = domain.getDistributionParameters();
+ Collection<DistributionParameter> distributionParameters = domain.getDistributionParameter();
if (distributionParameters != null) {
for (DistributionParameter distributionParameter : distributionParameters) {
XmlNode distributionParameterXmlNode = XmlNode.createElement(domainXmlNode, DOMAIN_DISTRIBUTION_PARAMETER);
@@ -158,7 +158,7 @@
}
// features
- addAllFeature(factorXmlNode, factor.getFeatures());
+ addAllFeature(factorXmlNode, factor.getFeature());
}
}
}
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 2011-12-27 09:54:49 UTC (rev 13)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/InputDesignXmlWriter.java 2011-12-28 16:13:13 UTC (rev 14)
@@ -77,7 +77,7 @@
protected void composeScenarios(XmlNode rootXmlNode) {
// scenarios
- for (Scenario scenario : model.getScenarios()) {
+ for (Scenario scenario : model.getScenario()) {
XmlNode scenariosXmlNode = XmlNode.createElement(rootXmlNode, SCENARIO);
addParameter(scenariosXmlNode, SCENARIO_NAME, scenario.getName());
addParameter(scenariosXmlNode, SCENARIO_ORDER_NUMBER, scenario.getOrderNumber());
@@ -91,7 +91,7 @@
}
// features
- addAllFeature(scenariosXmlNode, scenario.getFeatures());
+ addAllFeature(scenariosXmlNode, scenario.getFeature());
}
}
}
Modified: trunk/jmexico-model/src/main/xmi/mexico.zargo
===================================================================
(Binary files differ)
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditorHandler.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditorHandler.java 2011-12-27 09:54:49 UTC (rev 13)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditorHandler.java 2011-12-28 16:13:13 UTC (rev 14)
@@ -47,7 +47,7 @@
String selectedName = JOptionPane.showInputDialog(editor, _("jmexico.scenario.inputName"));
// check that name is never used
- Collection<Scenario> scenarios = inputDesign.getScenarios();
+ Collection<Scenario> scenarios = inputDesign.getScenario();
int maxOrder = 0;
for (Scenario scenario : scenarios) {
@@ -77,14 +77,14 @@
scenarioToAdd.setName(selectedName);
// create all empty factor values
- Collection<Factor> factors = inputDesign.getExperimentDesign().getFactors();
+ Collection<Factor> factors = inputDesign.getExperimentDesign().getFactor();
Map<Factor, Object> factorValues = Maps.newHashMap();
for (Factor factor : factors) {
factorValues.put(factor, null);
}
scenarioToAdd.setFactorValues(factorValues);
- inputDesign.addScenarios(scenarioToAdd);
+ inputDesign.addScenario(scenarioToAdd);
}
public void removeScenario(InputDesignEditor editor) {
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java 2011-12-27 09:54:49 UTC (rev 13)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java 2011-12-28 16:13:13 UTC (rev 14)
@@ -77,15 +77,15 @@
}
public Collection<Scenario> getScenarios() {
- return inputDesign.getScenarios();
+ return inputDesign.getScenario();
}
public Scenario getScenario(int i) {
- return inputDesign.getScenarios(i);
+ return inputDesign.getScenario(i);
}
public Factor getFactor(int i) {
- return inputDesign.getExperimentDesign().getFactors(i);
+ return inputDesign.getExperimentDesign().getFactor(i);
}
@Override
@@ -93,7 +93,7 @@
if (inputDesign == null) {
return delegate.getRowCount();
}
- Collection<Factor> factors = inputDesign.getExperimentDesign().getFactors();
+ Collection<Factor> factors = inputDesign.getExperimentDesign().getFactor();
return factors == null ? 0 : factors.size();
}
1
0
27 Dec '11
Author: sletellier
Date: 2011-12-27 10:54:49 +0100 (Tue, 27 Dec 2011)
New Revision: 13
Url: http://forge.codelutin.com/repositories/revision/jmexico/13
Log:
- up to nuiton-utils 2.4.1
- generate manifest and copy dependencies tu run jar file
Modified:
trunk/jmexico-swing-editor/pom.xml
trunk/pom.xml
Modified: trunk/jmexico-swing-editor/pom.xml
===================================================================
--- trunk/jmexico-swing-editor/pom.xml 2011-12-27 09:25:58 UTC (rev 12)
+++ trunk/jmexico-swing-editor/pom.xml 2011-12-27 09:54:49 UTC (rev 13)
@@ -62,6 +62,9 @@
<description>JMexico - Swing Editor module</description>
<properties>
+
+ <maven.jar.main.class>fr.reseaumexico.editor.RunMexico</maven.jar.main.class>
+
<!-- jaxx configuration -->
<jaxx.addProjectClassPath>true</jaxx.addProjectClassPath>
<jaxx.addSourcesToClassPath>true</jaxx.addSourcesToClassPath>
@@ -75,6 +78,33 @@
<build>
+ <pluginManagement>
+ <plugins>
+
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ <useUniqueVersions>true</useUniqueVersions>
+ <addClasspath>true</addClasspath>
+ <classpathPrefix>./lib/</classpathPrefix>
+ </manifest>
+ </archive>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+
+ </pluginManagement>
+
<plugins>
<plugin>
@@ -90,6 +120,25 @@
</plugin>
<plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-dependencies</id>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <overWriteReleases>false</overWriteReleases>
+ <overWriteSnapshots>true</overWriteSnapshots>
+ <overWriteIfNewer>true</overWriteIfNewer>
+ <outputDirectory>${project.build.directory}/lib</outputDirectory>
+ <silent>true</silent>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
<groupId>org.nuiton.i18n</groupId>
<artifactId>maven-i18n-plugin</artifactId>
<executions>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-12-27 09:25:58 UTC (rev 12)
+++ trunk/pom.xml 2011-12-27 09:54:49 UTC (rev 13)
@@ -77,7 +77,7 @@
<!-- libraries version -->
<nuitonI18nVersion>2.4.1</nuitonI18nVersion>
- <nuitonUtilsVersion>2.4</nuitonUtilsVersion>
+ <nuitonUtilsVersion>2.4.1</nuitonUtilsVersion>
<eugenePluginVersion>2.4.1</eugenePluginVersion>
<jaxxVersion>2.4.2</jaxxVersion>
1
0
r12 - trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser
by sletellier@users.forge.codelutin.com 27 Dec '11
by sletellier@users.forge.codelutin.com 27 Dec '11
27 Dec '11
Author: sletellier
Date: 2011-12-27 10:25:58 +0100 (Tue, 27 Dec 2011)
New Revision: 12
Url: http://forge.codelutin.com/repositories/revision/jmexico/12
Log:
Allow change order of children tags
Modified:
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.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 2011-12-22 16:52:06 UTC (rev 11)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java 2011-12-27 09:25:58 UTC (rev 12)
@@ -65,6 +65,7 @@
import static fr.reseaumexico.model.MexicoXmlConstant.EXPERIMENT_DESIGN_DESCRIPTION;
import static fr.reseaumexico.model.MexicoXmlConstant.EXPERIMENT_DESIGN_ID;
import static fr.reseaumexico.model.MexicoXmlConstant.EXPERIMENT_DESIGN_LICENCE;
+import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR;
import static fr.reseaumexico.model.MexicoXmlConstant.FACTORS;
import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR_DESCRIPTION;
import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR_ID;
@@ -161,40 +162,45 @@
String id = parser.getAttributeValue(null, FACTOR_ID);
factor.setId(id);
- // parse description
- int eventType = parser.nextTag();
- if (eventType == XmlPullParser.START_TAG &&
- parserEqual(parser, FACTOR_DESCRIPTION)) {
- factor.setDescription(parser.nextText());
+ // while all child attributes is not parsed
+ while (!(parser.getEventType() == XmlPullParser.END_TAG &&
+ parserEqual(parser, FACTOR))) {
- // read function close tag
- eventType = parser.nextTag();
- }
+ // parse description
+ int eventType = parser.nextTag();
+ if (eventType == XmlPullParser.START_TAG &&
+ parserEqual(parser, FACTOR_DESCRIPTION)) {
+ factor.setDescription(parser.nextText());
- // domain
- if (eventType == XmlPullParser.START_TAG &&
- parserEqual(parser, DOMAIN)) {
- factor.setDomain(parseDomain(parser));
- }
+ // read function close tag
+ eventType = parser.nextTag();
+ }
- // features
- if (parser.getEventType() == XmlPullParser.START_TAG &&
- parserEqual(parser, FEATURE)) {
+ // domain
+ if (eventType == XmlPullParser.START_TAG &&
+ parserEqual(parser, DOMAIN)) {
+ factor.setDomain(parseDomain(parser));
+ }
- List<Feature> features = Lists.newArrayList();
+ // features
+ if (parser.getEventType() == XmlPullParser.START_TAG &&
+ parserEqual(parser, FEATURE)) {
- while (parserEqual(parser, FEATURE)) {
+ List<Feature> features = Lists.newArrayList();
- // feature
- features.add(parseFeature(parser));
+ while (parserEqual(parser, FEATURE)) {
- // read feature close tag
- parser.nextTag();
+ // feature
+ features.add(parseFeature(parser));
- // read next tag
- parser.nextTag();
+ // read feature close tag
+ parser.nextTag();
+
+ // read next tag
+ parser.nextTag();
+ }
+ factor.setFeatures(features);
}
- factor.setFeatures(features);
}
// keep factors
@@ -222,58 +228,63 @@
String nominaleValue = parser.getAttributeValue(null, DOMAIN_NOMINAL_VALUE);
domain.setNominalValue(nominaleValue);
- // distributionParameters
- int eventType = parser.nextTag();
- if (eventType == XmlPullParser.START_TAG &&
- parserEqual(parser, DOMAIN_DISTRIBUTION_PARAMETER)) {
+ // while all child attributes is not parsed
+ while (!(parser.getEventType() == XmlPullParser.END_TAG &&
+ parserEqual(parser, DOMAIN))) {
- List<DistributionParameter> distributionParameters = Lists.newArrayList();
- while (parserEqual(parser, DOMAIN_DISTRIBUTION_PARAMETER)) {
- DistributionParameter distributionParameter = new DistributionParameterImpl();
+ // distributionParameters
+ int eventType = parser.nextTag();
+ if (eventType == XmlPullParser.START_TAG &&
+ parserEqual(parser, DOMAIN_DISTRIBUTION_PARAMETER)) {
- // name
- String name = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_NAME);
- distributionParameter.setName(name);
+ List<DistributionParameter> distributionParameters = Lists.newArrayList();
+ while (parserEqual(parser, DOMAIN_DISTRIBUTION_PARAMETER)) {
+ DistributionParameter distributionParameter = new DistributionParameterImpl();
- // value
- // TODO sletellier 20111215 : take care of type
- String value = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_VALUE);
- distributionParameter.setValue(value);
+ // name
+ String name = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_NAME);
+ distributionParameter.setName(name);
- // valueType
- String valueType = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_VALUE_TYPE);
- distributionParameter.setValueType(ValueType.valueOf(valueType));
+ // value
+ // TODO sletellier 20111215 : take care of type
+ String value = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_VALUE);
+ distributionParameter.setValue(value);
- distributionParameters.add(distributionParameter);
+ // valueType
+ String valueType = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_VALUE_TYPE);
+ distributionParameter.setValueType(ValueType.valueOf(valueType));
- // read close tag
- parser.nextTag();
+ distributionParameters.add(distributionParameter);
- // read next start tag
- eventType = parser.nextTag();
+ // read close tag
+ parser.nextTag();
+
+ // read next start tag
+ eventType = parser.nextTag();
+ }
+ domain.setDistributionParameters(distributionParameters);
}
- domain.setDistributionParameters(distributionParameters);
- }
- // level
- if (eventType == XmlPullParser.START_TAG &&
- parserEqual(parser, DOMAIN_LEVEL)) {
+ // level
+ if (eventType == XmlPullParser.START_TAG &&
+ parserEqual(parser, DOMAIN_LEVEL)) {
- List<Level> levels = Lists.newArrayList();
- while (parserEqual(parser, DOMAIN_LEVEL)) {
- Level level = new LevelImpl();
+ List<Level> levels = Lists.newArrayList();
+ while (parserEqual(parser, DOMAIN_LEVEL)) {
+ Level level = new LevelImpl();
- // value
- String value = parser.getAttributeValue(null, LEVEL_VALUE);
- level.setValue(value);
+ // value
+ String value = parser.getAttributeValue(null, LEVEL_VALUE);
+ level.setValue(value);
- // weight
- String weight = parser.getAttributeValue(null, LEVEL_WEIGHT);
- level.setWeight(Integer.valueOf(weight));
+ // weight
+ String weight = parser.getAttributeValue(null, LEVEL_WEIGHT);
+ level.setWeight(Integer.valueOf(weight));
- levels.add(level);
+ levels.add(level);
+ }
+ domain.setLevels(levels);
}
- domain.setLevels(levels);
}
return domain;
}
1
0
r11 - in trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui: . model
by sletellier@users.forge.codelutin.com 22 Dec '11
by sletellier@users.forge.codelutin.com 22 Dec '11
22 Dec '11
Author: sletellier
Date: 2011-12-22 17:52:06 +0100 (Thu, 22 Dec 2011)
New Revision: 11
Url: http://forge.codelutin.com/repositories/revision/jmexico/11
Log:
- Add exit menu
- Fix table model for empty input design
Modified:
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.css
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.jaxx
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.css
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.css 2011-12-21 17:35:27 UTC (rev 10)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.css 2011-12-22 16:52:06 UTC (rev 11)
@@ -33,4 +33,7 @@
#menuFileSave {
text:"jmexico.menu.file.save";
mnemonic:S;
+}
+#exit {
+ text:"masc.menu.exit";
}
\ No newline at end of file
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.jaxx
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.jaxx 2011-12-21 17:35:27 UTC (rev 10)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.jaxx 2011-12-22 16:52:06 UTC (rev 11)
@@ -47,6 +47,11 @@
enabled='{selectedFile != null}'
onActionPerformed="getHandler().saveFile(this)"/>
+ <JSeparator/>
+
+ <JMenuItem id='exit'
+ onActionPerformed="getHandler().closeApplication(this)"/>
+
</JMenu>
</JMenuBar>
<InputDesignEditor id='inputDesignEditor' constraints='BorderLayout.CENTER'/>
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java 2011-12-21 17:35:27 UTC (rev 10)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java 2011-12-22 16:52:06 UTC (rev 11)
@@ -84,13 +84,17 @@
return inputDesign.getScenarios(i);
}
+ public Factor getFactor(int i) {
+ return inputDesign.getExperimentDesign().getFactors(i);
+ }
+
@Override
public int getRowCount() {
if (inputDesign == null) {
return delegate.getRowCount();
}
- Map<Factor, Object> factorValues = getScenario(0).getFactorValues();
- return factorValues == null ? 0 : factorValues.size();
+ Collection<Factor> factors = inputDesign.getExperimentDesign().getFactors();
+ return factors == null ? 0 : factors.size();
}
@Override
@@ -142,23 +146,22 @@
return delegate.getValueAt(rowIndex, columnIndex);
}
- boolean isFirstColumn = columnIndex == 0;
- if (!isFirstColumn) {
- columnIndex = columnIndex - 1;
+ // 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();
- // get key if rowIndex
- Set<Factor> factors = factorValues.keySet();
- List<Factor> factorsList = new ArrayList<Factor>(factors);
- Factor factor = factorsList.get(rowIndex);
- if (isFirstColumn) {
- return factor;
- }
return factorValues.get(factor);
}
1
0
21 Dec '11
Author: sletellier
Date: 2011-12-21 18:35:27 +0100 (Wed, 21 Dec 2011)
New Revision: 10
Url: http://forge.codelutin.com/repositories/revision/jmexico/10
Log:
- Optimize imports
- Introduce MexicoDecoratorProvider using Jaxx decorator API
- Add method getFactorValue in scenario
Added:
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/decorator/
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/decorator/MexicoDecoratorProvider.java
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/FactorValueCellEditor.java
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/FactorValueEditorFactory.java
Modified:
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/DateFormatFactory.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/ScenarioImpl.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignFactorEvent.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignScenarioEvent.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/ScenarioFactorValueEvent.java
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/XmlNode.java
trunk/jmexico-model/src/main/xmi/mexico.zargo
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/RunMexico.java
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUIHandler.java
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditor.jaxx
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditorHandler.java
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java
trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_en_GB.properties
trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_fr_FR.properties
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/DateFormatFactory.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/DateFormatFactory.java 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/DateFormatFactory.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -29,6 +29,7 @@
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
*/
public class DateFormatFactory {
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -32,15 +32,15 @@
import fr.reseaumexico.model.event.InputDesignScenarioListener;
import fr.reseaumexico.model.event.ScenarioFactorValueEvent;
import fr.reseaumexico.model.event.ScenarioFactorValueListener;
-
-import javax.swing.event.EventListenerList;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Collection;
import java.util.Map;
+import javax.swing.event.EventListenerList;
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
*/
public class InputDesignImpl extends InputDesign {
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/ScenarioImpl.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/ScenarioImpl.java 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/ScenarioImpl.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -27,16 +27,16 @@
import com.google.common.collect.Maps;
import fr.reseaumexico.model.event.ScenarioFactorValueEvent;
import fr.reseaumexico.model.event.ScenarioFactorValueListener;
-
+import java.util.Map;
import javax.swing.event.EventListenerList;
-import java.util.Map;
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
*/
public class ScenarioImpl extends Scenario {
- private static final long serialVersionUID = -5655227169239067227L;
+ private static final long serialVersionUID = 1L;
protected final EventListenerList factorListenerList;
@@ -45,6 +45,15 @@
}
@Override
+ public Object getFactorValue(Factor factor) {
+ Map<Factor, Object> factorValues = getFactorValues();
+ if (factorValues == null) {
+ return null;
+ }
+ return factorValues.get(factor);
+ }
+
+ @Override
public void setFactorValue(Factor factor, Object value) {
Map<Factor, Object> oldFactorValues = getFactorValues();
if (factorValues == null) {
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignFactorEvent.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignFactorEvent.java 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignFactorEvent.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -29,10 +29,11 @@
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
*/
public class InputDesignFactorEvent extends InputDesignScenarioEvent {
- private static final long serialVersionUID = -6197099063976776986L;
+ private static final long serialVersionUID = 1L;
protected String factorId;
protected Object factorOldValue;
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignScenarioEvent.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignScenarioEvent.java 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignScenarioEvent.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -26,11 +26,11 @@
import fr.reseaumexico.model.InputDesign;
import fr.reseaumexico.model.Scenario;
-
import java.util.EventObject;
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
*/
public class InputDesignScenarioEvent extends EventObject {
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/ScenarioFactorValueEvent.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/ScenarioFactorValueEvent.java 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/ScenarioFactorValueEvent.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -25,11 +25,11 @@
package fr.reseaumexico.model.event;
import fr.reseaumexico.model.Scenario;
-
import java.util.EventObject;
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
*/
public class ScenarioFactorValueEvent extends EventObject {
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 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -40,22 +40,21 @@
import fr.reseaumexico.model.LevelImpl;
import fr.reseaumexico.model.MexicoTechnicalException;
import fr.reseaumexico.model.ValueType;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
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.DISTRIBUTION_PARAMETER_NAME;
+import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_VALUE;
+import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_VALUE_TYPE;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_DISTRIBUTION_NAME;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_DISTRIBUTION_PARAMETER;
-import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_NAME;
-import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_VALUE;
-import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_VALUE_TYPE;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_LEVEL;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_NAME;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_NOMINAL_VALUE;
@@ -78,6 +77,7 @@
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
*/
public class ExperimentDesignParser extends MexicoXmlParser<ExperimentDesign> {
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 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/InputDesignParser.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -33,15 +33,14 @@
import fr.reseaumexico.model.MexicoTechnicalException;
import fr.reseaumexico.model.Scenario;
import fr.reseaumexico.model.ScenarioImpl;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
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;
@@ -53,6 +52,7 @@
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
*/
public class InputDesignParser extends MexicoXmlParser<InputDesign> {
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 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/MexicoXmlParser.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -25,7 +25,6 @@
package fr.reseaumexico.model.parser;
import fr.reseaumexico.model.DateFormatFactory;
-
import java.io.File;
import java.io.FileNotFoundException;
import java.text.ParseException;
@@ -33,6 +32,7 @@
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
*/
public abstract class MexicoXmlParser<M> extends XmlParser<M> {
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 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/XmlParser.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -24,15 +24,14 @@
*/
package fr.reseaumexico.model.parser;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-import org.xmlpull.v1.XmlPullParserFactory;
-
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.ParseException;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlPullParserFactory;
/**
* Abstract parser to get model from xml file using XPP3
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 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ExperimentDesignXmlWriter.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -29,22 +29,19 @@
import fr.reseaumexico.model.ExperimentDesign;
import fr.reseaumexico.model.Factor;
import fr.reseaumexico.model.Level;
-import org.apache.commons.lang3.StringUtils;
-
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.Date;
+import org.apache.commons.lang3.StringUtils;
-import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN;
-import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_DISTRIBUTION_NAME;
-import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_DISTRIBUTION_PARAMETER;
import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_NAME;
import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_VALUE;
import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_VALUE_TYPE;
+import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN;
+import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_DISTRIBUTION_NAME;
+import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_DISTRIBUTION_PARAMETER;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_LEVEL;
-import static fr.reseaumexico.model.MexicoXmlConstant.LEVEL_VALUE;
-import static fr.reseaumexico.model.MexicoXmlConstant.LEVEL_WEIGHT;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_NAME;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_NOMINAL_VALUE;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_VALUE_TYPE;
@@ -60,6 +57,8 @@
import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR_ID;
import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR_NAME;
import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR_UNIT;
+import static fr.reseaumexico.model.MexicoXmlConstant.LEVEL_VALUE;
+import static fr.reseaumexico.model.MexicoXmlConstant.LEVEL_WEIGHT;
/**
* Writer to create experiment design file with {@link ExperimentDesign} model
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 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/InputDesignXmlWriter.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -27,7 +27,6 @@
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.Date;
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 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/MexicoXmlWriter.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -26,7 +26,6 @@
import fr.reseaumexico.model.DateFormatFactory;
import fr.reseaumexico.model.Feature;
-
import java.io.File;
import java.io.IOException;
import java.util.Collection;
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/XmlNode.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/XmlNode.java 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/XmlNode.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -26,12 +26,11 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.commons.lang3.StringUtils;
-
import java.util.LinkedList;
import java.util.Map;
import java.util.Set;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
/**
* Represent an XML node
Modified: trunk/jmexico-model/src/main/xmi/mexico.zargo
===================================================================
(Binary files differ)
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/RunMexico.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/RunMexico.java 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/RunMexico.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -24,8 +24,8 @@
*/
package fr.reseaumexico.editor;
+import fr.reseaumexico.editor.ui.MexicoMainUI;
import fr.reseaumexico.editor.ui.MexicoMainUIHandler;
-import fr.reseaumexico.editor.ui.MexicoMainUI;
import jaxx.runtime.context.JAXXInitialContext;
import jaxx.runtime.swing.ErrorDialogUI;
import org.apache.commons.logging.Log;
@@ -33,6 +33,7 @@
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
*/
public class RunMexico {
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUIHandler.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUIHandler.java 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUIHandler.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -26,14 +26,13 @@
import fr.reseaumexico.model.InputDesign;
import fr.reseaumexico.model.parser.InputDesignParser;
+import java.io.File;
+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.*;
-import java.io.File;
-
import static org.nuiton.i18n.I18n._;
/**
Added: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/decorator/MexicoDecoratorProvider.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/decorator/MexicoDecoratorProvider.java (rev 0)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/decorator/MexicoDecoratorProvider.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -0,0 +1,15 @@
+package fr.reseaumexico.editor.ui.decorator;
+
+import fr.reseaumexico.model.Factor;
+import jaxx.runtime.decorator.DecoratorProvider;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class MexicoDecoratorProvider extends DecoratorProvider {
+
+ @Override
+ protected void loadDecorators() {
+ registerJXPathDecorator(Factor.class, "${" + Factor.PROPERTY_ID + "}$s");
+ }
+}
Added: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/FactorValueCellEditor.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/FactorValueCellEditor.java (rev 0)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/FactorValueCellEditor.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -0,0 +1,63 @@
+/*
+ * #%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.ui.editor;
+
+import fr.reseaumexico.model.Factor;
+import java.awt.Component;
+import java.awt.TextField;
+import javax.swing.AbstractCellEditor;
+import javax.swing.JTable;
+import javax.swing.table.TableCellEditor;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
+ */
+public class FactorValueCellEditor extends AbstractCellEditor
+ implements TableCellEditor {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String currentValue;
+
+ public FactorValueCellEditor() {
+ }
+
+ @Override
+ public Object getCellEditorValue() {
+ return currentValue;
+ }
+
+ @Override
+ public Component getTableCellEditorComponent(JTable table, Object oldValue, boolean isSelected, int row, int column) {
+
+ // get factor
+ // TODO sletellier 20111221 : Take care of type
+ Factor factor = (Factor) table.getValueAt(row, 0);
+ currentValue = (String)FactorValueEditorFactory.getInstance().edit(table, factor, oldValue);
+
+ return new TextField(currentValue);
+ }
+}
Added: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/FactorValueEditorFactory.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/FactorValueEditorFactory.java (rev 0)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/FactorValueEditorFactory.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -0,0 +1,58 @@
+/*
+ * #%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.ui.editor;
+
+import fr.reseaumexico.model.Factor;
+import java.awt.Component;
+import javax.swing.JOptionPane;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * Factory used to open specific editor to input factor value
+ *
+ * @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
+ */
+public class FactorValueEditorFactory {
+
+ private static FactorValueEditorFactory instance;
+
+ // use singleton
+ public static FactorValueEditorFactory getInstance() {
+ if (instance == null) {
+ instance = new FactorValueEditorFactory();
+ }
+ return instance;
+ }
+
+ public Object edit(Component parent, Factor factor, Object oldValue) {
+
+ // TODO sletellier 20121221 : open specific editor
+ String inputValue = JOptionPane.showInputDialog(parent, _("jmexico.input.msg"), oldValue);
+
+ return inputValue;
+ }
+}
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditor.jaxx
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditor.jaxx 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditor.jaxx 2011-12-21 17:35:27 UTC (rev 10)
@@ -28,15 +28,33 @@
javax.swing.table.TableModel
javax.swing.table.DefaultTableModel
fr.reseaumexico.model.InputDesign
+fr.reseaumexico.model.Factor
fr.reseaumexico.editor.ui.model.InputDesignTableModel
+fr.reseaumexico.editor.ui.editor.FactorValueCellEditor
+fr.reseaumexico.editor.ui.decorator.MexicoDecoratorProvider
+jaxx.runtime.swing.renderer.DecoratorProviderTableCellRenderer
</import>
<InputDesignEditorHandler id='handler'/>
<InputDesignTableModel id='model' javaBean="new InputDesignTableModel()"/>
+ <FactorValueCellEditor id='cellEditor'/>
+
<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));
+
+ // cell editor
+ inputDesignTable.setDefaultEditor(Object.class, getCellEditor());
+}
+
public void setInputDesign(InputDesign inputDesign) {
getModel().setInputDesign(inputDesign);
}
@@ -48,7 +66,8 @@
</script>
<JScrollPane constraints='BorderLayout.CENTER'>
- <JTable id='inputDesignTable' model='{getModel()}'/>
+ <JTable id='inputDesignTable'
+ model='{getModel()}'/>
</JScrollPane>
<JPanel id='factorActionPanel' constraints='BorderLayout.SOUTH'>
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditorHandler.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditorHandler.java 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditorHandler.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -29,11 +29,9 @@
import fr.reseaumexico.model.InputDesign;
import fr.reseaumexico.model.Scenario;
import fr.reseaumexico.model.ScenarioImpl;
-
-import javax.swing.*;
-
import java.util.Collection;
import java.util.Map;
+import javax.swing.JOptionPane;
import static org.nuiton.i18n.I18n._;
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java 2011-12-21 17:35:27 UTC (rev 10)
@@ -29,20 +29,20 @@
import fr.reseaumexico.model.Scenario;
import fr.reseaumexico.model.event.InputDesignScenarioEvent;
import fr.reseaumexico.model.event.InputDesignScenarioListener;
-
-import javax.swing.table.AbstractTableModel;
-import javax.swing.table.DefaultTableModel;
-import javax.swing.table.TableModel;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.swing.table.AbstractTableModel;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableModel;
import static org.nuiton.i18n.I18n._;
/**
* @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
*/
public class InputDesignTableModel extends AbstractTableModel implements InputDesignScenarioListener {
@@ -123,7 +123,7 @@
return delegate.getColumnClass(rowIndex);
}
if (rowIndex == 0) {
- return String.class;
+ return Factor.class;
}
return Object.class;
}
@@ -157,7 +157,7 @@
List<Factor> factorsList = new ArrayList<Factor>(factors);
Factor factor = factorsList.get(rowIndex);
if (isFirstColumn) {
- return factor.getId();
+ return factor;
}
return factorValues.get(factor);
}
@@ -182,8 +182,6 @@
List<Factor> factorsList = new ArrayList<Factor>(factors);
Factor factor = factorsList.get(rowIndex);
- // TODO sletellier 20111219 : open specific editor
-
factorValues.put(factor, o);
scenario.setFactorValues(factorValues);
Modified: trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_en_GB.properties
===================================================================
--- trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_en_GB.properties 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_en_GB.properties 2011-12-21 17:35:27 UTC (rev 10)
@@ -3,6 +3,7 @@
jmexico.error.title=Error
jmexico.factor.name=Factor
jmexico.file.open.dialog=Open an InputDesign file.
+jmexico.input.msg=
jmexico.menu.file=File
jmexico.menu.file.open=Open
jmexico.menu.file.save=Save
Modified: trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_fr_FR.properties
===================================================================
--- trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_fr_FR.properties 2011-12-21 11:31:51 UTC (rev 9)
+++ trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_fr_FR.properties 2011-12-21 17:35:27 UTC (rev 10)
@@ -3,6 +3,7 @@
jmexico.error.title=Erreur
jmexico.factor.name=Facteur
jmexico.file.open.dialog=Ouvrir un fichier InputDesign
+jmexico.input.msg=
jmexico.menu.file=Fichier
jmexico.menu.file.open=Ouvrir
jmexico.menu.file.save=Sauvegarder
1
0
r9 - in trunk: jmexico-model/src/main/java/fr/reseaumexico/model jmexico-model/src/main/java/fr/reseaumexico/model/event jmexico-model/src/main/xmi jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model jmexico-swing-editor/src/main/resources/i18n
by sletellier@users.forge.codelutin.com 21 Dec '11
by sletellier@users.forge.codelutin.com 21 Dec '11
21 Dec '11
Author: sletellier
Date: 2011-12-21 12:31:51 +0100 (Wed, 21 Dec 2011)
New Revision: 9
Url: http://forge.codelutin.com/repositories/revision/jmexico/9
Log:
Create listener api for scenario and input design
Added:
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/ScenarioImpl.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignFactorEvent.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignScenarioEvent.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/ScenarioFactorValueEvent.java
Modified:
trunk/jmexico-model/src/main/xmi/mexico.zargo
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java
trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_fr_FR.properties
Added: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java (rev 0)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/InputDesignImpl.java 2011-12-21 11:31:51 UTC (rev 9)
@@ -0,0 +1,170 @@
+/*
+ * #%L
+ * JMexico :: Model
+ *
+ * $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.model;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import fr.reseaumexico.model.event.InputDesignFactorEvent;
+import fr.reseaumexico.model.event.InputDesignFactorListener;
+import fr.reseaumexico.model.event.InputDesignScenarioEvent;
+import fr.reseaumexico.model.event.InputDesignScenarioListener;
+import fr.reseaumexico.model.event.ScenarioFactorValueEvent;
+import fr.reseaumexico.model.event.ScenarioFactorValueListener;
+
+import javax.swing.event.EventListenerList;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class InputDesignImpl extends InputDesign {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final EventListenerList scenarioListenerList;
+ protected final EventListenerList factorListenerList;
+
+ protected final Map<Scenario, ScenarioFactorValueListener> scenarioFactorValueListenerMap;
+
+ public InputDesignImpl() {
+ this.scenarioFactorValueListenerMap = Maps.newHashMap();
+ this.scenarioListenerList = new EventListenerList();
+ this.factorListenerList = new EventListenerList();
+ addPropertyChangeListener(PROPERTY_SCENARIOS, new PropertyChangeListener() {
+
+ @Override
+ public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
+ Scenario newValue = (Scenario) propertyChangeEvent.getNewValue();
+ Scenario oldValue = (Scenario) propertyChangeEvent.getOldValue();
+ if (newValue == null) {
+ // was removed
+ fireInputDesignScenarioRemoved(oldValue);
+ }
+
+ if (oldValue == null) {
+ // was added
+ fireInputDesignScenarioAdded(newValue);
+ }
+ }
+ });
+ }
+
+ @Override
+ public void addScenarios(final Scenario scenarios) {
+ if (this.scenarios == null) {
+ this.scenarios = Lists.newArrayList();
+ }
+ super.addScenarios(scenarios);
+
+ ScenarioFactorValueListener scenarioFactorValueListener = new ScenarioFactorValueListener() {
+
+ @Override
+ public void onFactorValueChange(ScenarioFactorValueEvent event) {
+ fireFactorChanged(scenarios, event.getFactorId(), event.getFactorOldValue(), event.getFactorNewValue());
+ }
+ };
+
+ // keep listener
+ scenarioFactorValueListenerMap.put(scenarios, scenarioFactorValueListener);
+ scenarios.addFactorValueListener(scenarioFactorValueListener);
+ }
+
+ @Override
+ public void addAllScenarios(Collection<Scenario> scenarios) {
+ for (Scenario scenario : scenarios) {
+ addScenarios(scenario);
+ }
+ }
+
+ public void setScenarios(Collection<Scenario> scenarios) {
+ addAllScenarios(scenarios);
+ }
+
+ @Override
+ public boolean removeScenarios(Scenario scenarios) {
+
+ // Remove listener
+ scenarios.removeFactorValueListener(scenarioFactorValueListenerMap.get(scenarios));
+ scenarioFactorValueListenerMap.remove(scenarios);
+
+ return super.removeScenarios(scenarios);
+ }
+
+ @Override
+ public boolean removeAllScenarios(Collection<Scenario> scenarios) {
+ boolean removed = false;
+ for (Scenario scenario : scenarios) {
+ removed = removeScenarios(scenario);
+ }
+ return removed;
+ }
+
+ @Override
+ public void addInputDesignScenarioListener(InputDesignScenarioListener scenarioListener) {
+ scenarioListenerList.add(InputDesignScenarioListener.class, scenarioListener);
+ }
+
+ @Override
+ public void removeInputDesignScenarioListener(InputDesignScenarioListener scenarioListener) {
+ scenarioListenerList.remove(InputDesignScenarioListener.class, scenarioListener);
+ }
+
+ @Override
+ public void addInputDesignFactorListener(InputDesignFactorListener factorListener) {
+ factorListenerList.add(InputDesignFactorListener.class, factorListener);
+ }
+
+ @Override
+ public void removeInputDesignFactorListener(InputDesignFactorListener factorListener) {
+ factorListenerList.remove(InputDesignFactorListener.class, factorListener);
+ }
+
+ protected void fireInputDesignScenarioAdded(Scenario scenario) {
+ InputDesignScenarioEvent event = new InputDesignScenarioEvent(this, scenario);
+ InputDesignScenarioListener[] listeners = scenarioListenerList.getListeners(InputDesignScenarioListener.class);
+ for (InputDesignScenarioListener listener : listeners) {
+ listener.onScenarioAdded(event);
+ }
+ }
+
+ protected void fireInputDesignScenarioRemoved(Scenario scenario) {
+ InputDesignScenarioEvent event = new InputDesignScenarioEvent(this, scenario);
+ InputDesignScenarioListener[] listeners = scenarioListenerList.getListeners(InputDesignScenarioListener.class);
+ for (InputDesignScenarioListener listener : listeners) {
+ listener.onScenarioRemoved(event);
+ }
+ }
+
+ protected void fireFactorChanged(Scenario scenario, String factorId, Object oldValue, Object newValue) {
+ InputDesignFactorEvent event = new InputDesignFactorEvent(this, scenario, factorId, oldValue, newValue);
+ InputDesignFactorListener[] listeners = factorListenerList.getListeners(InputDesignFactorListener.class);
+ for (InputDesignFactorListener listener : listeners) {
+ listener.onFactorValueChange(event);
+ }
+ }
+}
Added: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/ScenarioImpl.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/ScenarioImpl.java (rev 0)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/ScenarioImpl.java 2011-12-21 11:31:51 UTC (rev 9)
@@ -0,0 +1,77 @@
+/*
+ * #%L
+ * JMexico :: Model
+ *
+ * $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.model;
+
+import com.google.common.collect.Maps;
+import fr.reseaumexico.model.event.ScenarioFactorValueEvent;
+import fr.reseaumexico.model.event.ScenarioFactorValueListener;
+
+import javax.swing.event.EventListenerList;
+import java.util.Map;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class ScenarioImpl extends Scenario {
+
+ private static final long serialVersionUID = -5655227169239067227L;
+
+ protected final EventListenerList factorListenerList;
+
+ public ScenarioImpl() {
+ this.factorListenerList = new EventListenerList();
+ }
+
+ @Override
+ public void setFactorValue(Factor factor, Object value) {
+ Map<Factor, Object> oldFactorValues = getFactorValues();
+ if (factorValues == null) {
+ factorValues = Maps.newHashMap();
+ }
+ Object oldValue = factorValues.get(factor);
+ factorValues.put(factor, value);
+
+ firePropertyChange(PROPERTY_FACTOR_VALUES, oldFactorValues, factorValues);
+ fireFactorValueChanged(factor.getId(), oldValue, value);
+ }
+
+ @Override
+ public void addFactorValueListener(ScenarioFactorValueListener factorListener) {
+ factorListenerList.add(ScenarioFactorValueListener.class, factorListener);
+ }
+
+ @Override
+ public void removeFactorValueListener(ScenarioFactorValueListener factorListener) {
+ factorListenerList.remove(ScenarioFactorValueListener.class, factorListener);
+ }
+
+ protected void fireFactorValueChanged(String factorId, Object oldValue, Object newValue) {
+ ScenarioFactorValueEvent event = new ScenarioFactorValueEvent(this, factorId, oldValue, newValue);
+ ScenarioFactorValueListener[] listeners = factorListenerList.getListeners(ScenarioFactorValueListener.class);
+ for (ScenarioFactorValueListener listener : listeners) {
+ listener.onFactorValueChange(event);
+ }
+ }
+}
Added: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignFactorEvent.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignFactorEvent.java (rev 0)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignFactorEvent.java 2011-12-21 11:31:51 UTC (rev 9)
@@ -0,0 +1,63 @@
+/*
+ * #%L
+ * JMexico :: Model
+ *
+ * $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.model.event;
+
+import fr.reseaumexico.model.InputDesign;
+import fr.reseaumexico.model.Scenario;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class InputDesignFactorEvent extends InputDesignScenarioEvent {
+
+ private static final long serialVersionUID = -6197099063976776986L;
+
+ protected String factorId;
+ protected Object factorOldValue;
+ protected Object factorNewValue;
+
+ public InputDesignFactorEvent(InputDesign inputDesign,
+ Scenario scenario,
+ String factorId,
+ Object oldValue,
+ Object newValue) {
+ super(inputDesign, scenario);
+ this.factorId = factorId;
+ this.factorOldValue = oldValue;
+ this.factorNewValue = newValue;
+ }
+
+ public String getFactorId() {
+ return factorId;
+ }
+
+ public Object getFactorOldValue() {
+ return factorOldValue;
+ }
+
+ public Object getFactorNewValue() {
+ return factorNewValue;
+ }
+}
Added: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignScenarioEvent.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignScenarioEvent.java (rev 0)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/InputDesignScenarioEvent.java 2011-12-21 11:31:51 UTC (rev 9)
@@ -0,0 +1,54 @@
+/*
+ * #%L
+ * JMexico :: Model
+ *
+ * $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.model.event;
+
+import fr.reseaumexico.model.InputDesign;
+import fr.reseaumexico.model.Scenario;
+
+import java.util.EventObject;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class InputDesignScenarioEvent extends EventObject {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Scenario scenario;
+
+ public InputDesignScenarioEvent(InputDesign inputDesign, Scenario scenario) {
+ super(inputDesign);
+ this.scenario = scenario;
+ }
+
+ @Override
+ public InputDesign getSource() {
+ return (InputDesign) super.getSource();
+ }
+
+ public Scenario getScenario() {
+ return scenario;
+ }
+}
Added: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/ScenarioFactorValueEvent.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/ScenarioFactorValueEvent.java (rev 0)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/event/ScenarioFactorValueEvent.java 2011-12-21 11:31:51 UTC (rev 9)
@@ -0,0 +1,65 @@
+/*
+ * #%L
+ * JMexico :: Model
+ *
+ * $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.model.event;
+
+import fr.reseaumexico.model.Scenario;
+
+import java.util.EventObject;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class ScenarioFactorValueEvent extends EventObject {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String factorId;
+ protected Object factorOldValue;
+ protected Object factorNewValue;
+
+ public ScenarioFactorValueEvent(Scenario scenario, String factorId, Object factorOldValue, Object factorNewValue) {
+ super(scenario);
+ this.factorId = factorId;
+ this.factorOldValue = factorOldValue;
+ this.factorNewValue = factorNewValue;
+ }
+
+ @Override
+ public Scenario getSource() {
+ return (Scenario) super.getSource();
+ }
+
+ public String getFactorId() {
+ return factorId;
+ }
+
+ public Object getFactorOldValue() {
+ return factorOldValue;
+ }
+
+ public Object getFactorNewValue() {
+ return factorNewValue;
+ }
+}
Modified: trunk/jmexico-model/src/main/xmi/mexico.zargo
===================================================================
(Binary files differ)
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java 2011-12-19 17:40:54 UTC (rev 8)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java 2011-12-21 11:31:51 UTC (rev 9)
@@ -27,12 +27,12 @@
import fr.reseaumexico.model.Factor;
import fr.reseaumexico.model.InputDesign;
import fr.reseaumexico.model.Scenario;
+import fr.reseaumexico.model.event.InputDesignScenarioEvent;
+import fr.reseaumexico.model.event.InputDesignScenarioListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -44,8 +44,10 @@
/**
* @author sletellier <letellier(a)codelutin.com>
*/
-public class InputDesignTableModel extends AbstractTableModel {
+public class InputDesignTableModel extends AbstractTableModel implements InputDesignScenarioListener {
+ private static final long serialVersionUID = 1L;
+
protected TableModel delegate;
protected InputDesign inputDesign;
@@ -55,32 +57,18 @@
public void setInputDesign(InputDesign inputDesign) {
this.inputDesign = inputDesign;
- inputDesign.addPropertyChangeListener(InputDesign.PROPERTY_SCENARIOS, new PropertyChangeListener() {
+ inputDesign.addInputDesignScenarioListener(this);
- @Override
- public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
- Object newValue = propertyChangeEvent.getNewValue();
- if (newValue == null) {
- // was removed
- scenarioRemoved();
- }
-
- Object oldValue = propertyChangeEvent.getOldValue();
- if (oldValue == null) {
- // was added
- scenarioAdded();
- }
- }
- });
-
fireTableStructureChanged();
}
- protected void scenarioAdded() {
+ @Override
+ public void onScenarioAdded(InputDesignScenarioEvent event) {
fireTableStructureChanged();
}
- protected void scenarioRemoved() {
+ @Override
+ public void onScenarioRemoved(InputDesignScenarioEvent event) {
fireTableStructureChanged();
}
Modified: trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_fr_FR.properties
===================================================================
--- trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_fr_FR.properties 2011-12-19 17:40:54 UTC (rev 8)
+++ trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_fr_FR.properties 2011-12-21 11:31:51 UTC (rev 9)
@@ -7,4 +7,4 @@
jmexico.menu.file.open=Ouvrir
jmexico.menu.file.save=Sauvegarder
jmexico.remove.scenario=Suppression d'un scenario
-jmexico.scenario.inputName=Nom du scénario à ajouter \:
\ No newline at end of file
+jmexico.scenario.inputName=Nom du scénario à ajouter \:
1
0
r8 - in trunk: jmexico-model/src/main/java/fr/reseaumexico/model/parser jmexico-model/src/main/java/fr/reseaumexico/model/writer jmexico-swing-editor jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model jmexico-swing-editor/src/main/resources/i18n
by sletellier@users.forge.codelutin.com 19 Dec '11
by sletellier@users.forge.codelutin.com 19 Dec '11
19 Dec '11
Author: sletellier
Date: 2011-12-19 18:40:54 +0100 (Mon, 19 Dec 2011)
New Revision: 8
Url: http://forge.codelutin.com/repositories/revision/jmexico/8
Log:
- Write jmexicoTableModel
- Creating InputDesignEditor
- Debug ExperimentDesign parser
Added:
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.css
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditor.jaxx
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditorHandler.java
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java
trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_en_GB.properties
Modified:
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/XmlNode.java
trunk/jmexico-swing-editor/pom.xml
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.jaxx
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUIHandler.java
trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_fr_FR.properties
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 2011-12-16 15:54:27 UTC (rev 7)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java 2011-12-19 17:40:54 UTC (rev 8)
@@ -68,6 +68,7 @@
import static fr.reseaumexico.model.MexicoXmlConstant.EXPERIMENT_DESIGN_LICENCE;
import static fr.reseaumexico.model.MexicoXmlConstant.FACTORS;
import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR_DESCRIPTION;
+import static fr.reseaumexico.model.MexicoXmlConstant.FACTOR_ID;
import static fr.reseaumexico.model.MexicoXmlConstant.FEATURE;
import static fr.reseaumexico.model.MexicoXmlConstant.FEATURE_NAME;
import static fr.reseaumexico.model.MexicoXmlConstant.FEATURE_VALUE;
@@ -156,6 +157,10 @@
Factor factor = new FactorImpl();
+ // parse id
+ String id = parser.getAttributeValue(null, FACTOR_ID);
+ factor.setId(id);
+
// parse description
int eventType = parser.nextTag();
if (eventType == XmlPullParser.START_TAG &&
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/XmlNode.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/XmlNode.java 2011-12-16 15:54:27 UTC (rev 7)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/XmlNode.java 2011-12-19 17:40:54 UTC (rev 8)
@@ -118,7 +118,11 @@
for (Map.Entry<String,String> entry : entries) {
// add to builder param like : name="value"
- builder.append(" ").append(entry.getKey()).append("=\"").append(entry.getValue()).append("\"");
+ builder.append(" ")
+ .append(entry.getKey())
+ .append("=\"")
+ .append(StringEscapeUtils.escapeXml(entry.getValue()))
+ .append("\"");
}
return builder.toString();
}
Modified: trunk/jmexico-swing-editor/pom.xml
===================================================================
--- trunk/jmexico-swing-editor/pom.xml 2011-12-16 15:54:27 UTC (rev 7)
+++ trunk/jmexico-swing-editor/pom.xml 2011-12-19 17:40:54 UTC (rev 8)
@@ -61,6 +61,14 @@
<name>JMexico :: Swing Editor</name>
<description>JMexico - Swing Editor module</description>
+ <properties>
+ <!-- jaxx configuration -->
+ <jaxx.addProjectClassPath>true</jaxx.addProjectClassPath>
+ <jaxx.addSourcesToClassPath>true</jaxx.addSourcesToClassPath>
+ <jaxx.autoImportCss>true</jaxx.autoImportCss>
+ <jaxx.autoRecurseInCss>false</jaxx.autoRecurseInCss>
+ </properties>
+
<!-- ************************************************************* -->
<!-- *** Build Settings ****************************************** -->
<!-- ************************************************************* -->
Added: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.css
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.css (rev 0)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.css 2011-12-19 17:40:54 UTC (rev 8)
@@ -0,0 +1,36 @@
+/*
+ * #%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%
+ */
+#menuFile {
+ text:"jmexico.menu.file";
+ mnemonic:F;
+}
+#menuFileOpen {
+ text:"jmexico.menu.file.open";
+ mnemonic:O;
+}
+#menuFileSave {
+ text:"jmexico.menu.file.save";
+ mnemonic:S;
+}
\ No newline at end of file
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.jaxx
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.jaxx 2011-12-16 15:54:27 UTC (rev 7)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.jaxx 2011-12-19 17:40:54 UTC (rev 8)
@@ -24,8 +24,30 @@
-->
<JFrame id='mainFrame' decorator='help'
width='800' height='800'
+ layout='{new BorderLayout()}'
onWindowClosing='getHandler().closeApplication(this)'>
+ <import>
+ java.io.File
+ fr.reseaumexico.editor.ui.editor.InputDesignEditor
+ </import>
+
<MexicoMainUIHandler id="handler"
initializer='getContextValue(MexicoMainUIHandler.class)'/>
+
+ <File id="selectedFile" javaBean='null'/>
+
+ <!-- menu -->
+ <JMenuBar id='menu'>
+ <JMenu id='menuFile'>
+ <JMenuItem id='menuFileOpen'
+ onActionPerformed="getHandler().openFile(this)"/>
+
+ <JMenuItem id='menuFileSave'
+ enabled='{selectedFile != null}'
+ onActionPerformed="getHandler().saveFile(this)"/>
+
+ </JMenu>
+ </JMenuBar>
+ <InputDesignEditor id='inputDesignEditor' constraints='BorderLayout.CENTER'/>
</JFrame>
Modified: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUIHandler.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUIHandler.java 2011-12-16 15:54:27 UTC (rev 7)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUIHandler.java 2011-12-19 17:40:54 UTC (rev 8)
@@ -24,9 +24,18 @@
*/
package fr.reseaumexico.editor.ui;
+import fr.reseaumexico.model.InputDesign;
+import fr.reseaumexico.model.parser.InputDesignParser;
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.*;
+import java.io.File;
+
+import static org.nuiton.i18n.I18n._;
+
/**
* Handler of main UI
*
@@ -35,6 +44,9 @@
*/
public class MexicoMainUIHandler {
+ /** Logger */
+ private static Log log = LogFactory.getLog(MexicoMainUIHandler.class);
+
public void closeApplication(MexicoMainUI ui) {
ui.dispose();
}
@@ -55,4 +67,47 @@
return ui;
}
+
+ public void openFile(MexicoMainUI ui) {
+ 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);
+
+ // keep selected file
+ ui.setSelectedFile(selectedFile);
+
+ // set input design
+ ui.getInputDesignEditor().setInputDesign(inputDesign);
+ }
+ }
+
+ public void saveFile(MexicoMainUI ui) {
+ // get selected file
+ File selectedFile = ui.getSelectedFile();
+
+ // get modified model
+
+ // TODO save it
+ }
+
+ protected InputDesign readInputDesignFile(File selectedFile) {
+ InputDesign inputDesignModel = null;
+ try {
+ // parse inputDesign
+ InputDesignParser inputDesignParser = new InputDesignParser(selectedFile);
+ try {
+ inputDesignModel = inputDesignParser.getModel();
+ } finally {
+ inputDesignParser.close();
+ }
+
+ } catch (Exception eee) {
+ log.error("Failed to read inputDesign file '" + selectedFile.getName() + "'", eee);
+ }
+
+ return inputDesignModel;
+ }
}
Added: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditor.jaxx
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditor.jaxx (rev 0)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditor.jaxx 2011-12-19 17:40:54 UTC (rev 8)
@@ -0,0 +1,65 @@
+<!--
+ #%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%
+ -->
+<JPanel id='inputDesignEditor' layout='{new BorderLayout()}'>
+
+ <import>
+javax.swing.table.TableModel
+javax.swing.table.DefaultTableModel
+fr.reseaumexico.model.InputDesign
+fr.reseaumexico.editor.ui.model.InputDesignTableModel
+ </import>
+
+ <InputDesignEditorHandler id='handler'/>
+
+ <InputDesignTableModel id='model' javaBean="new InputDesignTableModel()"/>
+
+ <script>
+ <![CDATA[
+public void setInputDesign(InputDesign inputDesign) {
+ getModel().setInputDesign(inputDesign);
+}
+
+public InputDesign getInputDesign() {
+ return getModel().getInputDesign();
+}
+ ]]>
+ </script>
+
+ <JScrollPane constraints='BorderLayout.CENTER'>
+ <JTable id='inputDesignTable' model='{getModel()}'/>
+ </JScrollPane>
+
+ <JPanel id='factorActionPanel' constraints='BorderLayout.SOUTH'>
+ <JButton id='addScenarioButton'
+ text='jmexico.add.scenario'
+ constraints='BorderLayout.WEST'
+ onActionPerformed='getHandler().addScenario(this)'/>
+ <JButton id='removeScenarioButton'
+ text='jmexico.remove.scenario'
+ constraints='BorderLayout.EAST'
+ onActionPerformed='getHandler().removeScenario(this)'/>
+ </JPanel>
+
+</JPanel>
Added: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditorHandler.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditorHandler.java (rev 0)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/editor/InputDesignEditorHandler.java 2011-12-19 17:40:54 UTC (rev 8)
@@ -0,0 +1,95 @@
+/*
+ * #%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.ui.editor;
+
+import com.google.common.collect.Maps;
+import fr.reseaumexico.model.Factor;
+import fr.reseaumexico.model.InputDesign;
+import fr.reseaumexico.model.Scenario;
+import fr.reseaumexico.model.ScenarioImpl;
+
+import javax.swing.*;
+
+import java.util.Collection;
+import java.util.Map;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
+ */
+public class InputDesignEditorHandler {
+
+ public void addScenario(InputDesignEditor editor) {
+ InputDesign inputDesign = editor.getInputDesign();
+
+ String selectedName = JOptionPane.showInputDialog(editor, _("jmexico.scenario.inputName"));
+
+ // check that name is never used
+ Collection<Scenario> scenarios = inputDesign.getScenarios();
+
+ int maxOrder = 0;
+ for (Scenario scenario : scenarios) {
+ if (selectedName.equalsIgnoreCase(scenario.getName())) {
+
+ JOptionPane.showMessageDialog(editor,
+ _("jmexico.error.title"),
+ _("jmexico.error.scenario.name.used"),
+ JOptionPane.ERROR_MESSAGE);
+
+ return;
+ }
+ int orderNumber = scenario.getOrderNumber();
+ if (maxOrder < orderNumber) {
+ maxOrder = orderNumber;
+ }
+ }
+
+ // 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().getFactors();
+ Map<Factor, Object> factorValues = Maps.newHashMap();
+ for (Factor factor : factors) {
+ factorValues.put(factor, null);
+ }
+ scenarioToAdd.setFactorValues(factorValues);
+
+ inputDesign.addScenarios(scenarioToAdd);
+ }
+
+ public void removeScenario(InputDesignEditor editor) {
+
+ }
+}
Added: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java (rev 0)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/model/InputDesignTableModel.java 2011-12-19 17:40:54 UTC (rev 8)
@@ -0,0 +1,204 @@
+/*
+ * #%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.ui.model;
+
+import fr.reseaumexico.model.Factor;
+import fr.reseaumexico.model.InputDesign;
+import fr.reseaumexico.model.Scenario;
+
+import javax.swing.table.AbstractTableModel;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableModel;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class InputDesignTableModel extends AbstractTableModel {
+
+ protected TableModel delegate;
+ protected InputDesign inputDesign;
+
+ public InputDesignTableModel() {
+ delegate = new DefaultTableModel();
+ }
+
+ public void setInputDesign(InputDesign inputDesign) {
+ this.inputDesign = inputDesign;
+ inputDesign.addPropertyChangeListener(InputDesign.PROPERTY_SCENARIOS, new PropertyChangeListener() {
+
+ @Override
+ public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
+ Object newValue = propertyChangeEvent.getNewValue();
+ if (newValue == null) {
+ // was removed
+ scenarioRemoved();
+ }
+
+ Object oldValue = propertyChangeEvent.getOldValue();
+ if (oldValue == null) {
+ // was added
+ scenarioAdded();
+ }
+ }
+ });
+
+ fireTableStructureChanged();
+ }
+
+ protected void scenarioAdded() {
+ fireTableStructureChanged();
+ }
+
+ protected void scenarioRemoved() {
+ fireTableStructureChanged();
+ }
+
+ public InputDesign getInputDesign() {
+ return inputDesign;
+ }
+
+ public Collection<Scenario> getScenarios() {
+ return inputDesign.getScenarios();
+ }
+
+ public Scenario getScenario(int i) {
+ return inputDesign.getScenarios(i);
+ }
+
+ @Override
+ public int getRowCount() {
+ if (inputDesign == null) {
+ return delegate.getRowCount();
+ }
+ Map<Factor, Object> factorValues = getScenario(0).getFactorValues();
+ return factorValues == null ? 0 : factorValues.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 String.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);
+ }
+
+ boolean isFirstColumn = columnIndex == 0;
+ if (!isFirstColumn) {
+ columnIndex = columnIndex - 1;
+ }
+ Scenario scenario = getScenario(columnIndex);
+ if (scenario == null) {
+ return null;
+ }
+ Map<Factor,Object> factorValues = scenario.getFactorValues();
+
+ // get key if rowIndex
+ Set<Factor> factors = factorValues.keySet();
+ List<Factor> factorsList = new ArrayList<Factor>(factors);
+ Factor factor = factorsList.get(rowIndex);
+ if (isFirstColumn) {
+ return factor.getId();
+ }
+ return factorValues.get(factor);
+ }
+
+ @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);
+ Map<Factor,Object> factorValues = scenario.getFactorValues();
+
+ // get key if rowIndex
+ Set<Factor> factors = factorValues.keySet();
+ List<Factor> factorsList = new ArrayList<Factor>(factors);
+ Factor factor = factorsList.get(rowIndex);
+
+ // TODO sletellier 20111219 : open specific editor
+
+ factorValues.put(factor, o);
+ scenario.setFactorValues(factorValues);
+
+ fireTableCellUpdated(rowIndex, columnIndex);
+ }
+}
Added: trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_en_GB.properties
===================================================================
--- trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_en_GB.properties (rev 0)
+++ trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_en_GB.properties 2011-12-19 17:40:54 UTC (rev 8)
@@ -0,0 +1,10 @@
+jmexico.add.scenario=Ajout d'un scenario
+jmexico.error.scenario.name.used=Error \: scenario name '%1$s' is already used.
+jmexico.error.title=Error
+jmexico.factor.name=Factor
+jmexico.file.open.dialog=Open an InputDesign file.
+jmexico.menu.file=File
+jmexico.menu.file.open=Open
+jmexico.menu.file.save=Save
+jmexico.remove.scenario=Suppression d'un scenario
+jmexico.scenario.inputName=Name of scenario to add \:
Modified: trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_fr_FR.properties
===================================================================
--- trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_fr_FR.properties 2011-12-16 15:54:27 UTC (rev 7)
+++ trunk/jmexico-swing-editor/src/main/resources/i18n/jmexico-swing-editor_fr_FR.properties 2011-12-19 17:40:54 UTC (rev 8)
@@ -0,0 +1,10 @@
+jmexico.add.scenario=Ajout d'un scenario
+jmexico.error.scenario.name.used=Erreur \: le scenario '%1$s' est déjà utilisé.
+jmexico.error.title=Erreur
+jmexico.factor.name=Facteur
+jmexico.file.open.dialog=Ouvrir un fichier InputDesign
+jmexico.menu.file=Fichier
+jmexico.menu.file.open=Ouvrir
+jmexico.menu.file.save=Sauvegarder
+jmexico.remove.scenario=Suppression d'un scenario
+jmexico.scenario.inputName=Nom du scénario à ajouter \:
\ No newline at end of file
1
0
r7 - in trunk: jmexico-model/src/main/java/fr/reseaumexico/model/parser jmexico-swing-editor jmexico-swing-editor/src/main/java jmexico-swing-editor/src/main/java/fr jmexico-swing-editor/src/main/java/fr/reseaumexico jmexico-swing-editor/src/main/java/fr/reseaumexico/editor jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui jmexico-swing-editor/src/main/resources
by sletellier@users.forge.codelutin.com 16 Dec '11
by sletellier@users.forge.codelutin.com 16 Dec '11
16 Dec '11
Author: sletellier
Date: 2011-12-16 16:54:27 +0100 (Fri, 16 Dec 2011)
New Revision: 7
Url: http://forge.codelutin.com/repositories/revision/jmexico/7
Log:
Init jaxx ui
Added:
trunk/jmexico-swing-editor/src/main/java/fr/
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/RunMexico.java
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.jaxx
trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUIHandler.java
trunk/jmexico-swing-editor/src/main/resources/log4j.properties
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-swing-editor/pom.xml
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 2011-12-16 15:24:26 UTC (rev 6)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java 2011-12-16 15:54:27 UTC (rev 7)
@@ -76,8 +76,8 @@
import static fr.reseaumexico.model.MexicoXmlConstant.LEVEL_WEIGHT;
/**
-* @author sletellier <letellier(a)codelutin.com>
-*/
+ * @author sletellier <letellier(a)codelutin.com>
+ */
public class ExperimentDesignParser extends MexicoXmlParser<ExperimentDesign> {
protected Map<String, Factor> factors;
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 2011-12-16 15:24:26 UTC (rev 6)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/InputDesignParser.java 2011-12-16 15:54:27 UTC (rev 7)
@@ -52,8 +52,8 @@
import static fr.reseaumexico.model.MexicoXmlConstant.SCENARIO_ORDER_NUMBER;
/**
-* @author sletellier <letellier(a)codelutin.com>
-*/
+ * @author sletellier <letellier(a)codelutin.com>
+ */
public class InputDesignParser extends MexicoXmlParser<InputDesign> {
protected ExperimentDesignParser experimentDesignParser;
Modified: trunk/jmexico-swing-editor/pom.xml
===================================================================
--- trunk/jmexico-swing-editor/pom.xml 2011-12-16 15:24:26 UTC (rev 6)
+++ trunk/jmexico-swing-editor/pom.xml 2011-12-16 15:54:27 UTC (rev 7)
@@ -46,6 +46,12 @@
<artifactId>commons-logging</artifactId>
</dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
</dependencies>
<!-- ************************************************************* -->
Added: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/RunMexico.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/RunMexico.java (rev 0)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/RunMexico.java 2011-12-16 15:54:27 UTC (rev 7)
@@ -0,0 +1,55 @@
+/*
+ * #%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.ui.MexicoMainUIHandler;
+import fr.reseaumexico.editor.ui.MexicoMainUI;
+import jaxx.runtime.context.JAXXInitialContext;
+import jaxx.runtime.swing.ErrorDialogUI;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class RunMexico {
+
+ /** Logger */
+ private static Log log = LogFactory.getLog(RunMexico.class);
+
+ public static void main(String[] args) {
+
+ try {
+ JAXXInitialContext jaxxContext = new JAXXInitialContext();
+ MexicoMainUIHandler mainHandler = new MexicoMainUIHandler();
+
+ MexicoMainUI mainUI = mainHandler.initUI(jaxxContext);
+ } catch (Exception eee) {
+ log.error(eee.getMessage(), eee);
+ ErrorDialogUI.showError(eee);
+ System.exit(1);
+ }
+ }
+}
Added: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.jaxx
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.jaxx (rev 0)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUI.jaxx 2011-12-16 15:54:27 UTC (rev 7)
@@ -0,0 +1,31 @@
+<!--
+ #%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%
+ -->
+<JFrame id='mainFrame' decorator='help'
+ width='800' height='800'
+ onWindowClosing='getHandler().closeApplication(this)'>
+
+ <MexicoMainUIHandler id="handler"
+ initializer='getContextValue(MexicoMainUIHandler.class)'/>
+</JFrame>
Added: trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUIHandler.java
===================================================================
--- trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUIHandler.java (rev 0)
+++ trunk/jmexico-swing-editor/src/main/java/fr/reseaumexico/editor/ui/MexicoMainUIHandler.java 2011-12-16 15:54:27 UTC (rev 7)
@@ -0,0 +1,58 @@
+/*
+ * #%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.ui;
+
+import jaxx.runtime.context.JAXXInitialContext;
+import jaxx.runtime.swing.ErrorDialogUI;
+
+/**
+ * Handler of main UI
+ *
+ * @author sletellier <letellier(a)codelutin.com>
+ * @since 0.1
+ */
+public class MexicoMainUIHandler {
+
+ public void closeApplication(MexicoMainUI ui) {
+ ui.dispose();
+ }
+
+ public MexicoMainUI initUI(JAXXInitialContext context) {
+
+ // share handler
+ context.add(this);
+
+ // construt main UI
+ MexicoMainUI ui = new MexicoMainUI(context);
+
+ // display
+ ui.setVisible(true);
+
+ // synch to error dialog
+ ErrorDialogUI.init(ui);
+
+ return ui;
+ }
+}
Added: trunk/jmexico-swing-editor/src/main/resources/log4j.properties
===================================================================
--- trunk/jmexico-swing-editor/src/main/resources/log4j.properties (rev 0)
+++ trunk/jmexico-swing-editor/src/main/resources/log4j.properties 2011-12-16 15:54:27 UTC (rev 7)
@@ -0,0 +1,34 @@
+###
+# #%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%
+###
+# Global logging configuration
+log4j.rootLogger=ERROR, stdout
+
+# Console output
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
+
+# mexicos
+log4j.logger.fr.reseaumexico.editor=INFO
1
0
r6 - in trunk/jmexico-model/src/main: java/fr/reseaumexico/model java/fr/reseaumexico/model/parser java/fr/reseaumexico/model/writer xmi
by sletellier@users.forge.codelutin.com 16 Dec '11
by sletellier@users.forge.codelutin.com 16 Dec '11
16 Dec '11
Author: sletellier
Date: 2011-12-16 16:24:26 +0100 (Fri, 16 Dec 2011)
New Revision: 6
Url: http://forge.codelutin.com/repositories/revision/jmexico/6
Log:
- Change model to add multiple levels and distributionParameters
- Apply modification on writer and parser
Modified:
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/MexicoXmlConstant.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java
trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ExperimentDesignXmlWriter.java
trunk/jmexico-model/src/main/xmi/mexico.zargo
Modified: trunk/jmexico-model/src/main/java/fr/reseaumexico/model/MexicoXmlConstant.java
===================================================================
--- trunk/jmexico-model/src/main/java/fr/reseaumexico/model/MexicoXmlConstant.java 2011-12-16 10:34:15 UTC (rev 5)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/MexicoXmlConstant.java 2011-12-16 15:24:26 UTC (rev 6)
@@ -24,6 +24,8 @@
*/
package fr.reseaumexico.model;
+import java.beans.Introspector;
+
/**
* Regroup all mexico xml constants tags
*
@@ -32,31 +34,37 @@
*/
public class MexicoXmlConstant {
- public static final String EXPERIMENT_DESIGN = ExperimentDesign.class.getSimpleName().toLowerCase();
+ public static final String EXPERIMENT_DESIGN = Introspector.decapitalize(ExperimentDesign.class.getSimpleName());
public static final String EXPERIMENT_DESIGN_DATE = ExperimentDesign.PROPERTY_DATE;
public static final String EXPERIMENT_DESIGN_ID = ExperimentDesign.PROPERTY_ID;
public static final String EXPERIMENT_DESIGN_AUTHOR = ExperimentDesign.PROPERTY_AUTHOR;
public static final String EXPERIMENT_DESIGN_LICENCE = ExperimentDesign.PROPERTY_LICENCE;
public static final String EXPERIMENT_DESIGN_DESCRIPTION = ExperimentDesign.PROPERTY_DESCRIPTION;
public static final String FACTORS = ExperimentDesign.PROPERTY_FACTORS;
- public static final String FACTOR = Factor.class.getSimpleName().toLowerCase();
+ public static final String FACTOR = Introspector.decapitalize(Factor.class.getSimpleName());
public static final String FACTOR_ID = Factor.PROPERTY_ID;
public static final String FACTOR_NAME = Factor.PROPERTY_NAME;
public static final String FACTOR_UNIT = Factor.PROPERTY_UNIT;
public static final String FACTOR_DESCRIPTION = Factor.PROPERTY_DESCRIPTION;
public static final String DOMAIN = Factor.PROPERTY_DOMAIN;
public static final String DOMAIN_NAME = Domain.PROPERTY_NAME;
- public static final String DOMAIN_DISTRIBUTION_PARAMETER = Domain.PROPERTY_DISTRIBUTION_PARAMETER;
- public static final String DOMAIN_LEVEL = Domain.PROPERTY_LEVEL;
+ public static final String DOMAIN_DISTRIBUTION_NAME = Domain.PROPERTY_DISTRIBUTION_NAME;
+ public static final String DOMAIN_DISTRIBUTION_PARAMETER = Introspector.decapitalize(DistributionParameter.class.getSimpleName());
+ public static final String DISTRIBUTION_PARAMETER_NAME = DistributionParameter.PROPERTY_NAME;
+ public static final String DISTRIBUTION_PARAMETER_VALUE = DistributionParameter.PROPERTY_VALUE;
+ public static final String DISTRIBUTION_PARAMETER_VALUE_TYPE = DistributionParameter.PROPERTY_VALUE_TYPE;
+ public static final String DOMAIN_LEVEL = Introspector.decapitalize(Level.class.getSimpleName());
+ public static final String LEVEL_VALUE = Level.PROPERTY_VALUE;
+ public static final String LEVEL_WEIGHT = Level.PROPERTY_WEIGHT;
public static final String DOMAIN_VALUE_TYPE = Domain.PROPERTY_VALUE_TYPE;
public static final String DOMAIN_NOMINAL_VALUE = Domain.PROPERTY_NOMINAL_VALUE;
- public static final String FEATURE = Feature.class.getSimpleName().toLowerCase();
+ public static final String FEATURE = Introspector.decapitalize(Feature.class.getSimpleName());
public static final String FEATURE_NAME = Feature.PROPERTY_NAME;
public static final String FEATURE_VALUE = Feature.PROPERTY_VALUE;
public static final String FEATURE_VALUE_TYPE = Feature.PROPERTY_VALUE_TYPE;
- public static final String INPUT_DESIGN = InputDesign.class.getSimpleName().toLowerCase();
+ public static final String INPUT_DESIGN = Introspector.decapitalize(InputDesign.class.getSimpleName());
public static final String INPUT_DESIGN_DATE = InputDesign.PROPERTY_DATE;
- public static final String SCENARIO = Scenario.class.getSimpleName().toLowerCase();
+ public static final String SCENARIO = Introspector.decapitalize(Scenario.class.getSimpleName());
public static final String SCENARIO_NAME = Scenario.PROPERTY_NAME;
public static final String SCENARIO_ORDER_NUMBER = Scenario.PROPERTY_ORDER_NUMBER;
public static final String SCENARIO_FACTOR_VALUES = Scenario.PROPERTY_FACTOR_VALUES;
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 2011-12-16 10:34:15 UTC (rev 5)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/parser/ExperimentDesignParser.java 2011-12-16 15:24:26 UTC (rev 6)
@@ -26,6 +26,8 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import fr.reseaumexico.model.DistributionParameter;
+import fr.reseaumexico.model.DistributionParameterImpl;
import fr.reseaumexico.model.Domain;
import fr.reseaumexico.model.DomainImpl;
import fr.reseaumexico.model.ExperimentDesign;
@@ -34,6 +36,8 @@
import fr.reseaumexico.model.FactorImpl;
import fr.reseaumexico.model.Feature;
import fr.reseaumexico.model.FeatureImpl;
+import fr.reseaumexico.model.Level;
+import fr.reseaumexico.model.LevelImpl;
import fr.reseaumexico.model.MexicoTechnicalException;
import fr.reseaumexico.model.ValueType;
import org.xmlpull.v1.XmlPullParser;
@@ -47,7 +51,11 @@
import java.util.Map;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN;
+import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_DISTRIBUTION_NAME;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_DISTRIBUTION_PARAMETER;
+import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_NAME;
+import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_VALUE;
+import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_VALUE_TYPE;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_LEVEL;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_NAME;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_NOMINAL_VALUE;
@@ -64,6 +72,8 @@
import static fr.reseaumexico.model.MexicoXmlConstant.FEATURE_NAME;
import static fr.reseaumexico.model.MexicoXmlConstant.FEATURE_VALUE;
import static fr.reseaumexico.model.MexicoXmlConstant.FEATURE_VALUE_TYPE;
+import static fr.reseaumexico.model.MexicoXmlConstant.LEVEL_VALUE;
+import static fr.reseaumexico.model.MexicoXmlConstant.LEVEL_WEIGHT;
/**
* @author sletellier <letellier(a)codelutin.com>
@@ -187,30 +197,79 @@
return factor;
}
- protected Domain parseDomain(XmlPullParser parser) throws XmlPullParserException {
+ protected Domain parseDomain(XmlPullParser parser) throws XmlPullParserException, IOException {
Domain domain = new DomainImpl();
// name
- String name = parser.getAttributeValue(null, DOMAIN_NAME);
- domain.setName(name);
+ String domaineName = parser.getAttributeValue(null, DOMAIN_NAME);
+ domain.setName(domaineName);
- // distributionParameter
- String distributionParameter = parser.getAttributeValue(null, DOMAIN_DISTRIBUTION_PARAMETER);
- domain.setDistributionParameter(distributionParameter);
+ // distributionName
+ String distributionName = parser.getAttributeValue(null, DOMAIN_DISTRIBUTION_NAME);
+ domain.setDistributionName(distributionName);
- // level
- String level = parser.getAttributeValue(null, DOMAIN_LEVEL);
- domain.setLevel(Integer.parseInt(level));
-
// valueType
- String valueType = parser.getAttributeValue(null, DOMAIN_VALUE_TYPE);
- domain.setValueType(ValueType.valueOf(valueType));
+ String domaineValueType = parser.getAttributeValue(null, DOMAIN_VALUE_TYPE);
+ domain.setValueType(ValueType.valueOf(domaineValueType));
// nominaleValue
// TODO sletellier 20111215 : take care of type
String nominaleValue = parser.getAttributeValue(null, DOMAIN_NOMINAL_VALUE);
domain.setNominalValue(nominaleValue);
+ // distributionParameters
+ int eventType = parser.nextTag();
+ if (eventType == XmlPullParser.START_TAG &&
+ parserEqual(parser, DOMAIN_DISTRIBUTION_PARAMETER)) {
+
+ List<DistributionParameter> distributionParameters = Lists.newArrayList();
+ while (parserEqual(parser, DOMAIN_DISTRIBUTION_PARAMETER)) {
+ DistributionParameter distributionParameter = new DistributionParameterImpl();
+
+ // name
+ String name = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_NAME);
+ distributionParameter.setName(name);
+
+ // value
+ // TODO sletellier 20111215 : take care of type
+ String value = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_VALUE);
+ distributionParameter.setValue(value);
+
+ // valueType
+ String valueType = parser.getAttributeValue(null, DISTRIBUTION_PARAMETER_VALUE_TYPE);
+ distributionParameter.setValueType(ValueType.valueOf(valueType));
+
+ distributionParameters.add(distributionParameter);
+
+ // read close tag
+ parser.nextTag();
+
+ // read next start tag
+ eventType = parser.nextTag();
+ }
+ domain.setDistributionParameters(distributionParameters);
+ }
+
+ // level
+ if (eventType == XmlPullParser.START_TAG &&
+ parserEqual(parser, DOMAIN_LEVEL)) {
+
+ List<Level> levels = Lists.newArrayList();
+ while (parserEqual(parser, DOMAIN_LEVEL)) {
+ Level level = new LevelImpl();
+
+ // value
+ String value = parser.getAttributeValue(null, LEVEL_VALUE);
+ level.setValue(value);
+
+ // weight
+ String weight = parser.getAttributeValue(null, LEVEL_WEIGHT);
+ level.setWeight(Integer.valueOf(weight));
+
+ levels.add(level);
+ }
+ domain.setLevels(levels);
+ }
return domain;
}
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 2011-12-16 10:34:15 UTC (rev 5)
+++ trunk/jmexico-model/src/main/java/fr/reseaumexico/model/writer/ExperimentDesignXmlWriter.java 2011-12-16 15:24:26 UTC (rev 6)
@@ -24,9 +24,11 @@
*/
package fr.reseaumexico.model.writer;
+import fr.reseaumexico.model.DistributionParameter;
import fr.reseaumexico.model.Domain;
import fr.reseaumexico.model.ExperimentDesign;
import fr.reseaumexico.model.Factor;
+import fr.reseaumexico.model.Level;
import org.apache.commons.lang3.StringUtils;
import java.io.File;
@@ -35,8 +37,14 @@
import java.util.Date;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN;
+import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_DISTRIBUTION_NAME;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_DISTRIBUTION_PARAMETER;
+import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_NAME;
+import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_VALUE;
+import static fr.reseaumexico.model.MexicoXmlConstant.DISTRIBUTION_PARAMETER_VALUE_TYPE;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_LEVEL;
+import static fr.reseaumexico.model.MexicoXmlConstant.LEVEL_VALUE;
+import static fr.reseaumexico.model.MexicoXmlConstant.LEVEL_WEIGHT;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_NAME;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_NOMINAL_VALUE;
import static fr.reseaumexico.model.MexicoXmlConstant.DOMAIN_VALUE_TYPE;
@@ -124,10 +132,30 @@
if (domain != null) {
XmlNode domainXmlNode = XmlNode.createElement(factorXmlNode, DOMAIN);
addParameter(domainXmlNode, DOMAIN_NAME, domain.getName());
- addParameter(domainXmlNode, DOMAIN_DISTRIBUTION_PARAMETER, domain.getDistributionParameter());
- addParameter(domainXmlNode, DOMAIN_LEVEL, String.valueOf(domain.getLevel()));
addParameter(domainXmlNode, DOMAIN_VALUE_TYPE, domain.getValueType());
addParameter(domainXmlNode, DOMAIN_NOMINAL_VALUE, domain.getNominalValue());
+ addParameter(domainXmlNode, DOMAIN_DISTRIBUTION_NAME, domain.getDistributionName());
+
+ // distributionParameters
+ Collection<DistributionParameter> distributionParameters = domain.getDistributionParameters();
+ if (distributionParameters != null) {
+ for (DistributionParameter distributionParameter : distributionParameters) {
+ XmlNode distributionParameterXmlNode = XmlNode.createElement(domainXmlNode, DOMAIN_DISTRIBUTION_PARAMETER);
+ addParameter(distributionParameterXmlNode, DISTRIBUTION_PARAMETER_NAME, distributionParameter.getName());
+ addParameter(distributionParameterXmlNode, DISTRIBUTION_PARAMETER_VALUE, distributionParameter.getValue());
+ addParameter(distributionParameterXmlNode, DISTRIBUTION_PARAMETER_VALUE_TYPE, distributionParameter.getValueType());
+ }
+ }
+
+ // levels
+ Collection<Level> levels = domain.getLevels();
+ if (levels != null) {
+ for (Level level : levels) {
+ XmlNode distributionParameterXmlNode = XmlNode.createElement(domainXmlNode, DOMAIN_LEVEL);
+ addParameter(distributionParameterXmlNode, LEVEL_VALUE, level.getValue());
+ addParameter(distributionParameterXmlNode, LEVEL_WEIGHT, level.getWeight());
+ }
+ }
}
// features
Modified: trunk/jmexico-model/src/main/xmi/mexico.zargo
===================================================================
(Binary files differ)
1
0