Isis-fish-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
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
May 2015
- 1 participants
- 28 discussions
r4240 - trunk/src/main/java/fr/ifremer/isisfish/ui/simulator
by echatellier@users.forge.codelutin.com 29 May '15
by echatellier@users.forge.codelutin.com 29 May '15
29 May '15
Author: echatellier
Date: 2015-05-29 14:34:11 +0000 (Fri, 29 May 2015)
New Revision: 4240
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4240
Log:
refs #7172: Pouvoir r?\195?\169ordonner les regles
Modified:
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx 2015-05-29 14:13:59 UTC (rev 4239)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx 2015-05-29 14:34:11 UTC (rev 4240)
@@ -70,7 +70,6 @@
<JScrollPane enabled="{isActive()}">
<fr.ifremer.isisfish.ui.models.common.GenericListModel id="selectedRulesListModel" genericType="fr.ifremer.isisfish.rule.Rule" />
<JList id="selectedRulesList" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}"
- dragEnabled="true" dropMode="{DropMode.INSERT}"
genericType="fr.ifremer.isisfish.rule.Rule" model='{selectedRulesListModel}'
cellRenderer='{new fr.ifremer.isisfish.ui.models.rule.RuleListCellRenderer()}'
onValueChanged='removeRuleButton.setEnabled(selectedRulesList.getSelectedIndex() != -1);clearRulesButton.setEnabled(selectedRulesList.getSelectedIndex() != -1);handler.displayRuleParameters()' />
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java 2015-05-29 14:13:59 UTC (rev 4239)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java 2015-05-29 14:34:11 UTC (rev 4240)
@@ -30,14 +30,12 @@
import java.awt.dnd.DragGestureEvent;
import java.awt.dnd.DragGestureListener;
import java.awt.dnd.DragSource;
-import java.awt.dnd.DragSourceAdapter;
-import java.awt.dnd.DragSourceDropEvent;
-import java.awt.dnd.DragSourceListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.List;
+import javax.swing.DropMode;
import javax.swing.JList;
import javax.swing.TransferHandler;
@@ -98,6 +96,10 @@
*/
protected void setupSelectedListDnD() {
final JList<Rule> selectedRuleList = ruleChooser.getSelectedRulesList();
+
+ // params
+ selectedRuleList.setDragEnabled(true);
+ selectedRuleList.setDropMode(DropMode.INSERT);
// transfert handler
selectedRuleList.setTransferHandler(new TransferHandler() {
@@ -133,6 +135,8 @@
Rule rule = rules.remove(index);
rules.add(dropTargetIndex, rule);
+ selectedRuleList.setSelectedIndex(dropTargetIndex);
+
result = true;
} catch (Exception e) {
result = false;
@@ -143,24 +147,14 @@
}
});
- // drag source listener
- final DragSourceListener dsl = new DragSourceAdapter() {
- @Override
- public void dragDropEnd(DragSourceDropEvent dsde) {
- // update ui if move were successful
- if (dsde.getDropSuccess()) {
- ruleChooser.selectedRulesListModel.setElementList(ruleChooser.getRulesList());
- }
- }
- };
-
// drag gesture
final DragSource ds = new DragSource();
ds.createDefaultDragGestureRecognizer(selectedRuleList, DnDConstants.ACTION_MOVE, new DragGestureListener() {
@Override
public void dragGestureRecognized(DragGestureEvent dge) {
StringSelection transferable = new StringSelection(Integer.toString(selectedRuleList.getSelectedIndex()));
- ds.startDrag(dge, DragSource.DefaultCopyDrop, transferable, dsl);
+ // use null because gragsource listener is not used here (could be)
+ ds.startDrag(dge, DragSource.DefaultCopyDrop, transferable, null);
}
});
}
1
0
r4239 - trunk/src/main/java/fr/ifremer/isisfish/ui/simulator
by echatellier@users.forge.codelutin.com 29 May '15
by echatellier@users.forge.codelutin.com 29 May '15
29 May '15
Author: echatellier
Date: 2015-05-29 14:13:59 +0000 (Fri, 29 May 2015)
New Revision: 4239
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4239
Log:
fixes #7172: Pouvoir r?\195?\169ordonner les regles
Using drag and drop
Modified:
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx 2015-05-27 13:01:38 UTC (rev 4238)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx 2015-05-29 14:13:59 UTC (rev 4239)
@@ -28,7 +28,7 @@
<RuleChooserHandler id="handler" constructorParams="this" />
<!-- Rules collection managed by current ui instance. -->
- <java.util.List genericType='fr.ifremer.isisfish.rule.Rule' id="rulesList" javaBean='new java.util.ArrayList<fr.ifremer.isisfish.rule.Rule>()'/>
+ <java.util.List genericType='fr.ifremer.isisfish.rule.Rule' id="rulesList" javaBean='new java.util.ArrayList<>()'/>
<!-- Active enabled binding property -->
<Boolean id="active" javaBean="true"/>
@@ -70,6 +70,7 @@
<JScrollPane enabled="{isActive()}">
<fr.ifremer.isisfish.ui.models.common.GenericListModel id="selectedRulesListModel" genericType="fr.ifremer.isisfish.rule.Rule" />
<JList id="selectedRulesList" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}"
+ dragEnabled="true" dropMode="{DropMode.INSERT}"
genericType="fr.ifremer.isisfish.rule.Rule" model='{selectedRulesListModel}'
cellRenderer='{new fr.ifremer.isisfish.ui.models.rule.RuleListCellRenderer()}'
onValueChanged='removeRuleButton.setEnabled(selectedRulesList.getSelectedIndex() != -1);clearRulesButton.setEnabled(selectedRulesList.getSelectedIndex() != -1);handler.displayRuleParameters()' />
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java 2015-05-27 13:01:38 UTC (rev 4238)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java 2015-05-29 14:13:59 UTC (rev 4239)
@@ -23,11 +23,24 @@
package fr.ifremer.isisfish.ui.simulator;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DragGestureEvent;
+import java.awt.dnd.DragGestureListener;
+import java.awt.dnd.DragSource;
+import java.awt.dnd.DragSourceAdapter;
+import java.awt.dnd.DragSourceDropEvent;
+import java.awt.dnd.DragSourceListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.List;
+import javax.swing.JList;
+import javax.swing.TransferHandler;
+
import fr.ifremer.isisfish.IsisFishException;
import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.datastore.RegionStorage;
@@ -76,9 +89,83 @@
if (ruleChooser.isShowFactorColumn()) {
SwingUtil.fixTableColumnWidth(ruleChooser.selectedRuleParameterTable, 2, 30);
}
+
+ setupSelectedListDnD();
}
/**
+ * Setup drag and drop support on selected list.
+ */
+ protected void setupSelectedListDnD() {
+ final JList<Rule> selectedRuleList = ruleChooser.getSelectedRulesList();
+
+ // transfert handler
+ selectedRuleList.setTransferHandler(new TransferHandler() {
+ private static final long serialVersionUID = 7821083182552085625L;
+ @Override
+ public boolean canImport(TransferHandler.TransferSupport support) {
+ boolean result = false;
+
+ if (support.isDataFlavorSupported(DataFlavor.stringFlavor)) {
+ JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();
+ if (dl.getIndex() != -1) {
+ return true;
+ }
+ }
+
+ return result;
+ }
+ @Override
+ public boolean importData(TransferHandler.TransferSupport support) {
+ boolean result = false;
+
+ if (canImport(support)) {
+ Transferable transferable = support.getTransferable();
+ try {
+ String indexString = (String) transferable.getTransferData(DataFlavor.stringFlavor);
+
+ int index = Integer.parseInt(indexString);
+ JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();
+ int dropTargetIndex = dl.getIndex();
+
+ // perform real move
+ List<Rule> rules = ruleChooser.getRulesList();
+ Rule rule = rules.remove(index);
+ rules.add(dropTargetIndex, rule);
+
+ result = true;
+ } catch (Exception e) {
+ result = false;
+ }
+ }
+
+ return result;
+ }
+ });
+
+ // drag source listener
+ final DragSourceListener dsl = new DragSourceAdapter() {
+ @Override
+ public void dragDropEnd(DragSourceDropEvent dsde) {
+ // update ui if move were successful
+ if (dsde.getDropSuccess()) {
+ ruleChooser.selectedRulesListModel.setElementList(ruleChooser.getRulesList());
+ }
+ }
+ };
+
+ // drag gesture
+ final DragSource ds = new DragSource();
+ ds.createDefaultDragGestureRecognizer(selectedRuleList, DnDConstants.ACTION_MOVE, new DragGestureListener() {
+ @Override
+ public void dragGestureRecognized(DragGestureEvent dge) {
+ StringSelection transferable = new StringSelection(Integer.toString(selectedRuleList.getSelectedIndex()));
+ ds.startDrag(dge, DragSource.DefaultCopyDrop, transferable, dsl);
+ }
+ });
+ }
+
+ /**
* Get new instance for selected rules names and add it to {@code rulesList} list.
*/
protected void addSelectedRules() {
1
0
r4238 - trunk/src/main/java/fr/ifremer/isisfish/util/ssh
by echatellier@users.forge.codelutin.com 27 May '15
by echatellier@users.forge.codelutin.com 27 May '15
27 May '15
Author: echatellier
Date: 2015-05-27 13:01:38 +0000 (Wed, 27 May 2015)
New Revision: 4238
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4238
Log:
char array can't be cleared (otherwize totally removed)
Modified:
trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHAgent.java
Modified: trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHAgent.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHAgent.java 2015-05-27 13:00:56 UTC (rev 4237)
+++ trunk/src/main/java/fr/ifremer/isisfish/util/ssh/SSHAgent.java 2015-05-27 13:01:38 UTC (rev 4238)
@@ -185,7 +185,7 @@
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(charBuffer);
byte[] bytes = Arrays.copyOfRange(byteBuffer.array(),
byteBuffer.position(), byteBuffer.limit());
- Arrays.fill(charBuffer.array(), '\u0000'); // clear sensitive data
+ //Arrays.fill(charBuffer.array(), '\u0000'); // clear sensitive data
Arrays.fill(byteBuffer.array(), (byte) 0); // clear sensitive data
return bytes;
}
1
0
r4237 - in trunk/src/main/java/fr/ifremer/isisfish/ui: input input/cell input/equation input/fisheryregion input/gear input/metier input/observation input/population input/port input/setofvessels input/species input/strategy input/triptype input/variable input/vesseltype input/zone queue
by echatellier@users.forge.codelutin.com 27 May '15
by echatellier@users.forge.codelutin.com 27 May '15
27 May '15
Author: echatellier
Date: 2015-05-27 13:00:56 +0000 (Wed, 27 May 2015)
New Revision: 4237
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4237
Log:
Move script code to dedicated handler (all)
Modified:
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/cell/CellHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/cell/CellUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/EquationEditorPaneHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/EquationEditorPaneUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/InputOneEquationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/InputOneEquationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/fisheryregion/FisheryRegionHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/fisheryregion/FisheryRegionUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearTabHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearTabUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/RangeOfValuesHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/RangeOfValuesUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/SelectivityHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/SelectivityUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoSpeciesHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoSpeciesUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoZoneHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoZoneUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierTabHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierTabUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationBasicsHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationBasicsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationCapturabilityHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationCapturabilityUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationEquationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationEquationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationGroupHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationGroupUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEmigrationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEmigrationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEquationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEquationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationImmigrationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationImmigrationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationMigrationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationMigrationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationPriceHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationPriceUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationRecruitmentHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationRecruitmentUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonSpacializedHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonSpacializedUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonsHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesEditorHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesEditorUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/WizardGroupCreationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/WizardGroupCreationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/port/PortHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/port/PortUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionParametersHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionParametersUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsBasicsHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsBasicsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesStructuredHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesStructuredUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyMonthInfoHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyMonthInfoUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyOneMonthInfoHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyOneMonthInfoUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyTabHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyTabUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/triptype/TripTypeHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/triptype/TripTypeUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/vesseltype/VesselTypeHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/vesseltype/VesselTypeUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneBasicsHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneBasicsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueUI.jaxx
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -45,7 +45,7 @@
protected T inputContentUI;
- protected void init(final T inputContentUI) {
+ protected InputContentHandler(T inputContentUI) {
this.inputContentUI = inputContentUI;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -84,10 +84,7 @@
*/
public abstract B getBean();
-public <U extends InputContentHandler<? extends InputContentUI<B>>> U getHandler() {
- // FIXME remove this and set it abstract
- return (U)new InputContentHandler<InputContentUI<B>>();
-}
+public abstract <U extends InputContentHandler<? extends InputContentUI<B>>> U getHandler();
/**
* Pas très safe, le bean doit s'appeler changeModel dans l'heritage "FORCEMENT"
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -92,13 +92,17 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(InputHandler.class);
+ protected InputUI inputUI;
+
+ public InputHandler(InputUI inputUI) {
+ this.inputUI = inputUI;
+ }
+
/**
* Post init ui.
- *
- * @param ui ui
*/
- public void init(InputUI ui) {
- PromptSupport.setPrompt(t("isisfish.input.newRegion"), ui.getFieldNewRegion());
+ public void afterInit() {
+ PromptSupport.setPrompt(t("isisfish.input.newRegion"), inputUI.getFieldNewRegion());
}
/**
@@ -106,10 +110,9 @@
*
* Before loading region, try to close old one.
*
- * @param inputUI input ui
* @param name region name to load
*/
- protected void loadRegion(InputUI inputUI, String name) {
+ protected void loadRegion(String name) {
if (log.isDebugEnabled()) {
log.debug("Load region " + name);
}
@@ -165,10 +168,8 @@
/**
* Reload current loaded fishery tree.
- *
- * @param inputUI inputUI
*/
- public void reloadFisheryTree(InputUI inputUI) {
+ public void reloadFisheryTree() {
FisheryTreeHelper fisheryTreeHelper = inputUI.getContextValue(FisheryTreeHelper.class);
TreeModel fisheryTreeModel = inputUI.getContextValue(TreeModel.class);
fisheryTreeHelper.refreshNode((FisheryTreeNode)fisheryTreeModel.getRoot(), true);
@@ -177,10 +178,9 @@
/**
* Main ui fishery region selection changed.
*
- * @param inputUI inputUI
* @param e event
*/
- public void regionChange(final InputUI inputUI, ItemEvent e) {
+ public void regionChange(ItemEvent e) {
// event launched twice with itemchange listener
if (e.getStateChange() == ItemEvent.SELECTED) {
final String name = (String)inputUI.getFieldCurrentRegion().getSelectedItem();
@@ -194,7 +194,7 @@
SwingUtilities.invokeLater(new Runnable() {
public void run() {
- loadRegion(inputUI, name);
+ loadRegion(name);
setStatusMessage(inputUI, t("isisfish.message.load.finished"));
inputUI.setCursor(Cursor.getDefaultCursor());
}
@@ -204,24 +204,21 @@
/**
* Create new region (called if region name is not empty).
- *
- * @param inputUI inputUI
*/
- public void createNewRegion(InputUI inputUI) {
+ public void createNewRegion() {
String name = inputUI.getFieldNewRegion().getText();
setStatusMessage(inputUI, t("isisfish.message.creating.region", name), true);
if (RegionStorage.getRegionNames().contains(name)) {
JOptionPane.showMessageDialog(inputUI, t("isisfish.error.region.already.exists"));
- }
- else {
+ } else {
try {
RegionStorage.create(name);
} catch (StorageException ex) {
throw new IsisFishRuntimeException("Can't create region", ex);
}
inputUI.getFieldNewRegion().setText("");
- refreshRegionList(inputUI, name);
+ refreshRegionList(name);
}
setStatusMessage(inputUI, t("isisfish.message.creation.finished"));
@@ -230,28 +227,24 @@
/**
* Rafraichit la liste des regions.
*
- * @param inputUI inputUI
* @param selectedItem region to select
*/
- protected void refreshRegionList(InputUI inputUI, String selectedItem) {
+ protected void refreshRegionList(String selectedItem) {
// refresh region list
GenericComboModel<String> regionsModel = new GenericComboModel<>(RegionStorage.getRegionNames());
inputUI.getFieldCurrentRegion().setModel(regionsModel);
// event is fired by setSelectedItem to call #regionChange
if (selectedItem != null) {
inputUI.getFieldCurrentRegion().setSelectedItem(selectedItem);
+ } else {
+ loadRegion(null);
}
- else {
- loadRegion(inputUI, null);
- }
}
/**
* Exporter la region dans un zip.
- *
- * @param inputUI inputUI
*/
- public void importRegion(InputUI inputUI) {
+ public void importRegion() {
setStatusMessage(inputUI, t("isisfish.message.import.zip"), true);
try {
@@ -260,7 +253,7 @@
if (file != null) {
RegionStorage.importZip(file);
- refreshRegionList(inputUI, null);
+ refreshRegionList(null);
}
} catch (Exception eee) {
@@ -272,10 +265,8 @@
/**
* Exporter la region dans un zip.
- *
- * @param inputUI inputUI
*/
- public void importRegionAndRename(InputUI inputUI) {
+ public void importRegionAndRename() {
setStatusMessage(inputUI, t("isisfish.message.import.zip"), true);
try {
@@ -287,7 +278,7 @@
.showInputDialog(t("isisfish.message.name.imported.region"));
RegionStorage.importAndRenameZip(file, newName);
- refreshRegionList(inputUI, null);
+ refreshRegionList(null);
}
} catch (Exception eee) {
throw new IsisFishRuntimeException(t("isisfish.error.region.import"), eee);
@@ -302,7 +293,7 @@
*
* @param inputUI inputUI
*/
- public void importRegionFromSimulation(InputUI inputUI) {
+ public void importRegionFromSimulation() {
/*setStatusMessage(inputUI, t("isisfish.message.import"), true);
@@ -342,10 +333,8 @@
* Exporter la region dans un zip
*
* Call only if region is loaded.
- *
- * @param inputUI inputUI
*/
- public void exportRegion(InputUI inputUI) {
+ public void exportRegion() {
try {
File file = FileUtil.getFile(".*.zip$",
t("isisfish.message.import.region.zipped"));
@@ -374,17 +363,16 @@
/**
* Remove region.
*
- * @param inputUI input ui
* @param vcsDelete if true delete region in CVS too
*/
- public void removeRegion(InputUI inputUI, boolean vcsDelete) {
+ public void removeRegion(boolean vcsDelete) {
try {
RegionStorage regionStorage = inputUI.getContextValue(RegionStorage.class);
int resp = JOptionPane.showConfirmDialog(inputUI,
t("isisfish.message.confirm.remove.region", regionStorage.getName()));
if (resp == JOptionPane.YES_OPTION) {
regionStorage.delete(vcsDelete);
- refreshRegionList(inputUI, null);
+ refreshRegionList(null);
}
} catch (StorageException eee) {
throw new IsisFishRuntimeException("Can't delete region", eee);
@@ -393,10 +381,8 @@
/**
* Copy la region avec un autre nom.
- *
- * @param inputUI input ui
*/
- public void copyRegion(InputUI inputUI) {
+ public void copyRegion() {
try {
String newName = JOptionPane
.showInputDialog(t("isisfish.message.new.region.name"));
@@ -416,10 +402,8 @@
/**
* Commit region.
- *
- * @param inputUI input ui
*/
- public void commitRegionInCVS(InputUI inputUI) {
+ public void commitRegionInCVS() {
try {
RegionStorage regionStorage = inputUI.getContextValue(RegionStorage.class);
setStatusMessage(inputUI, t("isisfish.message.commiting.region", regionStorage.getName()), true);
@@ -447,10 +431,8 @@
/**
* Explore region and export any enabled sensitivity factor name with value.
- *
- * @param inputUI input ui
*/
- public void exportRegionSensitivityFactors(InputUI inputUI) {
+ public void exportRegionSensitivityFactors() {
try {
File exportFile = FileUtil.getFile(t("isisfish.input.sensitivity.export.title"),
@@ -480,10 +462,9 @@
/**
* Changement de selection dans l'arbre de la pecherie.
*
- * @param inputUI
* @param event
*/
- public void nodeSelectionChanged(InputUI inputUI, TreeSelectionEvent event) {
+ public void nodeSelectionChanged(TreeSelectionEvent event) {
TreePath newTreePath = event.getNewLeadSelectionPath();
if (newTreePath != null) {
@@ -531,10 +512,9 @@
/**
* Delete tree node referenced by parent, and auto select parent node.
*
- * @param inputUI ui containing tree
* @param topiaId node id to delete
*/
- public void deleteTreeNode(InputUI inputUI, String topiaId) {
+ public void deleteTreeNode(String topiaId) {
FisheryTreeHelper fisheryTreeHelper = inputUI.getContextValue(FisheryTreeHelper.class);
TreeModel fisheryTreeModel = inputUI.getContextValue(TreeModel.class);
FisheryTreeNode newSelectNode = fisheryTreeHelper.findNode((FisheryTreeNode)fisheryTreeModel.getRoot(), topiaId);
@@ -546,11 +526,10 @@
/**
* Insert new tree node and select it.
*
- * @param inputUI ui containing tree
* @param nodeClass node type to create
* @param topiaEntity node to insert
*/
- public void insertTreeNode(InputUI inputUI, Class nodeClass, TopiaEntityContextable topiaEntity) {
+ public void insertTreeNode(Class nodeClass, TopiaEntityContextable topiaEntity) {
FisheryTreeHelper fisheryTreeHelper = inputUI.getContextValue(FisheryTreeHelper.class);
// on part du principe que pour ne pas compliquer les ui est les lier
@@ -588,10 +567,9 @@
/**
* Update tree node for topiaId.
*
- * @param inputUI ui containing tree
* @param topiaId node id to update
*/
- public void updateTreeNode(InputUI inputUI, String topiaId) {
+ public void updateTreeNode(String topiaId) {
FisheryTreeHelper fisheryTreeHelper = inputUI.getContextValue(FisheryTreeHelper.class);
TreeModel fisheryTreeModel = inputUI.getContextValue(TreeModel.class);
FisheryTreeNode newSelectNode = fisheryTreeHelper.findNode((FisheryTreeNode)fisheryTreeModel.getRoot(), topiaId);
@@ -602,10 +580,9 @@
* Dans le cas d'une creation de population, on doit la creer dans
* une espèce. On doit rechercher celle qui est sélectionnée dans l'arbre.
*
- * @param inputUI input ui
* @return selected species
*/
- public Species findSpecies(InputUI inputUI) {
+ public Species findSpecies() {
// get selected node
FisheryTreeHelper treeHelper = inputUI.getContextValue(FisheryTreeHelper.class);
FisheryTreeNode selectedNode = treeHelper.getSelectedNode();
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputSaveVerifier.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -181,7 +181,7 @@
noModif();
InputUI inputUI = inputContentUI.getParentContainer(InputUI.class);
- inputUI.getHandler().deleteTreeNode(inputUI, topiaEntity.getTopiaId());
+ inputUI.getHandler().deleteTreeNode(topiaEntity.getTopiaId());
}
} catch (TopiaException eee) {
throw new IsisFishRuntimeException("Can't remove entity: " + currentEntities.get(0), eee);
@@ -233,7 +233,7 @@
topiaContext.commitTransaction();
InputUI inputUI = inputContentUI.getContextValue(InputUI.class, JAXXUtil.PARENT);
- inputUI.getHandler().insertTreeNode(inputUI, type, topiaEntity);
+ inputUI.getHandler().insertTreeNode(type, topiaEntity);
//rootUI.setStatusMessage(t("isisfish.message.creation.finished"));
} catch (Exception eee) {
@@ -261,7 +261,7 @@
topiaContext.commitTransaction();
InputUI inputUI = inputContentUI.getParentContainer(InputUI.class);
- inputUI.getHandler().updateTreeNode(inputUI, topiaEntity.getTopiaId());
+ inputUI.getHandler().updateTreeNode(topiaEntity.getTopiaId());
// FIXME echatellier 20111201 small fix because save
// button has to reset internal ui change model state
@@ -306,7 +306,7 @@
}
InputUI inputUI = inputContentUI.getParentContainer(InputUI.class);
- inputUI.getHandler().updateTreeNode(inputUI, topiaEntity.getTopiaId());
+ inputUI.getHandler().updateTreeNode(topiaEntity.getTopiaId());
// FIXME echatellier 20111201 small fix because save
// button has to reset internal ui change model state
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -24,40 +24,40 @@
-->
<fr.ifremer.isisfish.ui.NavigationUI>
- <InputHandler id="handler" />
+ <InputHandler id="handler" constructorParams="this" />
<Boolean id="regionLoaded" javaBean="false" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
<JMenuBar id="menu" constraints='BorderLayout.NORTH'>
<JMenu text="isisfish.common.region" id="menuRegion">
- <JMenuItem id="menuRegionImport" text="isisfish.input.menu.importRegion" onActionPerformed="handler.importRegion(this)" />
- <JMenuItem id="menuRegionImportRename" text="isisfish.input.menu.importRenameRegion" onActionPerformed="handler.importRegionAndRename(this)" />
- <JMenuItem text="isisfish.input.menu.importRegionSimulation" onActionPerformed="handler.importRegionFromSimulation(this)" enabled="false"/>
- <JMenuItem id="menuRegionExport" text="isisfish.input.menu.exportRegion" enabled='{isRegionLoaded()}' onActionPerformed="handler.exportRegion(this)" />
- <JMenuItem id="menuRegionCopy" text="isisfish.input.menu.copyRegion" enabled='{isRegionLoaded()}' onActionPerformed="handler.copyRegion(this)" />
+ <JMenuItem id="menuRegionImport" text="isisfish.input.menu.importRegion" onActionPerformed="handler.importRegion()" />
+ <JMenuItem id="menuRegionImportRename" text="isisfish.input.menu.importRenameRegion" onActionPerformed="handler.importRegionAndRename()" />
+ <JMenuItem text="isisfish.input.menu.importRegionSimulation" onActionPerformed="handler.importRegionFromSimulation()" enabled="false"/>
+ <JMenuItem id="menuRegionExport" text="isisfish.input.menu.exportRegion" enabled='{isRegionLoaded()}' onActionPerformed="handler.exportRegion()" />
+ <JMenuItem id="menuRegionCopy" text="isisfish.input.menu.copyRegion" enabled='{isRegionLoaded()}' onActionPerformed="handler.copyRegion()" />
<JSeparator/>
- <JMenuItem text="isisfish.input.menu.removeLocaly" enabled='{isRegionLoaded()}' onActionPerformed="handler.removeRegion(this, false)" />
+ <JMenuItem text="isisfish.input.menu.removeLocaly" enabled='{isRegionLoaded()}' onActionPerformed="handler.removeRegion(false)" />
</JMenu>
<JMenu text="isisfish.input.menu.server">
- <JMenuItem text="isisfish.input.menu.addRegion" enabled='{isRegionLoaded()}' onActionPerformed="handler.commitRegionInCVS(this)" />
- <JMenuItem text="isisfish.input.menu.commit" enabled='{isRegionLoaded()}' onActionPerformed="handler.commitRegionInCVS(this)" />
+ <JMenuItem text="isisfish.input.menu.addRegion" enabled='{isRegionLoaded()}' onActionPerformed="handler.commitRegionInCVS()" />
+ <JMenuItem text="isisfish.input.menu.commit" enabled='{isRegionLoaded()}' onActionPerformed="handler.commitRegionInCVS()" />
<JSeparator/>
- <JMenuItem text="isisfish.input.menu.removeLocalyRemotely" enabled='{isRegionLoaded()}' onActionPerformed="handler.removeRegion(this, true)" />
+ <JMenuItem text="isisfish.input.menu.removeLocalyRemotely" enabled='{isRegionLoaded()}' onActionPerformed="handler.removeRegion(true)" />
</JMenu>
<JMenu text="isisfish.input.menu.sensitivity">
- <JMenuItem text="isisfish.input.menu.sensitivity.export" enabled='{isRegionLoaded()}' onActionPerformed="handler.exportRegionSensitivityFactors(this)" />
+ <JMenuItem text="isisfish.input.menu.sensitivity.export" enabled='{isRegionLoaded()}' onActionPerformed="handler.exportRegionSensitivityFactors()" />
</JMenu>
</JMenuBar>
<JSplitPane oneTouchExpandable="true" dividerLocation="200" orientation="HORIZONTAL" constraints='BorderLayout.CENTER'>
<JPanel layout='{new BorderLayout()}' minimumSize="{new java.awt.Dimension(0,0)}">
<org.jdesktop.swingx.JXComboBox id="fieldCurrentRegion" constraints='BorderLayout.NORTH'
- onItemStateChanged='handler.regionChange(this, event)'
+ onItemStateChanged='handler.regionChange(event)'
model='{new fr.ifremer.isisfish.ui.models.common.GenericComboModel<String>(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames())}'/>
<JPanel id="treePanel" name="treePanel" layout='{new BorderLayout()}' constraints='BorderLayout.CENTER'>
<JScrollPane constraints='BorderLayout.CENTER'>
@@ -65,7 +65,7 @@
selectionMode='{javax.swing.tree.TreeSelectionModel.SINGLE_TREE_SELECTION}'/>
<JTree id="fisheryRegionTree" selectionModel='{fisheryRegionTreeSelectionModel}'
rootVisible="true" selectionRow='0' model='{new javax.swing.tree.DefaultTreeModel(null)}' rowHeight="0"
- onValueChanged="handler.nodeSelectionChanged(this, event)" />
+ onValueChanged="handler.nodeSelectionChanged(event)" />
</JScrollPane>
</JPanel>
<Table constraints='BorderLayout.SOUTH'>
@@ -75,7 +75,7 @@
</cell>
<cell fill='horizontal'>
<JButton id="buttonNewRegion" text="isisfish.input.createNewRegion"
- onActionPerformed='handler.createNewRegion(this)' enabled='{getFieldNewRegion().getText().length() > 0}'/>
+ onActionPerformed='handler.createNewRegion()' enabled='{getFieldNewRegion().getText().length() > 0}'/>
</cell>
</row>
</Table>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/cell/CellHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/cell/CellHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/cell/CellHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -48,24 +48,27 @@
protected boolean init;
- protected void init(final CellUI cellUI) {
- super.init(cellUI);
+ protected CellHandler(CellUI inputContentUI) {
+ super(inputContentUI);
+ }
- cellUI.setButtonTitle(t("isisfish.input.continueZones"));
- cellUI.setNextPath(n("isisfish.input.tree.zones"));
+ protected void afterInit() {
+ inputContentUI.setButtonTitle(t("isisfish.input.continueZones"));
+ inputContentUI.setNextPath(n("isisfish.input.tree.zones"));
+
//cellMap.init(cellMapInfo);
- new OpenMapEvents(cellUI.getCellMap(), new SelectMouseMode(false), CellSelectionLayer.SINGLE_SELECTION) {
+ new OpenMapEvents(inputContentUI.getCellMap(), new SelectMouseMode(false), CellSelectionLayer.SINGLE_SELECTION) {
@Override
public boolean mouseClicked(MouseEvent e) {
boolean result = false;
// TODO a fixer, le clic droit du menu contextuel
// passe aussi par ici et change la selection
//if (e.getButton() == MouseEvent.BUTTON1) {
- if (cellUI.getBean() != null) { // impossible de desactiver la carte :(
- for (Cell c : cellUI.getCellMap().getSelectedCells()) {
- if (!c.getTopiaId().equals(cellUI.getBean().getTopiaId())) {
- cellUI.getFieldCell().setSelectedItem(c);
+ if (inputContentUI.getBean() != null) { // impossible de desactiver la carte :(
+ for (Cell c : inputContentUI.getCellMap().getSelectedCells()) {
+ if (!c.getTopiaId().equals(inputContentUI.getBean().getTopiaId())) {
+ inputContentUI.getFieldCell().setSelectedItem(c);
result = true;
}
}
@@ -75,23 +78,23 @@
}
};
- cellUI.addPropertyChangeListener(CellUI.PROPERTY_BEAN, new PropertyChangeListener() {
+ inputContentUI.addPropertyChangeListener(CellUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
init = true;
GenericComboModel<Cell> cellModel = new GenericComboModel<>();
if (evt.getNewValue() == null) {
- cellUI.fieldCellName.setText("");
- cellUI.fieldCellLatitude.setText("");
- cellUI.fieldCellLongitude.setText("");
- cellUI.fieldCellComment.setText("");
- cellUI.fieldCellLand.setSelected(false);
+ inputContentUI.fieldCellName.setText("");
+ inputContentUI.fieldCellLatitude.setText("");
+ inputContentUI.fieldCellLongitude.setText("");
+ inputContentUI.fieldCellComment.setText("");
+ inputContentUI.fieldCellLand.setSelected(false);
}
if (evt.getNewValue() != null) {
//jaxx.runtime.SwingUtil.fillComboBox(cellUI.fieldCell, cellUI.getFisheryRegion().getCell(), cellUI.getBean());
- cellModel.setElementList(cellUI.getFisheryRegion().getCell());
- cellModel.setSelectedItem(cellUI.getBean());
+ cellModel.setElementList(inputContentUI.getFisheryRegion().getCell());
+ cellModel.setSelectedItem(inputContentUI.getBean());
}
- cellUI.fieldCell.setModel(cellModel);
+ inputContentUI.fieldCell.setModel(cellModel);
init = false;
}
});
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/cell/CellUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/cell/CellUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/cell/CellUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Cell id='bean' javaBean='null'/>
- <CellHandler id="handler" />
+ <CellHandler id="handler" constructorParams="this" />
<BeanValidator id='validator'
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Cell'
@@ -37,7 +37,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/EquationEditorPaneHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/EquationEditorPaneHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/EquationEditorPaneHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -51,9 +51,11 @@
protected Class javaInterface = null;
- protected void init(final EquationEditorPaneUI equationUI) {
+ public EquationEditorPaneHandler(EquationEditorPaneUI equationUI) {
this.equationUI = equationUI;
+ }
+ protected void afterInit() {
equationUI.split.setDividerLocation(0.8);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/EquationEditorPaneUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/EquationEditorPaneUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/EquationEditorPaneUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -28,11 +28,11 @@
<Boolean id="resultOk" javaBean="false" />
- <EquationEditorPaneHandler id="handler" />
+ <EquationEditorPaneHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/InputOneEquationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/InputOneEquationHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/InputOneEquationHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -61,9 +61,12 @@
protected DocumentListener listener = null;
- protected void init(final InputOneEquationUI inputContentUI) {
- super.init(inputContentUI);
+ protected InputOneEquationHandler(InputOneEquationUI inputContentUI) {
+ super(inputContentUI);
+ // TODO Auto-generated constructor stub
+ }
+ protected void afterInit() {
inputContentUI.addPropertyChangeListener(InputOneEquationUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/InputOneEquationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/InputOneEquationUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/equation/InputOneEquationUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -42,11 +42,11 @@
<Boolean id="autoSaveModification" javaBean="true" />
- <InputOneEquationHandler id="handler" />
+ <InputOneEquationHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/fisheryregion/FisheryRegionHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/fisheryregion/FisheryRegionHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/fisheryregion/FisheryRegionHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -63,21 +63,23 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(FisheryRegionHandler.class);
- protected void init(final FisheryRegionUI fisheryRegionUI) {
- super.init(fisheryRegionUI);
+ protected FisheryRegionHandler(FisheryRegionUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
//cellMap.init(cellMapInfo);
- fisheryRegionUI.setButtonTitle(t("isisfish.input.continueCells"));
- fisheryRegionUI.setNextPath(n("isisfish.input.tree.cells"));
+ inputContentUI.setButtonTitle(t("isisfish.input.continueCells"));
+ inputContentUI.setNextPath(n("isisfish.input.tree.cells"));
- fisheryRegionUI.addPropertyChangeListener(FisheryRegionUI.PROPERTY_BEAN, new PropertyChangeListener() {
+ inputContentUI.addPropertyChangeListener(FisheryRegionUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
}
if (evt.getNewValue() != null) {
- setFieldMapfilesModel(fisheryRegionUI.getBean());
+ setFieldMapfilesModel(inputContentUI.getBean());
/* numberEditor is not working
fieldLatMin.init();
fieldLatMax.init();
@@ -272,7 +274,7 @@
// reload tree
InputUI inputUI = inputContentUI.getParentContainer(InputUI.class);
- inputUI.getHandler().reloadFisheryTree(inputUI);
+ inputUI.getHandler().reloadFisheryTree();
inputContentUI.setInfoText(t("isisfish.message.save.finished"));
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/fisheryregion/FisheryRegionUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/fisheryregion/FisheryRegionUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/fisheryregion/FisheryRegionUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.FisheryRegion id='bean' javaBean='null'/>
- <FisheryRegionHandler id="handler" />
+ <FisheryRegionHandler id="handler" constructorParams="this" />
<BeanValidator id='validator'
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.FisheryRegion'
@@ -37,7 +37,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -36,13 +36,15 @@
*/
public class GearHandler extends InputContentHandler<GearUI> {
- protected void init(final GearUI gearUI) {
- super.init(gearUI);
+ protected GearHandler(GearUI inputContentUI) {
+ super(inputContentUI);
+ }
- gearUI.setButtonTitle(t("isisfish.input.continueMetiers"));
- gearUI.setNextPath(n("isisfish.input.tree.metiers"));
+ protected void afterInit() {
+ inputContentUI.setButtonTitle(t("isisfish.input.continueMetiers"));
+ inputContentUI.setNextPath(n("isisfish.input.tree.metiers"));
- gearUI.addPropertyChangeListener(GearUI.PROPERTY_BEAN, new PropertyChangeListener() {
+ inputContentUI.addPropertyChangeListener(GearUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
@@ -55,6 +57,6 @@
// install change listener
// (depends on sensitivity can't be done on constructor)
- gearUI.installChangeListener(gearUI.gearTab);
+ inputContentUI.installChangeListener(inputContentUI.gearTab);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearTabHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearTabHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearTabHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -33,17 +33,20 @@
*/
public class GearTabHandler extends InputContentHandler<GearTabUI> {
- protected void init(final GearTabUI gearTabUI) {
- super.init(gearTabUI);
+ protected GearTabHandler(GearTabUI inputContentUI) {
+ super(inputContentUI);
+ }
- gearTabUI.addPropertyChangeListener(GearTabUI.PROPERTY_BEAN, new PropertyChangeListener() {
+ protected void afterInit() {
+
+ inputContentUI.addPropertyChangeListener(GearTabUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
- gearTabUI.fieldGearName.setText("");
- gearTabUI.fieldGearEffortUnit.setText("");
- gearTabUI.fieldGearStandardisationFactor.setText("");
- gearTabUI.fieldGearParamName.setText("");
- gearTabUI.fieldGearComment.setText("");
+ inputContentUI.fieldGearName.setText("");
+ inputContentUI.fieldGearEffortUnit.setText("");
+ inputContentUI.fieldGearStandardisationFactor.setText("");
+ inputContentUI.fieldGearParamName.setText("");
+ inputContentUI.fieldGearComment.setText("");
}
if (evt.getNewValue() != null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearTabUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearTabUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearTabUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Gear id='bean' javaBean='null'/>
- <GearTabHandler id="handler" />
+ <GearTabHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="gear"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Gear'
@@ -38,7 +38,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/GearUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -26,11 +26,11 @@
<fr.ifremer.isisfish.entities.Gear id='bean' javaBean='null'/>
- <GearHandler id="handler" />
+ <GearHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/RangeOfValuesHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/RangeOfValuesHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/RangeOfValuesHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -45,9 +45,12 @@
protected boolean init;
- protected void init(final RangeOfValuesUI inputContentUI) {
- super.init(inputContentUI);
+ protected RangeOfValuesHandler(RangeOfValuesUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.addPropertyChangeListener(RangeOfValuesUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/RangeOfValuesUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/RangeOfValuesUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/RangeOfValuesUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,11 +27,11 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Gear id='bean' javaBean='null'/>
- <RangeOfValuesHandler id="handler" />
+ <RangeOfValuesHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
<JPanel id='body'>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/SelectivityHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/SelectivityHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/SelectivityHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -53,14 +53,16 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(SelectivityHandler.class);
- protected void init(final SelectivityUI selectivityUI) {
- super.init(selectivityUI);
+ protected SelectivityHandler(SelectivityUI inputContentUI) {
+ super(inputContentUI);
+ }
- selectivityUI.addPropertyChangeListener(SelectivityUI.PROPERTY_BEAN, new PropertyChangeListener() {
+ protected void afterInit() {
+ inputContentUI.addPropertyChangeListener(SelectivityUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
- selectivityUI.setPopulation(null);
- selectivityUI.selectivityTable.setModel(new GearPopulationSelectivityModel());
+ inputContentUI.setPopulation(null);
+ inputContentUI.selectivityTable.setModel(new GearPopulationSelectivityModel());
}
if (evt.getNewValue() != null) {
refresh();
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/SelectivityUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/SelectivityUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/gear/SelectivityUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -29,7 +29,7 @@
<fr.ifremer.isisfish.entities.Population id='population' javaBean='null'/>
- <SelectivityHandler id="handler" />
+ <SelectivityHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="selectivity"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Gear'
@@ -41,7 +41,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -33,14 +33,16 @@
*/
public class MetierHandler extends InputContentHandler<MetierUI> {
- protected void init(final MetierUI metierUI) {
- super.init(metierUI);
+ protected MetierHandler(MetierUI inputContentUI) {
+ super(inputContentUI);
+ }
- metierUI.setButtonTitle(t("isisfish.input.continueTripTypes"));
- metierUI.setNextPath(n("isisfish.input.tree.triptypes"));
+ protected void afterInit() {
+ inputContentUI.setButtonTitle(t("isisfish.input.continueTripTypes"));
+ inputContentUI.setNextPath(n("isisfish.input.tree.triptypes"));
// install change listener
// (depends on sensitivity can't be done on constructor)
- metierUI.installChangeListener(metierUI.metierTab);
+ inputContentUI.installChangeListener(inputContentUI.metierTab);
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoSpeciesHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoSpeciesHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoSpeciesHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -53,9 +53,12 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(MetierSeasonInfoSpeciesHandler.class);
- protected void init(final MetierSeasonInfoSpeciesUI inputContentUI) {
- super.init(inputContentUI);
+ protected MetierSeasonInfoSpeciesHandler(MetierSeasonInfoSpeciesUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.addPropertyChangeListener(MetierSeasonInfoSpeciesUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
setSeasonModel();
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoSpeciesUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoSpeciesUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoSpeciesUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -31,7 +31,7 @@
<fr.ifremer.isisfish.entities.Species id='species' javaBean='null'/>
- <MetierSeasonInfoSpeciesHandler id="handler" />
+ <MetierSeasonInfoSpeciesHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="metier"
bean='{getMetierSeasonInfo()}' beanClass='fr.ifremer.isisfish.entities.MetierSeasonInfo'
@@ -47,7 +47,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoZoneHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoZoneHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoZoneHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -60,9 +60,11 @@
protected Interval interval = null;
protected boolean init = false;
- protected void init(final MetierSeasonInfoZoneUI inputContentUI) {
- super.init(inputContentUI);
+ protected MetierSeasonInfoZoneHandler(MetierSeasonInfoZoneUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
/*
* Don't add both in same listener.
* When first is set, last value from getPopulationSeasonInfo()
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoZoneUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoZoneUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierSeasonInfoZoneUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -29,7 +29,7 @@
<fr.ifremer.isisfish.entities.MetierSeasonInfo id='metierSeasonInfo' javaBean='null'/>
- <MetierSeasonInfoZoneHandler id="handler" />
+ <MetierSeasonInfoZoneHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="metier"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Metier'
@@ -50,7 +50,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierTabHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierTabHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierTabHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -37,21 +37,23 @@
protected boolean init;
- protected void init(final MetierTabUI metierTabUI) {
- super.init(metierTabUI);
+ protected MetierTabHandler(MetierTabUI inputContentUI) {
+ super(inputContentUI);
+ }
- metierTabUI.addPropertyChangeListener(MetierTabUI.PROPERTY_BEAN, new PropertyChangeListener() {
+ protected void afterInit() {
+ inputContentUI.addPropertyChangeListener(MetierTabUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
- GenericComboModel<Gear> model = new GenericComboModel<>(metierTabUI.getFisheryRegion().getGear());
+ GenericComboModel<Gear> model = new GenericComboModel<>(inputContentUI.getFisheryRegion().getGear());
if (evt.getNewValue() == null) {
}
if (evt.getNewValue() != null) {
init = true;
- model.setSelectedItem(metierTabUI.bean.getGear());
+ model.setSelectedItem(inputContentUI.bean.getGear());
init = false;
}
- metierTabUI.fieldMetierGear.setModel(model);
+ inputContentUI.fieldMetierGear.setModel(model);
}
});
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierTabUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierTabUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierTabUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Metier id='bean' javaBean='null'/>
- <MetierTabHandler id="handler" />
+ <MetierTabHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="metier"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Metier'
@@ -41,7 +41,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/metier/MetierUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -26,11 +26,11 @@
<fr.ifremer.isisfish.entities.Metier id='bean' javaBean='null'/>
- <MetierHandler id="handler" />
+ <MetierHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -41,7 +41,6 @@
import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.ui.input.InputContentHandler;
-import fr.ifremer.isisfish.ui.input.metier.MetierSeasonInfoSpeciesHandler;
import fr.ifremer.isisfish.ui.util.ErrorHelper;
/**
@@ -52,9 +51,11 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(ObservationHandler.class);
- protected void init(final ObservationUI inputContentUI) {
- super.init(inputContentUI);
+ protected ObservationHandler(ObservationUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
inputContentUI.addPropertyChangeListener(ObservationUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/observation/ObservationUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -28,7 +28,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Observation id='bean' javaBean='null' />
- <ObservationHandler id="handler" />
+ <ObservationHandler id="handler" constructorParams="this" />
<BeanValidator id='validator'
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Observation'
@@ -38,7 +38,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationBasicsHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationBasicsHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationBasicsHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -57,9 +57,11 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(PopulationBasicsHandler.class);
- protected void init(final PopulationBasicsUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationBasicsHandler(PopulationBasicsUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
inputContentUI.addPropertyChangeListener(PopulationBasicsUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
@@ -138,10 +140,10 @@
protected void create() {
// find species node
InputUI inputUI = inputContentUI.getContextValue(InputUI.class, JAXXUtil.PARENT);
- Species species = inputUI.getHandler().findSpecies(inputUI);
+ Species species = inputUI.getHandler().findSpecies();
// create node and select it
Population population = createPopulation(inputContentUI.getTopiaContext(), species);
- inputUI.getHandler().insertTreeNode(inputUI, Population.class, population);
+ inputUI.getHandler().insertTreeNode(Population.class, population);
inputContentUI.setInfoText(t("isisfish.message.creation.finished"));
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationBasicsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationBasicsUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationBasicsUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
- <PopulationBasicsHandler id="handler" />
+ <PopulationBasicsHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="basics"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Population'
@@ -37,7 +37,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationCapturabilityHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationCapturabilityHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationCapturabilityHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -36,9 +36,11 @@
*/
public class PopulationCapturabilityHandler extends InputContentHandler<PopulationCapturabilityUI> {
- protected void init(final PopulationCapturabilityUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationCapturabilityHandler(PopulationCapturabilityUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
inputContentUI.addPropertyChangeListener(PopulationCapturabilityUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationCapturabilityUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationCapturabilityUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationCapturabilityUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
- <PopulationCapturabilityHandler id="handler" />
+ <PopulationCapturabilityHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="capturability"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Population'
@@ -36,7 +36,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationEquationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationEquationHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationEquationHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -30,7 +30,11 @@
*/
public class PopulationEquationHandler extends InputContentHandler<PopulationEquationUI> {
- protected void init(final PopulationEquationUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationEquationHandler(PopulationEquationUI inputContentUI) {
+ super(inputContentUI);
}
+
+ protected void afterInit() {
+
+ }
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationEquationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationEquationUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationEquationUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
- <PopulationEquationHandler id="handler" />
+ <PopulationEquationHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="equation"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Population'
@@ -36,7 +36,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationGroupHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationGroupHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationGroupHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -43,9 +43,11 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(PopulationGroupHandler.class);
- protected void init(final PopulationGroupUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationGroupHandler(PopulationGroupUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
inputContentUI.addPropertyChangeListener(PopulationGroupUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationGroupUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationGroupUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationGroupUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -39,7 +39,7 @@
<fr.ifremer.isisfish.entities.PopulationGroup id='populationGroup' javaBean='null'/>
- <PopulationGroupHandler id="handler" />
+ <PopulationGroupHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="group"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Population'
@@ -57,7 +57,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -33,9 +33,12 @@
*/
public class PopulationHandler extends InputContentHandler<PopulationUI> {
- protected void init(final PopulationUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationHandler(PopulationUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.setButtonTitle(t("isisfish.input.continueGears"));
inputContentUI.setNextPath(n("isisfish.input.tree.gears"));
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEmigrationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEmigrationHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEmigrationHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -48,9 +48,12 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(PopulationMigrationEmigrationHandler.class);
- protected void init(final PopulationMigrationEmigrationUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationMigrationEmigrationHandler(PopulationMigrationEmigrationUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.addPropertyChangeListener(PopulationMigrationEmigrationUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEmigrationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEmigrationUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEmigrationUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -28,11 +28,11 @@
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
<fr.ifremer.isisfish.entities.PopulationSeasonInfo id='popInfo' javaBean='null'/>
- <PopulationMigrationEmigrationHandler id="handler" />
+ <PopulationMigrationEmigrationHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEquationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEquationHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEquationHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -31,9 +31,13 @@
*/
public class PopulationMigrationEquationHandler extends InputContentHandler<PopulationMigrationEquationUI> {
- protected void init(final PopulationMigrationEquationUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationMigrationEquationHandler(PopulationMigrationEquationUI inputContentUI) {
+ super(inputContentUI);
}
+
+ protected void afterInit() {
+
+ }
public void init(PopulationSeasonInfo pi) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEquationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEquationUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationEquationUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -29,18 +29,12 @@
<fr.ifremer.isisfish.entities.PopulationSeasonInfo id='popInfo' javaBean='null'/>
- <PopulationMigrationEquationHandler id="handler" />
+ <PopulationMigrationEquationHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
- /*public void init(PopulationSeasonInfo populationSeasonInfo) {
- // add null before, for second to be considered as a changed event
- // otherwize, setBean has no effect
- //setPopInfo(null);
- //setPopInfo(populationSeasonInfo);
- }*/
]]></script>
<JPanel id="body">
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -36,9 +36,12 @@
*/
public class PopulationMigrationHandler extends InputContentHandler<PopulationMigrationUI> {
- protected void init(final PopulationMigrationUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationMigrationHandler(PopulationMigrationUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.addPropertyChangeListener(PopulationMigrationUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationImmigrationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationImmigrationHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationImmigrationHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -48,9 +48,12 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(PopulationMigrationImmigrationHandler.class);
- protected void init(final PopulationMigrationImmigrationUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationMigrationImmigrationHandler(PopulationMigrationImmigrationUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.addPropertyChangeListener(PopulationMigrationImmigrationUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationImmigrationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationImmigrationUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationImmigrationUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -28,11 +28,11 @@
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
<fr.ifremer.isisfish.entities.PopulationSeasonInfo id='popInfo' javaBean='null'/>
- <PopulationMigrationImmigrationHandler id="handler" />
+ <PopulationMigrationImmigrationHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationMigrationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationMigrationHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationMigrationHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -48,9 +48,12 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(PopulationMigrationMigrationHandler.class);
- protected void init(final PopulationMigrationMigrationUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationMigrationMigrationHandler(PopulationMigrationMigrationUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.addPropertyChangeListener(PopulationMigrationMigrationUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationMigrationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationMigrationUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationMigrationUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -33,11 +33,11 @@
<Boolean id='zoneArrivalSelected' javaBean='false'/>
<Boolean id='coefNonVide' javaBean='false'/>
- <PopulationMigrationMigrationHandler id="handler" />
+ <PopulationMigrationMigrationHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationMigrationUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -29,7 +29,7 @@
<fr.ifremer.isisfish.entities.PopulationSeasonInfo id='popInfo' javaBean='null'/>
- <PopulationMigrationHandler id="handler" />
+ <PopulationMigrationHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="migration"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Population'
@@ -46,7 +46,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationPriceHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationPriceHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationPriceHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -30,7 +30,11 @@
*/
public class PopulationPriceHandler extends InputContentHandler<PopulationPriceUI> {
- protected void init(final PopulationPriceUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationPriceHandler(PopulationPriceUI inputContentUI) {
+ super(inputContentUI);
}
+
+ protected void afterInit() {
+
+ }
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationPriceUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationPriceUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationPriceUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
- <PopulationPriceHandler id="handler" />
+ <PopulationPriceHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="equation"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Population'
@@ -36,7 +36,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationRecruitmentHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationRecruitmentHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationRecruitmentHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -50,9 +50,12 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(PopulationRecruitmentHandler.class);
- protected void init(final PopulationRecruitmentUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationRecruitmentHandler(PopulationRecruitmentUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.addPropertyChangeListener(PopulationRecruitmentUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationRecruitmentUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationRecruitmentUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationRecruitmentUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
- <PopulationRecruitmentHandler id="handler" />
+ <PopulationRecruitmentHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="recruitement"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Population'
@@ -36,7 +36,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonSpacializedHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonSpacializedHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonSpacializedHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -45,9 +45,14 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(PopulationSeasonsHandler.class);
- protected void init(final PopulationSeasonSpacializedUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationSeasonSpacializedHandler(PopulationSeasonSpacializedUI inputContentUI) {
+ super(inputContentUI);
+ // TODO Auto-generated constructor stub
}
+
+ protected void afterInit() {
+
+ }
protected void populationSeasonLengthMatrixChanged(MatrixPanelEvent event) {
if (inputContentUI.getPopulationSeasonInfo() != null && inputContentUI.matrixPanelPopulationSeasonLengthChange.getMatrix() != null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonSpacializedUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonSpacializedUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonSpacializedUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -31,11 +31,11 @@
<Boolean id='ageGroupType' javaBean='false'/>
- <PopulationSeasonSpacializedHandler id="handler" />
+ <PopulationSeasonSpacializedHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonsHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonsHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonsHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -55,8 +55,11 @@
protected boolean init = false;
- protected void init(final PopulationSeasonsUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationSeasonsHandler(PopulationSeasonsUI inputContentUI) {
+ super(inputContentUI);
+ }
+
+ protected void afterInit() {
inputContentUI.addPropertyChangeListener(PopulationSeasonsUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonsUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonsUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -29,7 +29,7 @@
<fr.ifremer.isisfish.entities.PopulationSeasonInfo id='populationSeasonInfo' javaBean='null'/>
- <PopulationSeasonsHandler id="handler" />
+ <PopulationSeasonsHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="seasons"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Population'
@@ -47,7 +47,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,11 +27,11 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
- <PopulationHandler id="handler" />
+ <PopulationHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesEditorHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesEditorHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesEditorHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -43,9 +43,12 @@
protected boolean init = false;
- protected void init(final PopulationZonesEditorUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationZonesEditorHandler(PopulationZonesEditorUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.addPropertyChangeListener(PopulationZonesEditorUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesEditorUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesEditorUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesEditorUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
- <PopulationZonesEditorHandler id="handler" />
+ <PopulationZonesEditorHandler id="handler" constructorParams="this" />
<import>
java.awt.Dimension
@@ -35,7 +35,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -30,8 +30,11 @@
*/
public class PopulationZonesHandler extends InputContentHandler<PopulationZonesUI> {
- protected void init(final PopulationZonesUI inputContentUI) {
- super.init(inputContentUI);
+ protected PopulationZonesHandler(PopulationZonesUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationZonesUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Population id='bean' javaBean='null'/>
- <PopulationZonesHandler id="handler" />
+ <PopulationZonesHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="zones"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Population'
@@ -36,7 +36,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/WizardGroupCreationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/WizardGroupCreationHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/WizardGroupCreationHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -63,10 +63,14 @@
protected double step = 1;
protected PopulationBasicsUI popBasic;
- protected void init(final WizardGroupCreationUI wizardUI) {
+ public WizardGroupCreationHandler(WizardGroupCreationUI wizardUI) {
this.wizardUI = wizardUI;
}
+ protected void afterInit() {
+
+ }
+
public void initParent(PopulationBasicsUI popBasic) {
this.popBasic = popBasic;
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/WizardGroupCreationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/WizardGroupCreationUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/WizardGroupCreationUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -24,11 +24,11 @@
-->
<JPanel id="wizardGroup" layout='{new BorderLayout()}'>
- <WizardGroupCreationHandler id="handler" />
+ <WizardGroupCreationHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/port/PortHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/port/PortHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/port/PortHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -45,9 +45,11 @@
protected boolean init = false;
- protected void init(final PortUI inputContentUI) {
- super.init(inputContentUI);
+ protected PortHandler(PortUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
new OpenMapEvents(inputContentUI.portMap, new SelectMouseMode(false), CellSelectionLayer.SINGLE_SELECTION) {
@Override
public boolean mouseClicked(MouseEvent e) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/port/PortUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/port/PortUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/port/PortUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Port id='bean' javaBean='null'/>
- <PortHandler id="handler" />
+ <PortHandler id="handler" constructorParams="this" />
<BeanValidator id='validator'
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Port'
@@ -38,7 +38,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -50,9 +50,12 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(EffortDescriptionHandler.class);
- protected void init(final EffortDescriptionUI inputContentUI) {
- super.init(inputContentUI);
+ protected EffortDescriptionHandler(EffortDescriptionUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.addPropertyChangeListener(EffortDescriptionUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
GenericListModel<Metier> metierModel = (GenericListModel<Metier>)inputContentUI.fieldEffortDescriptionMetierList.getModel();
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionParametersHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionParametersHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionParametersHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -37,9 +37,12 @@
*/
public class EffortDescriptionParametersHandler extends InputContentHandler<EffortDescriptionParametersUI> {
- protected void init(final EffortDescriptionParametersUI inputContentUI) {
- super.init(inputContentUI);
+ protected EffortDescriptionParametersHandler(EffortDescriptionParametersUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.addPropertyChangeListener(EffortDescriptionParametersUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionParametersUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionParametersUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionParametersUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -29,7 +29,7 @@
<fr.ifremer.isisfish.entities.EffortDescription id='effortDescription' javaBean='null'/>
- <EffortDescriptionParametersHandler id="handler" />
+ <EffortDescriptionParametersHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="effortdescriptionparameters"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.SetOfVessels'
@@ -50,7 +50,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/EffortDescriptionUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.SetOfVessels id='bean' javaBean='null'/>
- <EffortDescriptionHandler id="handler" />
+ <EffortDescriptionHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="effortdescription"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.SetOfVessels'
@@ -36,7 +36,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsBasicsHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsBasicsHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsBasicsHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -38,9 +38,12 @@
protected boolean init;
- protected void init(final SetOfVesselsBasicsUI inputContentUI) {
- super.init(inputContentUI);
+ protected SetOfVesselsBasicsHandler(SetOfVesselsBasicsUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.addPropertyChangeListener(SetOfVesselsBasicsUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsBasicsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsBasicsUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsBasicsUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.SetOfVessels id='bean' javaBean='null'/>
- <SetOfVesselsBasicsHandler id="handler" />
+ <SetOfVesselsBasicsHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="basics"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.SetOfVessels'
@@ -37,7 +37,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -33,9 +33,11 @@
*/
public class SetOfVesselsHandler extends InputContentHandler<SetOfVesselsUI> {
- protected void init(final SetOfVesselsUI inputContentUI) {
- super.init(inputContentUI);
+ protected SetOfVesselsHandler(SetOfVesselsUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
inputContentUI.setButtonTitle(t("isisfish.input.continueStrategies"));
inputContentUI.setNextPath(n("isisfish.input.tree.strategies"));
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/setofvessels/SetOfVesselsUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -26,11 +26,11 @@
<fr.ifremer.isisfish.entities.SetOfVessels id='bean' javaBean='null'/>
- <SetOfVesselsHandler id="handler" />
+ <SetOfVesselsHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -37,9 +37,11 @@
*/
public class SpeciesHandler extends InputContentHandler<SpeciesUI> {
- protected void init(final SpeciesUI inputContentUI) {
- super.init(inputContentUI);
-
+ protected SpeciesHandler(SpeciesUI inputContentUI) {
+ super(inputContentUI);
+ }
+
+ protected void afterInit() {
inputContentUI.setButtonTitle(t("isisfish.input.continuePopulations"));
inputContentUI.addPropertyChangeListener(SpeciesUI.PROPERTY_BEAN, new PropertyChangeListener() {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesStructuredHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesStructuredHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesStructuredHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -30,10 +30,14 @@
*/
public class SpeciesStructuredHandler extends InputContentHandler<SpeciesStructuredUI> {
- protected void init(final SpeciesStructuredUI inputContentUI) {
- super.init(inputContentUI);
+ protected SpeciesStructuredHandler(SpeciesStructuredUI inputContentUI) {
+ super(inputContentUI);
}
+ protected void afterInit() {
+
+ }
+
protected void dynamicChanged() {
if (inputContentUI.getBean() != null) {
inputContentUI.getBean().setAgeGroupType(inputContentUI.fieldSpeciesDynamicAge.isSelected());
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesStructuredUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesStructuredUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesStructuredUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -26,11 +26,11 @@
<fr.ifremer.isisfish.entities.Species id='bean' javaBean='null'/>
- <SpeciesStructuredHandler id="handler" />
+ <SpeciesStructuredHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/species/SpeciesUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Species id='bean' javaBean='null'/>
- <SpeciesHandler id="handler" />
+ <SpeciesHandler id="handler" constructorParams="this" />
<BeanValidator id='validator'
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Species'
@@ -37,7 +37,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -33,9 +33,11 @@
*/
public class StrategyHandler extends InputContentHandler<StrategyUI> {
- protected void init(final StrategyUI inputContentUI) {
- super.init(inputContentUI);
+ protected StrategyHandler(StrategyUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
inputContentUI.setButtonTitle(t("isisfish.input.continueObservations"));
inputContentUI.setNextPath(n("isisfish.input.tree.observations"));
// install change listener
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyMonthInfoHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyMonthInfoHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyMonthInfoHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -36,9 +36,12 @@
*/
public class StrategyMonthInfoHandler extends InputContentHandler<StrategyMonthInfoUI> {
- protected void init(final StrategyMonthInfoUI inputContentUI) {
- super.init(inputContentUI);
+ protected StrategyMonthInfoHandler(StrategyMonthInfoUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
+
inputContentUI.addPropertyChangeListener(StrategyMonthInfoUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyMonthInfoUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyMonthInfoUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyMonthInfoUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -39,7 +39,7 @@
<fr.ifremer.isisfish.entities.StrategyMonthInfo id='strategyMonthInfo10' javaBean='null'/>
<fr.ifremer.isisfish.entities.StrategyMonthInfo id='strategyMonthInfo11' javaBean='null'/>
- <StrategyMonthInfoHandler id="handler" />
+ <StrategyMonthInfoHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="month"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Strategy'
@@ -104,7 +104,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyOneMonthInfoHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyOneMonthInfoHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyOneMonthInfoHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -37,9 +37,11 @@
protected boolean init;
- protected void init(final StrategyOneMonthInfoUI inputContentUI) {
- super.init(inputContentUI);
+ protected StrategyOneMonthInfoHandler(StrategyOneMonthInfoUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
inputContentUI.addPropertyChangeListener(StrategyOneMonthInfoUI.PROPERTY_STRATEGY_MONTH_INFO, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyOneMonthInfoUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyOneMonthInfoUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyOneMonthInfoUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -31,11 +31,11 @@
<fr.ifremer.isisfish.entities.StrategyMonthInfo id='strategyMonthInfo' javaBean='null'/>
- <StrategyOneMonthInfoHandler id="handler" />
+ <StrategyOneMonthInfoHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyTabHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyTabHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyTabHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -37,9 +37,11 @@
protected boolean init;
- protected void init(final StrategyTabUI inputContentUI) {
- super.init(inputContentUI);
+ protected StrategyTabHandler(StrategyTabUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
inputContentUI.addPropertyChangeListener(StrategyTabUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyTabUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyTabUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyTabUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Strategy id='bean' javaBean='null'/>
- <StrategyTabHandler id="handler" />
+ <StrategyTabHandler id="handler" constructorParams="this" />
<BeanValidator id='validator' context="basics"
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Strategy'
@@ -37,7 +37,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/strategy/StrategyUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -26,11 +26,11 @@
<fr.ifremer.isisfish.entities.Strategy id='bean' javaBean='null'/>
- <StrategyHandler id="handler" />
+ <StrategyHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/triptype/TripTypeHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/triptype/TripTypeHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/triptype/TripTypeHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -36,9 +36,11 @@
*/
public class TripTypeHandler extends InputContentHandler<TripTypeUI> {
- protected void init(final TripTypeUI inputContentUI) {
- super.init(inputContentUI);
+ protected TripTypeHandler(TripTypeUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
inputContentUI.setButtonTitle(t("isisfish.input.continueVesselTypes"));
inputContentUI.setNextPath(n("isisfish.input.tree.vesseltypes"));
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/triptype/TripTypeUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/triptype/TripTypeUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/triptype/TripTypeUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.TripType id='bean' javaBean='null'/>
- <TripTypeHandler id="handler" />
+ <TripTypeHandler id="handler" constructorParams="this" />
<BeanValidator id='validator'
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.TripType'
@@ -41,7 +41,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -60,9 +60,11 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(EntityVariableHandler.class);
- protected void init(final EntityVariableUI inputContentUI) {
- super.init(inputContentUI);
-
+ protected EntityVariableHandler(EntityVariableUI inputContentUI) {
+ super(inputContentUI);
+ }
+
+ protected void afterInit() {
inputContentUI.addPropertyChangeListener(EntityVariableUI.PROPERTY_BEAN, new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
reloadVariables();
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/variable/EntityVariableUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -29,11 +29,11 @@
<fr.ifremer.isisfish.entities.Variable id="variable" javaBean='null' />
- <EntityVariableHandler id="handler" />
+ <EntityVariableHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/vesseltype/VesselTypeHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/vesseltype/VesselTypeHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/vesseltype/VesselTypeHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -42,9 +42,11 @@
protected boolean init;
- protected void init(final VesselTypeUI inputContentUI) {
- super.init(inputContentUI);
+ protected VesselTypeHandler(VesselTypeUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
inputContentUI.setButtonTitle(t("isisfish.input.continueSetOfVessels"));
inputContentUI.setNextPath(n("isisfish.input.tree.setofvessels"));
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/vesseltype/VesselTypeUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/vesseltype/VesselTypeUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/vesseltype/VesselTypeUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.VesselType id='bean' javaBean='null'/>
- <VesselTypeHandler id="handler" />
+ <VesselTypeHandler id="handler" constructorParams="this" />
<BeanValidator id='validator'
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.VesselType'
@@ -41,7 +41,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneBasicsHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneBasicsHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneBasicsHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -50,27 +50,29 @@
/** Class logger. */
private static final Log log = LogFactory.getLog(ZoneBasicsHandler.class);
- protected void init(final ZoneBasicsUI zoneBasicsUI) {
- super.init(zoneBasicsUI);
+ public ZoneBasicsHandler(ZoneBasicsUI inputContentUI) {
+ super(inputContentUI);
+ }
- new OpenMapEvents(zoneBasicsUI.zoneMap, new SelectMouseMode(false), CellSelectionLayer.MULT_SELECTION) {
+ protected void afterInit() {
+ new OpenMapEvents(inputContentUI.zoneMap, new SelectMouseMode(false), CellSelectionLayer.MULT_SELECTION) {
@Override
public boolean mouseClicked(MouseEvent e) {
boolean result = false;
- if (zoneBasicsUI.getBean() != null) { // impossible de desactiver la carte :(
- zoneBasicsUI.getBean().setCell(zoneBasicsUI.zoneMap.getSelectedCells());
+ if (inputContentUI.getBean() != null) { // impossible de desactiver la carte :(
+ inputContentUI.getBean().setCell(inputContentUI.zoneMap.getSelectedCells());
setZoneCells();
}
return result;
}
};
- zoneBasicsUI.addPropertyChangeListener(ZoneBasicsUI.PROPERTY_BEAN, new PropertyChangeListener() {
+ inputContentUI.addPropertyChangeListener(ZoneBasicsUI.PROPERTY_BEAN, new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getNewValue() == null) {
- zoneBasicsUI.fieldZoneName.setText("");
- zoneBasicsUI.fieldZoneComment.setText("");
- zoneBasicsUI.zoneMap.setSelectedCells();
+ inputContentUI.fieldZoneName.setText("");
+ inputContentUI.fieldZoneComment.setText("");
+ inputContentUI.zoneMap.setSelectedCells();
}
if (evt.getNewValue() != null) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneBasicsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneBasicsUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneBasicsUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -27,7 +27,7 @@
<!-- bean property -->
<fr.ifremer.isisfish.entities.Zone id='bean' javaBean='null'/>
- <ZoneBasicsHandler id="handler" />
+ <ZoneBasicsHandler id="handler" constructorParams="this" />
<BeanValidator id='validator'
bean='{getBean()}' beanClass='fr.ifremer.isisfish.entities.Zone'
@@ -38,7 +38,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -33,9 +33,11 @@
*/
public class ZoneHandler extends InputContentHandler<ZoneUI> {
- protected void init(final ZoneUI inputContentUI) {
- super.init(inputContentUI);
+ protected ZoneHandler(ZoneUI inputContentUI) {
+ super(inputContentUI);
+ }
+ protected void afterInit() {
inputContentUI.setButtonTitle(t("isisfish.input.continuePorts"));
inputContentUI.setNextPath(n("isisfish.input.tree.ports"));
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/zone/ZoneUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -26,11 +26,11 @@
<fr.ifremer.isisfish.entities.Zone id='bean' javaBean='null'/>
- <ZoneHandler id="handler" />
+ <ZoneHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
@Override
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueHandler.java 2015-05-27 13:00:56 UTC (rev 4237)
@@ -53,15 +53,16 @@
/** queue ui to manage. */
protected QueueUI queueUI;
-
+
/**
- * Queue action.
*
* @param queueUI queue ui to manage
*/
- public void init(QueueUI queueUI) {
+ public QueueHandler(QueueUI queueUI) {
this.queueUI = queueUI;
-
+ }
+
+ public void afterInit() {
queueUI.queueTable.setDefaultRenderer(JProgressBar.class, new ComponentTableCellRenderer());
queueUI.queueTableDone.setDefaultRenderer(JProgressBar.class, new ComponentTableCellRenderer());
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueUI.jaxx 2015-05-27 12:59:59 UTC (rev 4236)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/queue/QueueUI.jaxx 2015-05-27 13:00:56 UTC (rev 4237)
@@ -23,6 +23,8 @@
#L%
-->
<Table>
+ <QueueHandler id="handler" constructorParams="this" />
+
<import>
fr.ifremer.isisfish.simulator.launcher.SimulationService
fr.ifremer.isisfish.simulator.launcher.SimulationServiceTableModel
@@ -30,7 +32,7 @@
<script><![CDATA[
protected void $afterCompleteSetup() {
- handler.init(this);
+ handler.afterInit();
}
]]></script>
@@ -39,7 +41,7 @@
<Boolean id='canClear' javaBean='false'/>
<Boolean id='canRestart' javaBean='false'/>
- <QueueHandler id="handler" />
+
<SimulationServiceTableModel id="newSimulationModel" javaBean='new SimulationServiceTableModel(SimulationService.getService(), true)'/>
<SimulationServiceTableModel id="doneSimulationModel" javaBean='new SimulationServiceTableModel(SimulationService.getService(), false)'
onTableChanged='handler.updateActions()' />
1
0
r4236 - trunk/src/main/java/fr/ifremer/isisfish/ui/config
by echatellier@users.forge.codelutin.com 27 May '15
by echatellier@users.forge.codelutin.com 27 May '15
27 May '15
Author: echatellier
Date: 2015-05-27 12:59:59 +0000 (Wed, 27 May 2015)
New Revision: 4236
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4236
Log:
Add usefull log
Modified:
trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigHandler.java
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigHandler.java 2015-05-27 12:59:32 UTC (rev 4235)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigHandler.java 2015-05-27 12:59:59 UTC (rev 4236)
@@ -295,6 +295,9 @@
Session session = jsch.getSession(currentSSHUsername, host, port);
String proxyCommand = IsisFish.config.getSimulatorSshProxyCommand();
if (StringUtils.isNotBlank(proxyCommand)) {
+ if (log.isInfoEnabled()) {
+ log.info("Using proxy command : " + proxyCommand);
+ }
session.setProxy(new ProxyCommand(proxyCommand));
}
1
0
r4235 - trunk/src/main/java/fr/ifremer/isisfish/simulator
by echatellier@users.forge.codelutin.com 27 May '15
by echatellier@users.forge.codelutin.com 27 May '15
27 May '15
Author: echatellier
Date: 2015-05-27 12:59:32 +0000 (Wed, 27 May 2015)
New Revision: 4235
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4235
Log:
Fix code format
Modified:
trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java 2015-05-27 12:57:39 UTC (rev 4234)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/ResultManager.java 2015-05-27 12:59:32 UTC (rev 4235)
@@ -246,10 +246,10 @@
* @return La matrice demandée ou null si aucune matrice ne correspond a
* la demande.
*/
- public MatrixND getMatrix(TimeStep step, Population pop, String name){
- name += " " + pop;
- return getMatrix(step, name);
- }
+ public MatrixND getMatrix(TimeStep step, Population pop, String name){
+ name += " " + pop;
+ return getMatrix(step, name);
+ }
/**
* Retourne la matrice stocke pour un pas de temps
@@ -258,13 +258,13 @@
* @return La matrice demandée ou null si aucune matrice ne correspond a
* la demande.
*/
- public MatrixND getMatrix(TimeStep step, String name){
- MatrixND result = null;
+ public MatrixND getMatrix(TimeStep step, String name){
+ MatrixND result = null;
if (getter != null) {
result = getter.getMatrix(context, step, name);
- }
+ }
return result;
- }
+ }
/**
* Retourne la matrice stocke pour des pas de temps
@@ -274,10 +274,10 @@
* @return La matrice demandée ou null si aucune matrice ne correspond a
* la demande.
*/
- public MatrixND getMatrix(List<TimeStep> steps, Population pop, String name){
- name += " " + pop;
- return getMatrix(steps, name);
- }
+ public MatrixND getMatrix(List<TimeStep> steps, Population pop, String name){
+ name += " " + pop;
+ return getMatrix(steps, name);
+ }
/**
* Retourne la matrice stocke pour des pas de temps
@@ -286,37 +286,34 @@
* @return La matrice demandée ou null si aucune matrice ne correspond a
* la demande.
*/
- public MatrixND getMatrix(List<TimeStep> steps, String name){
- MatrixND result = null;
+ public MatrixND getMatrix(List<TimeStep> steps, String name){
+ MatrixND result = null;
if (getter != null) {
result = getter.getMatrix(context, steps, name);
- }
+ }
return result;
- }
+ }
+ /**
+ * Retourne une matrice contenant tous les pas de temps.
+ * @param pop la population pour lequel on souhaite la matrice
+ * @param name le nom des resultats dont on veut une matrice globale.
+ */
+ public MatrixND getMatrix(Population pop, String name){
+ name += " " + pop;
+ return getMatrix(name);
+ }
- /**
- * Retourne une matrice contenant tous les pas de temps.
- * @param pop la population pour lequel on souhaite la matrice
- * @param name le nom des resultats dont on veut une matrice globale.
- */
- public MatrixND getMatrix(Population pop, String name){
- name += " " + pop;
- return getMatrix(name);
- }
-
- /**
- * Retourne une matrice contenant tous les pas de temps.
- * @param name le nom des resultats dont on veut une matrice globale.
- */
- public MatrixND getMatrix(String name){
- MatrixND result = null;
- if (getter != null) {
- result = getter.getMatrix(context, name);
- }
- return result;
- }
+ /**
+ * Retourne une matrice contenant tous les pas de temps.
+ * @param name le nom des resultats dont on veut une matrice globale.
+ */
+ public MatrixND getMatrix(String name){
+ MatrixND result = null;
+ if (getter != null) {
+ result = getter.getMatrix(context, name);
+ }
+ return result;
+ }
}
-
-
1
0
Author: echatellier
Date: 2015-05-27 12:57:39 +0000 (Wed, 27 May 2015)
New Revision: 4234
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4234
Log:
Update commons-email and svnkit
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2015-05-22 16:10:26 UTC (rev 4233)
+++ trunk/pom.xml 2015-05-27 12:57:39 UTC (rev 4234)
@@ -212,7 +212,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
- <version>1.3.3</version>
+ <version>1.4</version>
<exclusions>
<exclusion>
<artifactId>activation</artifactId>
@@ -342,7 +342,7 @@
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
- <version>1.8.9</version>
+ <version>1.8.10</version>
<scope>compile</scope>
<exclusions>
<exclusion>
1
0
22 May '15
Author: echatellier
Date: 2015-05-22 16:10:26 +0000 (Fri, 22 May 2015)
New Revision: 4233
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4233
Log:
Move script code to dedicated handler (sensitivity)
Added:
trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/FactorWizardHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorTabHandler.java
Removed:
trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulationTabHandler.java
Modified:
trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/config/RConfigHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/config/RConfigUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/cell/CellHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultSimulationFrame.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTransferHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTree.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/FactorWizardUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
trunk/src/main/java/fr/ifremer/isisfish/ui/widget/Interval.java
trunk/src/test/java/fr/ifremer/isisfish/ui/AbstractFestIT.java
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -81,7 +81,7 @@
* Get ui that can display internalClass.
*
* @param internalClass internal class to get ui
- * @return ui for class
+ * @return navigationUI for class
* @throws Exception
*/
protected InputContentUI<?> getUIInstanceForBeanClass(Class<?> internalClass, NavigationUI navigationUI) throws Exception {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationUI.jaxx 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationUI.jaxx 2015-05-22 16:10:26 UTC (rev 4233)
@@ -22,6 +22,6 @@
<http://www.gnu.org/licenses/gpl-3.0.html>.
#L%
-->
-<JPanel layout='{new BorderLayout()}'>
+<JPanel layout='{new BorderLayout()}' abstract="true">
</JPanel>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -302,8 +302,6 @@
*/
public void configurationR(WelcomeUI welcomeUI) {
RConfigUI rconfigUI = new RConfigUI(welcomeUI, welcomeUI);
- RConfigHandler handler = rconfigUI.getHandler();
- handler.init(rconfigUI);
rconfigUI.pack();
rconfigUI.setLocationRelativeTo(welcomeUI);
rconfigUI.setVisible(true);
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/config/RConfigHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/config/RConfigHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/config/RConfigHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -50,12 +50,16 @@
private static Log log = LogFactory.getLog(RConfigHandler.class);
+ protected RConfigUI rconfigUI;
+
+ public RConfigHandler(RConfigUI rconfigUI) {
+ this.rconfigUI = rconfigUI;
+ }
+
/**
* Initialise l'ui.
- *
- * @param rconfigUI ui to init
*/
- public void init(RConfigUI rconfigUI) {
+ public void afterInit() {
String rHome = System.getenv("R_HOME");
rconfigUI.getRHomeField().setText(rHome);
if (StringUtils.isBlank(rHome)) {
@@ -84,10 +88,8 @@
/**
* Test r configuration.
- *
- * @param rconfigUI
*/
- public void testRCOnfiguration(RConfigUI rconfigUI) {
+ public void testRCOnfiguration() {
REngine engine = null;
try {
engine = new RProxy();
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/config/RConfigUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/config/RConfigUI.jaxx 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/config/RConfigUI.jaxx 2015-05-22 16:10:26 UTC (rev 4233)
@@ -23,7 +23,14 @@
#L%
-->
<JDialog title="isisfish.simulator.configuration.r.title" layout="{new BorderLayout()}">
- <RConfigHandler id="handler" />
+ <RConfigHandler id="handler" constructorParams='this' />
+
+ <script><![CDATA[
+ protected void $afterCompleteSetup() {
+ handler.afterInit();
+ }
+ ]]></script>
+
<Table constraints="BorderLayout.CENTER">
<row>
<cell columns="2">
@@ -58,7 +65,7 @@
<cell columns="2" anchor='center'>
<JPanel>
<JButton text="isisfish.simulator.configuration.r.launchtest"
- onActionPerformed="getHandler().testRCOnfiguration(this)" />
+ onActionPerformed="handler.testRCOnfiguration()" />
<JButton text="isisfish.common.close"
onActionPerformed="dispose()" />
</JPanel>
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -1,561 +0,0 @@
-/*
- * #%L
- * IsisFish
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2012 Ifremer, Code Lutin, Chatellier Eric
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 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 Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-package fr.ifremer.isisfish.ui.config;
-
-import static org.nuiton.i18n.I18n.t;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
-
-import javax.swing.JComponent;
-import javax.swing.JOptionPane;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.jcraft.jsch.JSch;
-import com.jcraft.jsch.JSchException;
-import com.jcraft.jsch.KeyPair;
-import com.jcraft.jsch.Session;
-
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.util.ssh.InvalidPassphraseException;
-import fr.ifremer.isisfish.util.ssh.ProxyCommand;
-import fr.ifremer.isisfish.util.ssh.SSHAgent;
-import fr.ifremer.isisfish.util.ssh.SSHException;
-import fr.ifremer.isisfish.util.ssh.SSHUserInfo;
-import fr.ifremer.isisfish.util.ssh.SSHUtils;
-
-/**
- * Action for SSHLauncherConfig UI.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class SSHLauncherConfigAction {
-
- /** Class logger. */
- private static Log log = LogFactory.getLog(SSHLauncherConfigAction.class);
-
- protected SSHLauncherConfigUI configUI;
-
- protected String currentSSHserver;
- protected String currentSSHUsername;
- protected File currentSSHKey;
- protected String currentSSHUserhome;
- protected String currentSSHDatapath;
- protected String currentSSHIsisHome;
- protected String currentSSHTempPath;
- protected String currentSSHJavaPath;
- protected String currentSSHPbsBinPath;
- protected String currentSSHPbsQsubOptions;
- protected String currentSSHMaxThreads;
- protected String currentSSHMaxMemory;
- protected String currentSSHControlInterval;
-
- /**
- * Constructor with UI.
- *
- * @param configUI config ui
- */
- public SSHLauncherConfigAction(SSHLauncherConfigUI configUI) {
- this.configUI = configUI;
- }
-
- /**
- * Reset values with default configuration values.
- */
- public void resetSSHConfiguration() {
- // server config
- configUI.getSshServerField().setText(IsisFish.config.getSimulatorSshServer());
- configUI.getUsernameField().setText(IsisFish.config.getSimulatorSshUsername());
- configUI.getSshKeyField().setText(IsisFish.config.getSSHPrivateKeyFilePath().getAbsolutePath());
-
- // caparmor config
- configUI.getSshUserhomeField().setText(IsisFish.config.getSimulatorSshUserHome());
- configUI.getSshDatapathField().setText(IsisFish.config.getSimulatorSshDataPath());
- configUI.getSshIsisHomeField().setText(IsisFish.config.getSimulatorSshIsisHome());
- configUI.getSshTemppathField().setText(IsisFish.config.getSimulatorSshTmpPath());
- configUI.getSshJavaPathField().setText(IsisFish.config.getSimulatorSshJavaPath());
- configUI.getSshPbsBinPathField().setText(IsisFish.config.getSimulatorSshPbsBinPath());
- configUI.getSshPbsQsubOptionsField().setText(IsisFish.config.getSimulatorSshPbsQsubOptions());
- configUI.getSshControlIntervalField().setText(String.valueOf(IsisFish.config.getSimulatorSshControlCheckInterval()));
- configUI.getSshMaxThreadsField().setText(String.valueOf(IsisFish.config.getSimulatorSshMaxThreads()));
- configUI.getSshMaxMemoryField().setText(IsisFish.config.getSimulatorSshMaxMemory());
-
- doCheck();
- }
-
- /**
- * Reset display.
- */
- protected void configurationChanged() {
-
- configUI.setConnected(false);
- configUI.getMessageLabel().setText("");
- configUI.getStatusFreeDatabaseLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", "isis-database", "0"));
- configUI.getStatusFreeTempLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", "isis-tmp", "0"));
-
- }
-
- /**
- * Check input format validity.
- */
- public void doCheck() {
-
- configurationChanged();
-
- // copy values
- currentSSHserver = configUI.getSshServerField().getText().trim();
- if (currentSSHserver.isEmpty()) {
- setColor(true, configUI.getSshServerField());
- } else {
- setColor(false, configUI.getSshServerField());
- }
-
- // copy values
- //currentSSHsftpServer = configUI.getSshSftpServerField().getText().trim();
-
- // can be empty (optionnal use)
- currentSSHUsername = configUI.getUsernameField().getText().trim();
- if (!currentSSHUsername.matches("\\w+")) {
- setColor(true, configUI.getUsernameField());
- } else {
- setColor(false, configUI.getUsernameField());
- }
-
- // if ssh key is set, must be a valid file
- currentSSHKey = new File(configUI.getSshKeyField().getText().trim());
- if (!currentSSHKey.isFile()) {
- setColor(true, configUI.getSshKeyField());
- } else {
- configUI.getSshKeyButton().setEnabled(false);
- configUI.getSshKeyField().setEnabled(false);
- setColor(false, configUI.getSshKeyField());
- }
-
- currentSSHDatapath = configUI.getSshDatapathField().getText().trim();
- if (currentSSHDatapath.isEmpty()) {
- setColor(true, configUI.getSshDatapathField());
- } else {
- setColor(false, configUI.getSshDatapathField());
- }
-
- currentSSHIsisHome = configUI.getSshIsisHomeField().getText().trim();
- if (currentSSHIsisHome.isEmpty()) {
- setColor(true, configUI.getSshIsisHomeField());
- } else {
- setColor(false, configUI.getSshIsisHomeField());
- }
-
- currentSSHTempPath = configUI.getSshTemppathField().getText().trim();
- if (currentSSHTempPath.isEmpty()) {
- setColor(true, configUI.getSshTemppathField());
- } else {
- setColor(false, configUI.getSshTemppathField());
- }
-
- currentSSHJavaPath = configUI.getSshJavaPathField().getText().trim();
- if (currentSSHJavaPath.isEmpty()) {
- setColor(true, configUI.getSshJavaPathField());
- } else {
- setColor(false, configUI.getSshJavaPathField());
- }
-
- currentSSHPbsBinPath = configUI.getSshPbsBinPathField().getText()
- .trim();
- if (currentSSHPbsBinPath.isEmpty()) {
- setColor(true, configUI.getSshPbsBinPathField());
- } else {
- setColor(false, configUI.getSshPbsBinPathField());
- }
-
- // currentSSHPbsQsubOptions
- currentSSHPbsQsubOptions = configUI.getSshPbsQsubOptionsField().getText().trim();
-
- // currentSSHMaxThreads
- currentSSHMaxThreads = configUI.getSshMaxThreadsField().getText().trim();
- if (!currentSSHMaxThreads.matches("\\d+")) {
- setColor(true, configUI.getSshMaxThreadsField());
- } else {
- setColor(false, configUI.getSshMaxThreadsField());
- }
-
- // currentSSHMaxMemory
- currentSSHMaxMemory = configUI.getSshMaxMemoryField().getText().trim();
-
- // currentSSHControlInterval
- currentSSHControlInterval = configUI.getSshControlIntervalField()
- .getText().trim();
- if (!currentSSHControlInterval.matches("\\d+")) {
- setColor(true, configUI.getSshControlIntervalField());
- } else {
- setColor(false, configUI.getSshControlIntervalField());
- }
- }
-
- /**
- * Set values in config and force configuration save.
- */
- public void saveSSHConfiguration() {
- IsisFish.config.setSimulatorSshServer(currentSSHserver);
- //IsisFish.config.setSimulatorSshSftpServer(currentSSHsftpServer);
- IsisFish.config.setSimulatorSshUsername(currentSSHUsername);
- IsisFish.config.setSSHPrivateKeyFilePath(currentSSHKey);
-
- IsisFish.config.setSimulatorSshUserHome(currentSSHUserhome);
- IsisFish.config.setSimulatorSshDataPath(currentSSHDatapath);
- IsisFish.config.setSimulatorSshIsisHome(currentSSHIsisHome);
- IsisFish.config.setSimulatorSshTmpPath(currentSSHTempPath);
- IsisFish.config.setSimulatorSshJavaPath(currentSSHJavaPath);
- IsisFish.config.setSimulatorSshPbsBinPath(currentSSHPbsBinPath);
- IsisFish.config.setSimulatorSshPbsQsubOptions(currentSSHPbsQsubOptions);
- IsisFish.config.setSimulatorSshControlCheckInterval(Integer.parseInt(currentSSHControlInterval));
- IsisFish.config.setSimulatorSshMaxThreads(Integer.parseInt(currentSSHMaxThreads));
- IsisFish.config.setSimulatorSshMaxMemory(currentSSHMaxMemory);
-
- IsisFish.config.saveForUser();
- configUI.dispose();
- }
-
- /**
- * Close frame.
- */
- public void cancelSSHConfiguration() {
- configUI.dispose();
- }
-
- /**
- * Realise une connexion ssh et teste les données.
- */
- public void testSSHConfiguration() {
- JSch jsch = new JSch();
-
- String host = currentSSHserver;
- int port = 22; // by default, 22
- String sPort = null;
-
- try {
- if (host.indexOf(':') > 0) {
- sPort = host.substring(host.indexOf(':') + 1);
- port = Integer.parseInt(sPort);
- host = host.substring(0, host.indexOf(':'));
- }
-
- // add ssh key
- boolean sshKeyUsed = false;
- if (currentSSHKey.canRead()) {
- if (log.isInfoEnabled()) {
- log.info(t("Ssh key found '%s' will be used to connect to",
- currentSSHKey.getAbsoluteFile(), host));
- }
- jsch.addIdentity(currentSSHKey.getAbsolutePath());
- sshKeyUsed = true;
- } else {
- if (log.isInfoEnabled()) {
- log.info(t("Can't read ssh key : %s", currentSSHKey));
- }
- }
-
- Session session = jsch.getSession(currentSSHUsername, host, port);
- String proxyCommand = IsisFish.config.getSimulatorSshProxyCommand();
- if (StringUtils.isNotBlank(proxyCommand)) {
- session.setProxy(new ProxyCommand(proxyCommand));
- }
-
- // username and password will be given via UserInfo interface.
- SSHUserInfo ui = new SSHUserInfo();
- if (sshKeyUsed) {
- char[] passchars = SSHAgent.getAgent().getPassphrase(currentSSHKey);
- String passphrase = String.valueOf(passchars);
- ui.setPassphrase(passphrase);
- setTestMessage(t("isisfish.simulator.ssh.configuration.connectingpk"), false);
- } else {
- setTestMessage(t("isisfish.simulator.ssh.configuration.connecting"), false);
- }
- session.setUserInfo(ui);
- session.connect(10000); // timeout
-
- setTestMessage(t("isisfish.simulator.ssh.configuration.connectionok"), false);
-
- // get user home
- currentSSHUserhome = getUserHomeDirectory(session);
- configUI.getSshUserhomeField().setText(currentSSHUserhome);
- // get space disk
- String databaseSize = getFolderSize(session, currentSSHDatapath);
- String temppathSize = getFolderSize(session, currentSSHTempPath);
- configUI.getStatusFreeDatabaseLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", currentSSHDatapath, databaseSize));
- configUI.getStatusFreeTempLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", currentSSHTempPath, temppathSize));
- session.disconnect();
-
- configUI.setConnected(true);
- } catch (NumberFormatException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't connect", e);
- }
- setTestMessage(t("isisfish.error.simulation.remote.wrongportvalue",
- sPort), true);
- } catch (JSchException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't connect", e);
- }
- setTestMessage(t("isisfish.simulator.ssh.configuration.connectionerror", e
- .getMessage()), true);
- } catch (SSHException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't connect", e);
- }
- setTestMessage(t("isisfish.simulator.ssh.configuration.connectionerror", e
- .getMessage()), true);
- } catch (InvalidPassphraseException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't connect", e);
- }
- setTestMessage(
- t("isisfish.simulator.ssh.configuration.invalidpassphrase"),
- true);
- }
- }
-
- /**
- * Get user home directory with an opened session.
- *
- * @param session opened session
- * @return 'pwd' result
- * @throws SSHException
- */
- protected String getUserHomeDirectory(Session session) throws SSHException {
-
- String command = "pwd";
-
- Writer output = new StringWriter();
- int exit = SSHUtils.exec(session, command, output);
-
- if (exit != 0) {
- throw new SSHException(t("Command '%s' fail to execute", command));
- }
-
- String out = output.toString();
- return out;
- }
-
- /**
- * Get user home directory with an opened session.
- *
- * @param session opened session
- * @param path path to get size
- * @return dir size
- * @throws SSHException
- */
- protected String getFolderSize(Session session, String path) throws SSHException {
-
- String command = "du -hs \"" + path + "\"";
-
- Writer output = new StringWriter();
- SSHUtils.exec(session, command, output);
-
- // la sortie est "35Go isisdatabase-3"
- String out = output.toString();
- out = out.split("\\s+")[0];
- return out;
- }
-
- /**
- * Clear database.
- */
- public void clearDatabase() {
- clearFolder(currentSSHDatapath);
- }
-
- /**
- * Clear temp directory.
- */
- public void clearTempDirectory() {
- clearFolder(currentSSHTempPath);
- }
-
- /**
- * Clear specified directory.
- *
- * @param path path to clear
- */
- protected void clearFolder(String path) {
-
- // prevent, for home deletion, can happens :D
- if (StringUtils.isEmpty(path) || path.trim().equals(".")) {
- throw new IllegalArgumentException("Can't delete directory : " + path);
- }
-
- int response = JOptionPane.showConfirmDialog(configUI, t("isisfish.simulator.ssh.configuration.freespace.confirmdelete", path),
- t("isisfish.common.confirm"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
-
- if (response == JOptionPane.YES_OPTION) {
- JSch jsch = new JSch();
-
- String host = currentSSHserver;
- int port = 22; // by default, 22
- String sPort = null;
-
- try {
- if (host.indexOf(':') > 0) {
- sPort = host.substring(host.indexOf(':') + 1);
- port = Integer.parseInt(sPort);
- host = host.substring(0, host.indexOf(':'));
- }
-
- // add ssh key
- boolean sshKeyUsed = false;
- if (currentSSHKey.canRead()) {
- if (log.isInfoEnabled()) {
- log.info(t("Ssh key found '%s' will be used to connect to",
- currentSSHKey.getAbsoluteFile(), host));
- }
- jsch.addIdentity(currentSSHKey.getAbsolutePath());
- sshKeyUsed = true;
- } else {
- if (log.isInfoEnabled()) {
- log.info(t("Can't read ssh key : %s", currentSSHKey));
- }
- }
-
- Session session = jsch.getSession(currentSSHUsername, host, port);
- String proxyCommand = IsisFish.config.getSimulatorSshProxyCommand();
- if (StringUtils.isNotBlank(proxyCommand)) {
- session.setProxy(new ProxyCommand(proxyCommand));
- }
-
- // username and password will be given via UserInfo interface.
- SSHUserInfo ui = new SSHUserInfo();
- if (sshKeyUsed) {
- char[] passchars = SSHAgent.getAgent().getPassphrase(currentSSHKey);
- String passphrase = String.valueOf(passchars);
- ui.setPassphrase(passphrase);
- }
- session.setUserInfo(ui);
- session.connect(10000); // timeout
-
- String command = "rm -rf \"" + path + "\"";
-
- if (log.isDebugEnabled()) {
- log.debug("Removing folder with command : " + command);
- }
- Writer output = new StringWriter();
- int exit = SSHUtils.exec(session, command, output);
-
- // get space disk
- String databaseSize = getFolderSize(session, currentSSHDatapath);
- String temppathSize = getFolderSize(session, currentSSHTempPath);
- configUI.getStatusFreeDatabaseLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", currentSSHDatapath, databaseSize));
- configUI.getStatusFreeTempLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", currentSSHTempPath, temppathSize));
- session.disconnect();
-
- session.disconnect();
- if (exit != 0) {
- throw new SSHException(t("Command '%s' fail to execute", command));
- }
- }
- catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("Can't connect", e);
- }
- setTestMessage(t("isisfish.simulator.ssh.configuration.connectionerror", e.getMessage()), true);
- }
- }
- else {
- if (log.isInfoEnabled()) {
- log.info("Delete action canceled by user");
- }
- }
- }
-
- /**
- * Generate new SSH key.
- */
- protected void generateSSHKey() {
- if (currentSSHKey.exists()) {
- throw new IllegalArgumentException("Can't overwrite ssh key");
- }
-
- try {
- // make parent dir
- if (currentSSHKey.getParentFile() != null
- && !currentSSHKey.getParentFile().exists()) {
- currentSSHKey.getParentFile().mkdirs();
- }
- JSch jsch = new JSch();
- KeyPair kpair = KeyPair.genKeyPair(jsch, KeyPair.RSA, 2048);
- //kpair.setPassphrase(passphrase);
- kpair.writePrivateKey(currentSSHKey.getAbsolutePath());
- kpair.writePublicKey(currentSSHKey.getAbsolutePath() + ".pub",
- currentSSHUsername + "@forIsisFish");
- if (log.isInfoEnabled()) {
- log.info("Finger print: " + kpair.getFingerPrint());
- }
- kpair.dispose();
- } catch (JSchException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't make ssh key", e);
- }
- } catch (IOException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't make ssh key", e);
- }
- }
-
- // refresh ckeck
- doCheck();
- }
-
- /**
- * Set color depending of field validity.
- *
- *
- * @param invalid valid field
- * @param component component to set color
- */
- protected void setColor(boolean invalid, JComponent component) {
- component.setForeground(invalid ? Color.RED : Color.BLACK);
- }
-
- /**
- * Set message in message field with status color.
- *
- * @param message message to display
- * @param error error status
- */
- protected void setTestMessage(String message, boolean error) {
- configUI.getMessageLabel().setForeground(
- error ? Color.RED : Color.GREEN.darker());
- configUI.getMessageLabel().setText(message);
- }
-}
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigHandler.java (from rev 4226, trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -0,0 +1,566 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2009 - 2012 Ifremer, Code Lutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.isisfish.ui.config;
+
+import static org.nuiton.i18n.I18n.t;
+
+import java.awt.Color;
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+
+import javax.swing.JComponent;
+import javax.swing.JOptionPane;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.KeyPair;
+import com.jcraft.jsch.Session;
+
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.util.ssh.InvalidPassphraseException;
+import fr.ifremer.isisfish.util.ssh.ProxyCommand;
+import fr.ifremer.isisfish.util.ssh.SSHAgent;
+import fr.ifremer.isisfish.util.ssh.SSHException;
+import fr.ifremer.isisfish.util.ssh.SSHUserInfo;
+import fr.ifremer.isisfish.util.ssh.SSHUtils;
+
+/**
+ * Action for SSHLauncherConfig UI.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class SSHLauncherConfigHandler {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(SSHLauncherConfigHandler.class);
+
+ protected SSHLauncherConfigUI configUI;
+
+ protected String currentSSHserver;
+ protected String currentSSHUsername;
+ protected File currentSSHKey;
+ protected String currentSSHUserhome;
+ protected String currentSSHDatapath;
+ protected String currentSSHIsisHome;
+ protected String currentSSHTempPath;
+ protected String currentSSHJavaPath;
+ protected String currentSSHPbsBinPath;
+ protected String currentSSHPbsQsubOptions;
+ protected String currentSSHMaxThreads;
+ protected String currentSSHMaxMemory;
+ protected String currentSSHControlInterval;
+
+ /**
+ * Constructor with UI.
+ *
+ * @param configUI config ui
+ */
+ public SSHLauncherConfigHandler(SSHLauncherConfigUI configUI) {
+ this.configUI = configUI;
+ }
+
+ protected void afterInit() {
+ // fill default values
+ resetSSHConfiguration();
+ }
+
+ /**
+ * Reset values with default configuration values.
+ */
+ public void resetSSHConfiguration() {
+ // server config
+ configUI.getSshServerField().setText(IsisFish.config.getSimulatorSshServer());
+ configUI.getUsernameField().setText(IsisFish.config.getSimulatorSshUsername());
+ configUI.getSshKeyField().setText(IsisFish.config.getSSHPrivateKeyFilePath().getAbsolutePath());
+
+ // caparmor config
+ configUI.getSshUserhomeField().setText(IsisFish.config.getSimulatorSshUserHome());
+ configUI.getSshDatapathField().setText(IsisFish.config.getSimulatorSshDataPath());
+ configUI.getSshIsisHomeField().setText(IsisFish.config.getSimulatorSshIsisHome());
+ configUI.getSshTemppathField().setText(IsisFish.config.getSimulatorSshTmpPath());
+ configUI.getSshJavaPathField().setText(IsisFish.config.getSimulatorSshJavaPath());
+ configUI.getSshPbsBinPathField().setText(IsisFish.config.getSimulatorSshPbsBinPath());
+ configUI.getSshPbsQsubOptionsField().setText(IsisFish.config.getSimulatorSshPbsQsubOptions());
+ configUI.getSshControlIntervalField().setText(String.valueOf(IsisFish.config.getSimulatorSshControlCheckInterval()));
+ configUI.getSshMaxThreadsField().setText(String.valueOf(IsisFish.config.getSimulatorSshMaxThreads()));
+ configUI.getSshMaxMemoryField().setText(IsisFish.config.getSimulatorSshMaxMemory());
+
+ doCheck();
+ }
+
+ /**
+ * Reset display.
+ */
+ protected void configurationChanged() {
+
+ configUI.setConnected(false);
+ configUI.getMessageLabel().setText("");
+ configUI.getStatusFreeDatabaseLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", "isis-database", "0"));
+ configUI.getStatusFreeTempLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", "isis-tmp", "0"));
+
+ }
+
+ /**
+ * Check input format validity.
+ */
+ public void doCheck() {
+
+ configurationChanged();
+
+ // copy values
+ currentSSHserver = configUI.getSshServerField().getText().trim();
+ if (currentSSHserver.isEmpty()) {
+ setColor(true, configUI.getSshServerField());
+ } else {
+ setColor(false, configUI.getSshServerField());
+ }
+
+ // copy values
+ //currentSSHsftpServer = configUI.getSshSftpServerField().getText().trim();
+
+ // can be empty (optionnal use)
+ currentSSHUsername = configUI.getUsernameField().getText().trim();
+ if (!currentSSHUsername.matches("\\w+")) {
+ setColor(true, configUI.getUsernameField());
+ } else {
+ setColor(false, configUI.getUsernameField());
+ }
+
+ // if ssh key is set, must be a valid file
+ currentSSHKey = new File(configUI.getSshKeyField().getText().trim());
+ if (!currentSSHKey.isFile()) {
+ setColor(true, configUI.getSshKeyField());
+ } else {
+ configUI.getSshKeyButton().setEnabled(false);
+ configUI.getSshKeyField().setEnabled(false);
+ setColor(false, configUI.getSshKeyField());
+ }
+
+ currentSSHDatapath = configUI.getSshDatapathField().getText().trim();
+ if (currentSSHDatapath.isEmpty()) {
+ setColor(true, configUI.getSshDatapathField());
+ } else {
+ setColor(false, configUI.getSshDatapathField());
+ }
+
+ currentSSHIsisHome = configUI.getSshIsisHomeField().getText().trim();
+ if (currentSSHIsisHome.isEmpty()) {
+ setColor(true, configUI.getSshIsisHomeField());
+ } else {
+ setColor(false, configUI.getSshIsisHomeField());
+ }
+
+ currentSSHTempPath = configUI.getSshTemppathField().getText().trim();
+ if (currentSSHTempPath.isEmpty()) {
+ setColor(true, configUI.getSshTemppathField());
+ } else {
+ setColor(false, configUI.getSshTemppathField());
+ }
+
+ currentSSHJavaPath = configUI.getSshJavaPathField().getText().trim();
+ if (currentSSHJavaPath.isEmpty()) {
+ setColor(true, configUI.getSshJavaPathField());
+ } else {
+ setColor(false, configUI.getSshJavaPathField());
+ }
+
+ currentSSHPbsBinPath = configUI.getSshPbsBinPathField().getText()
+ .trim();
+ if (currentSSHPbsBinPath.isEmpty()) {
+ setColor(true, configUI.getSshPbsBinPathField());
+ } else {
+ setColor(false, configUI.getSshPbsBinPathField());
+ }
+
+ // currentSSHPbsQsubOptions
+ currentSSHPbsQsubOptions = configUI.getSshPbsQsubOptionsField().getText().trim();
+
+ // currentSSHMaxThreads
+ currentSSHMaxThreads = configUI.getSshMaxThreadsField().getText().trim();
+ if (!currentSSHMaxThreads.matches("\\d+")) {
+ setColor(true, configUI.getSshMaxThreadsField());
+ } else {
+ setColor(false, configUI.getSshMaxThreadsField());
+ }
+
+ // currentSSHMaxMemory
+ currentSSHMaxMemory = configUI.getSshMaxMemoryField().getText().trim();
+
+ // currentSSHControlInterval
+ currentSSHControlInterval = configUI.getSshControlIntervalField()
+ .getText().trim();
+ if (!currentSSHControlInterval.matches("\\d+")) {
+ setColor(true, configUI.getSshControlIntervalField());
+ } else {
+ setColor(false, configUI.getSshControlIntervalField());
+ }
+ }
+
+ /**
+ * Set values in config and force configuration save.
+ */
+ public void saveSSHConfiguration() {
+ IsisFish.config.setSimulatorSshServer(currentSSHserver);
+ //IsisFish.config.setSimulatorSshSftpServer(currentSSHsftpServer);
+ IsisFish.config.setSimulatorSshUsername(currentSSHUsername);
+ IsisFish.config.setSSHPrivateKeyFilePath(currentSSHKey);
+
+ IsisFish.config.setSimulatorSshUserHome(currentSSHUserhome);
+ IsisFish.config.setSimulatorSshDataPath(currentSSHDatapath);
+ IsisFish.config.setSimulatorSshIsisHome(currentSSHIsisHome);
+ IsisFish.config.setSimulatorSshTmpPath(currentSSHTempPath);
+ IsisFish.config.setSimulatorSshJavaPath(currentSSHJavaPath);
+ IsisFish.config.setSimulatorSshPbsBinPath(currentSSHPbsBinPath);
+ IsisFish.config.setSimulatorSshPbsQsubOptions(currentSSHPbsQsubOptions);
+ IsisFish.config.setSimulatorSshControlCheckInterval(Integer.parseInt(currentSSHControlInterval));
+ IsisFish.config.setSimulatorSshMaxThreads(Integer.parseInt(currentSSHMaxThreads));
+ IsisFish.config.setSimulatorSshMaxMemory(currentSSHMaxMemory);
+
+ IsisFish.config.saveForUser();
+ configUI.dispose();
+ }
+
+ /**
+ * Close frame.
+ */
+ public void cancelSSHConfiguration() {
+ configUI.dispose();
+ }
+
+ /**
+ * Realise une connexion ssh et teste les données.
+ */
+ public void testSSHConfiguration() {
+ JSch jsch = new JSch();
+
+ String host = currentSSHserver;
+ int port = 22; // by default, 22
+ String sPort = null;
+
+ try {
+ if (host.indexOf(':') > 0) {
+ sPort = host.substring(host.indexOf(':') + 1);
+ port = Integer.parseInt(sPort);
+ host = host.substring(0, host.indexOf(':'));
+ }
+
+ // add ssh key
+ boolean sshKeyUsed = false;
+ if (currentSSHKey.canRead()) {
+ if (log.isInfoEnabled()) {
+ log.info(t("Ssh key found '%s' will be used to connect to",
+ currentSSHKey.getAbsoluteFile(), host));
+ }
+ jsch.addIdentity(currentSSHKey.getAbsolutePath());
+ sshKeyUsed = true;
+ } else {
+ if (log.isInfoEnabled()) {
+ log.info(t("Can't read ssh key : %s", currentSSHKey));
+ }
+ }
+
+ Session session = jsch.getSession(currentSSHUsername, host, port);
+ String proxyCommand = IsisFish.config.getSimulatorSshProxyCommand();
+ if (StringUtils.isNotBlank(proxyCommand)) {
+ session.setProxy(new ProxyCommand(proxyCommand));
+ }
+
+ // username and password will be given via UserInfo interface.
+ SSHUserInfo ui = new SSHUserInfo();
+ if (sshKeyUsed) {
+ char[] passchars = SSHAgent.getAgent().getPassphrase(currentSSHKey);
+ String passphrase = String.valueOf(passchars);
+ ui.setPassphrase(passphrase);
+ setTestMessage(t("isisfish.simulator.ssh.configuration.connectingpk"), false);
+ } else {
+ setTestMessage(t("isisfish.simulator.ssh.configuration.connecting"), false);
+ }
+ session.setUserInfo(ui);
+ session.connect(10000); // timeout
+
+ setTestMessage(t("isisfish.simulator.ssh.configuration.connectionok"), false);
+
+ // get user home
+ currentSSHUserhome = getUserHomeDirectory(session);
+ configUI.getSshUserhomeField().setText(currentSSHUserhome);
+ // get space disk
+ String databaseSize = getFolderSize(session, currentSSHDatapath);
+ String temppathSize = getFolderSize(session, currentSSHTempPath);
+ configUI.getStatusFreeDatabaseLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", currentSSHDatapath, databaseSize));
+ configUI.getStatusFreeTempLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", currentSSHTempPath, temppathSize));
+ session.disconnect();
+
+ configUI.setConnected(true);
+ } catch (NumberFormatException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't connect", e);
+ }
+ setTestMessage(t("isisfish.error.simulation.remote.wrongportvalue",
+ sPort), true);
+ } catch (JSchException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't connect", e);
+ }
+ setTestMessage(t("isisfish.simulator.ssh.configuration.connectionerror", e
+ .getMessage()), true);
+ } catch (SSHException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't connect", e);
+ }
+ setTestMessage(t("isisfish.simulator.ssh.configuration.connectionerror", e
+ .getMessage()), true);
+ } catch (InvalidPassphraseException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't connect", e);
+ }
+ setTestMessage(
+ t("isisfish.simulator.ssh.configuration.invalidpassphrase"),
+ true);
+ }
+ }
+
+ /**
+ * Get user home directory with an opened session.
+ *
+ * @param session opened session
+ * @return 'pwd' result
+ * @throws SSHException
+ */
+ protected String getUserHomeDirectory(Session session) throws SSHException {
+
+ String command = "pwd";
+
+ Writer output = new StringWriter();
+ int exit = SSHUtils.exec(session, command, output);
+
+ if (exit != 0) {
+ throw new SSHException(t("Command '%s' fail to execute", command));
+ }
+
+ String out = output.toString();
+ return out;
+ }
+
+ /**
+ * Get user home directory with an opened session.
+ *
+ * @param session opened session
+ * @param path path to get size
+ * @return dir size
+ * @throws SSHException
+ */
+ protected String getFolderSize(Session session, String path) throws SSHException {
+
+ String command = "du -hs \"" + path + "\"";
+
+ Writer output = new StringWriter();
+ SSHUtils.exec(session, command, output);
+
+ // la sortie est "35Go isisdatabase-3"
+ String out = output.toString();
+ out = out.split("\\s+")[0];
+ return out;
+ }
+
+ /**
+ * Clear database.
+ */
+ public void clearDatabase() {
+ clearFolder(currentSSHDatapath);
+ }
+
+ /**
+ * Clear temp directory.
+ */
+ public void clearTempDirectory() {
+ clearFolder(currentSSHTempPath);
+ }
+
+ /**
+ * Clear specified directory.
+ *
+ * @param path path to clear
+ */
+ protected void clearFolder(String path) {
+
+ // prevent, for home deletion, can happens :D
+ if (StringUtils.isEmpty(path) || path.trim().equals(".")) {
+ throw new IllegalArgumentException("Can't delete directory : " + path);
+ }
+
+ int response = JOptionPane.showConfirmDialog(configUI, t("isisfish.simulator.ssh.configuration.freespace.confirmdelete", path),
+ t("isisfish.common.confirm"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
+
+ if (response == JOptionPane.YES_OPTION) {
+ JSch jsch = new JSch();
+
+ String host = currentSSHserver;
+ int port = 22; // by default, 22
+ String sPort = null;
+
+ try {
+ if (host.indexOf(':') > 0) {
+ sPort = host.substring(host.indexOf(':') + 1);
+ port = Integer.parseInt(sPort);
+ host = host.substring(0, host.indexOf(':'));
+ }
+
+ // add ssh key
+ boolean sshKeyUsed = false;
+ if (currentSSHKey.canRead()) {
+ if (log.isInfoEnabled()) {
+ log.info(t("Ssh key found '%s' will be used to connect to",
+ currentSSHKey.getAbsoluteFile(), host));
+ }
+ jsch.addIdentity(currentSSHKey.getAbsolutePath());
+ sshKeyUsed = true;
+ } else {
+ if (log.isInfoEnabled()) {
+ log.info(t("Can't read ssh key : %s", currentSSHKey));
+ }
+ }
+
+ Session session = jsch.getSession(currentSSHUsername, host, port);
+ String proxyCommand = IsisFish.config.getSimulatorSshProxyCommand();
+ if (StringUtils.isNotBlank(proxyCommand)) {
+ session.setProxy(new ProxyCommand(proxyCommand));
+ }
+
+ // username and password will be given via UserInfo interface.
+ SSHUserInfo ui = new SSHUserInfo();
+ if (sshKeyUsed) {
+ char[] passchars = SSHAgent.getAgent().getPassphrase(currentSSHKey);
+ String passphrase = String.valueOf(passchars);
+ ui.setPassphrase(passphrase);
+ }
+ session.setUserInfo(ui);
+ session.connect(10000); // timeout
+
+ String command = "rm -rf \"" + path + "\"";
+
+ if (log.isDebugEnabled()) {
+ log.debug("Removing folder with command : " + command);
+ }
+ Writer output = new StringWriter();
+ int exit = SSHUtils.exec(session, command, output);
+
+ // get space disk
+ String databaseSize = getFolderSize(session, currentSSHDatapath);
+ String temppathSize = getFolderSize(session, currentSSHTempPath);
+ configUI.getStatusFreeDatabaseLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", currentSSHDatapath, databaseSize));
+ configUI.getStatusFreeTempLabel().setText(t("isisfish.simulator.ssh.configuration.freespace.label", currentSSHTempPath, temppathSize));
+ session.disconnect();
+
+ session.disconnect();
+ if (exit != 0) {
+ throw new SSHException(t("Command '%s' fail to execute", command));
+ }
+ }
+ catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't connect", e);
+ }
+ setTestMessage(t("isisfish.simulator.ssh.configuration.connectionerror", e.getMessage()), true);
+ }
+ }
+ else {
+ if (log.isInfoEnabled()) {
+ log.info("Delete action canceled by user");
+ }
+ }
+ }
+
+ /**
+ * Generate new SSH key.
+ */
+ protected void generateSSHKey() {
+ if (currentSSHKey.exists()) {
+ throw new IllegalArgumentException("Can't overwrite ssh key");
+ }
+
+ try {
+ // make parent dir
+ if (currentSSHKey.getParentFile() != null
+ && !currentSSHKey.getParentFile().exists()) {
+ currentSSHKey.getParentFile().mkdirs();
+ }
+ JSch jsch = new JSch();
+ KeyPair kpair = KeyPair.genKeyPair(jsch, KeyPair.RSA, 2048);
+ //kpair.setPassphrase(passphrase);
+ kpair.writePrivateKey(currentSSHKey.getAbsolutePath());
+ kpair.writePublicKey(currentSSHKey.getAbsolutePath() + ".pub",
+ currentSSHUsername + "@forIsisFish");
+ if (log.isInfoEnabled()) {
+ log.info("Finger print: " + kpair.getFingerPrint());
+ }
+ kpair.dispose();
+ } catch (JSchException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't make ssh key", e);
+ }
+ } catch (IOException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't make ssh key", e);
+ }
+ }
+
+ // refresh ckeck
+ doCheck();
+ }
+
+ /**
+ * Set color depending of field validity.
+ *
+ *
+ * @param invalid valid field
+ * @param component component to set color
+ */
+ protected void setColor(boolean invalid, JComponent component) {
+ component.setForeground(invalid ? Color.RED : Color.BLACK);
+ }
+
+ /**
+ * Set message in message field with status color.
+ *
+ * @param message message to display
+ * @param error error status
+ */
+ protected void setTestMessage(String message, boolean error) {
+ configUI.getMessageLabel().setForeground(
+ error ? Color.RED : Color.GREEN.darker());
+ configUI.getMessageLabel().setText(message);
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx 2015-05-22 16:10:26 UTC (rev 4233)
@@ -24,19 +24,21 @@
-->
<JDialog resizable="false" title="isisfish.simulator.ssh.configuration.title"
layout="{new javax.swing.BoxLayout(this.getContentPane(), javax.swing.BoxLayout.PAGE_AXIS)}">
+
+ <SSHLauncherConfigHandler id="handler" constructorParams='this' />
+
<import>
static org.nuiton.i18n.I18n.t
</import>
- <SSHLauncherConfigAction id="action" javaBean="new SSHLauncherConfigAction(this)" />
+
<Boolean id="connected" javaBean="false" />
<script><![CDATA[
+ protected void $afterCompleteSetup() {
+ handler.afterInit();
+ }
+ ]]></script>
- // fill default values
- getAction().resetSSHConfiguration();
-
- ]]></script>
-
<Table border='{BorderFactory.createTitledBorder(t("isisfish.simulator.ssh.configuration.connection"))}'
fill='horizontal'>
<row>
@@ -46,7 +48,7 @@
</cell>
<cell fill='horizontal' columns="2">
<JTextField id='sshServerField' toolTipText='isisfish.config.main.simulation.ssh.server.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
</row>
<row fill='horizontal'>
@@ -56,7 +58,7 @@
</cell>
<cell columns="2">
<JTextField id='usernameField' toolTipText='isisfish.config.main.simulation.ssh.username.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
</row>
<row fill='horizontal'>
@@ -65,10 +67,10 @@
</cell>
<cell weightx="2.0">
<JTextField id='sshKeyField' toolTipText='isisfish.config.ssh.key.file.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
<cell>
- <JButton id='sshKeyButton' text='isisfish.simulator.ssh.configuration.keygenerate' onActionPerformed="getAction().generateSSHKey()" />
+ <JButton id='sshKeyButton' text='isisfish.simulator.ssh.configuration.keygenerate' onActionPerformed="handler.generateSSHKey()" />
</cell>
</row>
</Table>
@@ -80,7 +82,7 @@
</cell>
<cell weightx="1.0">
<JTextField id='sshUserhomeField' enabled='false' toolTipText='isisfish.config.main.simulation.ssh.userhome.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
</row>
<row fill='horizontal'>
@@ -90,7 +92,7 @@
</cell>
<cell weightx="1.0">
<JTextField id='sshDatapathField' toolTipText='isisfish.config.main.simulation.ssh.datapath.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
</row>
<row fill='horizontal'>
@@ -100,7 +102,7 @@
</cell>
<cell>
<JTextField id='sshIsisHomeField' toolTipText='isisfish.config.main.simulation.ssh.isis.home.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
</row>
<row fill='horizontal'>
@@ -110,7 +112,7 @@
</cell>
<cell>
<JTextField id='sshTemppathField' toolTipText='isisfish.config.main.simulation.ssh.tmppath.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
</row>
<row fill='horizontal'>
@@ -121,7 +123,7 @@
<cell>
<JTextField id='sshJavaPathField'
toolTipText='isisfish.config.main.simulation.ssh.javapath.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
</row>
<row fill='horizontal'>
@@ -132,7 +134,7 @@
<cell>
<JTextField id='sshPbsBinPathField'
toolTipText='isisfish.config.main.simulation.ssh.pbsbinpath.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
</row>
<row fill='horizontal'>
@@ -143,7 +145,7 @@
<cell>
<JTextField id='sshPbsQsubOptionsField'
toolTipText='isisfish.config.main.simulation.ssh.pbsqsuboptions.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
</row>
<row fill='horizontal'>
@@ -154,7 +156,7 @@
<cell>
<JTextField id='sshMaxThreadsField'
toolTipText='isisfish.config.main.simulation.ssh.max.threads.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
</row>
<row fill='horizontal'>
@@ -165,7 +167,7 @@
<cell>
<JTextField id='sshMaxMemoryField'
toolTipText='isisfish.config.main.simulation.ssh.max.memory.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
</row>
<row fill='horizontal'>
@@ -176,23 +178,23 @@
<cell>
<JTextField id='sshControlIntervalField'
toolTipText='isisfish.config.main.simulation.ssh.control.check.interval.description'
- onKeyReleased="getAction().doCheck()" />
+ onKeyReleased="handler.doCheck()" />
</cell>
</row>
</Table>
<Table>
<row fill='horizontal'>
<cell fill='horizontal' weightx="1.0">
- <JButton id='testButton' text='isisfish.simulator.ssh.configuration.test' onActionPerformed="getAction().testSSHConfiguration()" icon="connect.png" />
+ <JButton id='testButton' text='isisfish.simulator.ssh.configuration.test' onActionPerformed="handler.testSSHConfiguration()" icon="connect.png" />
</cell>
<cell fill='horizontal' weightx="1.0">
- <JButton id='validButton' text='isisfish.common.valid' onActionPerformed="getAction().saveSSHConfiguration()" icon="accept.png" enabled='{isConnected()}' />
+ <JButton id='validButton' text='isisfish.common.valid' onActionPerformed="handler.saveSSHConfiguration()" icon="accept.png" enabled='{isConnected()}' />
</cell>
<cell fill='horizontal' weightx="1.0">
- <JButton id='resetButton' text='isisfish.common.reset' onActionPerformed="getAction().resetSSHConfiguration()" icon="arrow_undo.png" />
+ <JButton id='resetButton' text='isisfish.common.reset' onActionPerformed="handler.resetSSHConfiguration()" icon="arrow_undo.png" />
</cell>
<cell fill='horizontal' weightx="1.0">
- <JButton id='cancelButton' text='isisfish.common.cancel' onActionPerformed="getAction().cancelSSHConfiguration()" icon="cancel.png" />
+ <JButton id='cancelButton' text='isisfish.common.cancel' onActionPerformed="handler.cancelSSHConfiguration()" icon="cancel.png" />
</cell>
</row>
</Table>
@@ -214,7 +216,7 @@
</cell>
<cell>
<JButton id='clearDatabaseButton' text='isisfish.common.clear' icon="paintbrush.png"
- onActionPerformed="getAction().clearDatabase()" enabled='{isConnected()}' />
+ onActionPerformed="handler.clearDatabase()" enabled='{isConnected()}' />
</cell>
</row>
<row fill='horizontal'>
@@ -223,7 +225,7 @@
</cell>
<cell>
<JButton id='clearTempButton' text='isisfish.common.clear' icon="paintbrush.png"
- onActionPerformed="getAction().clearTempDirectory()" enabled='{isConnected()}' />
+ onActionPerformed="handler.clearTempDirectory()" enabled='{isConnected()}' />
</cell>
</row>
</Table>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -32,8 +32,8 @@
import org.nuiton.topia.persistence.TopiaEntityContextable;
import fr.ifremer.isisfish.ui.CommonHandler;
+import fr.ifremer.isisfish.ui.sensitivity.wizard.FactorWizardHandler;
import fr.ifremer.isisfish.ui.sensitivity.wizard.FactorWizardUI;
-import fr.ifremer.isisfish.ui.sensitivity.wizard.SensitivityWizardHandler;
/**
* Common handler for all input ui.
@@ -87,7 +87,7 @@
if (bean != null) {
FactorWizardUI factorWizardUI = new FactorWizardUI(inputContentUI);
- SensitivityWizardHandler handler = factorWizardUI.getHandler();
+ FactorWizardHandler handler = factorWizardUI.getHandler();
handler.initNewFactor(factorWizardUI, bean, sensitivityMethod);
factorWizardUI.pack();
factorWizardUI.setLocationRelativeTo(inputContentUI);
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/cell/CellHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/cell/CellHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/cell/CellHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -39,7 +39,7 @@
import fr.ifremer.isisfish.ui.input.InputContentHandler;
import fr.ifremer.isisfish.ui.input.InputUI;
import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityInputUI;
/**
* Cell handler.
@@ -114,11 +114,10 @@
InputUI inputUI = inputContentUI.getParentContainer(InputUI.class);
if (inputUI != null) {
inputUI.getHandler().setTreeSelection(this.inputContentUI, c.getTopiaId());
+ } else {
+ SensitivityInputUI sensitivityInputUI = inputContentUI.getParentContainer(SensitivityInputUI.class);
+ sensitivityInputUI.getHandler().setTreeSelection(this.inputContentUI, c.getTopiaId());
}
- else {
- SensitivityTabUI sensitivityTabUI = inputContentUI.getParentContainer(SensitivityTabUI.class);
- sensitivityTabUI.getHandler().setTreeSelection(this.inputContentUI, c.getTopiaId());
- }
}
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -75,12 +75,16 @@
protected SimulationServiceListener listener = null;
+ protected ResultUI resultUI;
+
+ public ResultHandler(ResultUI resultUI) {
+ this.resultUI = resultUI;
+ }
+
/**
* Initialise la vue avec les liste des simulations disponible.
- *
- * @param resultUI
*/
- public void init(final ResultUI resultUI) {
+ public void afterInit() {
initSimulationList(resultUI);
// reference must stay allocated
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultSimulationFrame.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultSimulationFrame.jaxx 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultSimulationFrame.jaxx 2015-05-22 16:10:26 UTC (rev 4233)
@@ -33,8 +33,6 @@
}
}
]]></script>
-
- <ResultHandler id="handler"/>
<fr.ifremer.isisfish.datastore.SimulationStorage id="simulationStorage" javaBean="null"/>
<fr.ifremer.isisfish.entities.FisheryRegion id="fisheryRegion" javaBean="null"/>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultUI.jaxx 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/result/ResultUI.jaxx 2015-05-22 16:10:26 UTC (rev 4233)
@@ -24,13 +24,14 @@
-->
<JPanel layout='{new BorderLayout()}'>
- <ResultHandler id="handler" />
+ <ResultHandler id="handler" constructorParams='this' />
<script><![CDATA[
protected void $afterCompleteSetup() {
- getHandler().init(this);
+ handler.afterInit();
}
]]></script>
+
<Table constraints="BorderLayout.NORTH">
<row>
<cell>
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -0,0 +1,229 @@
+package fr.ifremer.isisfish.ui.sensitivity;
+
+import java.awt.CardLayout;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.ComboBoxModel;
+import javax.swing.table.DefaultTableModel;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage;
+import fr.ifremer.isisfish.datastore.SensitivityExportStorage;
+import fr.ifremer.isisfish.datastore.StorageChangeEvent;
+import fr.ifremer.isisfish.datastore.StorageChangeListener;
+import fr.ifremer.isisfish.export.SensitivityExport;
+import fr.ifremer.isisfish.simulator.sensitivity.Domain;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
+import fr.ifremer.isisfish.ui.models.common.GenericListModel;
+import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellEditor;
+import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellRenderer;
+import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableModel;
+import fr.ifremer.isisfish.ui.models.sensitivityexport.SensitivityExportListRenderer;
+import fr.ifremer.isisfish.ui.sensitivity.model.FactorCardinalityTableModel;
+import fr.ifremer.isisfish.ui.simulator.SimulAction;
+
+public class SensitivityChooserHandler {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(SensitivityInputHandler.class);
+
+ protected SensitivityChooserUI sensitivityChooserUI;
+
+ protected StorageChangeListener sensitivityAnalysisListener;
+ protected StorageChangeListener sensitivityExportListener;
+
+ public SensitivityChooserHandler(SensitivityChooserUI sensitivityChooserUI) {
+ this.sensitivityChooserUI = sensitivityChooserUI;
+ }
+
+ protected void afterInit() {
+ // listener to listen for modification on sensitivity analysis
+ sensitivityAnalysisListener = new StorageChangeListener() {
+ @Override
+ public void versionDataChanged(StorageChangeEvent e) {
+ sensitivityChooserUI.fieldSensitivityAnalysisSelect.setModel(getSensitivityAnalysisModel());
+ }
+ };
+ SensitivityAnalysisStorage.addStorageChangeListener(sensitivityAnalysisListener);
+
+ // listener to listen for modification on sensitivity exports
+ sensitivityExportListener = new StorageChangeListener() {
+ @Override
+ public void versionDataChanged(StorageChangeEvent e) {
+ sensitivityChooserUI.availableSensitivityExports.setModel(getAvailableExportListModel());
+ }
+ };
+ SensitivityExportStorage.addStorageChangeListener(sensitivityExportListener);
+ }
+
+ @Deprecated
+ protected SimulAction getSimulAction() {
+ return sensitivityChooserUI.getContextValue(SimulAction.class);
+ }
+
+ public ComboBoxModel<String> getSensitivityAnalysisModel() {
+ List<String> sensitivityNames = getSimulAction().getSensitivityAnalysisNames();
+ GenericComboModel<String> model = new GenericComboModel<>(sensitivityNames);
+ return model;
+ }
+
+ /**
+ * Auto select analysis in JComboBox
+ * with analysis selected in SimulAction.
+ *
+ * Used by "reloadOldSimulation" operation.
+ */
+ public void refreshSelectedSensitivityAnalysis() {
+ SensitivityAnalysis sensitivityAnalysis = getSimulAction().getSensitivityAnalysis();
+ if (sensitivityAnalysis != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Refreshing sensitivity analysis list");
+ }
+ // TODO it's not getSimpleName() here !
+ sensitivityChooserUI.fieldSensitivityAnalysisSelect.setSelectedItem(sensitivityAnalysis.getClass().getSimpleName());
+ }
+ }
+
+ protected void sensitivityAnalysisChanged() {
+
+ String sensitivityName = (String)sensitivityChooserUI.fieldSensitivityAnalysisSelect.getSelectedItem();
+
+ // when analysis is changed by refreshSelectedSensitivityAnalysis
+ // this event is thrown by build a new Analysis instance
+ // and parameter are lost
+ // fix it with a small class name test
+ SensitivityAnalysis sensitivityAnalysis = getSimulAction().getSensitivityAnalysis();
+ if (sensitivityAnalysis != null && sensitivityAnalysis.getClass().getSimpleName().equals(sensitivityName)) {
+ sensitivityAnalysis = getSimulAction().getSensitivityAnalysis();
+ } else {
+ sensitivityAnalysis = getSimulAction().getSensitivityAnalysisInstance(sensitivityName);
+ }
+
+ // can be null for example if analysis can't be compiled
+ if (sensitivityAnalysis != null) {
+ getSimulAction().setSensitivityAnalysis(sensitivityAnalysis);
+
+ CardLayout factorPanelLayout = (CardLayout)sensitivityChooserUI.factorCardinalityPanel.getLayout();
+ if (sensitivityAnalysis.canManageCardinality()) {
+ factorPanelLayout.show(sensitivityChooserUI.factorCardinalityPanel, "factorCardinalitySupported");
+ } else {
+ factorPanelLayout.show(sensitivityChooserUI.factorCardinalityPanel, "factorCardinalityNotSupported");
+ }
+
+ // update model
+ ScriptParametersTableModel parametersTableModel = new ScriptParametersTableModel(sensitivityAnalysis);
+ sensitivityChooserUI.simulSensitivityAnalysisParam.setModel(parametersTableModel);
+ sensitivityChooserUI.simulSensitivityAnalysisParam.getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(sensitivityAnalysis));
+ sensitivityChooserUI.simulSensitivityAnalysisParam.getColumnModel().getColumn(1).setCellEditor(new ScriptParametersTableCellEditor(sensitivityAnalysis));
+ }
+ }
+
+ public void setFactorCardinalityTableModel() {
+ List<Factor> factors = getSimulAction().getFactorGroup().getFactors();
+ List<Factor> factorsContinue = new ArrayList<Factor>();
+ /* get sublist with only Continous factor */
+ for (Factor f : factors) {
+ Domain domain = f.getDomain();
+ if (ContinuousDomain.class.isInstance(domain)) {
+ ContinuousDomain continuousDomain = (ContinuousDomain)domain;
+ factorsContinue.add(f);
+ }
+ }
+ FactorCardinalityTableModel model = new FactorCardinalityTableModel(factorsContinue);
+ sensitivityChooserUI.factorCardinality.setModel(model);
+ }
+
+ protected GenericListModel<String> getAvailableExportListModel() {
+ List<String> exportNames = getSimulAction().getSensitivityExportNames();
+ GenericListModel<String> model = new GenericListModel<>(exportNames);
+ return model;
+ }
+
+ /**
+ * Add multiples export.
+ *
+ * Export name can be duplicated.
+ */
+ protected void addExports() {
+ List<String> exportNames = sensitivityChooserUI.availableSensitivityExports.getSelectedValuesList();
+ for (String exportName : exportNames) {
+ getSimulAction().addSensitivityExport(sensitivityChooserUI, exportName);
+ }
+ setSensitivityExportListModel();
+ }
+
+ /**
+ * Remove multiple export.
+ */
+ protected void removeExports() {
+ List<SensitivityExport> exports = sensitivityChooserUI.selectedSensitivityExports.getSelectedValuesList();
+ for (SensitivityExport export : exports) {
+ getSimulAction().removeSensitivityExport(export);
+ }
+ setSensitivityExportListModel();
+ }
+
+ /**
+ * Clear all export.
+ */
+ protected void clearExports() {
+ getSimulAction().clearSensitivityExport();
+ setSensitivityExportListModel();
+ }
+
+ /**
+ * Set model (refresh export JList).
+ */
+ public void setSensitivityExportListModel() {
+ List<SensitivityExport> exports = getSimulAction().getSensitivityExports();
+ GenericListModel<SensitivityExport> model = new GenericListModel<>(exports);
+ sensitivityChooserUI.selectedSensitivityExports.setModel(model);
+ sensitivityChooserUI.selectedSensitivityExports.setCellRenderer(new SensitivityExportListRenderer());
+
+ sensitivityChooserUI.clearExportsButton.setEnabled(!exports.isEmpty());
+ }
+
+ /**
+ * When selection change on available export list.
+ */
+ protected void availableSensitivityExportSelection() {
+ sensitivityChooserUI.addExportButton.setEnabled(sensitivityChooserUI.availableSensitivityExports.getSelectedIndices().length != 0);
+ }
+
+ /**
+ * When selection change on choosen export list.
+ */
+ protected void selectedSensitivityExportSelection() {
+ if (log.isDebugEnabled()) {
+ log.debug("Sensitivity export selection change");
+ }
+ setExportParams();
+ sensitivityChooserUI.removeExportButton.setEnabled(sensitivityChooserUI.selectedSensitivityExports.getSelectedIndices().length != 0);
+ }
+
+ /**
+ * Fill export parameters names and values in table.
+ */
+ protected void setExportParams() {
+ SimulAction simulAction = sensitivityChooserUI.getContextValue(SimulAction.class);
+
+ if (sensitivityChooserUI.selectedSensitivityExports.getSelectedIndices().length == 1) {
+ SensitivityExport export = (SensitivityExport)sensitivityChooserUI.selectedSensitivityExports.getSelectedValue();
+ ScriptParametersTableModel model = new ScriptParametersTableModel(export);
+ sensitivityChooserUI.exportParamsTable.setModel(model);
+ sensitivityChooserUI.exportParamsTable.getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(export));
+ ScriptParametersTableCellEditor cellEditor = new ScriptParametersTableCellEditor(export);
+ cellEditor.setRegionStorage(sensitivityChooserUI.getContextValue(RegionStorage.class));
+ sensitivityChooserUI.exportParamsTable.getColumnModel().getColumn(1).setCellEditor(cellEditor);
+ } else {
+ sensitivityChooserUI.exportParamsTable.setModel(new DefaultTableModel());
+ }
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2015-05-22 16:10:26 UTC (rev 4233)
@@ -23,227 +23,22 @@
#L%
-->
<Table>
- <import>
- java.awt.CardLayout
- javax.swing.ComboBoxModel
- javax.swing.table.DefaultTableModel
- fr.ifremer.isisfish.datastore.RegionStorage
- fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage
- fr.ifremer.isisfish.datastore.SensitivityExportStorage
- fr.ifremer.isisfish.datastore.StorageChangeEvent
- fr.ifremer.isisfish.datastore.StorageChangeListener
- fr.ifremer.isisfish.export.SensitivityExport
- fr.ifremer.isisfish.simulator.sensitivity.Domain
- fr.ifremer.isisfish.simulator.sensitivity.Factor
- fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis
- fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain
- fr.ifremer.isisfish.ui.models.common.GenericListModel
- fr.ifremer.isisfish.ui.models.common.GenericComboModel
- fr.ifremer.isisfish.ui.models.sensitivityexport.SensitivityExportListRenderer
- fr.ifremer.isisfish.ui.models.sensitivityexport.SensitivityExportNameListRenderer
- fr.ifremer.isisfish.ui.models.sensitivityanalysis.SensitivityAnalysisComboRenderer
- fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellEditor
- fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellRenderer
- fr.ifremer.isisfish.ui.models.common.ScriptParametersTableModel
- fr.ifremer.isisfish.ui.sensitivity.model.FactorCardinalityTableModel
- fr.ifremer.isisfish.ui.simulator.SimulAction
- </import>
+ <SensitivityChooserHandler id="handler" constructorParams='this' />
- <script><![CDATA[
-
- // listener to listen for modification on sensitivity analysis
- StorageChangeListener sensitivityAnalysisListener;
- sensitivityAnalysisListener = new StorageChangeListener() {
- @Override
- public void versionDataChanged(StorageChangeEvent e) {
- fieldSensitivityAnalysisSelect.setModel(getSensitivityAnalysisModel());
- }
- };
- SensitivityAnalysisStorage.addStorageChangeListener(sensitivityAnalysisListener);
-
- // listener to listen for modification on sensitivity exports
- StorageChangeListener sensitivityExportListener;
- sensitivityExportListener = new StorageChangeListener() {
- @Override
- public void versionDataChanged(StorageChangeEvent e) {
- availableSensitivityExports.setModel(getAvailableExportListModel());
- }
- };
- SensitivityExportStorage.addStorageChangeListener(sensitivityExportListener);
-
-
- protected SimulAction getSimulAction() {
- return getContextValue(SimulAction.class);
+ <script><![CDATA[
+ protected void $afterCompleteSetup() {
+ handler.afterInit();
}
-
- public ComboBoxModel<String> getSensitivityAnalysisModel() {
- List<String> sensitivityNames = getSimulAction().getSensitivityAnalysisNames();
- GenericComboModel<String> model = new GenericComboModel<>(sensitivityNames);
- return model;
- }
-
- /**
- * Auto select analysis in JComboBox
- * with analysis selected in SimulAction.
- *
- * Used by "reloadOldSimulation" operation.
- */
- public void refreshSelectedSensitivityAnalysis() {
- SensitivityAnalysis sensitivityAnalysis = getSimulAction().getSensitivityAnalysis();
- if (sensitivityAnalysis != null) {
- if (log.isDebugEnabled()) {
- log.debug("Refreshing sensitivity analysis list");
- }
- // TODO it's not getSimpleName() here !
- fieldSensitivityAnalysisSelect.setSelectedItem(sensitivityAnalysis.getClass().getSimpleName());
- }
- }
-
- protected void sensitivityAnalysisChanged() {
-
- String sensitivityName = (String)fieldSensitivityAnalysisSelect.getSelectedItem();
-
- // when analysis is changed by refreshSelectedSensitivityAnalysis
- // this event is thrown by build a new Analysis instance
- // and parameter are lost
- // fix it with a small class name test
- SensitivityAnalysis sensitivityAnalysis = getSimulAction().getSensitivityAnalysis();
- if (sensitivityAnalysis != null && sensitivityAnalysis.getClass().getSimpleName().equals(sensitivityName)) {
- sensitivityAnalysis = getSimulAction().getSensitivityAnalysis();
- } else {
- sensitivityAnalysis = getSimulAction().getSensitivityAnalysisInstance(sensitivityName);
- }
-
- // can be null for example if analysis can't be compiled
- if (sensitivityAnalysis != null) {
- getSimulAction().setSensitivityAnalysis(sensitivityAnalysis);
-
- CardLayout factorPanelLayout = (CardLayout)factorCardinalityPanel.getLayout();
- if (sensitivityAnalysis.canManageCardinality()) {
- factorPanelLayout.show(factorCardinalityPanel, "factorCardinalitySupported");
- } else {
- factorPanelLayout.show(factorCardinalityPanel, "factorCardinalityNotSupported");
- }
-
- // update model
- ScriptParametersTableModel parametersTableModel = new ScriptParametersTableModel(sensitivityAnalysis);
- simulSensitivityAnalysisParam.setModel(parametersTableModel);
- simulSensitivityAnalysisParam.getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(sensitivityAnalysis));
- simulSensitivityAnalysisParam.getColumnModel().getColumn(1).setCellEditor(new ScriptParametersTableCellEditor(sensitivityAnalysis));
- }
- }
-
- public void setFactorCardinalityTableModel() {
- List<Factor> factors = getSimulAction().getFactorGroup().getFactors();
- List<Factor> factorsContinue = new ArrayList<Factor>();
- /* get sublist with only Continous factor */
- for (Factor f : factors) {
- Domain domain = f.getDomain();
- if (ContinuousDomain.class.isInstance(domain)) {
- ContinuousDomain continuousDomain = (ContinuousDomain)domain;
- factorsContinue.add(f);
- }
- }
- FactorCardinalityTableModel model = new FactorCardinalityTableModel(factorsContinue);
- factorCardinality.setModel(model);
- }
-
- protected GenericListModel<String> getAvailableExportListModel() {
- List<String> exportNames = getSimulAction().getSensitivityExportNames();
- GenericListModel<String> model = new GenericListModel<>(exportNames);
- return model;
- }
-
- /**
- * Add multiples export.
- *
- * Export name can be duplicated.
- */
- protected void addExports() {
- List<String> exportNames = availableSensitivityExports.getSelectedValuesList();
- for (String exportName : exportNames) {
- getSimulAction().addSensitivityExport(this, exportName);
- }
- setSensitivityExportListModel();
- }
-
- /**
- * Remove multiple export.
- */
- protected void removeExports() {
- List<SensitivityExport> exports = selectedSensitivityExports.getSelectedValuesList();
- for (SensitivityExport export : exports) {
- getSimulAction().removeSensitivityExport(export);
- }
- setSensitivityExportListModel();
- }
-
- /**
- * Clear all export.
- */
- protected void clearExports() {
- getSimulAction().clearSensitivityExport();
- setSensitivityExportListModel();
- }
-
- /**
- * Set model (refresh export JList).
- */
- public void setSensitivityExportListModel() {
- List<SensitivityExport> exports = getSimulAction().getSensitivityExports();
- GenericListModel<SensitivityExport> model = new GenericListModel<>(exports);
- selectedSensitivityExports.setModel(model);
- selectedSensitivityExports.setCellRenderer(new SensitivityExportListRenderer());
-
- clearExportsButton.setEnabled(!exports.isEmpty());
- }
-
- /**
- * When selection change on available export list.
- */
- protected void availableSensitivityExportSelection() {
- addExportButton.setEnabled(availableSensitivityExports.getSelectedIndices().length != 0);
- }
-
- /**
- * When selection change on choosen export list.
- */
- protected void selectedSensitivityExportSelection() {
- if (log.isDebugEnabled()) {
- log.debug("Sensitivity export selection change");
- }
- setExportParams();
- removeExportButton.setEnabled(selectedSensitivityExports.getSelectedIndices().length != 0);
- }
-
- /**
- * Fill export parameters names and values in table.
- */
- protected void setExportParams() {
- SimulAction simulAction = getContextValue(SimulAction.class);
-
- if (selectedSensitivityExports.getSelectedIndices().length == 1) {
- SensitivityExport export = (SensitivityExport)selectedSensitivityExports.getSelectedValue();
- ScriptParametersTableModel model = new ScriptParametersTableModel(export);
- exportParamsTable.setModel(model);
- exportParamsTable.getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(export));
- ScriptParametersTableCellEditor cellEditor = new ScriptParametersTableCellEditor(export);
- cellEditor.setRegionStorage(getContextValue(RegionStorage.class));
- exportParamsTable.getColumnModel().getColumn(1).setCellEditor(cellEditor);
- }
- else {
- exportParamsTable.setModel(new DefaultTableModel());
- }
- }
]]></script>
+
<row>
<cell fill="horizontal">
<JLabel text="isisfish.sensitivity.select"/>
</cell>
<cell fill="horizontal" weightx="1.0">
- <JComboBox id="fieldSensitivityAnalysisSelect" model='{getSensitivityAnalysisModel()}'
- genericType="String"
- renderer='{new SensitivityAnalysisComboRenderer()}' onActionPerformed='sensitivityAnalysisChanged()'/>
+ <JComboBox id="fieldSensitivityAnalysisSelect" model='{handler.getSensitivityAnalysisModel()}'
+ genericType="String" onActionPerformed='handler.sensitivityAnalysisChanged()'
+ renderer='{new fr.ifremer.isisfish.ui.models.sensitivityanalysis.SensitivityAnalysisComboRenderer()}' />
</cell>
</row>
<row>
@@ -255,11 +50,12 @@
</row>
<row>
<cell columns="2" fill="both" weightx="1.0" weighty="1.0">
- <JPanel id="factorCardinalityPanel" layout="{new CardLayout()}">
+ <JPanel id="factorCardinalityPanel" layout="{new java.awt.CardLayout()}">
<JLabel text="isisfish.sensitivity.methodfactorsupported" horizontalAlignment="center"
border="{BorderFactory.createEtchedBorder()}" font-style="italic" constraints='"factorCardinalitySupported"'/>
<JScrollPane id="factorCardinalityScrollPane" constraints='"factorCardinalityNotSupported"'>
- <JTable id="factorCardinality" model="{new FactorCardinalityTableModel()}" rowHeight='24' />
+ <JTable id="factorCardinality" rowHeight='24'
+ model="{new fr.ifremer.isisfish.ui.sensitivity.model.FactorCardinalityTableModel()}" />
</JScrollPane>
</JPanel>
</cell>
@@ -276,26 +72,26 @@
<cell fill="both" weightx="0.5" weighty="1.0">
<JScrollPane>
<JList id="availableSensitivityExports" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}"
- model='{getAvailableExportListModel()}' cellRenderer='{new SensitivityExportNameListRenderer()}'
- genericType="String"
- onValueChanged='availableSensitivityExportSelection()' />
+ model='{handler.getAvailableExportListModel()}'
+ cellRenderer='{new fr.ifremer.isisfish.ui.models.sensitivityexport.SensitivityExportNameListRenderer()}'
+ genericType="String" onValueChanged='handler.availableSensitivityExportSelection()' />
</JScrollPane>
</cell>
<cell fill="both" weighty="1.0">
<Table>
<row>
<cell fill="both">
- <JButton id="addExportButton" text="isisfish.common.add" enabled="false" onActionPerformed='addExports()' />
+ <JButton id="addExportButton" text="isisfish.common.add" enabled="false" onActionPerformed='handler.addExports()' />
</cell>
</row>
<row>
<cell fill="both">
- <JButton id="removeExportButton" text="isisfish.common.remove" enabled="false" onActionPerformed='removeExports()' />
+ <JButton id="removeExportButton" text="isisfish.common.remove" enabled="false" onActionPerformed='handler.removeExports()' />
</cell>
</row>
<row>
<cell fill="both">
- <JButton id="clearExportsButton" text="isisfish.common.clear" enabled="false" onActionPerformed='clearExports()' />
+ <JButton id="clearExportsButton" text="isisfish.common.clear" enabled="false" onActionPerformed='handler.clearExports()' />
</cell>
</row>
</Table>
@@ -304,7 +100,7 @@
<JScrollPane>
<JList id="selectedSensitivityExports" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}"
genericType="fr.ifremer.isisfish.export.SensitivityExport"
- onValueChanged='selectedSensitivityExportSelection()' />
+ onValueChanged='handler.selectedSensitivityExportSelection()' />
</JScrollPane>
</cell>
</row>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -50,19 +50,23 @@
import org.nuiton.util.FileUtil;
import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.entities.FisheryRegion;
import fr.ifremer.isisfish.mexico.MexicoHelper;
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
import fr.ifremer.isisfish.ui.NavigationHandler;
+import fr.ifremer.isisfish.ui.WelcomePanelUI;
import fr.ifremer.isisfish.ui.input.InputContentUI;
+import fr.ifremer.isisfish.ui.input.InputSaveVerifier;
import fr.ifremer.isisfish.ui.input.tree.FisheryDataProvider;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeHelper;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeNode;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeRenderer;
+import fr.ifremer.isisfish.ui.sensitivity.model.FactorTreeModel;
+import fr.ifremer.isisfish.ui.sensitivity.wizard.FactorWizardHandler;
import fr.ifremer.isisfish.ui.sensitivity.wizard.FactorWizardUI;
-import fr.ifremer.isisfish.ui.sensitivity.wizard.SensitivityWizardHandler;
import fr.ifremer.isisfish.ui.simulator.SimulAction;
/**
@@ -79,18 +83,66 @@
/** Class logger. */
private static Log log = LogFactory.getLog(SensitivityInputHandler.class);
+ protected SensitivityInputUI sensitivityInputUI;
+
+ public SensitivityInputHandler(SensitivityInputUI sensitivityInputUI) {
+ this.sensitivityInputUI = sensitivityInputUI;
+ }
+
+ protected void afterInit() {
+
+ }
+
+ @Deprecated
+ protected SimulAction getSimulAction() {
+ return sensitivityInputUI.getContextValue(SimulAction.class);
+ }
+
+ protected InputSaveVerifier getVerifier() {
+ return sensitivityInputUI.getContextValue(InputSaveVerifier.class);
+ }
+
+ protected RegionStorage getRegionStorage() {
+ return sensitivityInputUI.getContextValue(RegionStorage.class);
+ }
+
+ public void setTreeModel() {
+ if (sensitivityInputUI.getFisheryRegion() != null) {
+ sensitivityInputUI.getCardlayoutPrincipal().show(sensitivityInputUI.inputPanePrincipal,"normale");
+ sensitivityInputUI.setContextValue(sensitivityInputUI.getFisheryRegion());
+ loadFisheryRegionTree();
+ }
+ }
+
+ protected void setInfoText(String s) {
+ WelcomePanelUI root = sensitivityInputUI.getParentContainer(WelcomePanelUI.class);
+ root.setStatusMessage(s);
+ }
+
+ protected void regionNull() {
+ sensitivityInputUI.getCardlayoutPrincipal().show(sensitivityInputUI.inputPanePrincipal,"none");
+ DefaultTreeModel model = new DefaultTreeModel(null);
+ sensitivityInputUI.fisheryRegionTree.setModel(model);
+ }
+
+ public void setFactorModel() {
+ FactorGroup factorGroup = getSimulAction().getFactorGroup();
+ FactorTreeModel model = new FactorTreeModel(factorGroup);
+ sensitivityInputUI.factorsTree.setModel(model);
+ sensitivityInputUI.getParentContainer(SensitivityUI.class).getSensitivityChooserUI().getHandler().setFactorCardinalityTableModel();
+ }
+
/**
*
- * @param sensitivityTabUI
*/
- public void loadFisheryRegionTree(SensitivityTabUI sensitivityTabUI) {
- FisheryRegion fisheryRegion = sensitivityTabUI.getFisheryRegion();
+ public void loadFisheryRegionTree() {
+ FisheryRegion fisheryRegion = sensitivityInputUI.getFisheryRegion();
if (fisheryRegion == null) {
// show empty region ui
- sensitivityTabUI.getCardlayoutPrincipal().show(sensitivityTabUI.getInputPanePrincipal(),"none");
+ sensitivityInputUI.getCardlayoutPrincipal().show(sensitivityInputUI.getInputPanePrincipal(),"none");
TreeModel model = new DefaultTreeModel(null);
- sensitivityTabUI.getFisheryRegionTree().setModel(model);
+ sensitivityInputUI.getFisheryRegionTree().setModel(model);
}
else {
// init tree model loader with fishery region
@@ -98,27 +150,26 @@
FisheryDataProvider dataProvider = new FisheryDataProvider(fisheryRegion);
treeHelper.setDataProvider(dataProvider);
TreeModel model = treeHelper.createTreeModel(fisheryRegion);
- sensitivityTabUI.getFisheryRegionTree().setModel(model);
- sensitivityTabUI.getFisheryRegionTree().setCellRenderer(new FisheryTreeRenderer(dataProvider));
- treeHelper.setUI(sensitivityTabUI.getFisheryRegionTree(), true, false, null);
+ sensitivityInputUI.getFisheryRegionTree().setModel(model);
+ sensitivityInputUI.getFisheryRegionTree().setCellRenderer(new FisheryTreeRenderer(dataProvider));
+ treeHelper.setUI(sensitivityInputUI.getFisheryRegionTree(), true, false, null);
// global context value : fisheryRegion, regionStorage, treeHelper
- sensitivityTabUI.setContextValue(fisheryRegion);
- sensitivityTabUI.setContextValue(treeHelper);
- sensitivityTabUI.setContextValue(model);
- sensitivityTabUI.setContextValue(fisheryRegion.getTopiaContext());
+ sensitivityInputUI.setContextValue(fisheryRegion);
+ sensitivityInputUI.setContextValue(treeHelper);
+ sensitivityInputUI.setContextValue(model);
+ sensitivityInputUI.setContextValue(fisheryRegion.getTopiaContext());
- sensitivityTabUI.getCardlayoutPrincipal().show(sensitivityTabUI.getInputPanePrincipal(),"normale");
+ sensitivityInputUI.getCardlayoutPrincipal().show(sensitivityInputUI.getInputPanePrincipal(),"normale");
}
}
/**
* Changement de selection dans l'arbre de la pecherie.
*
- * @param sensitivityTabUI
* @param event
*/
- public void nodeSelectionChanged(SensitivityTabUI sensitivityTabUI, TreeSelectionEvent event) {
+ public void nodeSelectionChanged(TreeSelectionEvent event) {
TreePath newTreePath = event.getNewLeadSelectionPath();
@@ -135,12 +186,12 @@
try {
if (isisTreeNode.isStaticNode()) {
- FisheryRegion fisheryRegion = sensitivityTabUI.getContextValue(FisheryRegion.class);
+ FisheryRegion fisheryRegion = sensitivityInputUI.getContextValue(FisheryRegion.class);
TopiaContext topiaContext = fisheryRegion.getTopiaContext();
topiaEntity = (TopiaEntityContextable)topiaContext.findByTopiaId(topiaId);
}
- InputContentUI inputContentUI = getUIInstanceForBeanClass(internalClass, sensitivityTabUI);
+ InputContentUI inputContentUI = getUIInstanceForBeanClass(internalClass, sensitivityInputUI);
// mandatory set
inputContentUI.getSaveVerifier().reset(); // before set bean !!!
@@ -155,11 +206,11 @@
inputContentUI.setSensitivity(true);
// add initialized ui to panel
- sensitivityTabUI.getCardlayoutPrincipal().show(sensitivityTabUI.getInputPanePrincipal(), "normale");
- sensitivityTabUI.getInputPane().removeAll();
- sensitivityTabUI.getInputPane().add(inputContentUI, BorderLayout.CENTER);
- sensitivityTabUI.getInputPane().repaint();
- sensitivityTabUI.getInputPane().validate();
+ sensitivityInputUI.getCardlayoutPrincipal().show(sensitivityInputUI.getInputPanePrincipal(), "normale");
+ sensitivityInputUI.getInputPane().removeAll();
+ sensitivityInputUI.getInputPane().add(inputContentUI, BorderLayout.CENTER);
+ sensitivityInputUI.getInputPane().repaint();
+ sensitivityInputUI.getInputPane().validate();
} catch (Exception ex) {
throw new IsisFishRuntimeException("Can't display bean " + topiaId, ex);
}
@@ -170,36 +221,34 @@
/**
* Add new continuous factor group in factor tree.
*
- * @param sensitivityTabUI
* @param continuous continuous
*/
- public void addNewFactorGroup(SensitivityTabUI sensitivityTabUI, boolean continuous) {
- String factorName = JOptionPane.showInputDialog(sensitivityTabUI, t("isisfish.sensitivity.newfactorname"),
+ public void addNewFactorGroup(boolean continuous) {
+ String factorName = JOptionPane.showInputDialog(sensitivityInputUI, t("isisfish.sensitivity.newfactorname"),
t("isisfish.sensitivity.title"), JOptionPane.QUESTION_MESSAGE);
if (StringUtils.isNotBlank(factorName)) {
- FactorGroup rootFactorGroup = sensitivityTabUI.getSimulAction().getFactorGroup();
+ FactorGroup rootFactorGroup = getSimulAction().getFactorGroup();
FactorGroup factorGroup = new FactorGroup(factorName, continuous);
rootFactorGroup.addFactor(factorGroup);
- sensitivityTabUI.setFactorModel();
+ setFactorModel();
}
}
/**
* Move factors to another factorgroup.
*
- * @param sensitivityTabUI
* @param selectedFactorGroup
* @param movedFactors
*/
- public void moveFactor(SensitivityTabUI sensitivityTabUI, FactorGroup selectedFactorGroup, List<Factor> movedFactors) {
+ public void moveFactor(FactorGroup selectedFactorGroup, List<Factor> movedFactors) {
try {
// add all factors, to do first, throw
// exception if can't be done
selectedFactorGroup.addAllFactors(movedFactors);
// remove duplicated from factor group
- FactorGroup rootFactorGroup = sensitivityTabUI.getSimulAction().getFactorGroup();
+ FactorGroup rootFactorGroup = getSimulAction().getFactorGroup();
if (!rootFactorGroup.equals(selectedFactorGroup)) {
rootFactorGroup.removeAll(movedFactors);
}
@@ -212,9 +261,9 @@
}
}
}
- sensitivityTabUI.setFactorModel();
+ setFactorModel();
} catch (IllegalArgumentException ex) {
- JOptionPane.showMessageDialog(sensitivityTabUI, t("isisfish.sensitivity.moveillegal"),
+ JOptionPane.showMessageDialog(sensitivityInputUI, t("isisfish.sensitivity.moveillegal"),
t("isisfish.sensitivity.title"), JOptionPane.ERROR_MESSAGE);
}
}
@@ -227,10 +276,9 @@
* <li>right click : popup menu</li>
* </ul>
*
- * @param sensitivityTabUI ui
* @param e mouse event
*/
- public void factorsTreeMouseClicked(final SensitivityTabUI sensitivityTabUI, MouseEvent e) {
+ public void factorsTreeMouseClicked(MouseEvent e) {
// clic droit
if (e.getButton() == MouseEvent.BUTTON3) {
JPopupMenu menu = new JPopupMenu();
@@ -238,7 +286,7 @@
menuItemDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- deleteSelectedFactors(sensitivityTabUI);
+ deleteSelectedFactors();
}
});
menu.add(menuItemDelete);
@@ -246,18 +294,16 @@
}
else if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {
// autre double clic
- factorSelected(sensitivityTabUI);
+ factorSelected();
}
}
/**
* Factor selection, display modification wizard.
- *
- * @param sensitivityTabUI
*/
- protected void factorSelected(SensitivityTabUI sensitivityTabUI) {
+ protected void factorSelected() {
// get selected factor
- TreePath selectedPath = sensitivityTabUI.getFactorsTree().getSelectionPath();
+ TreePath selectedPath = sensitivityInputUI.getFactorsTree().getSelectionPath();
// method appelee au clic, donc pas forcement de selection
if (selectedPath != null) {
@@ -266,11 +312,11 @@
if (selectedObject != null) {
if (!(selectedObject instanceof FactorGroup)) {
Factor selectedFactor = (Factor)selectedObject;
- FactorWizardUI factorWizardUI = new FactorWizardUI(sensitivityTabUI);
- SensitivityWizardHandler handler = factorWizardUI.getHandler();
+ FactorWizardUI factorWizardUI = new FactorWizardUI(sensitivityInputUI);
+ FactorWizardHandler handler = factorWizardUI.getHandler();
handler.initExistingFactor(factorWizardUI, selectedFactor);
factorWizardUI.pack();
- factorWizardUI.setLocationRelativeTo(sensitivityTabUI);
+ factorWizardUI.setLocationRelativeTo(sensitivityInputUI);
factorWizardUI.setVisible(true);
}
}
@@ -280,9 +326,9 @@
/**
* Delete selection factors.
*/
- protected void deleteSelectedFactors(SensitivityTabUI sensitivityTabUI) {
+ protected void deleteSelectedFactors() {
// get selected factor
- TreePath[] selectedPaths = sensitivityTabUI.getFactorsTree().getSelectionPaths();
+ TreePath[] selectedPaths = sensitivityInputUI.getFactorsTree().getSelectionPaths();
if (!ArrayUtils.isEmpty(selectedPaths)) { // can happen
for (TreePath selectedPath : selectedPaths) {
Object[] pathWay = selectedPath.getPath();
@@ -297,7 +343,7 @@
log.debug("Deleting factor " + selectedFactor.getName());
}
selectedFactorGroup.remove(selectedFactor);
- sensitivityTabUI.setFactorModel();
+ setFactorModel();
}
}
}
@@ -305,39 +351,14 @@
}
}
- /*
- * Return value in swing component that could be next used into factor
- * for discrete factor values.
- *
- * @param component component
- * @return factor value
- *
- protected Object getComponentValue(JComponent component) {
- Object result = null;
- if (component instanceof JTextComponent) {
- result = ((JTextComponent) component).getText();
- } else if (component instanceof MatrixPanelEditor) {
- result = ((MatrixPanelEditor) component).getMatrix();
- } else if (component instanceof InputOneEquationUI) {
- result = ((InputOneEquationUI) component).getEditor().getText();
- } else if (component instanceof RuleChooser) {
- result = ((RuleChooser)component).getRulesList();
- }
- if (log.isDebugEnabled()) {
- log.debug("Value for component : " + component.getClass().getSimpleName() + " is " + result);
- }
-
- return result;
- }*/
-
/**
* Export factors list to xml mexico file.
*
* @since 4.1.1.2
*/
- public void exportFactorsToMexico(SensitivityTabUI view) {
+ public void exportFactorsToMexico() {
File xmlFile = FileUtil.getFile(t("isisfish.sensitivity.mexico.exporttoxml.title"),
- t("isisfish.sensitivity.mexico.exporttoxml.approve"), view,
+ t("isisfish.sensitivity.mexico.exporttoxml.approve"), sensitivityInputUI,
new String[]{
".*\\.xml",
t("isisfish.sensitivity.mexico.exporttoxml.filter")
@@ -350,11 +371,11 @@
xmlFile = new File(xmlFile.getAbsolutePath() + ".xml");
}
- SimulAction simulAction = view.getContextValue(SimulAction.class);
+ SimulAction simulAction = sensitivityInputUI.getContextValue(SimulAction.class);
DesignPlan designPlan = new DesignPlan();
designPlan.setFactorGroup(simulAction.getFactorGroup());
- String xml = MexicoHelper.getDesignPlanAsXML(designPlan);
+ //String xml = MexicoHelper.getDesignPlanAsXML(designPlan);
MexicoHelper.writeDesignPlanToFile(xmlFile, designPlan);
}
}
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputUI.jaxx (from rev 4230, trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputUI.jaxx (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputUI.jaxx 2015-05-22 16:10:26 UTC (rev 4233)
@@ -0,0 +1,86 @@
+<!--
+ #%L
+ IsisFish
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2009 - 2012 Ifremer, CodeLutin, Chatellier Eric
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 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 Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+<fr.ifremer.isisfish.ui.NavigationUI>
+
+ <SensitivityInputHandler id="handler" constructorParams='this' />
+
+ <fr.ifremer.isisfish.entities.FisheryRegion id='fisheryRegion' javaBean='null'/>
+
+ <script><![CDATA[
+ protected void $afterCompleteSetup() {
+ handler.afterInit();
+ }
+ ]]></script>
+
+ <JSplitPane oneTouchExpandable="true" dividerLocation="200" orientation="HORIZONTAL" constraints='BorderLayout.CENTER'>
+ <JPanel layout='{new BorderLayout()}'>
+ <JSplitPane oneTouchExpandable="true" dividerLocation="400" orientation="VERTICAL" constraints='BorderLayout.CENTER'>
+ <JScrollPane>
+ <javax.swing.tree.DefaultTreeSelectionModel id='fisheryRegionTreeSelectionModel'
+ selectionMode='{javax.swing.tree.TreeSelectionModel.SINGLE_TREE_SELECTION}'/>
+ <JTree id="fisheryRegionTree" rootVisible="true" selectionRow='0'
+ selectionModel='{getFisheryRegionTreeSelectionModel()}'
+ model='{new javax.swing.tree.DefaultTreeModel(null)}'
+ onValueChanged="handler.nodeSelectionChanged(event)" />
+ </JScrollPane>
+ <Table>
+ <row>
+ <cell anchor='west'>
+ <JButton icon="factors/dgroup.png" toolTipText="isisfish.sensitivity.newfactordgroup.tip"
+ onActionPerformed="handler.addNewFactorGroup(false)"/>
+ </cell>
+ <cell anchor='west'>
+ <JButton icon="factors/cgroup.png" toolTipText="isisfish.sensitivity.newfactorcgroup.tip"
+ onActionPerformed="handler.addNewFactorGroup(true)"/>
+ </cell>
+ <cell anchor='west' weightx='1'>
+ <JButton icon="script_go.png" toolTipText="isisfish.sensitivity.mexico.exporttoxml.tip"
+ onActionPerformed="handler.exportFactorsToMexico()"/>
+ </cell>
+ </row>
+ <row>
+ <cell columns='3' fill="both" weightx='1.0' weighty='1.0'>
+ <JScrollPane>
+ <fr.ifremer.isisfish.ui.sensitivity.model.FactorTree id="factorsTree" constructorParams='this'
+ rootVisible="true" selectionRow='0'
+ model='{new fr.ifremer.isisfish.ui.sensitivity.model.FactorTreeModel(handler.getSimulAction().getFactorGroup())}'
+ cellRenderer='{new fr.ifremer.isisfish.ui.sensitivity.model.FactorTreeCellRenderer()}'
+ onMouseClicked='handler.factorsTreeMouseClicked(event)'/>
+ </JScrollPane>
+ </cell>
+ </row>
+ </Table>
+ </JSplitPane>
+ </JPanel>
+ <java.awt.CardLayout id='cardlayoutPrincipal'/>
+ <JPanel id='inputPanePrincipal' layout='{getCardlayoutPrincipal()}'>
+ <JPanel layout='{new BorderLayout()}' constraints='"none"'>
+ <JLabel id='none' horizontalAlignment="0" text="isisfish.input.selectRegion" constraints='BorderLayout.CENTER'/>
+ </JPanel>
+ <jaxx.runtime.swing.CardLayout2 id='cardlayout'/>
+ <JPanel id="inputPane" layout='{getCardlayout()}' constraints='"normale"'/>
+ </JPanel>
+ </JSplitPane>
+</fr.ifremer.isisfish.ui.NavigationUI>
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -0,0 +1,116 @@
+package fr.ifremer.isisfish.ui.sensitivity;
+
+import java.awt.event.ActionEvent;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.launcher.SimulationJob;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
+import fr.ifremer.isisfish.simulator.launcher.SimulationServiceListener;
+import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
+import fr.ifremer.isisfish.ui.simulator.SimulAction;
+
+public class SensitivitySecondPassHandler {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(SensitivitySecondPassHandler.class);
+
+ protected SensitivitySecondPassUI sensitivitySecondPassUI;
+
+ // declaration sépérée de la variable d'instance (jaxx)
+ protected SimulationServiceListener simulationListener;
+
+ public SensitivitySecondPassHandler(SensitivitySecondPassUI sensitivitySecondPassUI) {
+ this.sensitivitySecondPassUI = sensitivitySecondPassUI;
+ }
+
+ protected void afterInit() {
+ // permet de rafaichir la liste les simulations
+ // des qu'une simulation se termine
+ simulationListener = new SimulationServiceListener() {
+ @Override
+ public void simulationStart(SimulationService simService, SimulationJob job) {
+ }
+
+ @Override
+ public void simulationStop(SimulationService simService, SimulationJob job) {
+ if (log.isDebugEnabled()) {
+ log.debug("Refresh second pass UI simulations list");
+ }
+ GenericComboModel<String> model = (GenericComboModel<String>)sensitivitySecondPassUI.fieldSensitivitySimulationSelect.getModel();
+ String simulationName = job.getId();
+ if (simulationName.startsWith("as_")) {
+ String masterSensitivityName = simulationName.substring(0, simulationName.lastIndexOf("_"));
+ if (!model.containsElement(masterSensitivityName)) {
+ model.addElement(masterSensitivityName);
+ }
+ }
+ }
+
+ @Override
+ public void clearJobDone(SimulationService simService) {
+ }
+ };
+ SimulationService.getService().addSimulationServiceListener(simulationListener);
+ }
+
+ /**
+ * Model de contenu de la liste des nom de simulations
+ */
+ public GenericComboModel<String> getSensitivitySimulationModel() {
+ List<String> asNames = new ArrayList<>();
+ for (String simulationName : SimulationStorage.getSimulationNames()) {
+ if (simulationName.startsWith("as_")) {
+ String masterSensitivityName = simulationName.substring(0, simulationName.lastIndexOf("_"));
+ if (!asNames.contains(masterSensitivityName)) {
+ asNames.add(masterSensitivityName);
+ }
+ }
+ }
+
+ GenericComboModel<String> model = new GenericComboModel<>(asNames);
+ return model;
+ }
+
+ @Deprecated
+ protected SimulAction getSimulAction() {
+ return sensitivitySecondPassUI.getContextValue(SimulAction.class);
+ }
+
+ protected void launchSecondPass(ActionEvent event) {
+ if (sensitivitySecondPassUI.fieldSensitivitySimulationSelect.getSelectedIndex() != -1) {
+ getSimulAction().runSensitivitySecondPass((String)sensitivitySecondPassUI.fieldSensitivitySimulationSelect.getSelectedItem());
+ displaySensitivitySecondPass(event);
+ }
+ }
+
+ protected void displaySensitivitySecondPass(ActionEvent event) {
+ if (sensitivitySecondPassUI.fieldSensitivitySimulationSelect.getSelectedIndex() != -1) {
+
+ try {
+ String selectedSimulationName = (String)sensitivitySecondPassUI.fieldSensitivitySimulationSelect.getSelectedItem();
+ List<File> files = getSimulAction().getSensitivitySecondPassResults(selectedSimulationName);
+
+ String content = "";
+ for(File file : files) {
+ content += "Fichier " + file.getName() + "\n";
+ content += "------------------------------\n";
+ content += FileUtils.readFileToString(file) + "\n";
+ content += "\n";
+ }
+ sensitivitySecondPassUI.textAreaSensitivitySecondpassResult.setText(content);
+ } catch(IOException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't run second pass", e);
+ }
+ }
+ }
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassUI.jaxx 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySecondPassUI.jaxx 2015-05-22 16:10:26 UTC (rev 4233)
@@ -23,117 +23,24 @@
#L%
-->
<Table>
- <import>
- java.util.ArrayList
- java.io.File
- java.io.IOException
- org.apache.commons.io.FileUtils
- fr.ifremer.isisfish.datastore.SimulationStorage
- fr.ifremer.isisfish.simulator.launcher.SimulationService
- fr.ifremer.isisfish.simulator.launcher.SimulationJob
- fr.ifremer.isisfish.simulator.launcher.SimulationServiceListener
- fr.ifremer.isisfish.ui.simulator.SimulAction
- fr.ifremer.isisfish.ui.models.common.GenericComboModel
- </import>
+ <SensitivitySecondPassHandler id="handler" constructorParams='this' />
-<script><![CDATA[
- // declaration sépérée de la variable d'instance (jaxx)
- SimulationServiceListener simulationListener;
-
+ <script><![CDATA[
protected void $afterCompleteSetup() {
- // permet de rafaichir la liste les simulations
- // des qu'une simulation se termine
- simulationListener = new SimulationServiceListener() {
- @Override
- public void simulationStart(SimulationService simService, SimulationJob job) {
- }
-
- @Override
- public void simulationStop(SimulationService simService, SimulationJob job) {
- if (log.isDebugEnabled()) {
- log.debug("Refresh second pass UI simulations list");
- }
- GenericComboModel<String> model = (GenericComboModel)fieldSensitivitySimulationSelect.getModel();
- String simulationName = job.getId();
- if (simulationName.startsWith("as_")) {
- String masterSensitivityName = simulationName.substring(0, simulationName.lastIndexOf("_"));
- if (!model.containsElement(masterSensitivityName)) {
- model.addElement(masterSensitivityName);
- }
- }
- }
-
- @Override
- public void clearJobDone(SimulationService simService) {
- }
- };
- SimulationService.getService().addSimulationServiceListener(simulationListener);
+ handler.afterInit();
}
+ ]]></script>
- /**
- * Model de contenu de la liste des nom de simulations
- */
- public GenericComboModel<String> getSensitivitySimulationModel() {
- List<String> asNames = new ArrayList<String>();
- for (String simulationName : SimulationStorage.getSimulationNames()) {
- if (simulationName.startsWith("as_")) {
- String masterSensitivityName = simulationName.substring(0, simulationName.lastIndexOf("_"));
- if (!asNames.contains(masterSensitivityName)) {
- asNames.add(masterSensitivityName);
- }
- }
- }
-
- GenericComboModel<String> model = new GenericComboModel<>(asNames);
- return model;
- }
-
- protected SimulAction getSimulAction() {
- return getContextValue(SimulAction.class);
- }
-
- protected void launchSecondPass(ActionEvent event) {
- if (fieldSensitivitySimulationSelect.getSelectedIndex() != -1) {
- getSimulAction().runSensitivitySecondPass((String)fieldSensitivitySimulationSelect.getSelectedItem());
- displaySensitivitySecondPass(event);
- }
- }
-
- protected void displaySensitivitySecondPass(ActionEvent event) {
- if (fieldSensitivitySimulationSelect.getSelectedIndex() != -1) {
-
- try {
- String selectedSimulationName = (String)fieldSensitivitySimulationSelect.getSelectedItem();
- List<File> files = getSimulAction().getSensitivitySecondPassResults(selectedSimulationName);
-
- String content = "";
- for(File file : files) {
- content += "Fichier " + file.getName() + "\n";
- content += "------------------------------\n";
- content += FileUtils.readFileToString(file) + "\n";
- content += "\n";
- }
- textAreaSensitivitySecondpassResult.setText(content);
- } catch(IOException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't run second pass", e);
- }
- }
- }
- }
-
- ]]>
- </script>
<row>
<cell fill="horizontal" weightx="1.0">
- <JComboBox id="fieldSensitivitySimulationSelect" genericType="String" model='{getSensitivitySimulationModel()}' />
+ <JComboBox id="fieldSensitivitySimulationSelect" genericType="String" model='{handler.getSensitivitySimulationModel()}' />
</cell>
<cell fill="horizontal">
- <JButton id="runSecondPassButton" text='isisfish.sensitivity.secondpass' onActionPerformed='launchSecondPass(event)'
+ <JButton id="runSecondPassButton" text='isisfish.sensitivity.secondpass' onActionPerformed='handler.launchSecondPass(event)'
enabled="{fieldSensitivitySimulationSelect.getSelectedItem() != null}" />
</cell>
<cell fill="horizontal">
- <JButton id="displaySecondPassButton" text='isisfish.sensitivity.displaysecondpass' onActionPerformed='displaySensitivitySecondPass(event)'
+ <JButton id="displaySecondPassButton" text='isisfish.sensitivity.displaysecondpass' onActionPerformed='handler.displaySensitivitySecondPass(event)'
enabled="{fieldSensitivitySimulationSelect.getSelectedItem() != null}" />
</cell>
</row>
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2015-05-22 16:10:26 UTC (rev 4233)
@@ -1,130 +0,0 @@
-<!--
- #%L
- IsisFish
-
- $Id$
- $HeadURL$
- %%
- Copyright (C) 2009 - 2012 Ifremer, CodeLutin, Chatellier Eric
- %%
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 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 Public License for more details.
-
- You should have received a copy of the GNU General Public
- License along with this program. If not, see
- <http://www.gnu.org/licenses/gpl-3.0.html>.
- #L%
- -->
-<fr.ifremer.isisfish.ui.NavigationUI>
- <import>
- javax.swing.tree.DefaultTreeModel
- fr.ifremer.isisfish.datastore.RegionStorage
- fr.ifremer.isisfish.ui.WelcomePanelUI
- fr.ifremer.isisfish.ui.input.InputSaveVerifier
- fr.ifremer.isisfish.ui.simulator.SimulAction
- fr.ifremer.isisfish.simulator.sensitivity.FactorGroup
- fr.ifremer.isisfish.ui.sensitivity.model.FactorTreeModel
- fr.ifremer.isisfish.ui.sensitivity.model.FactorTreeCellRenderer
- fr.ifremer.isisfish.ui.sensitivity.model.FactorTree
- java.awt.event.ActionListener
- java.awt.event.ActionEvent
- </import>
-
- <SensitivityInputHandler id="handler" />
-
- <fr.ifremer.isisfish.entities.FisheryRegion id='fisheryRegion' javaBean='null'/>
-
- <script><![CDATA[
-protected SimulAction getSimulAction() {
- return getContextValue(SimulAction.class);
-}
-
-protected InputSaveVerifier getVerifier() {
- return getContextValue(InputSaveVerifier.class);
-}
-
-protected RegionStorage getRegionStorage() {
- return getContextValue(RegionStorage.class);
-}
-
-public void setTreeModel() {
- if (getFisheryRegion() != null) {
- getCardlayoutPrincipal().show(inputPanePrincipal,"normale");
- setContextValue(getFisheryRegion());
- getHandler().loadFisheryRegionTree(this);
- }
-}
-protected void setInfoText(String s) {
- WelcomePanelUI root = getParentContainer(WelcomePanelUI.class);
- root.setStatusMessage(s);
-}
-protected void regionNull() {
- getCardlayoutPrincipal().show(inputPanePrincipal,"none");
- DefaultTreeModel model = new DefaultTreeModel(null);
- fisheryRegionTree.setModel(model);
-}
-public void setFactorModel() {
- FactorGroup factorGroup = getSimulAction().getFactorGroup();
- FactorTreeModel model = new FactorTreeModel(factorGroup);
- factorsTree.setModel(model);
- getParentContainer(SensitivityUI.class).getSensitivityChooserUI().setFactorCardinalityTableModel();
-}
- ]]>
- </script>
- <JSplitPane oneTouchExpandable="true" dividerLocation="200" orientation="HORIZONTAL" constraints='BorderLayout.CENTER'>
- <JPanel layout='{new BorderLayout()}'>
- <JSplitPane oneTouchExpandable="true" dividerLocation="400" orientation="VERTICAL" constraints='BorderLayout.CENTER'>
- <JScrollPane>
- <javax.swing.tree.DefaultTreeSelectionModel id='fisheryRegionTreeSelectionModel'
- selectionMode='{javax.swing.tree.TreeSelectionModel.SINGLE_TREE_SELECTION}'/>
- <JTree id="fisheryRegionTree" rootVisible="true" selectionRow='0'
- selectionModel='{getFisheryRegionTreeSelectionModel()}'
- model='{new DefaultTreeModel(null)}'
- onValueChanged="getHandler().nodeSelectionChanged(this, event)" />
- </JScrollPane>
- <Table>
- <row>
- <cell anchor='west'>
- <JButton icon="factors/dgroup.png" toolTipText="isisfish.sensitivity.newfactordgroup.tip"
- onActionPerformed="getHandler().addNewFactorGroup(this, false)"/>
- </cell>
- <cell anchor='west'>
- <JButton icon="factors/cgroup.png" toolTipText="isisfish.sensitivity.newfactorcgroup.tip"
- onActionPerformed="getHandler().addNewFactorGroup(this, true)"/>
- </cell>
- <cell anchor='west' weightx='1'>
- <JButton icon="script_go.png" toolTipText="isisfish.sensitivity.mexico.exporttoxml.tip"
- onActionPerformed="getHandler().exportFactorsToMexico(this)"/>
- </cell>
- </row>
- <row>
- <cell columns='3' fill="both" weightx='1.0' weighty='1.0'>
- <JScrollPane>
- <FactorTree id="factorsTree" constructorParams='this'
- rootVisible="true" selectionRow='0'
- model='{new FactorTreeModel(getSimulAction().getFactorGroup())}'
- cellRenderer='{new FactorTreeCellRenderer()}'
- onMouseClicked='getHandler().factorsTreeMouseClicked(this, event)'/>
- </JScrollPane>
- </cell>
- </row>
- </Table>
- </JSplitPane>
- </JPanel>
- <java.awt.CardLayout id='cardlayoutPrincipal'/>
- <JPanel id='inputPanePrincipal' layout='{getCardlayoutPrincipal()}'>
- <JPanel layout='{new BorderLayout()}' constraints='"none"'>
- <JLabel id='none' horizontalAlignment="0" text="isisfish.input.selectRegion" constraints='BorderLayout.CENTER'/>
- </JPanel>
- <jaxx.runtime.swing.CardLayout2 id='cardlayout'/>
- <JPanel id="inputPane" layout='{getCardlayout()}' constraints='"normale"'/>
- </JPanel>
- </JSplitPane>
-</fr.ifremer.isisfish.ui.NavigationUI>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2015-05-22 16:10:26 UTC (rev 4233)
@@ -24,14 +24,6 @@
-->
<fr.ifremer.isisfish.ui.SimulationUI>
- <import>
- fr.ifremer.isisfish.ui.sensitivity.SensitivitySaveVerifier
- jaxx.runtime.context.JAXXInitialContext
- jaxx.runtime.JAXXContext
- </import>
-
- <SensitivityInputHandler id="handler" />
-
<script><![CDATA[
/**
@@ -72,18 +64,16 @@
@Override
public void refreshFactorTree() {
- sensitivityTabUI.setFactorModel();
+ sensitivityInputUI.getHandler().setFactorModel();
}
]]></script>
<JTabbedPane id="bodyTabbedPane">
<tab title='isisfish.params.title'>
- <fr.ifremer.isisfish.ui.simulator.ParamsUI id='paramsUI' sensitivity='true' regionStorage="{getRegionStorage()}"
- constructorParams='new JAXXInitialContext().add(new SensitivitySaveVerifier()).add("SimulationUI", this).add(this)' />
+ <fr.ifremer.isisfish.ui.simulator.ParamsUI id='paramsUI' sensitivity='true' regionStorage="{getRegionStorage()}" constructorParams='this' />
</tab>
<tab title='isisfish.sensitivity.title' enabled="false">
- <SensitivityTabUI id="sensitivityTabUI"
- constructorParams='new JAXXInitialContext().add(new SensitivitySaveVerifier()).add("SimulationUI", this).add(this)' />
+ <SensitivityInputUI id="sensitivityInputUI" constructorParams='this' />
</tab>
<tab title='isisfish.sensitivityChooser.title' enabled="false">
<SensitivityChooserUI id="sensitivityChooserUI" constructorParams='this'/>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTransferHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTransferHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTransferHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -40,7 +40,7 @@
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityInputUI;
/**
* Transfer handler used to transfer tasks in table.
@@ -59,15 +59,15 @@
private static Log log = LogFactory.getLog(FactorTransferHandler.class);
/** Associated ui */
- protected SensitivityTabUI sensitivityTabUI;
+ protected SensitivityInputUI sensitivityInputUI;
/**
* Constructor.
*
- * @param sensitivityTabUI associated ui
+ * @param sensitivityInputUI associated ui
*/
- public FactorTransferHandler(SensitivityTabUI sensitivityTabUI) {
- this.sensitivityTabUI = sensitivityTabUI;
+ public FactorTransferHandler(SensitivityInputUI sensitivityInputUI) {
+ this.sensitivityInputUI = sensitivityInputUI;
}
@Override
@@ -152,7 +152,7 @@
if (selectedFactorGroup != null) {
Object myObject = transferable.getTransferData(FactorTranferable.myData);
List<Factor> movedFactors = (List<Factor>) myObject;
- sensitivityTabUI.getHandler().moveFactor(sensitivityTabUI, selectedFactorGroup, movedFactors);
+ sensitivityInputUI.getHandler().moveFactor(selectedFactorGroup, movedFactors);
}
} catch (IOException e) {
if (log.isErrorEnabled()) {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTree.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTree.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/model/FactorTree.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -31,7 +31,7 @@
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityInputUI;
/**
* Factor tree.
@@ -52,12 +52,12 @@
/**
* Constructor (add drag and drop).
*
- * @param sensitivityTabUI parent ui
+ * @param sensitivityInputUI parent ui
*/
- public FactorTree(SensitivityTabUI sensitivityTabUI) {
+ public FactorTree(SensitivityInputUI sensitivityInputUI) {
// enable drag n drop
setDragEnabled(true);
- setTransferHandler(new FactorTransferHandler(sensitivityTabUI));
+ setTransferHandler(new FactorTransferHandler(sensitivityInputUI));
}
/**
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/FactorWizardHandler.java (from rev 4231, trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/FactorWizardHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/FactorWizardHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -0,0 +1,882 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2014 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.isisfish.ui.sensitivity.wizard;
+
+import static org.nuiton.i18n.I18n.t;
+
+import java.awt.BorderLayout;
+import java.awt.CardLayout;
+import java.awt.Component;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JOptionPane;
+import javax.swing.JScrollPane;
+import javax.swing.JTextField;
+import javax.swing.text.JTextComponent;
+
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.math.matrix.MatrixND;
+import org.nuiton.math.matrix.gui.MatrixPanelEditor;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.topia.persistence.TopiaEntityContextable;
+
+import fr.ifremer.isisfish.IsisFishDAOHelper;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.datastore.RuleStorage;
+import fr.ifremer.isisfish.entities.Equation;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.rule.Rule;
+import fr.ifremer.isisfish.simulator.sensitivity.Domain;
+import fr.ifremer.isisfish.simulator.sensitivity.Factor;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain;
+import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
+import fr.ifremer.isisfish.types.Month;
+import fr.ifremer.isisfish.types.RangeOfValues;
+import fr.ifremer.isisfish.types.TimeStep;
+import fr.ifremer.isisfish.types.TimeUnit;
+import fr.ifremer.isisfish.ui.SimulationUI;
+import fr.ifremer.isisfish.ui.input.equation.InputOneEquationUI;
+import fr.ifremer.isisfish.ui.simulator.RuleChooser;
+import fr.ifremer.isisfish.ui.simulator.SimulAction;
+import fr.ifremer.isisfish.ui.widget.editor.MonthComponent;
+import fr.ifremer.isisfish.ui.widget.editor.StepComponent;
+
+/**
+ * Handler for all class in wizard packages.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class FactorWizardHandler {
+
+ /** Class logger. */
+ private static Log log = LogFactory.getLog(FactorWizardHandler.class);
+
+ protected FactorWizardUI factorWizardUI;
+
+ public FactorWizardHandler(FactorWizardUI factorWizardUI) {
+ this.factorWizardUI = factorWizardUI;
+ }
+
+ protected void afterInit() {
+ factorWizardUI.addPropertyChangeListener(FactorWizardUI.PROPERTY_CONTINUE_SELECTED, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if ((Boolean)evt.getNewValue()) {
+ ((CardLayout)factorWizardUI.hidablePanel.getLayout()).show(factorWizardUI.hidablePanel, "continuousPanelContainer");
+ } else {
+ ((CardLayout)factorWizardUI.hidablePanel.getLayout()).show(factorWizardUI.hidablePanel, "discretePanelContainer");
+ }
+ }
+ });
+ }
+
+ /**
+ * Return opened topia context that need to be closed.
+ *
+ * There is several things in ugly jaxx context:
+ * <ul>
+ * <li>opened TopiaContext from SensitivityTabUI that is null in ParamUI
+ * <li>RegionStorage on SimulAction
+ * </ul>
+ *
+ * Use region storage here.
+ *
+ * @return opened topia context
+ * @throws TopiaException
+ */
+ protected TopiaContext getTopiaContext(FactorWizardUI factorWizardUI) throws TopiaException {
+ // RegionStorage object is common to ParamsUI
+ // and SensitivityTabUI and may be valued
+ RegionStorage regionStorage = factorWizardUI.getContextValue(RegionStorage.class);
+ TopiaContext context = regionStorage.getStorage().beginTransaction();
+ return context;
+ }
+
+ /**
+ * Initialize un nouveau wizard avec lorsque l'utilisateur clic sur
+ * un layer sont le sous composant accepte la mise en facteur.
+ *
+ * On recupere des info sur le type correspondant à la proprieté a mettre
+ * en facteur pour savoir le composant d'edition et s'il peut etre continue
+ * ou pas.
+ *
+ * @param factorWizardUI factorWizardUI
+ * @param bean bean in current ui
+ * @param property bean property to edit
+ */
+ public void initNewFactor(FactorWizardUI factorWizardUI, TopiaEntityContextable bean, String property) {
+
+ // path is topiaId#property
+ // ex : fwn#fsd#0.3425345#name
+ // for JAXX : cOrigine start with upper case
+ // for commons beanutils : must be lower case
+ String beanProperty = StringUtils.uncapitalize(property);
+ String path = bean.getTopiaId() + "#" + beanProperty;
+ factorWizardUI.setFactorPath(path);
+ factorWizardUI.getFactorNameField().setText(bean.toString() + "." + beanProperty);
+
+ // get value for pointed path
+ //TopiaContext topiaContext = factorWizardUI.getContextValue(TopiaContext.class);
+ //Class<?> classForPath = getPropertyClass(path, topiaContext);
+ // peut etre pas une bonne idée que ce soit basé sur les valeurs
+ // au lieu des types (mais pour RangeOfValues, pas evident)
+ try {
+ Object valueForPath = PropertyUtils.getProperty(bean, beanProperty);
+ boolean continuePossible = SensitivityUtils.canBeContinue(valueForPath);
+ boolean continueSelected = SensitivityUtils.isContinue(valueForPath);
+
+ // init panel
+ if (continuePossible) {
+ JComponent comp = getContinuousPanel(valueForPath, bean, property);
+ factorWizardUI.getContinuousPanelContainer().add(comp, BorderLayout.CENTER);
+ }
+
+ // after, for binding on continuePossible, continueSelected to work
+ factorWizardUI.setContinuePossible(continuePossible);
+ factorWizardUI.setContinueSelected(continueSelected);
+ factorWizardUI.getContinueRadio().setSelected(continueSelected);
+ } catch (Exception ex) {
+ throw new IsisFishRuntimeException("Can't init wizard", ex);
+ }
+ }
+
+ /**
+ * Appelé suite a un double clic sur l'arbre des facteurs pour modifier un
+ * facteur.
+ *
+ * @param factorWizardUI view to init
+ * @param factor factor factor to edit
+ */
+ public void initExistingFactor(FactorWizardUI factorWizardUI, Factor factor) {
+
+ factorWizardUI.setEditingState(true);
+ String factorPath = factor.getPath();
+ Domain domain = factor.getDomain();
+ String factorName = factor.getName();
+ factorWizardUI.setFactorPath(factorPath);
+ factorWizardUI.getComment().setText(factor.getComment());
+
+ if (domain instanceof ContinuousDomain) {
+
+ ContinuousPanel comp = getNewContinuousComponent(factorWizardUI, factor.getPath());
+ comp.initWithFactor(factor);
+ factorWizardUI.getContinuousPanelContainer().add(comp, BorderLayout.CENTER);
+
+ factorWizardUI.getContinueRadio().setSelected(true);
+ factorWizardUI.setContinueSelected(true);
+ factorWizardUI.setContinuePossible(true);
+ } else {
+
+ // un facteur pour être edité sans domain
+ // lors de la creation
+ if (domain != null) {
+ // restaure discrete domain
+ DiscreteDomain dDomain = (DiscreteDomain)domain;
+
+ int nb = dDomain.getValues().size();
+ factorWizardUI.getDiscretNumber().setText(String.valueOf(nb));
+ factorWizardUI.getTabPane().removeAll();
+
+ SortedMap<Object, Object> values = dDomain.getValues();
+ int i = 0;
+ for (Object o : values.values()) {
+ i++;
+ JComponent c = null;
+ if (o != null) {
+ c = getEditorWithValue(factorWizardUI, factor, dDomain, o);
+ }
+ else {
+ if (log.isWarnEnabled()) {
+ log.warn("Null value in factor");
+ }
+ }
+ JScrollPane js = new JScrollPane(c);
+ String tabName = t("isisfish.sensitivity.discretevaluelabel", i);
+ factorWizardUI.getTabPane().addTab(tabName, js);
+ }
+ }
+
+ // init non selected continous panel
+ JComponent comp = getNewContinuousComponent(factorWizardUI, factor.getPath());
+ if (comp != null) {
+ factorWizardUI.setContinuePossible(true);
+ factorWizardUI.getContinuousPanelContainer().add(comp, BorderLayout.CENTER);
+ }
+ }
+
+ factorWizardUI.getFactorNameField().setText(factorName);
+ }
+
+ /**
+ * Renvoie un componsant gaphique initialisé avec la valeur
+ * qui est enregistré dans le domain.
+ * Pour réédition d'un facteur existant (facteur discret).
+ *
+ * @param factorWizardUI context for context value (RegionStorage)
+ * @param value type to get editor
+ * @param factor factor for path value
+ * @param domain domain for domain type
+ * @return component ui component with value
+ */
+ protected JComponent getEditorWithValue(FactorWizardUI factorWizardUI, Factor factor, Domain domain, Object value) {
+
+ JComponent result = null;
+
+ if (Double.class.isAssignableFrom(value.getClass())) {
+ result = new JTextField();
+ ((JTextField)result).setText(String.valueOf(value));
+ }
+ else if (double.class.isAssignableFrom(value.getClass())) {
+ result = new JTextField();
+ ((JTextField)result).setText(String.valueOf(value));
+ }
+ else if (MatrixND.class.isAssignableFrom(value.getClass())) {
+ result = new MatrixPanelEditor();
+ ((MatrixPanelEditor)result).setMatrix((MatrixND)value);
+ }
+ else if (domain instanceof RuleDiscreteDomain) {
+ result = new RuleChooser(factorWizardUI);
+ ((RuleChooser)result).setRulesList((List<Rule>)value);
+ }
+ else if (domain instanceof EquationDiscreteDomain) {
+ String factorPath = factor.getPath();
+ if (factor.getPath().indexOf('#') != -1) {
+ String topiaId = factorPath.substring(0, factorPath.lastIndexOf('#'));
+ String property = factorPath.substring(factorPath.lastIndexOf('#') + 1);
+
+ // get bean in database
+ try {
+ TopiaContext topiaContext = getTopiaContext(factorWizardUI);
+ TopiaEntityContextable entity = (TopiaEntityContextable)topiaContext.findByTopiaId(topiaId);
+ Equation equation = (Equation)PropertyUtils.getProperty(entity, property);
+ topiaContext.closeContext();
+
+ // fill component
+ InputOneEquationUI ui = new InputOneEquationUI(factorWizardUI);
+ ui.setAutoSaveModification(false);
+ ui.setFormuleCategory(equation.getCategory());
+ ui.setText(t("isisfish.common.equation")); // can't get real name
+ ui.setClazz(value.getClass());
+ ui.setBeanProperty(property);
+ ui.setBean(entity); // set bean fire content modification event
+ ui.getEditor().setText((String)value);
+ ui.setActive(true);
+
+ result = ui;
+ } catch (Exception ex) {
+ throw new IsisFishRuntimeException("Can't restore initial factor database property", ex);
+ }
+ }
+ // TODO path with no # (normalement pas possible pour les equations)
+ }
+ else if (value instanceof TimeUnit) {
+ result = new JTextField();
+ ((JTextField)result).setText(String.valueOf(((TimeUnit)value).getTime()));
+ } else if (value instanceof TopiaEntity) {
+ RegionStorage regionStorage = factorWizardUI.getContextValue(RegionStorage.class);
+ TopiaContext context = null;
+ try {
+ context = regionStorage.getStorage().beginTransaction();
+ List list = context.findAll("from " + value.getClass().getName());
+ JComboBox c = new JComboBox<>(list.toArray());
+ c.setSelectedItem(value);
+ result = c;
+ } catch (TopiaException ex) {
+ throw new IsisFishRuntimeException("Can't get entity list", ex);
+ } finally {
+ if (context != null) {
+ try {
+ context.closeContext();
+ } catch (TopiaException ex) {
+ throw new IsisFishRuntimeException("Can't get entity list", ex);
+ }
+ }
+ }
+ } else if (value instanceof TimeStep) {
+ TimeStep timeStep = (TimeStep)value;
+ result = new StepComponent(timeStep.getMonth().getMonthNumber(), timeStep.getYear());
+ } else if (value instanceof Month) {
+ Month month = (Month)value;
+ result = MonthComponent.createMounthCombo(month.getMonthNumber());
+ } else if (value instanceof String) {
+ // valeur non typées ???
+ result = new JTextField();
+ ((JTextField)result).setText(String.valueOf(value));
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Editor for value " + value + " is " + result);
+ }
+
+ return result;
+ }
+
+ /**
+ * Retourne le componant permettant de mettre en facteur continue
+ * une valeur.
+ *
+ * @param value value (must be continuable)
+ * @param bean bean (in case of equation)
+ * @param property bean property (in case of equation)
+ * @return component initialized
+ */
+ protected ContinuousPanel getContinuousPanel(Object value, TopiaEntityContextable bean, String property) {
+ ContinuousPanel result;
+
+ if (value instanceof RangeOfValues) {
+ RangeOfValues rangeOfValues = (RangeOfValues)value;
+ //DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
+ String values = rangeOfValues.getValues();
+ String min = "0";
+ //String max = "0";
+ if (values.matches("^\\ *[0-9]*\\ *\\-\\ *[0-9]*\\ *$")) {
+ int first = values.indexOf("-");
+ if (first != -1) {
+ min = values.substring(0, first);
+ //max = values.substring(first + 1);
+ }
+ }
+ //ui.init(min, max, min, null);
+ //result = ui;
+ result = new ContinuousDistributionPanel(min);
+ } else if (value instanceof Equation) {
+ Equation equation = (Equation)value;
+ EquationContinuousPanelUI ui = new EquationContinuousPanelUI();
+ ui.setSelectedEquation(equation);
+ ui.setText(t("isisfish.common.equation")); // can't get real name
+ ui.setFormuleCategory(equation.getCategory());
+ ui.setClazz(equation.getClass());
+ ui.setBeanProperty(property);
+ ui.setBean(bean);
+ result = ui;
+ } else if (value instanceof MatrixND) {
+ MatrixND matrix = (MatrixND)value;
+ result = new ContinuousDistributionPanel(matrix.clone());
+ } else if (value instanceof TimeUnit) {
+ TimeUnit timeUnit = (TimeUnit)value;
+ //DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
+ //ui.init(String.valueOf(timeUnit.getTime()), String.valueOf(timeUnit.getTime()),
+ // String.valueOf(timeUnit.getTime()), null);
+ //result = ui;
+ result = new ContinuousDistributionPanel(String.valueOf(timeUnit.getTime()));
+ } else {
+ //DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
+ //ui.init(String.valueOf(value), String.valueOf(value), String.valueOf(value), null);
+ //result = ui;
+ result = new ContinuousDistributionPanel(String.valueOf(value));
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Component for " + value + " (" + bean + ", " + property + ")");
+ log.debug(" > " + result);
+ }
+
+ return result;
+ }
+
+ /**
+ * Rafraichit l'assistant de facteur pour modifier le nombre de valeurs
+ * (onglet) d'un composant discret.
+ *
+ * @param factorWizardUI factorWizardUI
+ */
+ public void addTabs(FactorWizardUI factorWizardUI) {
+ String discreteNumber = factorWizardUI.getDiscretNumber().getText();
+ int nbTab = Integer.parseInt(discreteNumber);
+ int currentCount = factorWizardUI.getTabPane().getTabCount();
+
+ // remove useless tab
+ for (int tab = currentCount - 1; tab > nbTab -1 ; tab--) {
+ factorWizardUI.getTabPane().remove(tab);
+ }
+
+ // add new tabs
+ for (int tab = currentCount ; tab < nbTab ; tab++) {
+ JComponent c = getNewDiscreteComponent(factorWizardUI);
+ String tabName = t("isisfish.sensitivity.discretevaluelabel", tab);
+ factorWizardUI.getTabPane().addTab(tabName, c);
+ }
+
+ factorWizardUI.pack();
+ }
+
+ /**
+ * Return new discrete component inited with value defined by factor path.
+ *
+ * Le composant retourné est inclut dans un jscrollpane (sauf pour les
+ * matrices qui contient deja un jscrollpane)
+ *
+ * @param factorWizardUI factorWizardUI
+ * @return component copy
+ */
+ protected JComponent getNewDiscreteComponent(FactorWizardUI factorWizardUI) {
+
+ JComponent result = null;
+ String factorPath = factorWizardUI.getFactorPath();
+
+ try {
+ if (factorPath.indexOf('#') != -1) {
+ String topiaId = factorPath.substring(0, factorPath.lastIndexOf('#'));
+ String property = factorPath.substring(factorPath.lastIndexOf('#') + 1);
+
+ // get bean in database
+ TopiaContext topiaContext = getTopiaContext(factorWizardUI);
+ TopiaEntityContextable entity = (TopiaEntityContextable)topiaContext.findByTopiaId(topiaId);
+ Object value = PropertyUtils.getProperty(entity, property);
+
+ // init new jcomponent for value
+ if (value instanceof Number) {
+ result = new JTextField(String.valueOf(value));
+ } else if (value instanceof MatrixND) {
+ result = new MatrixPanelEditor();
+ MatrixND matrix = ((MatrixND)value).copy();
+ ((MatrixPanelEditor)result).setMatrix(matrix);
+ } else if (value instanceof RangeOfValues) {
+ RangeOfValues rangeOfValues = (RangeOfValues)value;
+ result = new JTextField(rangeOfValues.getValues());
+ } else if (value instanceof TimeUnit) {
+ TimeUnit timeUnit = (TimeUnit)value;
+ result = new JTextField(String.valueOf(timeUnit.getTime()));
+ } else if (value instanceof Equation) {
+ Equation equation = (Equation)value;
+ // fill component
+ InputOneEquationUI ui = new InputOneEquationUI(factorWizardUI);
+ ui.setAutoSaveModification(false);
+ ui.setText(equation.getContent());
+ ui.setFormuleCategory(equation.getCategory());
+ ui.setText(t("isisfish.common.equation")); // can't get real name
+ ui.setClazz(value.getClass());
+ ui.setBeanProperty(property);
+ ui.setBean(entity);
+ ui.setActive(true);
+ result = ui;
+ }
+
+ topiaContext.closeContext();
+
+ }
+ else {
+ // dans ce cas c'est des regles, pop de départ ou parametres de regles
+ // c'est un peu galere car le code n'a rien a voir avec le reste
+ // donc, c'est du cas par cas
+ if (factorPath.equals("parameters.rules")) {
+ result = new RuleChooser(factorWizardUI);
+ } else if (factorPath.startsWith("parameters.population.")) {
+ // la seule facon d'avoir les parametres ici est d'aller
+ // les chercher dans les parametres de simulation
+ Pattern pattern = Pattern.compile("^parameters\\.population\\.(\\w+)(\\.(.+)?)$");
+ Matcher matcher = pattern.matcher(factorPath);
+ if (matcher.matches()) {
+ String populationName = matcher.group(1);
+ if (log.isDebugEnabled()) {
+ log.debug("Loading population : " + populationName);
+ }
+ TopiaContext topiaContext = getTopiaContext(factorWizardUI);
+ Population pop = IsisFishDAOHelper.getPopulationDAO(topiaContext).findByName(populationName);
+ SimulAction action = factorWizardUI.getContextValue(SimulAction.class);
+ MatrixND N = action.getSimulationParameter().getNumberOf(pop);
+ result = new MatrixPanelEditor();
+ ((MatrixPanelEditor)result).setMatrix(N.clone());
+ topiaContext.closeContext();
+ }
+ } else if (factorPath.startsWith("parameters.rule.")) {
+ Pattern pattern = Pattern.compile("^parameters\\.rule\\.(\\d+)\\.parameter\\.(\\w+)(\\..+)?$");
+ Matcher matcher = pattern.matcher(factorPath);
+ if (matcher.matches()) {
+ int ruleIndex = Integer.parseInt(matcher.group(1));
+ SimulAction action = factorWizardUI.getContextValue(SimulAction.class);
+ Rule rule = action.getSimulationParameter().getRules().get(ruleIndex);
+ Class valueClazz = RuleStorage.getParameterType(rule, matcher.group(2));
+ Object value = RuleStorage.getParameterValue(rule, matcher.group(2));
+ result = getTypeDiscreteComponent(factorWizardUI, valueClazz, value);
+
+ } else {
+ // double...
+ result = new JTextField("0.0");
+ }
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't find component for path " + factorPath);
+ }
+ }
+ }
+ } catch (Exception ex) {
+ throw new IsisFishRuntimeException("Can't restore intial factor database property", ex);
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Component for path " + factorPath + " is " + result);
+ }
+
+ // hack : si on met 2 fois un jscrollpane, rien ne s'affiche
+ if (!(result instanceof MatrixPanelEditor)) {
+ result = new JScrollPane(result);
+ }
+
+ return result;
+ }
+
+ /**
+ * Return new continuous component inited with value defined by factor path.
+ *
+ * @param factorWizardUI (to use topia context)
+ * @param factorPath factor path
+ * @return component initialized
+ */
+ protected ContinuousPanel getNewContinuousComponent(FactorWizardUI factorWizardUI, String factorPath) {
+ ContinuousPanel result = null;
+
+ try {
+ if (factorPath.indexOf('#') != -1) {
+ String topiaId = factorPath.substring(0, factorPath.lastIndexOf('#'));
+ String property = factorPath.substring(factorPath.lastIndexOf('#') + 1);
+
+ // get bean in database
+ TopiaContext topiaContext = getTopiaContext(factorWizardUI);
+ TopiaEntityContextable entity = (TopiaEntityContextable)topiaContext.findByTopiaId(topiaId);
+ Object value = PropertyUtils.getProperty(entity, property);
+
+ if (value instanceof RangeOfValues) {
+ RangeOfValues rangeOfValues = (RangeOfValues)value;
+ //DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
+ String values = rangeOfValues.getValues();
+ String min = "0";
+ String max = "0";
+ if (values.matches("^\\ *[0-9]*\\ *\\-\\ *[0-9]*\\ *$")) {
+ int first = values.indexOf("-");
+ if (first != -1) {
+ min = values.substring(0, first);
+ max = values.substring(first + 1);
+ }
+ }
+ result = new ContinuousDistributionPanel(min);
+ } else if (value instanceof Equation) {
+ Equation equation = (Equation)value;
+ EquationContinuousPanelUI ui = new EquationContinuousPanelUI();
+ ui.setSelectedEquation(equation);
+ ui.setText(t("isisfish.common.equation")); // can't get real name
+ ui.setFormuleCategory(equation.getCategory());
+ ui.setClazz(equation.getClass());
+ ui.setBeanProperty(property);
+ ui.setBean(entity);
+ result = ui;
+ } else if (value instanceof MatrixND) {
+ MatrixND matrix = (MatrixND)value;
+ result = new ContinuousDistributionPanel(matrix.clone());
+ } else if (value instanceof TimeUnit) {
+ TimeUnit timeUnit = (TimeUnit)value;
+ //DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
+ //ui.init(String.valueOf(timeUnit.getTime()), String.valueOf(timeUnit.getTime()),
+ // String.valueOf(timeUnit.getTime()), null);
+ //result = ui;
+ result = new ContinuousDistributionPanel(String.valueOf(timeUnit.getTime()));
+ } else {
+ //DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
+ //ui.init(String.valueOf(value), String.valueOf(value), String.valueOf(value), null);
+ //result = ui;
+ result = new ContinuousDistributionPanel(String.valueOf(value));
+ }
+
+ topiaContext.closeContext();
+
+ } else {
+ if (factorPath.startsWith("parameters.population.")) {
+ // la seule facon d'avoir les parametres ici est d'aller
+ // les chercher dans les parametres de simulation
+ Pattern pattern = Pattern.compile("^parameters\\.population\\.(\\w+)(\\.(.+)?)$");
+ Matcher matcher = pattern.matcher(factorPath);
+ if (matcher.matches()) {
+ String populationName = matcher.group(1);
+ if (log.isDebugEnabled()) {
+ log.debug("Loading population : " + populationName);
+ }
+ TopiaContext topiaContext = getTopiaContext(factorWizardUI);
+ Population pop = IsisFishDAOHelper.getPopulationDAO(topiaContext).findByName(populationName);
+ SimulAction action = factorWizardUI.getContextValue(SimulAction.class);
+ MatrixND N = action.getSimulationParameter().getNumberOf(pop);
+ result = new ContinuousDistributionPanel(N.clone());
+ topiaContext.closeContext();
+ }
+ } else if (factorPath.startsWith("parameters.rule.")) {
+ Pattern pattern = Pattern.compile("^parameters\\.rule\\.(\\d+)\\.parameter\\.(\\w+)(\\..+)?$");
+ Matcher matcher = pattern.matcher(factorPath);
+ if (matcher.matches()) {
+ int ruleIndex = Integer.parseInt(matcher.group(1));
+ SimulAction action = factorWizardUI.getContextValue(SimulAction.class);
+ Rule rule = action.getSimulationParameter().getRules().get(ruleIndex);
+ Class valueClazz = RuleStorage.getParameterType(rule, matcher.group(2));
+ Object value = RuleStorage.getParameterValue(rule, matcher.group(2));
+ result = getTypeContinousComponent(factorWizardUI, valueClazz, value);
+
+ } else {
+ // double...
+ result = getContinuousPanel(0.0, null, null);
+ }
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't find component for path " + factorPath);
+ }
+ }
+ }
+ } catch (Exception ex) {
+ throw new IsisFishRuntimeException("Can't init wizard", ex);
+ }
+
+ return result;
+ }
+
+ /**
+ * Get new special component for typed parameters.
+ *
+ * @param factorWizardUI
+ * @param type
+ * @return rule discrete component
+ */
+ protected JComponent getTypeDiscreteComponent(FactorWizardUI factorWizardUI, Class type, Object value) {
+
+ JComponent result = null;
+
+ if (TopiaEntity.class.isAssignableFrom(type)) {
+ try {
+ TopiaContext context = getTopiaContext(factorWizardUI);
+ List list = context.findAll("from " + type.getName());
+ JComboBox c = new JComboBox(list.toArray());
+ result = c;
+ context.closeContext();
+ } catch (TopiaException ex) {
+ throw new IsisFishRuntimeException("Can't get entity list", ex);
+ }
+ } else if (TimeStep.class.isAssignableFrom(type)) {
+ result = new StepComponent(0, 0);
+ } else if (Month.class.isAssignableFrom(type)) {
+ result = MonthComponent.createMounthCombo(0);
+ } else {
+ if (value != null) {
+ result = new JTextField(value.toString());
+ } else {
+ result = new JTextField();
+ }
+
+ }
+
+ return result;
+ }
+
+ /**
+ * Get new special component for typed parameters.
+ *
+ * @param factorWizardUI
+ * @param type type to get component
+ * @return rule discrete component
+ */
+ protected ContinuousPanel getTypeContinousComponent(FactorWizardUI factorWizardUI, Class type, Object value) {
+
+ ContinuousPanel result = null;
+
+ if (Double.class.isAssignableFrom(type) || double.class.isAssignableFrom(type)) {
+ if (value != null) {
+ result = new ContinuousDistributionPanel(value.toString());
+ } else {
+ result = new ContinuousDistributionPanel(0.0);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Save current factor.
+ *
+ * @param factorWizardUI factorWizardUI
+ */
+ public void save(FactorWizardUI factorWizardUI) {
+
+ // get continuous component if any
+ ContinuousPanel continuousPanel = null;
+ if (factorWizardUI.getContinuousPanelContainer().getComponentCount() > 0) {
+ continuousPanel = (ContinuousPanel)factorWizardUI.getContinuousPanelContainer().getComponent(0);
+ }
+
+ // first check is factor is valid
+ boolean factorValid = true;
+ if (continuousPanel != null) {
+ factorValid = continuousPanel.isFactorValid();
+ }
+ if (!factorValid) {
+ JOptionPane.showMessageDialog(factorWizardUI, t("isisfish.sensitivity.factor.notvalid"),
+ t("isisfish.sensitivity.title"), JOptionPane.ERROR_MESSAGE);
+ return;
+ }
+
+ // call specific method depending on continuous/discrete
+ if (factorWizardUI.getContinueRadio().isSelected()) {
+ saveContinue(factorWizardUI.getFactorNameField().getText(),
+ factorWizardUI.getComment().getText(), factorWizardUI.getFactorPath(), continuousPanel,
+ factorWizardUI.getContextValue(SimulAction.class), factorWizardUI.isEditingState());
+ } else {
+ Component[] discreteComponents = factorWizardUI.getTabPane().getComponents();
+ saveDiscret(factorWizardUI.getFactorNameField().getText(),
+ factorWizardUI.getComment().getText(), factorWizardUI.getFactorPath(), discreteComponents,
+ factorWizardUI.getContextValue(SimulAction.class), factorWizardUI.isEditingState());
+ }
+
+ // refresh factor list
+ factorWizardUI.getContextValue(SimulationUI.class, "SimulationUI").refreshFactorTree();
+
+ // close window
+ factorWizardUI.dispose();
+ }
+
+ /**
+ * Save a continous factor.
+ *
+ * @param name factor name
+ * @param comment comment
+ * @param path factor path
+ * @param panel panel
+ * @param action action
+ * @param exist exist
+ */
+ protected void saveContinue(String name,
+ String comment, String path, ContinuousPanel panel,
+ SimulAction action, boolean exist) {
+ if (panel instanceof EquationContinuousPanelUI) {
+ try {
+ EquationContinuousPanelUI equationPanel = (EquationContinuousPanelUI) panel;
+ String property = StringUtils.uncapitalize(equationPanel.getBeanProperty()) + "Content";
+ TopiaEntityContextable bean = equationPanel.getBean();
+ TopiaContext topiaContext = bean.getTopiaContext();
+ PropertyUtils.setProperty(bean, property, equationPanel.getEditor().getEditor().getText());
+
+ // Save equation
+ bean.update();
+ topiaContext.commitTransaction();
+
+ List<Factor> factors = equationPanel.getFactors();
+ for (Factor factor : factors) {
+ factor.setName(name);
+ factor.setComment(comment);
+ factor.setPath(path);
+ action.addContinuousEquationFactor(factor, exist);
+ }
+ } catch (Exception ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't call method : ", ex);
+ }
+ }
+ } else if (panel instanceof ContinuousDistributionPanel) {
+ ContinuousDistributionPanel defaultPanel = (ContinuousDistributionPanel) panel;
+ ContinuousDomain domain = defaultPanel.generateDomain();
+ action.addContinuousFactor(name, comment, path, domain, exist);
+ }
+ }
+
+ /**
+ * Save a discret factor.
+ *
+ * @param name
+ * @param comment
+ * @param path
+ * @param components
+ * @param action
+ * @param exist
+ */
+ protected void saveDiscret(String name,
+ String comment, String path, Component[] components,
+ SimulAction action, boolean exist) {
+ List<Object> values = new ArrayList<Object>();
+
+ boolean ruleFactor = false;
+ boolean equationFactor = false;
+ for (Component component : components) {
+
+ if (component instanceof JScrollPane) {
+ component = ((JScrollPane) component).getViewport().getView();
+ }
+
+ // get internat component value
+ Object result = null;
+ if (component instanceof JTextComponent) {
+ result = ((JTextComponent) component).getText();
+ } else if (component instanceof MatrixPanelEditor) {
+ result = ((MatrixPanelEditor) component).getMatrix();
+ } else if (component instanceof InputOneEquationUI) {
+ result = ((InputOneEquationUI) component).getEditor().getText();
+ equationFactor = true;
+ } else if (component instanceof RuleChooser) {
+ result = ((RuleChooser)component).getRulesList();
+ ruleFactor = true;
+ } else if (component instanceof StepComponent) {
+ result = new TimeStep(((StepComponent)component).getSelectedValue());
+ } else if (component instanceof MonthComponent) {
+ result = new Month(((MonthComponent)component).getSelectedValue());
+ } else if (component instanceof JComboBox) {
+ // on suppose qu'il y a dedans des TopiaEntity
+ result = ((JComboBox)component).getSelectedItem();
+ }
+
+ values.add(result);
+ }
+
+ if (ruleFactor) {
+ action.addDiscreteRuleFactor(name, comment, path, values, exist);
+ } else if (equationFactor) {
+ action.addDiscreteEquationFactor(name, comment, path, values, exist);
+ } else {
+ action.addDiscreteFactor(name, comment, path, values, exist);
+ }
+ }
+
+ /**
+ * Remove current factor.
+ *
+ * @param factorWizardUI factorWizardUI
+ */
+ public void remove(FactorWizardUI factorWizardUI) {
+ factorWizardUI.getContextValue(SimulAction.class).removeFactor(factorWizardUI.getFactorPath());
+ factorWizardUI.getContextValue(SimulationUI.class, "SimulationUI").refreshFactorTree();
+ factorWizardUI.dispose();
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/FactorWizardUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/FactorWizardUI.jaxx 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/FactorWizardUI.jaxx 2015-05-22 16:10:26 UTC (rev 4233)
@@ -30,7 +30,7 @@
java.awt.CardLayout
</import>
- <SensitivityWizardHandler id="handler" />
+ <FactorWizardHandler id="handler" constructorParams='this' />
<Boolean id='continuePossible' javaBean='false'/>
@@ -41,19 +41,9 @@
<String id="factorPath" javaBean="null"/>
<script><![CDATA[
-protected void $afterCompleteSetup() {
- addPropertyChangeListener(PROPERTY_CONTINUE_SELECTED, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- if ((Boolean)evt.getNewValue()) {
- ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "continuousPanelContainer");
- } else {
- ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "discretePanelContainer");
- }
- }
- });
-}
-
+ protected void $afterCompleteSetup() {
+ handler.afterInit();
+ }
]]></script>
<Table constraints='BorderLayout.CENTER'>
<row>
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -1,860 +0,0 @@
-/*
- * #%L
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2014 Ifremer, Codelutin, Chatellier Eric
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 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 Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-package fr.ifremer.isisfish.ui.sensitivity.wizard;
-
-import static org.nuiton.i18n.I18n.t;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.SortedMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JOptionPane;
-import javax.swing.JScrollPane;
-import javax.swing.JTextField;
-import javax.swing.text.JTextComponent;
-
-import org.apache.commons.beanutils.PropertyUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.math.matrix.MatrixND;
-import org.nuiton.math.matrix.gui.MatrixPanelEditor;
-import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.topia.persistence.TopiaEntityContextable;
-
-import fr.ifremer.isisfish.IsisFishDAOHelper;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.datastore.RegionStorage;
-import fr.ifremer.isisfish.datastore.RuleStorage;
-import fr.ifremer.isisfish.entities.Equation;
-import fr.ifremer.isisfish.entities.Population;
-import fr.ifremer.isisfish.rule.Rule;
-import fr.ifremer.isisfish.simulator.sensitivity.Domain;
-import fr.ifremer.isisfish.simulator.sensitivity.Factor;
-import fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationDiscreteDomain;
-import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
-import fr.ifremer.isisfish.types.Month;
-import fr.ifremer.isisfish.types.RangeOfValues;
-import fr.ifremer.isisfish.types.TimeStep;
-import fr.ifremer.isisfish.types.TimeUnit;
-import fr.ifremer.isisfish.ui.SimulationUI;
-import fr.ifremer.isisfish.ui.input.equation.InputOneEquationUI;
-import fr.ifremer.isisfish.ui.simulator.RuleChooser;
-import fr.ifremer.isisfish.ui.simulator.SimulAction;
-import fr.ifremer.isisfish.ui.widget.editor.MonthComponent;
-import fr.ifremer.isisfish.ui.widget.editor.StepComponent;
-
-/**
- * Handler for all class in wizard packages.
- *
- * @author chatellier
- * @version $Revision$
- *
- * Last update : $Date$
- * By : $Author$
- */
-public class SensitivityWizardHandler {
-
- /** Class logger. */
- private static Log log = LogFactory.getLog(SensitivityWizardHandler.class);
-
- /**
- * Return opened topia context that need to be closed.
- *
- * There is several things in ugly jaxx context:
- * <ul>
- * <li>opened TopiaContext from SensitivityTabUI that is null in ParamUI
- * <li>RegionStorage on SimulAction
- * </ul>
- *
- * Use region storage here.
- *
- * @return opened topia context
- * @throws TopiaException
- */
- protected TopiaContext getTopiaContext(FactorWizardUI factorWizardUI) throws TopiaException {
- // RegionStorage object is common to ParamsUI
- // and SensitivityTabUI and may be valued
- RegionStorage regionStorage = factorWizardUI.getContextValue(RegionStorage.class);
- TopiaContext context = regionStorage.getStorage().beginTransaction();
- return context;
- }
-
- /**
- * Initialize un nouveau wizard avec lorsque l'utilisateur clic sur
- * un layer sont le sous composant accepte la mise en facteur.
- *
- * On recupere des info sur le type correspondant à la proprieté a mettre
- * en facteur pour savoir le composant d'edition et s'il peut etre continue
- * ou pas.
- *
- * @param factorWizardUI factorWizardUI
- * @param bean bean in current ui
- * @param property bean property to edit
- */
- public void initNewFactor(FactorWizardUI factorWizardUI, TopiaEntityContextable bean, String property) {
-
- // path is topiaId#property
- // ex : fwn#fsd#0.3425345#name
- // for JAXX : cOrigine start with upper case
- // for commons beanutils : must be lower case
- String beanProperty = StringUtils.uncapitalize(property);
- String path = bean.getTopiaId() + "#" + beanProperty;
- factorWizardUI.setFactorPath(path);
- factorWizardUI.getFactorNameField().setText(bean.toString() + "." + beanProperty);
-
- // get value for pointed path
- //TopiaContext topiaContext = factorWizardUI.getContextValue(TopiaContext.class);
- //Class<?> classForPath = getPropertyClass(path, topiaContext);
- // peut etre pas une bonne idée que ce soit basé sur les valeurs
- // au lieu des types (mais pour RangeOfValues, pas evident)
- try {
- Object valueForPath = PropertyUtils.getProperty(bean, beanProperty);
- boolean continuePossible = SensitivityUtils.canBeContinue(valueForPath);
- boolean continueSelected = SensitivityUtils.isContinue(valueForPath);
-
- // init panel
- if (continuePossible) {
- JComponent comp = getContinuousPanel(valueForPath, bean, property);
- factorWizardUI.getContinuousPanelContainer().add(comp, BorderLayout.CENTER);
- }
-
- // after, for binding on continuePossible, continueSelected to work
- factorWizardUI.setContinuePossible(continuePossible);
- factorWizardUI.setContinueSelected(continueSelected);
- factorWizardUI.getContinueRadio().setSelected(continueSelected);
- } catch (Exception ex) {
- throw new IsisFishRuntimeException("Can't init wizard", ex);
- }
- }
-
- /**
- * Appelé suite a un double clic sur l'arbre des facteurs pour modifier un
- * facteur.
- *
- * @param factorWizardUI view to init
- * @param factor factor factor to edit
- */
- public void initExistingFactor(FactorWizardUI factorWizardUI, Factor factor) {
-
- factorWizardUI.setEditingState(true);
- String factorPath = factor.getPath();
- Domain domain = factor.getDomain();
- String factorName = factor.getName();
- factorWizardUI.setFactorPath(factorPath);
- factorWizardUI.getComment().setText(factor.getComment());
-
- if (domain instanceof ContinuousDomain) {
-
- ContinuousPanel comp = getNewContinuousComponent(factorWizardUI, factor.getPath());
- comp.initWithFactor(factor);
- factorWizardUI.getContinuousPanelContainer().add(comp, BorderLayout.CENTER);
-
- factorWizardUI.getContinueRadio().setSelected(true);
- factorWizardUI.setContinueSelected(true);
- factorWizardUI.setContinuePossible(true);
- } else {
-
- // un facteur pour être edité sans domain
- // lors de la creation
- if (domain != null) {
- // restaure discrete domain
- DiscreteDomain dDomain = (DiscreteDomain)domain;
-
- int nb = dDomain.getValues().size();
- factorWizardUI.getDiscretNumber().setText(String.valueOf(nb));
- factorWizardUI.getTabPane().removeAll();
-
- SortedMap<Object, Object> values = dDomain.getValues();
- int i = 0;
- for (Object o : values.values()) {
- i++;
- JComponent c = null;
- if (o != null) {
- c = getEditorWithValue(factorWizardUI, factor, dDomain, o);
- }
- else {
- if (log.isWarnEnabled()) {
- log.warn("Null value in factor");
- }
- }
- JScrollPane js = new JScrollPane(c);
- String tabName = t("isisfish.sensitivity.discretevaluelabel", i);
- factorWizardUI.getTabPane().addTab(tabName, js);
- }
- }
-
- // init non selected continous panel
- JComponent comp = getNewContinuousComponent(factorWizardUI, factor.getPath());
- if (comp != null) {
- factorWizardUI.setContinuePossible(true);
- factorWizardUI.getContinuousPanelContainer().add(comp, BorderLayout.CENTER);
- }
- }
-
- factorWizardUI.getFactorNameField().setText(factorName);
- }
-
- /**
- * Renvoie un componsant gaphique initialisé avec la valeur
- * qui est enregistré dans le domain.
- * Pour réédition d'un facteur existant (facteur discret).
- *
- * @param factorWizardUI context for context value (RegionStorage)
- * @param value type to get editor
- * @param factor factor for path value
- * @param domain domain for domain type
- * @return component ui component with value
- */
- protected JComponent getEditorWithValue(FactorWizardUI factorWizardUI, Factor factor, Domain domain, Object value) {
-
- JComponent result = null;
-
- if (Double.class.isAssignableFrom(value.getClass())) {
- result = new JTextField();
- ((JTextField)result).setText(String.valueOf(value));
- }
- else if (double.class.isAssignableFrom(value.getClass())) {
- result = new JTextField();
- ((JTextField)result).setText(String.valueOf(value));
- }
- else if (MatrixND.class.isAssignableFrom(value.getClass())) {
- result = new MatrixPanelEditor();
- ((MatrixPanelEditor)result).setMatrix((MatrixND)value);
- }
- else if (domain instanceof RuleDiscreteDomain) {
- result = new RuleChooser(factorWizardUI);
- ((RuleChooser)result).setRulesList((List<Rule>)value);
- }
- else if (domain instanceof EquationDiscreteDomain) {
- String factorPath = factor.getPath();
- if (factor.getPath().indexOf('#') != -1) {
- String topiaId = factorPath.substring(0, factorPath.lastIndexOf('#'));
- String property = factorPath.substring(factorPath.lastIndexOf('#') + 1);
-
- // get bean in database
- try {
- TopiaContext topiaContext = getTopiaContext(factorWizardUI);
- TopiaEntityContextable entity = (TopiaEntityContextable)topiaContext.findByTopiaId(topiaId);
- Equation equation = (Equation)PropertyUtils.getProperty(entity, property);
- topiaContext.closeContext();
-
- // fill component
- InputOneEquationUI ui = new InputOneEquationUI(factorWizardUI);
- ui.setAutoSaveModification(false);
- ui.setFormuleCategory(equation.getCategory());
- ui.setText(t("isisfish.common.equation")); // can't get real name
- ui.setClazz(value.getClass());
- ui.setBeanProperty(property);
- ui.setBean(entity); // set bean fire content modification event
- ui.getEditor().setText((String)value);
- ui.setActive(true);
-
- result = ui;
- } catch (Exception ex) {
- throw new IsisFishRuntimeException("Can't restore initial factor database property", ex);
- }
- }
- // TODO path with no # (normalement pas possible pour les equations)
- }
- else if (value instanceof TimeUnit) {
- result = new JTextField();
- ((JTextField)result).setText(String.valueOf(((TimeUnit)value).getTime()));
- } else if (value instanceof TopiaEntity) {
- RegionStorage regionStorage = factorWizardUI.getContextValue(RegionStorage.class);
- TopiaContext context = null;
- try {
- context = regionStorage.getStorage().beginTransaction();
- List list = context.findAll("from " + value.getClass().getName());
- JComboBox c = new JComboBox<>(list.toArray());
- c.setSelectedItem(value);
- result = c;
- } catch (TopiaException ex) {
- throw new IsisFishRuntimeException("Can't get entity list", ex);
- } finally {
- if (context != null) {
- try {
- context.closeContext();
- } catch (TopiaException ex) {
- throw new IsisFishRuntimeException("Can't get entity list", ex);
- }
- }
- }
- } else if (value instanceof TimeStep) {
- TimeStep timeStep = (TimeStep)value;
- result = new StepComponent(timeStep.getMonth().getMonthNumber(), timeStep.getYear());
- } else if (value instanceof Month) {
- Month month = (Month)value;
- result = MonthComponent.createMounthCombo(month.getMonthNumber());
- } else if (value instanceof String) {
- // valeur non typées ???
- result = new JTextField();
- ((JTextField)result).setText(String.valueOf(value));
- }
-
- if (log.isDebugEnabled()) {
- log.debug("Editor for value " + value + " is " + result);
- }
-
- return result;
- }
-
- /**
- * Retourne le componant permettant de mettre en facteur continue
- * une valeur.
- *
- * @param value value (must be continuable)
- * @param bean bean (in case of equation)
- * @param property bean property (in case of equation)
- * @return component initialized
- */
- protected ContinuousPanel getContinuousPanel(Object value, TopiaEntityContextable bean, String property) {
- ContinuousPanel result;
-
- if (value instanceof RangeOfValues) {
- RangeOfValues rangeOfValues = (RangeOfValues)value;
- //DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
- String values = rangeOfValues.getValues();
- String min = "0";
- //String max = "0";
- if (values.matches("^\\ *[0-9]*\\ *\\-\\ *[0-9]*\\ *$")) {
- int first = values.indexOf("-");
- if (first != -1) {
- min = values.substring(0, first);
- //max = values.substring(first + 1);
- }
- }
- //ui.init(min, max, min, null);
- //result = ui;
- result = new ContinuousDistributionPanel(min);
- } else if (value instanceof Equation) {
- Equation equation = (Equation)value;
- EquationContinuousPanelUI ui = new EquationContinuousPanelUI();
- ui.setSelectedEquation(equation);
- ui.setText(t("isisfish.common.equation")); // can't get real name
- ui.setFormuleCategory(equation.getCategory());
- ui.setClazz(equation.getClass());
- ui.setBeanProperty(property);
- ui.setBean(bean);
- result = ui;
- } else if (value instanceof MatrixND) {
- MatrixND matrix = (MatrixND)value;
- result = new ContinuousDistributionPanel(matrix.clone());
- } else if (value instanceof TimeUnit) {
- TimeUnit timeUnit = (TimeUnit)value;
- //DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
- //ui.init(String.valueOf(timeUnit.getTime()), String.valueOf(timeUnit.getTime()),
- // String.valueOf(timeUnit.getTime()), null);
- //result = ui;
- result = new ContinuousDistributionPanel(String.valueOf(timeUnit.getTime()));
- } else {
- //DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
- //ui.init(String.valueOf(value), String.valueOf(value), String.valueOf(value), null);
- //result = ui;
- result = new ContinuousDistributionPanel(String.valueOf(value));
- }
-
- if (log.isDebugEnabled()) {
- log.debug("Component for " + value + " (" + bean + ", " + property + ")");
- log.debug(" > " + result);
- }
-
- return result;
- }
-
- /**
- * Rafraichit l'assistant de facteur pour modifier le nombre de valeurs
- * (onglet) d'un composant discret.
- *
- * @param factorWizardUI factorWizardUI
- */
- public void addTabs(FactorWizardUI factorWizardUI) {
- String discreteNumber = factorWizardUI.getDiscretNumber().getText();
- int nbTab = Integer.parseInt(discreteNumber);
- int currentCount = factorWizardUI.getTabPane().getTabCount();
-
- // remove useless tab
- for (int tab = currentCount - 1; tab > nbTab -1 ; tab--) {
- factorWizardUI.getTabPane().remove(tab);
- }
-
- // add new tabs
- for (int tab = currentCount ; tab < nbTab ; tab++) {
- JComponent c = getNewDiscreteComponent(factorWizardUI);
- String tabName = t("isisfish.sensitivity.discretevaluelabel", tab);
- factorWizardUI.getTabPane().addTab(tabName, c);
- }
-
- factorWizardUI.pack();
- }
-
- /**
- * Return new discrete component inited with value defined by factor path.
- *
- * Le composant retourné est inclut dans un jscrollpane (sauf pour les
- * matrices qui contient deja un jscrollpane)
- *
- * @param factorWizardUI factorWizardUI
- * @return component copy
- */
- protected JComponent getNewDiscreteComponent(FactorWizardUI factorWizardUI) {
-
- JComponent result = null;
- String factorPath = factorWizardUI.getFactorPath();
-
- try {
- if (factorPath.indexOf('#') != -1) {
- String topiaId = factorPath.substring(0, factorPath.lastIndexOf('#'));
- String property = factorPath.substring(factorPath.lastIndexOf('#') + 1);
-
- // get bean in database
- TopiaContext topiaContext = getTopiaContext(factorWizardUI);
- TopiaEntityContextable entity = (TopiaEntityContextable)topiaContext.findByTopiaId(topiaId);
- Object value = PropertyUtils.getProperty(entity, property);
-
- // init new jcomponent for value
- if (value instanceof Number) {
- result = new JTextField(String.valueOf(value));
- } else if (value instanceof MatrixND) {
- result = new MatrixPanelEditor();
- MatrixND matrix = ((MatrixND)value).copy();
- ((MatrixPanelEditor)result).setMatrix(matrix);
- } else if (value instanceof RangeOfValues) {
- RangeOfValues rangeOfValues = (RangeOfValues)value;
- result = new JTextField(rangeOfValues.getValues());
- } else if (value instanceof TimeUnit) {
- TimeUnit timeUnit = (TimeUnit)value;
- result = new JTextField(String.valueOf(timeUnit.getTime()));
- } else if (value instanceof Equation) {
- Equation equation = (Equation)value;
- // fill component
- InputOneEquationUI ui = new InputOneEquationUI(factorWizardUI);
- ui.setAutoSaveModification(false);
- ui.setText(equation.getContent());
- ui.setFormuleCategory(equation.getCategory());
- ui.setText(t("isisfish.common.equation")); // can't get real name
- ui.setClazz(value.getClass());
- ui.setBeanProperty(property);
- ui.setBean(entity);
- ui.setActive(true);
- result = ui;
- }
-
- topiaContext.closeContext();
-
- }
- else {
- // dans ce cas c'est des regles, pop de départ ou parametres de regles
- // c'est un peu galere car le code n'a rien a voir avec le reste
- // donc, c'est du cas par cas
- if (factorPath.equals("parameters.rules")) {
- result = new RuleChooser(factorWizardUI);
- } else if (factorPath.startsWith("parameters.population.")) {
- // la seule facon d'avoir les parametres ici est d'aller
- // les chercher dans les parametres de simulation
- Pattern pattern = Pattern.compile("^parameters\\.population\\.(\\w+)(\\.(.+)?)$");
- Matcher matcher = pattern.matcher(factorPath);
- if (matcher.matches()) {
- String populationName = matcher.group(1);
- if (log.isDebugEnabled()) {
- log.debug("Loading population : " + populationName);
- }
- TopiaContext topiaContext = getTopiaContext(factorWizardUI);
- Population pop = IsisFishDAOHelper.getPopulationDAO(topiaContext).findByName(populationName);
- SimulAction action = factorWizardUI.getContextValue(SimulAction.class);
- MatrixND N = action.getSimulationParameter().getNumberOf(pop);
- result = new MatrixPanelEditor();
- ((MatrixPanelEditor)result).setMatrix(N.clone());
- topiaContext.closeContext();
- }
- } else if (factorPath.startsWith("parameters.rule.")) {
- Pattern pattern = Pattern.compile("^parameters\\.rule\\.(\\d+)\\.parameter\\.(\\w+)(\\..+)?$");
- Matcher matcher = pattern.matcher(factorPath);
- if (matcher.matches()) {
- int ruleIndex = Integer.parseInt(matcher.group(1));
- SimulAction action = factorWizardUI.getContextValue(SimulAction.class);
- Rule rule = action.getSimulationParameter().getRules().get(ruleIndex);
- Class valueClazz = RuleStorage.getParameterType(rule, matcher.group(2));
- Object value = RuleStorage.getParameterValue(rule, matcher.group(2));
- result = getTypeDiscreteComponent(factorWizardUI, valueClazz, value);
-
- } else {
- // double...
- result = new JTextField("0.0");
- }
- } else {
- if (log.isWarnEnabled()) {
- log.warn("Can't find component for path " + factorPath);
- }
- }
- }
- } catch (Exception ex) {
- throw new IsisFishRuntimeException("Can't restore intial factor database property", ex);
- }
-
- if (log.isDebugEnabled()) {
- log.debug("Component for path " + factorPath + " is " + result);
- }
-
- // hack : si on met 2 fois un jscrollpane, rien ne s'affiche
- if (!(result instanceof MatrixPanelEditor)) {
- result = new JScrollPane(result);
- }
-
- return result;
- }
-
- /**
- * Return new continuous component inited with value defined by factor path.
- *
- * @param factorWizardUI (to use topia context)
- * @param factorPath factor path
- * @return component initialized
- */
- protected ContinuousPanel getNewContinuousComponent(FactorWizardUI factorWizardUI, String factorPath) {
- ContinuousPanel result = null;
-
- try {
- if (factorPath.indexOf('#') != -1) {
- String topiaId = factorPath.substring(0, factorPath.lastIndexOf('#'));
- String property = factorPath.substring(factorPath.lastIndexOf('#') + 1);
-
- // get bean in database
- TopiaContext topiaContext = getTopiaContext(factorWizardUI);
- TopiaEntityContextable entity = (TopiaEntityContextable)topiaContext.findByTopiaId(topiaId);
- Object value = PropertyUtils.getProperty(entity, property);
-
- if (value instanceof RangeOfValues) {
- RangeOfValues rangeOfValues = (RangeOfValues)value;
- //DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
- String values = rangeOfValues.getValues();
- String min = "0";
- String max = "0";
- if (values.matches("^\\ *[0-9]*\\ *\\-\\ *[0-9]*\\ *$")) {
- int first = values.indexOf("-");
- if (first != -1) {
- min = values.substring(0, first);
- max = values.substring(first + 1);
- }
- }
- result = new ContinuousDistributionPanel(min);
- } else if (value instanceof Equation) {
- Equation equation = (Equation)value;
- EquationContinuousPanelUI ui = new EquationContinuousPanelUI();
- ui.setSelectedEquation(equation);
- ui.setText(t("isisfish.common.equation")); // can't get real name
- ui.setFormuleCategory(equation.getCategory());
- ui.setClazz(equation.getClass());
- ui.setBeanProperty(property);
- ui.setBean(entity);
- result = ui;
- } else if (value instanceof MatrixND) {
- MatrixND matrix = (MatrixND)value;
- result = new ContinuousDistributionPanel(matrix.clone());
- } else if (value instanceof TimeUnit) {
- TimeUnit timeUnit = (TimeUnit)value;
- //DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
- //ui.init(String.valueOf(timeUnit.getTime()), String.valueOf(timeUnit.getTime()),
- // String.valueOf(timeUnit.getTime()), null);
- //result = ui;
- result = new ContinuousDistributionPanel(String.valueOf(timeUnit.getTime()));
- } else {
- //DefaultContinuousPanelUI ui = new DefaultContinuousPanelUI();
- //ui.init(String.valueOf(value), String.valueOf(value), String.valueOf(value), null);
- //result = ui;
- result = new ContinuousDistributionPanel(String.valueOf(value));
- }
-
- topiaContext.closeContext();
-
- } else {
- if (factorPath.startsWith("parameters.population.")) {
- // la seule facon d'avoir les parametres ici est d'aller
- // les chercher dans les parametres de simulation
- Pattern pattern = Pattern.compile("^parameters\\.population\\.(\\w+)(\\.(.+)?)$");
- Matcher matcher = pattern.matcher(factorPath);
- if (matcher.matches()) {
- String populationName = matcher.group(1);
- if (log.isDebugEnabled()) {
- log.debug("Loading population : " + populationName);
- }
- TopiaContext topiaContext = getTopiaContext(factorWizardUI);
- Population pop = IsisFishDAOHelper.getPopulationDAO(topiaContext).findByName(populationName);
- SimulAction action = factorWizardUI.getContextValue(SimulAction.class);
- MatrixND N = action.getSimulationParameter().getNumberOf(pop);
- result = new ContinuousDistributionPanel(N.clone());
- topiaContext.closeContext();
- }
- } else if (factorPath.startsWith("parameters.rule.")) {
- Pattern pattern = Pattern.compile("^parameters\\.rule\\.(\\d+)\\.parameter\\.(\\w+)(\\..+)?$");
- Matcher matcher = pattern.matcher(factorPath);
- if (matcher.matches()) {
- int ruleIndex = Integer.parseInt(matcher.group(1));
- SimulAction action = factorWizardUI.getContextValue(SimulAction.class);
- Rule rule = action.getSimulationParameter().getRules().get(ruleIndex);
- Class valueClazz = RuleStorage.getParameterType(rule, matcher.group(2));
- Object value = RuleStorage.getParameterValue(rule, matcher.group(2));
- result = getTypeContinousComponent(factorWizardUI, valueClazz, value);
-
- } else {
- // double...
- result = getContinuousPanel(0.0, null, null);
- }
- } else {
- if (log.isWarnEnabled()) {
- log.warn("Can't find component for path " + factorPath);
- }
- }
- }
- } catch (Exception ex) {
- throw new IsisFishRuntimeException("Can't init wizard", ex);
- }
-
- return result;
- }
-
- /**
- * Get new special component for typed parameters.
- *
- * @param factorWizardUI
- * @param type
- * @return rule discrete component
- */
- protected JComponent getTypeDiscreteComponent(FactorWizardUI factorWizardUI, Class type, Object value) {
-
- JComponent result = null;
-
- if (TopiaEntity.class.isAssignableFrom(type)) {
- try {
- TopiaContext context = getTopiaContext(factorWizardUI);
- List list = context.findAll("from " + type.getName());
- JComboBox c = new JComboBox(list.toArray());
- result = c;
- context.closeContext();
- } catch (TopiaException ex) {
- throw new IsisFishRuntimeException("Can't get entity list", ex);
- }
- } else if (TimeStep.class.isAssignableFrom(type)) {
- result = new StepComponent(0, 0);
- } else if (Month.class.isAssignableFrom(type)) {
- result = MonthComponent.createMounthCombo(0);
- } else {
- if (value != null) {
- result = new JTextField(value.toString());
- } else {
- result = new JTextField();
- }
-
- }
-
- return result;
- }
-
- /**
- * Get new special component for typed parameters.
- *
- * @param factorWizardUI
- * @param type type to get component
- * @return rule discrete component
- */
- protected ContinuousPanel getTypeContinousComponent(FactorWizardUI factorWizardUI, Class type, Object value) {
-
- ContinuousPanel result = null;
-
- if (Double.class.isAssignableFrom(type) || double.class.isAssignableFrom(type)) {
- if (value != null) {
- result = new ContinuousDistributionPanel(value.toString());
- } else {
- result = new ContinuousDistributionPanel(0.0);
- }
- }
-
- return result;
- }
-
- /**
- * Save current factor.
- *
- * @param factorWizardUI factorWizardUI
- */
- public void save(FactorWizardUI factorWizardUI) {
-
- // get continuous component if any
- ContinuousPanel continuousPanel = null;
- if (factorWizardUI.getContinuousPanelContainer().getComponentCount() > 0) {
- continuousPanel = (ContinuousPanel)factorWizardUI.getContinuousPanelContainer().getComponent(0);
- }
-
- // first check is factor is valid
- boolean factorValid = true;
- if (continuousPanel != null) {
- factorValid = continuousPanel.isFactorValid();
- }
- if (!factorValid) {
- JOptionPane.showMessageDialog(factorWizardUI, t("isisfish.sensitivity.factor.notvalid"),
- t("isisfish.sensitivity.title"), JOptionPane.ERROR_MESSAGE);
- return;
- }
-
- // call specific method depending on continuous/discrete
- if (factorWizardUI.getContinueRadio().isSelected()) {
- saveContinue(factorWizardUI.getFactorNameField().getText(),
- factorWizardUI.getComment().getText(), factorWizardUI.getFactorPath(), continuousPanel,
- factorWizardUI.getContextValue(SimulAction.class), factorWizardUI.isEditingState());
- } else {
- Component[] discreteComponents = factorWizardUI.getTabPane().getComponents();
- saveDiscret(factorWizardUI.getFactorNameField().getText(),
- factorWizardUI.getComment().getText(), factorWizardUI.getFactorPath(), discreteComponents,
- factorWizardUI.getContextValue(SimulAction.class), factorWizardUI.isEditingState());
- }
-
- // refresh factor list
- factorWizardUI.getContextValue(SimulationUI.class, "SimulationUI").refreshFactorTree();
-
- // close window
- factorWizardUI.dispose();
- }
-
- /**
- * Save a continous factor.
- *
- * @param name factor name
- * @param comment comment
- * @param path factor path
- * @param panel panel
- * @param action action
- * @param exist exist
- */
- protected void saveContinue(String name,
- String comment, String path, ContinuousPanel panel,
- SimulAction action, boolean exist) {
- if (panel instanceof EquationContinuousPanelUI) {
- try {
- EquationContinuousPanelUI equationPanel = (EquationContinuousPanelUI) panel;
- String property = StringUtils.uncapitalize(equationPanel.getBeanProperty()) + "Content";
- TopiaEntityContextable bean = equationPanel.getBean();
- TopiaContext topiaContext = bean.getTopiaContext();
- PropertyUtils.setProperty(bean, property, equationPanel.getEditor().getEditor().getText());
-
- // Save equation
- bean.update();
- topiaContext.commitTransaction();
-
- List<Factor> factors = equationPanel.getFactors();
- for (Factor factor : factors) {
- factor.setName(name);
- factor.setComment(comment);
- factor.setPath(path);
- action.addContinuousEquationFactor(factor, exist);
- }
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't call method : ", ex);
- }
- }
- } else if (panel instanceof ContinuousDistributionPanel) {
- ContinuousDistributionPanel defaultPanel = (ContinuousDistributionPanel) panel;
- ContinuousDomain domain = defaultPanel.generateDomain();
- action.addContinuousFactor(name, comment, path, domain, exist);
- }
- }
-
- /**
- * Save a discret factor.
- *
- * @param name
- * @param comment
- * @param path
- * @param components
- * @param action
- * @param exist
- */
- protected void saveDiscret(String name,
- String comment, String path, Component[] components,
- SimulAction action, boolean exist) {
- List<Object> values = new ArrayList<Object>();
-
- boolean ruleFactor = false;
- boolean equationFactor = false;
- for (Component component : components) {
-
- if (component instanceof JScrollPane) {
- component = ((JScrollPane) component).getViewport().getView();
- }
-
- // get internat component value
- Object result = null;
- if (component instanceof JTextComponent) {
- result = ((JTextComponent) component).getText();
- } else if (component instanceof MatrixPanelEditor) {
- result = ((MatrixPanelEditor) component).getMatrix();
- } else if (component instanceof InputOneEquationUI) {
- result = ((InputOneEquationUI) component).getEditor().getText();
- equationFactor = true;
- } else if (component instanceof RuleChooser) {
- result = ((RuleChooser)component).getRulesList();
- ruleFactor = true;
- } else if (component instanceof StepComponent) {
- result = new TimeStep(((StepComponent)component).getSelectedValue());
- } else if (component instanceof MonthComponent) {
- result = new Month(((MonthComponent)component).getSelectedValue());
- } else if (component instanceof JComboBox) {
- // on suppose qu'il y a dedans des TopiaEntity
- result = ((JComboBox)component).getSelectedItem();
- }
-
- values.add(result);
- }
-
- if (ruleFactor) {
- action.addDiscreteRuleFactor(name, comment, path, values, exist);
- } else if (equationFactor) {
- action.addDiscreteEquationFactor(name, comment, path, values, exist);
- } else {
- action.addDiscreteFactor(name, comment, path, values, exist);
- }
- }
-
- /**
- * Remove current factor.
- *
- * @param factorWizardUI factorWizardUI
- */
- public void remove(FactorWizardUI factorWizardUI) {
- factorWizardUI.getContextValue(SimulAction.class).removeFactor(factorWizardUI.getFactorPath());
- factorWizardUI.getContextValue(SimulationUI.class, "SimulationUI").refreshFactorTree();
- factorWizardUI.dispose();
- }
-}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -39,7 +39,7 @@
*
* @author Eric Chatellier
*/
-public class AdvancedParamsHandler extends SimulationTabHandler {
+public class AdvancedParamsHandler extends SimulatorTabHandler {
/** Class logger. */
private static final Log log = LogFactory.getLog(AdvancedParamsHandler.class);
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -40,7 +40,7 @@
*
* @author Eric Chatellier
*/
-public class ExportHandler extends SimulationTabHandler {
+public class ExportHandler extends SimulatorTabHandler {
/** Class logger. */
private static final Log log = LogFactory.getLog(ExportHandler.class);
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -59,11 +59,11 @@
import fr.ifremer.isisfish.ui.models.optimization.ExportObservationTableModel;
import fr.ifremer.isisfish.ui.models.optimization.ExportTableCellEditor;
import fr.ifremer.isisfish.ui.models.optimization.ExportTableCellRenderer;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityInputUI;
import fr.ifremer.isisfish.ui.sensitivity.SensitivitySaveVerifier;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI;
import fr.ifremer.isisfish.ui.widget.editor.FactorEditorListener;
-public class OptimizationHandler extends SimulationTabHandler {
+public class OptimizationHandler extends SimulatorTabHandler {
private static final Log log = LogFactory.getLog(OptimizationHandler.class);
@@ -184,7 +184,7 @@
public void actionPerformed(ActionEvent event) {
// init new sensitivity tav ui hierarchy
- final SensitivityTabUI sensitivityTabUI = new SensitivityTabUI(tabUI);
+ final SensitivityInputUI sensitivityTabUI = new SensitivityInputUI(tabUI);
sensitivityTabUI.setContextValue(new SensitivitySaveVerifier()); // prevent NPE
sensitivityTabUI.setContextValue(tabUI.getParentContainer(SimulationUI.class), "SimulationUI"); // prevent NPE
@@ -196,7 +196,7 @@
TopiaContext tx = regionStorage.getStorage().beginTransaction();
FisheryRegion fisheryRegion = RegionStorage.getFisheryRegion(tx);
sensitivityTabUI.setFisheryRegion(fisheryRegion);
- sensitivityTabUI.setTreeModel();
+ sensitivityTabUI.getHandler().setTreeModel();
} catch (Exception ex) {
throw new IsisFishRuntimeException("Can't init dialog tree", ex);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -60,7 +60,7 @@
*
* @author Eric Chatellier
*/
-public class ParamsHandler extends SimulationTabHandler {
+public class ParamsHandler extends SimulatorTabHandler {
/** Class logger. */
private static final Log log = LogFactory.getLog(ParamsHandler.class);
@@ -178,8 +178,8 @@
// and can't be closed because used in
TopiaContext tx = getSimulAction().getRegionStorage().getStorage().beginTransaction();
FisheryRegion fisheryRegion = RegionStorage.getFisheryRegion(tx);
- tabUI.getParentContainer(SensitivityUI.class).getSensitivityTabUI().setFisheryRegion(fisheryRegion);
- tabUI.getParentContainer(SensitivityUI.class).getSensitivityTabUI().setTreeModel();
+ tabUI.getParentContainer(SensitivityUI.class).getSensitivityInputUI().setFisheryRegion(fisheryRegion);
+ tabUI.getParentContainer(SensitivityUI.class).getSensitivityInputUI().getHandler().setTreeModel();
} catch (StorageException ex) {
if (log.isErrorEnabled()) {
log.error("Can't reload factors", ex);
@@ -193,9 +193,9 @@
}
protected void initSensitivityParams() {
if (tabUI.isSensitivity()) {
- tabUI.getParentContainer(SensitivityUI.class).getSensitivityChooserUI().refreshSelectedSensitivityAnalysis();
- tabUI.getParentContainer(SensitivityUI.class).getSensitivityTabUI().setFactorModel();
- tabUI.getParentContainer(SensitivityUI.class).getSensitivityChooserUI().setSensitivityExportListModel();
+ tabUI.getParentContainer(SensitivityUI.class).getSensitivityChooserUI().getHandler().refreshSelectedSensitivityAnalysis();
+ tabUI.getParentContainer(SensitivityUI.class).getSensitivityInputUI().getHandler().setFactorModel();
+ tabUI.getParentContainer(SensitivityUI.class).getSensitivityChooserUI().getHandler().setSensitivityExportListModel();
tabUI.sensitivityOnlyKeepFirstResultCheckBox.setSelected(getSimulAction().getSimulationParameter().isSensitivityAnalysisOnlyKeepFirst());
}
}
@@ -276,7 +276,7 @@
protected void setListSimulParamsStrategiesItems() {
List<Strategy> strategiesSelected = getSimulAction().getSimulationParameter().getStrategies();
- DefaultListModel listSimulParamsStrategiesModel = new DefaultListModel();
+ DefaultListModel<Strategy> listSimulParamsStrategiesModel = new DefaultListModel<Strategy>();
List<Strategy> strategies = getSimulAction().getStrategies();
for (Strategy s : strategies){
listSimulParamsStrategiesModel.addElement(s);
@@ -292,7 +292,7 @@
}
protected void setListSimulParamsPopulationsItems(){
List<Population> populationsSelected = getSimulAction().getSimulationParameter().getPopulations();
- DefaultListModel listSimulParamsPopulationsModel = new DefaultListModel();
+ DefaultListModel<Population> listSimulParamsPopulationsModel = new DefaultListModel<Population>();
List<Population> populations = getSimulAction().getPopulations();
for (Population p : populations){
listSimulParamsPopulationsModel.addElement(p);
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -42,7 +42,7 @@
*
* @author Eric Chatellier
*/
-public class PlanHandler extends SimulationTabHandler {
+public class PlanHandler extends SimulatorTabHandler {
protected PlanUI tabUI;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -27,7 +27,7 @@
*
* @author Eric Chatellier
*/
-public class PreScriptsHandler extends SimulationTabHandler {
+public class PreScriptsHandler extends SimulatorTabHandler {
protected PreScriptsUI tabUI;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -36,7 +36,7 @@
*
* @author Eric Chatellier
*/
-public class ResultChoiceHandler extends SimulationTabHandler {
+public class ResultChoiceHandler extends SimulatorTabHandler {
protected ResultChoiceUI tabUI;
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -102,8 +102,8 @@
import fr.ifremer.isisfish.simulator.sensitivity.domain.RuleDiscreteDomain;
import fr.ifremer.isisfish.ui.SimulationUI;
import fr.ifremer.isisfish.ui.sensitivity.SensitivityChooserUI;
+import fr.ifremer.isisfish.ui.sensitivity.wizard.FactorWizardHandler;
import fr.ifremer.isisfish.ui.sensitivity.wizard.FactorWizardUI;
-import fr.ifremer.isisfish.ui.sensitivity.wizard.SensitivityWizardHandler;
import fr.ifremer.isisfish.ui.util.ErrorHelper;
import fr.ifremer.isisfish.ui.widget.editor.ScriptParameterDialog;
import jaxx.runtime.SwingUtil;
@@ -1233,7 +1233,7 @@
if (selectedFactor != null) {
FactorWizardUI wizard = new FactorWizardUI(paramsUI);
- SensitivityWizardHandler handler = wizard.getHandler();
+ FactorWizardHandler handler = wizard.getHandler();
handler.initExistingFactor(wizard, selectedFactor);
wizard.pack();
wizard.setLocationRelativeTo(paramsUI);
@@ -1288,7 +1288,7 @@
rule.getClass().getSimpleName(), paramName));
factor.setPath(factorPath);
FactorWizardUI factorWizardUI = new FactorWizardUI(ruleChooser);
- SensitivityWizardHandler handler = factorWizardUI.getHandler();
+ FactorWizardHandler handler = factorWizardUI.getHandler();
handler.initExistingFactor(factorWizardUI, factor);
factorWizardUI.pack();
factorWizardUI.setLocationRelativeTo(ruleChooser);
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulationTabHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulationTabHandler.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulationTabHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -1,44 +0,0 @@
-package fr.ifremer.isisfish.ui.simulator;
-
-import fr.ifremer.isisfish.simulator.SimulationParameter;
-import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
-import fr.ifremer.isisfish.ui.CommonHandler;
-import jaxx.runtime.JAXXContext;
-
-/**
- * Handler common à tous les handler de chaque onglet de l'interface de simulation.
- *
- * @author Eric Chatellier
- */
-public abstract class SimulationTabHandler extends CommonHandler {
-
- // TODO might be something else, like SimulatorTabUI ?
- protected JAXXContext simulationUI;
-
- protected SimulationTabHandler(JAXXContext simulationUI) {
- this.simulationUI = simulationUI;
- }
-
- /**
- * Return simulation parameters from context.
- *
- * @return SimulationParameter
- */
- protected SimulationParameter getParameters() {
- return simulationUI.getContextValue(SimulationParameter.class);
- }
-
- /**
- * Return FactorGroup from context.
- *
- * @return FactorGroup
- */
- protected FactorGroup getFactorGroup() {
- return simulationUI.getContextValue(FactorGroup.class);
- }
-
- @Deprecated
- protected SimulAction getSimulAction() {
- return simulationUI.getContextValue(SimulAction.class);
- }
-}
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorTabHandler.java (from rev 4231, trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulationTabHandler.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorTabHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorTabHandler.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -0,0 +1,44 @@
+package fr.ifremer.isisfish.ui.simulator;
+
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
+import fr.ifremer.isisfish.ui.CommonHandler;
+import jaxx.runtime.JAXXContext;
+
+/**
+ * Handler common à tous les handler de chaque onglet de l'interface de simulation.
+ *
+ * @author Eric Chatellier
+ */
+public abstract class SimulatorTabHandler extends CommonHandler {
+
+ // TODO might be something else, like SimulatorTabUI ?
+ protected JAXXContext simulationUI;
+
+ protected SimulatorTabHandler(JAXXContext simulationUI) {
+ this.simulationUI = simulationUI;
+ }
+
+ /**
+ * Return simulation parameters from context.
+ *
+ * @return SimulationParameter
+ */
+ protected SimulationParameter getParameters() {
+ return simulationUI.getContextValue(SimulationParameter.class);
+ }
+
+ /**
+ * Return FactorGroup from context.
+ *
+ * @return FactorGroup
+ */
+ protected FactorGroup getFactorGroup() {
+ return simulationUI.getContextValue(FactorGroup.class);
+ }
+
+ @Deprecated
+ protected SimulAction getSimulAction() {
+ return simulationUI.getContextValue(SimulAction.class);
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/widget/Interval.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/widget/Interval.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/widget/Interval.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -213,18 +213,6 @@
}
/**
- * Retourne une chaine XML qui represente l'objet.
- *
- * @deprecated since 20090414 (unused)
- * @return interval representation as xml
- */
- public String toXML() {
- return "<Interval min=\"" + getMin() + "\" max=\"" + getMax()
- + "\" first=\"" + getFirst() + "\" last=\"" + getLast()
- + "\"/>";
- }
-
- /**
* @return une iteration
*/
public Iterator<Integer> iterator() {
Modified: trunk/src/test/java/fr/ifremer/isisfish/ui/AbstractFestIT.java
===================================================================
--- trunk/src/test/java/fr/ifremer/isisfish/ui/AbstractFestIT.java 2015-05-22 15:56:58 UTC (rev 4232)
+++ trunk/src/test/java/fr/ifremer/isisfish/ui/AbstractFestIT.java 2015-05-22 16:10:26 UTC (rev 4233)
@@ -56,7 +56,7 @@
public void setUp() {
WelcomeUI frame = GuiActionRunner.execute(new GuiQuery<WelcomeUI>() {
protected WelcomeUI executeInEDT() {
- return new WelcomeUI();
+ return new WelcomeUI(new WelcomeContext());
}
});
mainWindow = new FrameFixture(frame);
1
0
Author: echatellier
Date: 2015-05-22 15:56:58 +0000 (Fri, 22 May 2015)
New Revision: 4232
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4232
Log:
Update hibernate & topia
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2015-05-21 13:11:05 UTC (rev 4231)
+++ trunk/pom.xml 2015-05-22 15:56:58 UTC (rev 4232)
@@ -539,8 +539,8 @@
<!-- Dependencies version -->
<jaxxVersion>2.24</jaxxVersion>
<eugeneVersion>2.14</eugeneVersion>
- <topiaVersion>2.9.5.3</topiaVersion>
- <hibernateVersion>4.3.9.Final</hibernateVersion>
+ <topiaVersion>2.9.5.5</topiaVersion>
+ <hibernateVersion>4.3.10.Final</hibernateVersion>
<nuitonI18nVersion>3.3</nuitonI18nVersion>
<nuitonWidgetsVersion>1.1.1</nuitonWidgetsVersion>
1
0
r4231 - in trunk/src/main/java/fr/ifremer/isisfish: . simulator/sensitivity ui ui/input ui/models/rule ui/script ui/script/model ui/sensitivity ui/sensitivity/wizard ui/simulator
by echatellier@users.forge.codelutin.com 21 May '15
by echatellier@users.forge.codelutin.com 21 May '15
21 May '15
Author: echatellier
Date: 2015-05-21 13:11:05 +0000 (Thu, 21 May 2015)
New Revision: 4231
Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4231
Log:
Move script code to dedicated handler (simulator)
Added:
trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeContext.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java
trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityContext.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulationTabHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorContext.java
Removed:
trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx
Modified:
trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java
trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java
trunk/src/main/java/fr/ifremer/isisfish/ui/StatusBarHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/StatusBarUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java
trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java
trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptTypesComboModel.java
trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTransferHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySaveVerifier.java
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx
Modified: trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/IsisFish.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -78,6 +78,7 @@
import fr.ifremer.isisfish.datastore.SimulatorStorage;
import fr.ifremer.isisfish.simulator.launcher.SimulationMonitor;
import fr.ifremer.isisfish.simulator.launcher.SimulationService;
+import fr.ifremer.isisfish.ui.WelcomeContext;
import fr.ifremer.isisfish.ui.WelcomeTabUI;
import fr.ifremer.isisfish.ui.WelcomeUI;
import fr.ifremer.isisfish.ui.util.ErrorHelper;
@@ -711,7 +712,8 @@
final SwingSession session = new SwingSession(sessionFile, true);
// lauch first UI (welcomeUI)
- WelcomeUI welcome = new WelcomeUI();
+ WelcomeContext welcomeContext = new WelcomeContext();
+ WelcomeUI welcome = new WelcomeUI(welcomeContext);
welcome.setTitle(t("isisfish.welcome.title", IsisConfig.getVersion()));
// Set to exit on close
welcome.setDefaultCloseOperation(WelcomeUI.DO_NOTHING_ON_CLOSE);
Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityUtils.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -31,9 +31,12 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.math.matrix.MatrixND;
+import org.nuiton.topia.persistence.TopiaEntity;
import fr.ifremer.isisfish.entities.Equation;
+import fr.ifremer.isisfish.types.Month;
import fr.ifremer.isisfish.types.RangeOfValues;
+import fr.ifremer.isisfish.types.TimeStep;
import fr.ifremer.isisfish.types.TimeUnit;
/**
@@ -172,4 +175,28 @@
}
return result;
}
+
+ /**
+ * Return if type can be defined as a factor.
+ *
+ * @param type type
+ * @return {@code true} if type can be defined as a factor
+ */
+ public static boolean canBeFactor(Class type) {
+ boolean result = false;
+
+ if (TopiaEntity.class.isAssignableFrom(type)) {
+ result = true;
+ } else if (double.class.isAssignableFrom(type)) {
+ result = true;
+ } else if (Number.class.isAssignableFrom(type)) {
+ result = true;
+ } else if (TimeStep.class.isAssignableFrom(type)) {
+ result = true;
+ } else if (Month.class.isAssignableFrom(type)) {
+ result = true;
+ }
+
+ return result;
+ }
}
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,163 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2015 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.isisfish.ui;
+
+import java.lang.reflect.Constructor;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.swing.tree.TreeModel;
+
+import fr.ifremer.isisfish.entities.Cell;
+import fr.ifremer.isisfish.entities.FisheryRegion;
+import fr.ifremer.isisfish.entities.Gear;
+import fr.ifremer.isisfish.entities.Metier;
+import fr.ifremer.isisfish.entities.Observation;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.entities.Port;
+import fr.ifremer.isisfish.entities.SetOfVessels;
+import fr.ifremer.isisfish.entities.Species;
+import fr.ifremer.isisfish.entities.Strategy;
+import fr.ifremer.isisfish.entities.TripType;
+import fr.ifremer.isisfish.entities.VesselType;
+import fr.ifremer.isisfish.entities.Zone;
+import fr.ifremer.isisfish.ui.input.InputContentUI;
+import fr.ifremer.isisfish.ui.input.cell.CellUI;
+import fr.ifremer.isisfish.ui.input.fisheryregion.FisheryRegionUI;
+import fr.ifremer.isisfish.ui.input.gear.GearUI;
+import fr.ifremer.isisfish.ui.input.metier.MetierUI;
+import fr.ifremer.isisfish.ui.input.observation.ObservationUI;
+import fr.ifremer.isisfish.ui.input.population.PopulationUI;
+import fr.ifremer.isisfish.ui.input.port.PortUI;
+import fr.ifremer.isisfish.ui.input.setofvessels.SetOfVesselsUI;
+import fr.ifremer.isisfish.ui.input.species.SpeciesUI;
+import fr.ifremer.isisfish.ui.input.strategy.StrategyUI;
+import fr.ifremer.isisfish.ui.input.tree.FisheryTreeHelper;
+import fr.ifremer.isisfish.ui.input.tree.FisheryTreeNode;
+import fr.ifremer.isisfish.ui.input.triptype.TripTypeUI;
+import fr.ifremer.isisfish.ui.input.vesseltype.VesselTypeUI;
+import fr.ifremer.isisfish.ui.input.zone.ZoneUI;
+import jaxx.runtime.JAXXContext;
+
+/**
+ * Handler for tree navigation related interfaces.
+ *
+ * @author chatellier
+ * @version $Revision$
+ *
+ * Last update : $Date$
+ * By : $Author$
+ */
+public class NavigationHandler extends CommonHandler {
+
+ /**
+ * Cache pour n'instancier les ui qu'une seule fois
+ * et eviter que l'affichage saute pour l'utilsateur.
+ */
+ protected Map<Class<?>, InputContentUI<?>> uiInstanceCache = new HashMap<>();
+
+ /**
+ * Get ui that can display internalClass.
+ *
+ * @param internalClass internal class to get ui
+ * @return ui for class
+ * @throws Exception
+ */
+ protected InputContentUI<?> getUIInstanceForBeanClass(Class<?> internalClass, NavigationUI navigationUI) throws Exception {
+
+ Class<? extends InputContentUI<?>> uiClass = null;
+ if (FisheryRegion.class.isAssignableFrom(internalClass)) {
+ uiClass = FisheryRegionUI.class;
+ } else if (Cell.class.isAssignableFrom(internalClass)) {
+ uiClass = CellUI.class;
+ } else if (Gear.class.isAssignableFrom(internalClass)) {
+ uiClass = GearUI.class;
+ } else if (Metier.class.isAssignableFrom(internalClass)) {
+ uiClass = MetierUI.class;
+ } else if (Population.class.isAssignableFrom(internalClass)) {
+ uiClass = PopulationUI.class;
+ } else if (Port.class.isAssignableFrom(internalClass)) {
+ uiClass = PortUI.class;
+ } else if (SetOfVessels.class.isAssignableFrom(internalClass)) {
+ uiClass = SetOfVesselsUI.class;
+ } else if (Species.class.isAssignableFrom(internalClass)) {
+ uiClass = SpeciesUI.class;
+ } else if (Strategy.class.isAssignableFrom(internalClass)) {
+ uiClass = StrategyUI.class;
+ } else if (TripType.class.isAssignableFrom(internalClass)) {
+ uiClass = TripTypeUI.class;
+ } else if (VesselType.class.isAssignableFrom(internalClass)) {
+ uiClass = VesselTypeUI.class;
+ } else if (Zone.class.isAssignableFrom(internalClass)) {
+ uiClass = ZoneUI.class;
+ } else if (Observation.class.isAssignableFrom(internalClass)) {
+ uiClass = ObservationUI.class;
+ }
+
+ // use map to implement UI cache
+ InputContentUI<?> result = uiInstanceCache.get(uiClass);
+ if (result == null) {
+ Constructor<?> constructor = uiClass.getConstructor(JAXXContext.class);
+ result = (InputContentUI<?>)constructor.newInstance(navigationUI);
+
+ uiInstanceCache.put(uiClass, result);
+ }
+
+ return result;
+ }
+
+ /**
+ * Change tree selection with new node id.
+ *
+ * Called by specific UI (CellUI to change node).
+ *
+ * @param inputUI context ui (to get context value tree helper...)
+ * @param nodeId node id to select
+ */
+ public void setTreeSelection(InputContentUI<?> inputUI, String nodeId) {
+ setTreeSelection(inputUI, null, nodeId);
+ }
+
+ /**
+ * Change tree selection with new node id.
+ *
+ * Called by specific UI (CellUI to change node).
+ *
+ * @param inputUI context ui (to get context value tree helper...)
+ * @param parentNodeId find node to select from this node
+ * @param nodeId node id to select
+ */
+ public void setTreeSelection(InputContentUI<?> inputUI, String parentNodeId, String nodeId) {
+ FisheryTreeHelper fisheryTreeHelper = inputUI.getContextValue(FisheryTreeHelper.class);
+ TreeModel fisheryTreeModel = inputUI.getContextValue(TreeModel.class);
+ FisheryTreeNode fromNode = (FisheryTreeNode)fisheryTreeModel.getRoot();
+ if (parentNodeId != null) {
+ fromNode = fisheryTreeHelper.findNode(fromNode, parentNodeId);
+ }
+ FisheryTreeNode newSelectNode = fisheryTreeHelper.findNode(fromNode, nodeId);
+ if (newSelectNode != null) {
+ fisheryTreeHelper.selectNode(newSelectNode);
+ }
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/NavigationHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/StatusBarHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/StatusBarHandler.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/StatusBarHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -25,13 +25,11 @@
import java.awt.Component;
import java.awt.Rectangle;
import java.awt.Robot;
-import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.SwingUtilities;
-import jaxx.runtime.JAXXContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -45,13 +43,23 @@
/** Class logger. */
private static Log log = LogFactory.getLog(StatusBarHandler.class);
+ protected StatusBarUI statusBarUI;
+
/** Attribute used to remember screenshot last directory. */
protected JFileChooser screenshotFileChooser;
+ public StatusBarHandler(StatusBarUI statusBarUI) {
+ this.statusBarUI = statusBarUI;
+ }
+
+ public void afterInit() {
+
+ }
+
/**
* Ask user for screenshot save file and take screenshot to that file.
*/
- public void screenshot(Component parent) {
+ public void screenshot() {
if (screenshotFileChooser == null) {
screenshotFileChooser = new JFileChooser();
screenshotFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
@@ -66,6 +74,7 @@
}
// find parent
+ Component parent = statusBarUI;
while (!(parent instanceof WelcomeUI)) {
parent = parent.getParent();
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/StatusBarUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/StatusBarUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/StatusBarUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -23,10 +23,10 @@
#L%
-->
<Table>
- <StatusBarHandler id="handler" />
+ <StatusBarHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- //getHandler().postInit(this);
+ handler.afterInit();
}
/**
* Change status message and stop progress bar if running.
@@ -62,7 +62,7 @@
toolTipText="Stop the process" />
</cell> -->
<cell>
- <JLabel icon="camera.png" toolTipText="isisfish.status.screenshot" onMouseClicked="handler.screenshot(this)" />
+ <JLabel icon="camera.png" toolTipText="isisfish.status.screenshot" onMouseClicked="handler.screenshot()" />
</cell>
<cell fill="both">
<jaxx.runtime.swing.StatusMessagePanel />
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeContext.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeContext.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeContext.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,35 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2015 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.ui;
+
+import jaxx.runtime.context.JAXXInitialContext;
+
+public class WelcomeContext extends JAXXInitialContext {
+
+ protected WelcomeSaveVerifier verifier = new WelcomeSaveVerifier();
+
+ public WelcomeContext() {
+ add(verifier);
+ }
+
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeContext.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -40,10 +40,6 @@
import javax.swing.JFrame;
import javax.swing.ToolTipManager;
-import jaxx.runtime.context.JAXXInitialContext;
-import jaxx.runtime.swing.config.ConfigUI;
-import jaxx.runtime.swing.config.ConfigUIHelper;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.widget.AboutFrame;
@@ -53,16 +49,18 @@
import fr.ifremer.isisfish.ui.config.RConfigHandler;
import fr.ifremer.isisfish.ui.config.RConfigUI;
import fr.ifremer.isisfish.ui.config.SSHLauncherConfigUI;
-import fr.ifremer.isisfish.ui.input.InputSaveVerifier;
+import fr.ifremer.isisfish.ui.input.InputContext;
import fr.ifremer.isisfish.ui.input.InputUI;
import fr.ifremer.isisfish.ui.queue.QueueUI;
import fr.ifremer.isisfish.ui.result.ResultUI;
import fr.ifremer.isisfish.ui.script.ScriptUI;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivitySaveVerifier;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityContext;
import fr.ifremer.isisfish.ui.sensitivity.SensitivityUI;
-import fr.ifremer.isisfish.ui.simulator.SimulAction;
import fr.ifremer.isisfish.ui.simulator.SimulUI;
+import fr.ifremer.isisfish.ui.simulator.SimulatorContext;
import fr.ifremer.isisfish.ui.vcs.VCSConfigUI;
+import jaxx.runtime.swing.config.ConfigUI;
+import jaxx.runtime.swing.config.ConfigUIHelper;
/**
* Welcome related ui handler.
@@ -78,8 +76,9 @@
/** Class logger. */
private static Log log = LogFactory.getLog(WelcomeHandler.class);
+ protected WelcomeUI welcomeUI;
+
protected Map<JFrame, WelcomePanelUI> allFrameOpened;
- protected WelcomeSaveVerifier verifier = new WelcomeSaveVerifier();
// URL alias
protected static final Map<String, String> URLSALIAS = new HashMap<String, String>();
@@ -92,10 +91,13 @@
URLSALIAS.put("TOPIA_API", "http://maven-site.nuiton.org/topia/topia-persistence/apidocs/index.html");
}
- public void postInit(WelcomeUI welcomeUI) {
- welcomeUI.setContextValue(verifier);
+ public WelcomeHandler(WelcomeUI welcomeUI) {
+ this.welcomeUI = welcomeUI;
+ }
+
+ public void afterInit() {
allFrameOpened = new HashMap<JFrame, WelcomePanelUI>();
- welcomeUI.getWelcomePanelUI().setContent(new WelcomeTabUI(new JAXXInitialContext().add(verifier)));
+ welcomeUI.getWelcomePanelUI().setContent(new WelcomeTabUI(welcomeUI));
// increase tooltip display time
ToolTipManager toolTipManager = ToolTipManager.sharedInstance();
@@ -105,8 +107,7 @@
protected void openFrame(WelcomeUI welcomeUI, Component c, String title) {
- JAXXInitialContext childContext = new JAXXInitialContext().add(verifier).add(this);
- WelcomePanelUI welcome = new WelcomePanelUI(childContext);
+ WelcomePanelUI welcome = new WelcomePanelUI(welcomeUI);
welcome.setContent(c);
JFrame frame = new JFrame(title);
@@ -132,10 +133,8 @@
* @param welcomeUI
*/
public void newSimulationFrame(WelcomeUI welcomeUI) {
- JAXXInitialContext context = new JAXXInitialContext();
- context.add(new SimulAction());
- context.add(this);
- SimulUI simulUI = new SimulUI(context);
+ SimulatorContext simulatorContext = new SimulatorContext(welcomeUI);
+ SimulUI simulUI = new SimulUI(simulatorContext);
openFrame(welcomeUI, simulUI, t("isisfish.simulation.title"));
}
@@ -152,7 +151,9 @@
* @param welcomeUI
*/
public void newInputFrame(WelcomeUI welcomeUI) {
- openFrame(welcomeUI, new InputUI(new JAXXInitialContext().add(verifier).add(new InputSaveVerifier()).add(this)), t("isisfish.input.title"));
+ InputContext inputContext = new InputContext(welcomeUI);
+ InputUI inputUI = new InputUI(inputContext);
+ openFrame(welcomeUI, inputUI, t("isisfish.input.title"));
}
/**
@@ -168,7 +169,9 @@
* @param welcomeUI
*/
public void newSensitivityFrame(WelcomeUI welcomeUI) {
- openFrame(welcomeUI, new SensitivityUI(new JAXXInitialContext().add(new SensitivitySaveVerifier()).add(new SimulAction()).add(this)), t("isisfish.sensitivity.title"));
+ SensitivityContext sensitivityContext = new SensitivityContext(welcomeUI);
+ SensitivityUI sensitivityUI = new SensitivityUI(sensitivityContext);
+ openFrame(welcomeUI, sensitivityUI, t("isisfish.sensitivity.title"));
}
/**
@@ -184,6 +187,7 @@
* @param welcomeUI parent ui
*/
public void close(WelcomeUI welcomeUI) {
+ WelcomeSaveVerifier verifier = welcomeUI.getContextValue(WelcomeSaveVerifier.class);
if (verifier.allIsSaved()) {
welcomeUI.dispose();
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -24,11 +24,9 @@
-->
<JPanel layout='{new BorderLayout()}'>
<import>
- fr.ifremer.isisfish.ui.simulator.SimulAction
- jaxx.runtime.context.JAXXInitialContext
- fr.ifremer.isisfish.ui.input.InputSaveVerifier
- fr.ifremer.isisfish.ui.sensitivity.SensitivitySaveVerifier
- fr.ifremer.isisfish.ui.sensitivity.SensitivityInputHandler
+ fr.ifremer.isisfish.ui.input.InputContext
+ fr.ifremer.isisfish.ui.sensitivity.SensitivityContext
+ fr.ifremer.isisfish.ui.simulator.SimulatorContext
javax.swing.ImageIcon
</import>
@@ -46,16 +44,13 @@
</script>
<JTabbedPane id="simulTabs" tabPlacement='{JTabbedPane.LEFT}' constraints="BorderLayout.CENTER">
<tab title=' ' icon='{new ImageIcon(getClass().getResource("/images/book.gif"))}'>
- <fr.ifremer.isisfish.ui.input.InputUI id='inputUI'
- constructorParams='new JAXXInitialContext().add(getContextValue(WelcomeSaveVerifier.class)).add(new InputSaveVerifier())' />
+ <fr.ifremer.isisfish.ui.input.InputUI id='inputUI' constructorParams='new InputContext(this)' />
</tab>
<tab title=' ' icon='{new ImageIcon(getClass().getResource("/images/simulation.gif"))}'>
- <fr.ifremer.isisfish.ui.simulator.SimulUI id='simulUI'
- constructorParams='new JAXXInitialContext().add(new SimulAction()).add(this)' />
+ <fr.ifremer.isisfish.ui.simulator.SimulUI id='simulUI' constructorParams='new SimulatorContext(this)' />
</tab>
<tab title=' ' icon='{new ImageIcon(getClass().getResource("/images/sensitivities.gif"))}'>
- <fr.ifremer.isisfish.ui.sensitivity.SensitivityUI id="sensitivityUI"
- constructorParams='new JAXXInitialContext().add(new SensitivitySaveVerifier()).add(new SimulAction()).add(new SensitivityInputHandler()).add(this)' />
+ <fr.ifremer.isisfish.ui.sensitivity.SensitivityUI id="sensitivityUI" constructorParams='new SensitivityContext(this)' />
</tab>
<tab title=' ' icon='{new ImageIcon(getClass().getResource("/images/calc.gif"))}'>
<fr.ifremer.isisfish.ui.result.ResultUI />
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -24,11 +24,11 @@
-->
<JFrame width='874' height='736' resizable="true" layout='{new BorderLayout()}'>
- <WelcomeHandler id="handler" />
+ <WelcomeHandler id="handler" constructorParams="this" />
<script><![CDATA[
protected void $afterCompleteSetup() {
- getHandler().postInit(this);
+ getHandler().afterInit();
}
]]></script>
<JMenuBar>
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,47 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2015 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.ui.input;
+
+import fr.ifremer.isisfish.ui.WelcomeSaveVerifier;
+import jaxx.runtime.JAXXContext;
+import jaxx.runtime.context.JAXXInitialContext;
+
+/**
+ * Ce contexte regroupe les élements qui servent à une hierachie d'interfaces Input.
+ *
+ * @author Eric Chatellier
+ */
+public class InputContext extends JAXXInitialContext {
+
+ public InputContext(JAXXContext parent) {
+ setParentContext(parent);
+
+ // add save verifier for this hierarchy
+ InputSaveVerifier inputSaveVerifier = new InputSaveVerifier();
+ add(inputSaveVerifier);
+
+ // this verifier is linked to global verifier
+ WelcomeSaveVerifier welcomeSaveVerifier = getContextValue(WelcomeSaveVerifier.class);
+ welcomeSaveVerifier.addSaveVerifier(inputSaveVerifier);
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContext.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -31,9 +31,6 @@
import java.awt.event.ItemEvent;
import java.io.File;
import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.util.HashMap;
-import java.util.Map;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
@@ -57,47 +54,22 @@
import fr.ifremer.isisfish.IsisFishRuntimeException;
import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.datastore.StorageException;
-import fr.ifremer.isisfish.entities.Cell;
import fr.ifremer.isisfish.entities.FisheryRegion;
-import fr.ifremer.isisfish.entities.Gear;
-import fr.ifremer.isisfish.entities.Metier;
-import fr.ifremer.isisfish.entities.Observation;
import fr.ifremer.isisfish.entities.Population;
-import fr.ifremer.isisfish.entities.Port;
-import fr.ifremer.isisfish.entities.SetOfVessels;
import fr.ifremer.isisfish.entities.Species;
import fr.ifremer.isisfish.entities.SpeciesDAO;
-import fr.ifremer.isisfish.entities.Strategy;
-import fr.ifremer.isisfish.entities.TripType;
-import fr.ifremer.isisfish.entities.VesselType;
-import fr.ifremer.isisfish.entities.Zone;
import fr.ifremer.isisfish.mexico.export.RegionExplorer;
import fr.ifremer.isisfish.mexico.export.RegionExport;
import fr.ifremer.isisfish.mexico.export.RegionExportFactorXML;
-import fr.ifremer.isisfish.ui.CommonHandler;
-import fr.ifremer.isisfish.ui.NavigationUI;
-import fr.ifremer.isisfish.ui.input.cell.CellUI;
-import fr.ifremer.isisfish.ui.input.fisheryregion.FisheryRegionUI;
-import fr.ifremer.isisfish.ui.input.gear.GearUI;
-import fr.ifremer.isisfish.ui.input.metier.MetierUI;
-import fr.ifremer.isisfish.ui.input.observation.ObservationUI;
-import fr.ifremer.isisfish.ui.input.population.PopulationUI;
-import fr.ifremer.isisfish.ui.input.port.PortUI;
-import fr.ifremer.isisfish.ui.input.setofvessels.SetOfVesselsUI;
-import fr.ifremer.isisfish.ui.input.species.SpeciesUI;
-import fr.ifremer.isisfish.ui.input.strategy.StrategyUI;
+import fr.ifremer.isisfish.ui.NavigationHandler;
import fr.ifremer.isisfish.ui.input.tree.FisheryDataProvider;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeHelper;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeNode;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeRenderer;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeSelectionModel;
import fr.ifremer.isisfish.ui.input.tree.loadors.PopulationsNodeLoador;
-import fr.ifremer.isisfish.ui.input.triptype.TripTypeUI;
-import fr.ifremer.isisfish.ui.input.vesseltype.VesselTypeUI;
-import fr.ifremer.isisfish.ui.input.zone.ZoneUI;
import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
import fr.ifremer.isisfish.vcs.VCSException;
-import jaxx.runtime.JAXXContext;
/**
* Main handler for fishery edition action.
@@ -115,16 +87,10 @@
* Last update : $Date$
* By : $Author$
*/
-public class InputHandler extends CommonHandler {
+public class InputHandler extends NavigationHandler {
/** Class logger. */
private static final Log log = LogFactory.getLog(InputHandler.class);
-
- /**
- * Cache pour n'instancier les ui qu'une seule fois
- * et eviter que l'affichage saute pour l'utilsateur.
- */
- protected Map<Class<?>, InputContentUI<?>> uiInstanceCache = new HashMap<>();
/**
* Post init ui.
@@ -153,8 +119,7 @@
inputUI.getCardlayoutPrincipal().show(inputUI.getInputPanePrincipal(), "none");
TreeModel model = new DefaultTreeModel(null);
inputUI.getFisheryRegionTree().setModel(model);
- }
- else {
+ } else {
FisheryRegion fisheryRegion = null;
RegionStorage regionStorage = null;
TopiaContext topiaContext = null;
@@ -564,90 +529,6 @@
}
/**
- * Get ui that can display internalClass.
- *
- * @param internalClass internal class to get ui
- * @return ui for class
- * @throws Exception
- */
- protected InputContentUI<?> getUIInstanceForBeanClass(Class<?> internalClass, NavigationUI navigationUI) throws Exception {
-
- Class<? extends InputContentUI<?>> uiClass = null;
- if (FisheryRegion.class.isAssignableFrom(internalClass)) {
- uiClass = FisheryRegionUI.class;
- } else if (Cell.class.isAssignableFrom(internalClass)) {
- uiClass = CellUI.class;
- } else if (Gear.class.isAssignableFrom(internalClass)) {
- uiClass = GearUI.class;
- } else if (Metier.class.isAssignableFrom(internalClass)) {
- uiClass = MetierUI.class;
- } else if (Population.class.isAssignableFrom(internalClass)) {
- uiClass = PopulationUI.class;
- } else if (Port.class.isAssignableFrom(internalClass)) {
- uiClass = PortUI.class;
- } else if (SetOfVessels.class.isAssignableFrom(internalClass)) {
- uiClass = SetOfVesselsUI.class;
- } else if (Species.class.isAssignableFrom(internalClass)) {
- uiClass = SpeciesUI.class;
- } else if (Strategy.class.isAssignableFrom(internalClass)) {
- uiClass = StrategyUI.class;
- } else if (TripType.class.isAssignableFrom(internalClass)) {
- uiClass = TripTypeUI.class;
- } else if (VesselType.class.isAssignableFrom(internalClass)) {
- uiClass = VesselTypeUI.class;
- } else if (Zone.class.isAssignableFrom(internalClass)) {
- uiClass = ZoneUI.class;
- } else if (Observation.class.isAssignableFrom(internalClass)) {
- uiClass = ObservationUI.class;
- }
-
- // use map to implement UI cache
- InputContentUI<?> result = uiInstanceCache.get(uiClass);
- if (result == null) {
- Constructor<?> constructor = uiClass.getConstructor(JAXXContext.class);
- result = (InputContentUI<?>)constructor.newInstance(navigationUI);
-
- uiInstanceCache.put(uiClass, result);
- }
-
- return result;
- }
-
- /**
- * Change tree selection with new node id.
- *
- * Called by specific UI (CellUI to change node).
- *
- * @param inputUI context ui (to get context value tree helper...)
- * @param nodeId node id to select
- */
- public void setTreeSelection(InputContentUI<?> inputUI, String nodeId) {
- setTreeSelection(inputUI, null, nodeId);
- }
-
- /**
- * Change tree selection with new node id.
- *
- * Called by specific UI (CellUI to change node).
- *
- * @param inputUI context ui (to get context value tree helper...)
- * @param parentNodeId find node to select from this node
- * @param nodeId node id to select
- */
- public void setTreeSelection(InputContentUI<?> inputUI, String parentNodeId, String nodeId) {
- FisheryTreeHelper fisheryTreeHelper = inputUI.getContextValue(FisheryTreeHelper.class);
- TreeModel fisheryTreeModel = inputUI.getContextValue(TreeModel.class);
- FisheryTreeNode fromNode = (FisheryTreeNode)fisheryTreeModel.getRoot();
- if (parentNodeId != null) {
- fromNode = fisheryTreeHelper.findNode(fromNode, parentNodeId);
- }
- FisheryTreeNode newSelectNode = fisheryTreeHelper.findNode(fromNode, nodeId);
- if (newSelectNode != null) {
- fisheryTreeHelper.selectNode(newSelectNode);
- }
- }
-
- /**
* Delete tree node referenced by parent, and auto select parent node.
*
* @param inputUI ui containing tree
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -36,28 +36,28 @@
<JMenuBar id="menu" constraints='BorderLayout.NORTH'>
<JMenu text="isisfish.common.region" id="menuRegion">
- <JMenuItem id="menuRegionImport" text="isisfish.input.menu.importRegion" onActionPerformed="getHandler().importRegion(this)" />
- <JMenuItem id="menuRegionImportRename" text="isisfish.input.menu.importRenameRegion" onActionPerformed="getHandler().importRegionAndRename(this)" />
- <JMenuItem text="isisfish.input.menu.importRegionSimulation" onActionPerformed="getHandler().importRegionFromSimulation(this)" enabled="false"/>
- <JMenuItem id="menuRegionExport" text="isisfish.input.menu.exportRegion" enabled='{isRegionLoaded()}' onActionPerformed="getHandler().exportRegion(this)" />
- <JMenuItem id="menuRegionCopy" text="isisfish.input.menu.copyRegion" enabled='{isRegionLoaded()}' onActionPerformed="getHandler().copyRegion(this)" />
+ <JMenuItem id="menuRegionImport" text="isisfish.input.menu.importRegion" onActionPerformed="handler.importRegion(this)" />
+ <JMenuItem id="menuRegionImportRename" text="isisfish.input.menu.importRenameRegion" onActionPerformed="handler.importRegionAndRename(this)" />
+ <JMenuItem text="isisfish.input.menu.importRegionSimulation" onActionPerformed="handler.importRegionFromSimulation(this)" enabled="false"/>
+ <JMenuItem id="menuRegionExport" text="isisfish.input.menu.exportRegion" enabled='{isRegionLoaded()}' onActionPerformed="handler.exportRegion(this)" />
+ <JMenuItem id="menuRegionCopy" text="isisfish.input.menu.copyRegion" enabled='{isRegionLoaded()}' onActionPerformed="handler.copyRegion(this)" />
<JSeparator/>
- <JMenuItem text="isisfish.input.menu.removeLocaly" enabled='{isRegionLoaded()}' onActionPerformed="getHandler().removeRegion(this, false)" />
+ <JMenuItem text="isisfish.input.menu.removeLocaly" enabled='{isRegionLoaded()}' onActionPerformed="handler.removeRegion(this, false)" />
</JMenu>
<JMenu text="isisfish.input.menu.server">
- <JMenuItem text="isisfish.input.menu.addRegion" enabled='{isRegionLoaded()}' onActionPerformed="getHandler().commitRegionInCVS(this)" />
- <JMenuItem text="isisfish.input.menu.commit" enabled='{isRegionLoaded()}' onActionPerformed="getHandler().commitRegionInCVS(this)" />
+ <JMenuItem text="isisfish.input.menu.addRegion" enabled='{isRegionLoaded()}' onActionPerformed="handler.commitRegionInCVS(this)" />
+ <JMenuItem text="isisfish.input.menu.commit" enabled='{isRegionLoaded()}' onActionPerformed="handler.commitRegionInCVS(this)" />
<JSeparator/>
- <JMenuItem text="isisfish.input.menu.removeLocalyRemotely" enabled='{isRegionLoaded()}' onActionPerformed="getHandler().removeRegion(this, true)" />
+ <JMenuItem text="isisfish.input.menu.removeLocalyRemotely" enabled='{isRegionLoaded()}' onActionPerformed="handler.removeRegion(this, true)" />
</JMenu>
<JMenu text="isisfish.input.menu.sensitivity">
- <JMenuItem text="isisfish.input.menu.sensitivity.export" enabled='{isRegionLoaded()}' onActionPerformed="getHandler().exportRegionSensitivityFactors(this)" />
+ <JMenuItem text="isisfish.input.menu.sensitivity.export" enabled='{isRegionLoaded()}' onActionPerformed="handler.exportRegionSensitivityFactors(this)" />
</JMenu>
</JMenuBar>
<JSplitPane oneTouchExpandable="true" dividerLocation="200" orientation="HORIZONTAL" constraints='BorderLayout.CENTER'>
<JPanel layout='{new BorderLayout()}' minimumSize="{new java.awt.Dimension(0,0)}">
<org.jdesktop.swingx.JXComboBox id="fieldCurrentRegion" constraints='BorderLayout.NORTH'
- onItemStateChanged='getHandler().regionChange(this, event)'
+ onItemStateChanged='handler.regionChange(this, event)'
model='{new fr.ifremer.isisfish.ui.models.common.GenericComboModel<String>(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames())}'/>
<JPanel id="treePanel" name="treePanel" layout='{new BorderLayout()}' constraints='BorderLayout.CENTER'>
<JScrollPane constraints='BorderLayout.CENTER'>
@@ -65,7 +65,7 @@
selectionMode='{javax.swing.tree.TreeSelectionModel.SINGLE_TREE_SELECTION}'/>
<JTree id="fisheryRegionTree" selectionModel='{fisheryRegionTreeSelectionModel}'
rootVisible="true" selectionRow='0' model='{new javax.swing.tree.DefaultTreeModel(null)}' rowHeight="0"
- onValueChanged="getHandler().nodeSelectionChanged(this, event)" />
+ onValueChanged="handler.nodeSelectionChanged(this, event)" />
</JScrollPane>
</JPanel>
<Table constraints='BorderLayout.SOUTH'>
@@ -75,7 +75,7 @@
</cell>
<cell fill='horizontal'>
<JButton id="buttonNewRegion" text="isisfish.input.createNewRegion"
- onActionPerformed='getHandler().createNewRegion(this)' enabled='{getFieldNewRegion().getText().length() > 0}'/>
+ onActionPerformed='handler.createNewRegion(this)' enabled='{getFieldNewRegion().getText().length() > 0}'/>
</cell>
</row>
</Table>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -42,7 +42,7 @@
import fr.ifremer.isisfish.IsisFishException;
import fr.ifremer.isisfish.datastore.RuleStorage;
import fr.ifremer.isisfish.rule.Rule;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivityInputHandler;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils;
import fr.ifremer.isisfish.ui.simulator.RuleChooser;
import fr.ifremer.isisfish.ui.simulator.SimulAction;
@@ -89,8 +89,7 @@
final String paramName = (String)value;
try {
Class paramType = RuleStorage.getParameterType(rule, paramName);
- SensitivityInputHandler handler = ruleChooser.getContextValue(SensitivityInputHandler.class);
- boolean canBeFactor = handler.canBeFactor(paramType);
+ boolean canBeFactor = SensitivityUtils.canBeFactor(paramType);
if (canBeFactor) {
JButton button = new JButton(Resource.getIcon("/icons/building_add.png"));
button.addActionListener(new ActionListener() {
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -38,7 +38,7 @@
import fr.ifremer.isisfish.IsisFishException;
import fr.ifremer.isisfish.datastore.RuleStorage;
import fr.ifremer.isisfish.rule.Rule;
-import fr.ifremer.isisfish.ui.sensitivity.SensitivityInputHandler;
+import fr.ifremer.isisfish.simulator.sensitivity.SensitivityUtils;
import fr.ifremer.isisfish.ui.simulator.RuleChooser;
/**
@@ -79,8 +79,7 @@
String paramName = (String)value;
try {
Class paramType = RuleStorage.getParameterType(rule, paramName);
- SensitivityInputHandler handler = ruleChooser.getContextValue(SensitivityInputHandler.class);
- boolean canBeFactor = handler.canBeFactor(paramType);
+ boolean canBeFactor = SensitivityUtils.canBeFactor(paramType);
if (canBeFactor) {
comp = new JButton(Resource.getIcon("/icons/building_add.png"));
}
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -1,1154 +0,0 @@
-/*
- * #%L
- * IsisFish
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2006 - 2015 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, Chatellier Eric
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 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 Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-package fr.ifremer.isisfish.ui.script;
-
-import static org.nuiton.i18n.I18n.t;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Desktop;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseEvent;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileFilter;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.lang.reflect.Method;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.swing.JMenu;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-import javax.swing.JPopupMenu;
-import javax.swing.SwingUtilities;
-import javax.swing.event.CaretEvent;
-import javax.swing.event.CaretListener;
-import javax.swing.event.TreeSelectionEvent;
-import javax.swing.event.TreeSelectionListener;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.TreePath;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-
-import fr.ifremer.isisfish.IsisFish;
-import fr.ifremer.isisfish.IsisFishRuntimeException;
-import fr.ifremer.isisfish.datastore.CodeSourceStorage;
-import fr.ifremer.isisfish.datastore.CodeSourceStorage.Location;
-import fr.ifremer.isisfish.datastore.ExportStorage;
-import fr.ifremer.isisfish.datastore.FormuleStorage;
-import fr.ifremer.isisfish.datastore.JavaSourceStorage;
-import fr.ifremer.isisfish.datastore.ObjectiveStorage;
-import fr.ifremer.isisfish.datastore.OptimizationStorage;
-import fr.ifremer.isisfish.datastore.RuleStorage;
-import fr.ifremer.isisfish.datastore.ScriptStorage;
-import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage;
-import fr.ifremer.isisfish.datastore.SensitivityExportStorage;
-import fr.ifremer.isisfish.datastore.SimulationPlanStorage;
-import fr.ifremer.isisfish.datastore.SimulatorStorage;
-import fr.ifremer.isisfish.equation.Language;
-import fr.ifremer.isisfish.ui.WelcomePanelUI;
-import fr.ifremer.isisfish.ui.script.model.ScriptTree;
-import fr.ifremer.isisfish.ui.script.model.ScriptTreeModel;
-import fr.ifremer.isisfish.ui.util.ErrorHelper;
-import fr.ifremer.isisfish.util.CompileHelper;
-import fr.ifremer.isisfish.util.JavadocHelper;
-import fr.ifremer.isisfish.vcs.VCSException;
-import freemarker.cache.ClassTemplateLoader;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-
-/**
- * ScriptAction.
- *
- * Template are now loaded with freemarker.
- *
- * @author letellier
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class ScriptAction implements TreeSelectionListener, CaretListener {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- private static Log log = LogFactory.getLog(ScriptAction.class);
-
- /** Couleur de succes (vert leger). */
- protected static final Color COLOR_SUCCESS = new Color(210, 255, 210);
-
- /** Couleur d'echec (rouge leger). */
- protected static final Color COLOR_FAILURE = new Color(255, 210, 210);
-
- /** Storage for currently edited file. */
- protected CodeSourceStorage codeStorage;
-
- /** Freemarke configuration used to create new script (based on templates). */
- protected Configuration freemarkerConfiguration;
-
- /** UI managed by this action class. */
- protected ScriptUI scriptUI;
-
- /**
- * Constructeur.
- *
- * Init freemarker.
- *
- * @param scriptUI managed script UI
- */
- public ScriptAction(ScriptUI scriptUI) {
-
- this.scriptUI = scriptUI;
-
- freemarkerConfiguration = new Configuration(Configuration.VERSION_2_3_0);
- // needed to overwrite "Defaults to default system encoding."
- // fix encoding issue on some systems
- freemarkerConfiguration.setDefaultEncoding("utf-8");
- // specific template loader to get template from jars (classpath)
- ClassTemplateLoader templateLoader = new ClassTemplateLoader(ScriptAction.class, "/");
- freemarkerConfiguration.setTemplateLoader(templateLoader);
-
- }
-
- /**
- * Post init, must be called after ui building.
- */
- public void postInit() {
-
- ScriptTree scriptTree = this.scriptUI.getScriptTree();
-
- // add listeners
- scriptTree.addTreeSelectionListener(this);
- this.scriptUI.getEditor().addCaretListener(this);
-
- // expand official VCS tree node
- scriptTree.expandRow(0);
- }
-
- /**
- * Update script UI component actions buttons.
- */
- protected void setButton() {
-
- File selectedFile = scriptUI.getScriptTree().getSelectedFile();
-
- if (selectedFile != null) {
- scriptUI.setSingleFileSelected(selectedFile.isFile());
- scriptUI.setJavaFileSelected(selectedFile.getName().endsWith(".java"));
- }
- else {
- scriptUI.setSingleFileSelected(false);
- scriptUI.setJavaFileSelected(false);
- }
- }
-
- protected void setStatusMessage(String msg) {
- // FIXME remove all parent container reference
- WelcomePanelUI parentUI = scriptUI.getParentContainer(WelcomePanelUI.class);
- parentUI.setStatusMessage(msg);
- }
- protected void setStatusMessage(String msg, boolean running) {
- // FIXME remove all parent container reference
- WelcomePanelUI parentUI = scriptUI.getParentContainer(WelcomePanelUI.class);
- parentUI.setStatusMessage(msg, running);
- }
-
- /**
- * Make new script, and select it on tree.
- */
- public void newScript(ScriptUI view, MouseEvent event) {
- JPopupMenu menu = new JPopupMenu();
-
- // make a basic copy of already existing menu
- JMenu oldMenu = view.getScriptNewMenu();
- for (int i = 0; i < oldMenu.getItemCount(); i++) {
- JMenuItem oldMenuItem = (JMenuItem)oldMenu.getMenuComponent(i);
- JMenuItem miCopy = new JMenuItem();
- miCopy.setText(oldMenuItem.getText());
- miCopy.setIcon(oldMenuItem.getIcon());
- for (ActionListener l : oldMenuItem.getActionListeners()) {
- miCopy.addActionListener(l);
- }
- menu.add(miCopy);
- }
-
- menu.show((Component)event.getSource(), event.getX(), event.getY());
- }
-
- /**
- * Make new script, and select it on tree.
- *
- * @param scriptType script to make
- */
- public void newScript(ScriptMapping scriptType) {
-
- String equationModelType = "";
- String equationModelTypePath = "";
-
- // specific case for equation model
- if (scriptType.equals(ScriptMapping.Formule)) {
- List<String> values = FormuleStorage.getCategories();
- equationModelType = (String) JOptionPane.showInputDialog(scriptUI,
- t("isisfish.message.new.formule.category"),
- t("isisfish.message.new.formule.title"),
- JOptionPane.PLAIN_MESSAGE, null, values.toArray(), values.get(0));
- equationModelTypePath = equationModelType + File.separator;
- }
-
- // if user has not choose "cancel"
- if (equationModelType != null) {
- String fileName = JOptionPane.showInputDialog(t("isisfish.message.new.filename"));
- // user cancel
- if (!StringUtils.isEmpty(fileName)) {
- File scriptFile = newScript(equationModelTypePath + fileName, scriptType);
- // creation successful
- if (scriptFile != null) {
- ScriptTreeModel model = scriptUI.getScriptTreeModel();
- model.fileAdded(scriptFile);
- TreePath treePath = model.getTreePathFor(scriptFile);
- scriptUI.getScriptTree().setSelectionPath(treePath);
- }
- }
- }
- }
-
- /**
- * Creer un nouveau script, ici un script peut-etre un Script, un Simulator,
- * un Export.
- *
- * @param fileName full filename
- * @param scriptType le type que l'on souhaite Script, Simulator, ou Export.
- * @return created file or {@code null} if any error happen
- */
- protected File newScript(String fileName, ScriptMapping scriptType) {
-
- if (log.isDebugEnabled()) {
- log.debug("newScript called [" + scriptType + "]");
- }
-
- File scriptFile = null;
-
- try {
- // Vérifie qu'il n'y pas de caractères spéciaux. Seul les caractre
- // de a à z (majuscule ou minuscule) ainsi que les nombres sont
- // autorisés. + pour signifier qu'il doit y avoir
- // au moins 1 caractère.
- String realFilename;
- String category;
-
- int pos = fileName.lastIndexOf('/');
- if (pos != -1) {
- if (scriptType != ScriptMapping.Formule) {
- // interdit pour le moment ?
- String message = t("isisfish.error.invalid.file.name",
- fileName);
- Exception e = new RuntimeException(message);
- returnError(t("isisfish.error.script.create", fileName, e.getMessage()), e);
- return null;
- }
- // il y a un sous type à traiter
- if (pos == fileName.length() - 1) {
- String message = t("isisfish.error.invalid.file.name",
- fileName);
- Exception e = new RuntimeException(message);
- returnError(t("isisfish.error.script.create", fileName, e.getMessage()), e);
- return null;
- }
- realFilename = fileName
- .substring(fileName.lastIndexOf('/') + 1);
- category = fileName.substring(0, fileName.lastIndexOf('/'));
- } else {
- realFilename = fileName;
- category = "";
- }
- if (!realFilename.matches("[A-Z0-9_][a-zA-Z0-9_]*")) {
- String message = t("isisfish.error.invalid.file.name", fileName);
- Exception e = new RuntimeException(message);
- returnError(t("isisfish.error.script.create", fileName, e.getMessage()), e);
- return null;
- }
- //TODO do test on category
- CodeSourceStorage script = null;
- switch (scriptType) {
- case CommunityFormule:
- script = FormuleStorage.createFormule(category, realFilename,
- Language.JAVA);
- break;
- case CommunitySimulationPlan:
- script = SimulationPlanStorage.createSimulationPlan(fileName, Location.COMMUNITY);
- break;
- case CommunityExport:
- case CommunityExportStep:
- script = ExportStorage.createExport(fileName, Location.COMMUNITY);
- break;
- case CommunityObjective:
- script = ObjectiveStorage.createObjective(fileName, Location.COMMUNITY);
- break;
- case CommunityOptimization:
- script = OptimizationStorage.createOptimization(fileName, Location.COMMUNITY);
- break;
- case CommunityRule:
- script = RuleStorage.createRule(fileName, Location.COMMUNITY);
- break;
- case CommunityScript:
- script = ScriptStorage.createScript(fileName, Location.COMMUNITY);
- break;
- case CommunitySimulator:
- script = SimulatorStorage.createSimulator(fileName, Location.COMMUNITY);
- break;
- case CommunitySensitivity:
- script = SensitivityAnalysisStorage.createSensitivityAnalysis(fileName, Location.COMMUNITY);
- break;
- case CommunitySensitivityExport:
- script = SensitivityExportStorage
- .createSensitivityExport(fileName, Location.COMMUNITY);
- break;
- default:
- if (log.isErrorEnabled()) {
- log.fatal("ScriptType unknown: " + scriptType);
- }
- }
-
- if (script.exists()) {
- // Message d'erreur si le fichier existe en local.
- String message = t("isisfish.error.file.already.exists", fileName);
- Exception e = new RuntimeException(message);
- returnError(t("isisfish.error.script.create", fileName, e
- .getMessage()), e);
- }
-
- String scriptTemplatePath = scriptType.getTemplatePath();
-
- if (scriptTemplatePath != null) {
-
- if (log.isDebugEnabled()) {
- log.debug("Parsing freemarker template located in "
- + scriptTemplatePath);
- }
-
- // get template
- Template template = freemarkerConfiguration
- .getTemplate(scriptTemplatePath);
-
- // context values
- Map<String, Object> root = new HashMap<String, Object>();
- root.put("name", realFilename);
- root.put("date", new Date());
- root.put("author", IsisFish.config.getUserName());
- root.put("email", IsisFish.config.getUserMail());
-
- // process template
- Writer out = new StringWriter();
- template.process(root, out);
- out.flush();
- script.setContent(out.toString());
- } else {
- throw new IsisFishRuntimeException("There is no templatePath");
- }
-
- codeStorage = script;
- scriptFile = script.getFile();
- } catch (Exception eee) {
- returnError(t("isisfish.error.script.create", fileName, eee
- .getMessage()), eee);
- }
-
- return scriptFile;
- }
-
- /**
- * Write error in log and display exception to user.
- *
- * @param s message
- * @param eee cause
- */
- protected void returnError(String s, Exception eee) {
- if (log.isErrorEnabled()) {
- log.error(s, eee);
- }
- ErrorHelper.showErrorDialog(s, eee);
- }
-
- /*
- * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
- */
- @Override
- public void valueChanged(TreeSelectionEvent e) {
- if (e.getNewLeadSelectionPath() != null) {
- Object selectedNode = e.getNewLeadSelectionPath().getLastPathComponent();
- if (selectedNode instanceof File && ((File)selectedNode).isFile()) {
- File selectedFile = (File)selectedNode;
- // load file into current action codeStorage
- loadScript(selectedFile);
- scriptUI.getEditor().open(selectedFile);
- // force refresh
- scriptUI.getEditor().repaint();
- scriptUI.getEditor().validate();
-
- setButton();
- }
- else {
- scriptUI.getEditor().close();
- // force refresh
- scriptUI.getEditor().repaint();
- scriptUI.getEditor().validate();
-
- setButton();
- }
- }
- }
-
- /**
- * Load specified script in current action.
- *
- * TODO can we change this ?
- *
- * @param file file to load
- */
- public void loadScript(File file) {
- ScriptMapping mapping = ScriptMapping.getMappingFor(file);
- CodeSourceStorage script = null;
-
- try {
- switch (mapping) {
- case Formule:
- case CommunityFormule:
- String fullPath = file.getAbsolutePath();
- int lastIndexOf = fullPath.lastIndexOf('/');
- // in string .../aaa/bbb/ccc/ddd.java
- // get ccc
- String category = fullPath.substring(fullPath.lastIndexOf('/',
- lastIndexOf - 1) + 1, lastIndexOf);
- if (mapping.equals(ScriptMapping.Formule)) {
- script = FormuleStorage.getFormule(category, file.getName());
- } else {
- script = FormuleStorage.getCommunityFormule(category, file.getName());
- }
- break;
- case Rule:
- script = RuleStorage.getRule(file.getName(), Location.OFFICIAL);
- break;
- case Objective:
- script = ObjectiveStorage.getObjective(file.getName(), Location.OFFICIAL);
- break;
- case Optimization:
- script = OptimizationStorage.getOptimization(file.getName(), Location.OFFICIAL);
- break;
- case SimulationPlan:
- script = SimulationPlanStorage.getSimulationPlan(file.getName(), Location.OFFICIAL);
- break;
- case Export:
- case ExportStep:
- script = ExportStorage.getExport(file.getName(), Location.OFFICIAL);
- break;
- case Script:
- script = ScriptStorage.getScript(file.getName(), Location.OFFICIAL);
- break;
- case Simulator:
- script = SimulatorStorage.getSimulator(file.getName(), Location.OFFICIAL);
- break;
- case Sensitivity:
- script = SensitivityAnalysisStorage.getSensitivityAnalysis(file.getName(), Location.OFFICIAL);
- break;
- case SensitivityExport:
- script = SensitivityExportStorage.getSensitivityExport(file.getName(), Location.OFFICIAL);
- break;
- case CommunityObjective:
- script = ObjectiveStorage.getObjective(file.getName(), Location.COMMUNITY);
- break;
- case CommunityOptimization:
- script = OptimizationStorage.getOptimization(file.getName(), Location.COMMUNITY);
- break;
- case CommunityRule:
- script = RuleStorage.getRule(file.getName(), Location.COMMUNITY);
- break;
- case CommunitySimulationPlan:
- script = SimulationPlanStorage.getSimulationPlan(file.getName(), Location.COMMUNITY);
- break;
- case CommunityExport:
- case CommunityExportStep:
- script = ExportStorage.getExport(file.getName(), Location.COMMUNITY);
- break;
- case CommunityScript:
- script = ScriptStorage.getScript(file.getName(), Location.COMMUNITY);
- break;
- case CommunitySimulator:
- script = SimulatorStorage.getSimulator(file.getName(), Location.COMMUNITY);
- break;
- case CommunitySensitivity:
- script = SensitivityAnalysisStorage.getSensitivityAnalysis(file.getName(), Location.COMMUNITY);
- break;
- case CommunitySensitivityExport:
- script = SensitivityExportStorage.getSensitivityExport(file.getName(), Location.COMMUNITY);
- break;
- default:
- log.fatal("ScriptType unknown: " + file.getName());
- }
-
- //frame.setInfoText(t("isisfish.message.load.finished"));
- } catch (Exception eee) {
- returnError(t("isisfish.error.script.load", file.getAbsolutePath(),
- eee.getMessage()), eee);
-
- } finally {
- codeStorage = script;
- }
- }
-
- public boolean fileLoaded() {
- return codeStorage != null;
- }
-
- public boolean isJavaScript() {
- return JavaSourceStorage.class.isInstance(codeStorage);
- }
-
- /**
- * Save current editor test in current loaded codeStorage.
- */
- public void saveScript() {
- if (log.isDebugEnabled()) {
- log.debug("saveScript called on " + codeStorage.getName());
- }
-
- try {
- // setContent() or scriptUI.getEditor().save()
- // if setContent() only editor ask for t saving
- scriptUI.getEditor().save();
- String content = scriptUI.getEditor().getText();
- codeStorage.setContent(content, false);
-
- // notify tree to refresh
- ScriptTreeModel model = scriptUI.getScriptTreeModel();
- model.fileModified(codeStorage.getFile());
- } catch (Exception eee) {
- returnError(t("isisfish.error.script.save", codeStorage.getFile(),
- eee.getMessage()), eee);
- }
- setStatusMessage(t("isisfish.message.save.finished"));
- }
-
- /**
- * Save script, and display commit UI.
- */
- public void commitScript() {
-
- if (log.isDebugEnabled()) {
- log.debug("commitScript called for " + codeStorage.getName());
- }
-
- try {
- // save script before commit
- saveScript();
-
- String msg = JOptionPane.showInputDialog(t("isisfish.message.script.commit", codeStorage.getName()));
- if (msg == null) {
- setStatusMessage(t("isisfish.message.commit.cancelled"));
- } else {
- codeStorage.commit(msg);
- codeStorage.reload();
- setStatusMessage(t("isisfish.message.commit.finished"));
- }
- } catch (Exception ex) {
- if (log.isErrorEnabled()) {
- log.error("Error on script commit", ex);
- }
-
- // if vcs can't write
- ErrorHelper.showErrorDialog(ex.getMessage(), ex);
- }
- }
-
- /**
- * Exporte le(s) script(s) sélectionnés dans l'arbre.
- * <br>L'arbre doit avoir au moins un script de selectionnés
- */
- public void exportScript() {
-
- TreePath[] selectedFilesPath = scriptUI.getScriptTree().getSelectionPaths();
-
- // first step : acquire list of files required
- int prefixLength = IsisFish.config.getDatabaseDirectory()
- .getAbsolutePath().length() + 1;
- List<String> listFiles = extractFiles(prefixLength, selectedFilesPath);
-
- }
-
- protected static List<String> extractFiles(int prefixLength,
- TreePath[] selectedPaths) {
- List<String> result = new ArrayList<String>();
- List<File> dirFound = new ArrayList<File>();
- List<File> dirWithFileFound = new ArrayList<File>();
-
- for (TreePath selectedPath : selectedPaths) {
-
- DefaultMutableTreeNode node = (DefaultMutableTreeNode) selectedPath
- .getPathComponent(1);
- String moduleDisplayName = String.valueOf(node.getUserObject());
- File file = ScriptMapping.valueOf(moduleDisplayName).getModule();
- int nbPaths = selectedPath.getPathCount();
- if (nbPaths > 2)
- for (int i = 2; i < nbPaths; i++) {
- node = (DefaultMutableTreeNode) selectedPath
- .getPathComponent(i);
- String pathName = String.valueOf(node.getUserObject());
- file = new File(file, pathName);
- }
- if (file.isFile()) {
- File parentFile = file.getParentFile();
- if (!dirFound.contains(parentFile)) {
- dirFound.add(parentFile);
- }
- dirWithFileFound.add(parentFile);
- result.add(file.getAbsolutePath().substring(prefixLength));
- } else {
- // mark the file
- dirFound.add(file);
- }
- }
-
- // keep only user selected directories
- dirFound.removeAll(dirWithFileFound);
- dirWithFileFound.clear();
-
- if (!dirFound.isEmpty()) {
- List<File> listF = new ArrayList<File>();
- // there is some directories selected by user
- for (File dir : dirFound) {
- FileFilter filter = new FileFilter() {
- FileFilter excludeFilter = getScriptFileFilter();
-
- public boolean accept(File pathname) {
- return !excludeFilter.accept(pathname);
- }
- };
- listF.addAll(FileUtil.getFilteredElements(dir, filter, true));
- }
- for (File file : listF)
- result.add(file.getAbsolutePath().substring(prefixLength));
- listF.clear();
- }
- dirFound.clear();
- return result;
- }
-
- /**
- * Cut selection in current editor.
- */
- public void cut() {
- scriptUI.getEditor().cut();
- }
-
- /**
- * Copy selection in current editor.
- */
- public void copy() {
- scriptUI.getEditor().copy();
- }
-
- /**
- * Paste clipboard content in editor.
- */
- public void paste() {
- scriptUI.getEditor().paste();
- }
-
- protected static FileFilter scriptFileFilter;
-
- public static FileFilter getScriptFileFilter() {
- if (scriptFileFilter == null) {
- scriptFileFilter = new ScriptFileFilter(IsisFish.vcs);
- }
- return scriptFileFilter;
- }
-
- /**
- * Check script content.
- *
- * @return compilation success flag
- */
- public boolean checkScript() {
-
- boolean check = false;
-
- // can't compile formule
- if (codeStorage instanceof FormuleStorage) {
- return false;
- }
-
- if (log.isDebugEnabled()) {
- log.debug("checkScript called");
- }
- // save script before compile
- saveScript();
-
- JavaSourceStorage javaCode = (JavaSourceStorage) codeStorage;
- StringWriter result = new StringWriter();
- PrintWriter out = new PrintWriter(result);
- try {
- int compileResult = javaCode.compile(false, out);
-
- if (compileResult == 0) {
- check = true;
- }
- } catch (Exception eee) {
- eee.printStackTrace(out);
- }
- out.flush();
-
- if (check) {
- scriptUI.getActionLogArea().setText(
- t("isisfish.script.compilation.ok", result.toString()));
- scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS);
- } else {
- scriptUI.getActionLogArea().setText(
- t("isisfish.script.compilation.failed", result
- .toString()));
- scriptUI.getActionLogArea().setBackground(COLOR_FAILURE);
- }
-
- setStatusMessage(t("isisfish.message.check.finished"));
- return check;
- }
-
- /**
- * Check all scripts.
- */
- public void checkAllScripts() {
-
- setStatusMessage(t("isisfish.message.check.inprogress"), true);
-
- boolean allSuccess = true;
-
- // reste previous state
- scriptUI.getActionLogArea().setBackground(null);
- scriptUI.getActionLogArea().setText("");
-
- for (ScriptMapping scriptMapping : ScriptMapping.values()) {
- // normalement ne match pas les formules
- // le cas est différent pour les formules
- // le fichier java ne sont pas compilable sans la formule associée
- List<File> javaFiles = FileUtil.find(scriptMapping.getModule(), ".+\\.java$", false);
- for (File javaFile : javaFiles) {
- scriptUI.getActionLogArea().append(t("isisfish.script.compilingfile", javaFile));
-
- StringWriter result = new StringWriter();
- PrintWriter out = new PrintWriter(result);
- int compileResult = CompileHelper.compile(IsisFish.config.getDatabaseDirectory(), javaFile, IsisFish.config.getCompileDirectory(), out);
- out.flush();
-
- if (compileResult == 0) {
- scriptUI.getActionLogArea().append(t("isisfish.common.ok") + "\n");
- }
- else {
- scriptUI.getActionLogArea().append(t("isisfish.common.error") + ":\n");
- scriptUI.getActionLogArea().append(result.toString() + "\n");
- scriptUI.getActionLogArea().setBackground(COLOR_FAILURE);
- allSuccess = false;
- }
-
- // scroll down
- scriptUI.getActionLogArea().setCaretPosition(scriptUI.getActionLogArea().getText().length());
- }
- }
-
- // set final color
- if (allSuccess) {
- scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS);
- }
-
- setStatusMessage(t("isisfish.message.check.finished"));
- }
-
- /**
- * Call main method in current cod storage code.
- * Check script before call.
- */
- public void evaluateScript() {
-
- if (log.isDebugEnabled()) {
- log.debug("evaluateScript called");
- }
-
- try {
- if (checkScript()) {
- // reset area color
- scriptUI.getActionLogArea().setBackground(null);
-
- JavaSourceStorage javaCode = (JavaSourceStorage) codeStorage;
- ByteArrayOutputStream result = new ByteArrayOutputStream();
- PrintStream out = new PrintStream(result);
- PrintStream err = new PrintStream(result);
- PrintStream oldOut = System.out;
- PrintStream oldErr = System.err;
- System.setOut(out);
- System.setErr(err);
- Class<?> clazz = javaCode.getCodeClass();
- Method main = clazz.getMethod("main", String[].class);
- //noinspection RedundantArrayCreation
- main.invoke(null, new Object[] { new String[] {} });
- System.setOut(oldOut);
- System.setErr(oldErr);
- scriptUI.getActionLogArea().setText(result.toString());
- }
- } catch (Exception ex) {
- if (log.isDebugEnabled()) {
- log.debug("Error on script evaluation", ex);
- }
- ByteArrayOutputStream result = new ByteArrayOutputStream();
- PrintStream out = new PrintStream(result);
- ex.printStackTrace(out);
- scriptUI.getActionLogArea().setText(result.toString());
- }
- setStatusMessage(t("isisfish.message.evaluation.finished"));
- }
-
- /**
- * Copy a single file to destination directory.
- *
- * @param src file to copy
- * @param path path of file to copy
- * @param suffix file suffix
- * @throws IOException if copy fail
- */
- protected void backup(File src, String path, String suffix)
- throws IOException {
-
- }
-
- /**
- * Scan archive for script, and return an array of new files and conflict files.
- *
- * @param source archive file
- * @param root database directory
- * @return an array [newFiles, conflictFiles]
- */
- protected static List<String>[] scanZip(File source, File root) {
-
- List<String> overwrittenFiles = new ArrayList<String>();
- List<String> newFiles = new ArrayList<String>();
-
- // ontain list of relative paths (to add or overwrite)
- try {
- ZipUtil.scan(source, root, newFiles, overwrittenFiles,
- getScriptFileFilter(), null, null);
- } catch (IOException e) {
- log.error("Can't scan zip (" + source + ")", e);
- throw new RuntimeException(e);
- }
-
- return new List[] { newFiles, overwrittenFiles };
- }
-
- /**
- * Delete a script
- *
- * @param deleteRemote {@code true} to remove in vcs too
- */
- public void deleteScript(boolean deleteRemote) {
-
- if (log.isDebugEnabled()) {
- log.debug("DeleteScript called");
- }
-
- String name = codeStorage.getName();
- int resp = JOptionPane.showConfirmDialog(scriptUI, t("isisfish.message.confirm.remove.script", name),
- null, JOptionPane.YES_NO_OPTION);
- if (resp == JOptionPane.YES_OPTION) {
- // stay in UI even if deleted
- scriptUI.getEditor().close();
-
- try {
- // TODO change this, need to be called before
- // effective deletion
- scriptUI.getScriptTreeModel().fileDeleted(codeStorage.getFile());
-
- //TODO desactive editor
- //TODO Review this because after delete fi file saw previously
- //TODO modified, it ask if we want to save, and then we have
- //TODO again the file in panel but not in tree panel ?
- codeStorage.delete(deleteRemote);
- if (codeStorage.getFile().exists()) {
- ErrorHelper.showErrorDialog(t("isisfish.error.script.delete", codeStorage
- .getFile()));
- }
- } catch (Exception eee) {
- returnError(t("isisfish.error.script.delete",
- codeStorage == null ? null : codeStorage.getFile(), eee
- .getMessage()), eee);
- }
- setStatusMessage(t("isisfish.message.delete.finished"));
- } else {
- setStatusMessage(t("isisfish.message.delete.canceled"));
- }
- }
-
- /**
- * Show diff between selected files and files server version.
- */
- public void diffScript() {
-
- if (log.isDebugEnabled()) {
- log.debug("Method diffScript called on " + codeStorage.getFile());
- }
-
- try {
- String result = null;
- if (IsisFish.vcs.isOnRemote(codeStorage.getFile())) {
- result = IsisFish.vcs.getDiff(codeStorage.getFile());
- } else {
- result = "File not on remote";
- }
- scriptUI.getActionLogArea().setText(result);
- } catch (VCSException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't get diff", e);
- }
- ErrorHelper.showErrorDialog(t("isisfish.vcs.vcssvn.diff.error"), e);
- }
- }
-
- /** enum to encapsulate a script module */
- protected enum ScriptMapping {
-
- Export(
- ExportStorage.getExportDirectory(),
- ExportStorage.EXPORT_TEMPLATE, true),
- ExportStep(
- ExportStorage.getExportDirectory(),
- ExportStorage.EXPORT_STEP_TEMPLATE, true),
- Rule(
- RuleStorage.getRuleDirectory(),
- RuleStorage.RULE_TEMPLATE, true),
- Objective(
- ObjectiveStorage.getObjectiveDirectory(),
- ObjectiveStorage.OBJECTIVE_TEMPLATE, true),
- Optimization(
- OptimizationStorage.getOptimizationDirectory(),
- OptimizationStorage.OPTIMIZATION_TEMPLATE, true),
- Script(
- ScriptStorage.getScriptDirectory(),
- ScriptStorage.SCRIPT_TEMPLATE, true),
- Sensitivity(
- SensitivityAnalysisStorage.getSensitivityAnalysisDirectory(),
- SensitivityAnalysisStorage.SENSITIVITY_ANALYSIS_TEMPLATE, true),
- SensitivityExport(
- SensitivityExportStorage.getSensitivityExportDirectory(),
- SensitivityExportStorage.SENSITIVITY_EXPORT_TEMPLATE, true),
- SimulationPlan(
- SimulationPlanStorage.getSimulationPlanDirectory(),
- SimulationPlanStorage.SIMULATION_PLAN_TEMPLATE, true),
- Simulator(
- SimulatorStorage.getSimulatorDirectory(),
- SimulatorStorage.SIMULATOR_TEMPLATE, true),
- Formule(
- FormuleStorage.getFormuleDirectory(),
- FormuleStorage.FORMULE_TEMPLATE, true),
-
- CommunityExport(
- ExportStorage.getCommunityExportDirectory(),
- ExportStorage.EXPORT_TEMPLATE),
- CommunityExportStep(
- ExportStorage.getCommunityExportDirectory(),
- ExportStorage.EXPORT_STEP_TEMPLATE),
- CommunityObjective(
- ObjectiveStorage.getCommunityObjectiveDirectory(),
- ObjectiveStorage.OBJECTIVE_TEMPLATE, true),
- CommunityOptimization(
- OptimizationStorage.getCommunityOptimizationDirectory(),
- OptimizationStorage.OPTIMIZATION_TEMPLATE, true),
- CommunityRule(
- RuleStorage.getCommunityRuleDirectory(),
- RuleStorage.RULE_TEMPLATE),
- CommunityScript(
- ScriptStorage.getCommunityScriptDirectory(),
- ScriptStorage.SCRIPT_TEMPLATE),
- CommunitySensitivity(
- SensitivityAnalysisStorage.getCommunitySensitivityAnalysisDirectory(),
- SensitivityAnalysisStorage.SENSITIVITY_ANALYSIS_TEMPLATE),
- CommunitySensitivityExport(
- SensitivityExportStorage.getCommunitySensitivityExportDirectory(),
- SensitivityExportStorage.SENSITIVITY_EXPORT_TEMPLATE),
- CommunitySimulationPlan(
- SimulationPlanStorage.getCommunitySimulationPlanDirectory(),
- SimulationPlanStorage.SIMULATION_PLAN_TEMPLATE),
- CommunitySimulator(
- SimulatorStorage.getCommunitySimulatorDirectory(),
- SimulatorStorage.SIMULATOR_TEMPLATE),
- CommunityFormule(
- FormuleStorage.getCommunityFormuleDirectory(),
- FormuleStorage.FORMULE_TEMPLATE);
-
- protected File module;
- protected String templatePath;
- protected boolean officialVCS;
-
- private ScriptMapping(File module, String templatePath) {
- this(module, templatePath, false);
- }
-
- private ScriptMapping(File module, String templatePath, boolean officialVCS) {
- this.module = module;
- this.templatePath = templatePath;
- this.officialVCS = officialVCS;
- }
-
- /**
- * Get script type for script path.
- *
- * @param file file to get type
- * @return ScriptMapping type
- */
- public static ScriptMapping getMappingFor(File file) {
-
- ScriptMapping result = null;
-
- // test if path starts with type begin path
-
- // don't forget last / for distinction begin
- // "sensitivity" and "sensitivityexport"
- for (ScriptMapping mapping : ScriptMapping.values()) {
- if (file.getAbsolutePath().startsWith(mapping.getModule().getAbsolutePath() + File.separator)) {
- result = mapping;
- }
- }
-
- return result;
- }
-
- public File getModule() {
- return module;
- }
-
- public String getTemplatePath() {
- return templatePath;
- }
-
- public boolean isOfficialVCS() {
- return officialVCS;
- }
- }
-
- /**
- * Generate javadoc and display output in UI.
- */
- public void generateScriptJavadoc() {
- setStatusMessage(t("isisfish.script.menu.javadocgenerating",
- IsisFish.config.getJavadocDirectory()), true);
-
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- File rootDatabase = IsisFish.config.getDatabaseDirectory();
- File javadocDirectory = IsisFish.config.getJavadocDirectory();
-
- StringWriter output = new StringWriter();
- PrintWriter out = new PrintWriter(output);
- int ok = JavadocHelper.generateJavadoc(rootDatabase,
- javadocDirectory, out);
-
- if (ok == 0) {
- scriptUI.getActionLogArea().setText(
- t("isisfish.script.javadoc.ok", output.toString()));
- // vert leger
- scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS);
- } else {
- scriptUI.getActionLogArea().setText(
- t("isisfish.script.compilation.failed", output
- .toString()));
- // rouge leger
- scriptUI.getActionLogArea().setBackground(COLOR_FAILURE);
- }
-
- setStatusMessage(t("isisfish.script.menu.javadocgenerated",
- IsisFish.config.getJavadocDirectory()));
- }
- });
- }
-
- /**
- * Open a browser displaying javadoc.
- */
- public void showScriptJavadoc() {
- try {
- // in faut ouvrir l'index, sinon, ca ouvre
- // un explorateur de fichier
- File indexFile = new File(IsisFish.config.getJavadocDirectory(),
- "index.html");
-
- URI uri = indexFile.toURI();
- Desktop.getDesktop().browse(uri);
- } catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("Can't show script javadocs", e);
- }
- }
- }
-
- /*
- * @see javax.swing.event.CaretListener#caretUpdate(javax.swing.event.CaretEvent)
- */
- @Override
- public void caretUpdate(CaretEvent e) {
- // selection pas vide si dot = mark
- scriptUI.setTextSelected(e.getDot() != e.getMark());
- }
-
- /**
- * Move files.
- * (called by drag and drop handler).
- *
- * @param directory directory to moves files to
- * @param filesToMove files to move to directory
- */
- public void moveFiles(File directory, Collection<File> filesToMove) {
-
- ScriptTreeModel model = scriptUI.getScriptTreeModel();
- for (File fileToMove : filesToMove) {
- model.fileDeleted(fileToMove);
- File destFile = new File(directory, fileToMove.getName());
- try {
- FileUtils.moveFile(fileToMove, destFile);
- } catch (IOException ex) {
- throw new IsisFishRuntimeException("Can't move file", ex);
- }
- model.fileAdded(destFile);
- }
- }
-}
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptHandler.java (from rev 4226, trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptAction.java)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,1163 @@
+/*
+ * #%L
+ * IsisFish
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2006 - 2015 Ifremer, Code Lutin, Cédric Pineau, Benjamin Poussin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+package fr.ifremer.isisfish.ui.script;
+
+import static org.nuiton.i18n.I18n.t;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Desktop;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.lang.reflect.Method;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPopupMenu;
+import javax.swing.SwingUtilities;
+import javax.swing.SwingWorker;
+import javax.swing.event.CaretEvent;
+import javax.swing.event.CaretListener;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.TreePath;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.ZipUtil;
+
+import fr.ifremer.isisfish.IsisFish;
+import fr.ifremer.isisfish.IsisFishRuntimeException;
+import fr.ifremer.isisfish.datastore.CodeSourceStorage;
+import fr.ifremer.isisfish.datastore.CodeSourceStorage.Location;
+import fr.ifremer.isisfish.datastore.ExportStorage;
+import fr.ifremer.isisfish.datastore.FormuleStorage;
+import fr.ifremer.isisfish.datastore.JavaSourceStorage;
+import fr.ifremer.isisfish.datastore.ObjectiveStorage;
+import fr.ifremer.isisfish.datastore.OptimizationStorage;
+import fr.ifremer.isisfish.datastore.RuleStorage;
+import fr.ifremer.isisfish.datastore.ScriptStorage;
+import fr.ifremer.isisfish.datastore.SensitivityAnalysisStorage;
+import fr.ifremer.isisfish.datastore.SensitivityExportStorage;
+import fr.ifremer.isisfish.datastore.SimulationPlanStorage;
+import fr.ifremer.isisfish.datastore.SimulatorStorage;
+import fr.ifremer.isisfish.equation.Language;
+import fr.ifremer.isisfish.ui.WelcomePanelUI;
+import fr.ifremer.isisfish.ui.script.model.ScriptTree;
+import fr.ifremer.isisfish.ui.script.model.ScriptTreeModel;
+import fr.ifremer.isisfish.ui.util.ErrorHelper;
+import fr.ifremer.isisfish.util.CompileHelper;
+import fr.ifremer.isisfish.util.JavadocHelper;
+import fr.ifremer.isisfish.vcs.VCSException;
+import freemarker.cache.ClassTemplateLoader;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+
+/**
+ * ScriptAction.
+ *
+ * Template are now loaded with freemarker.
+ *
+ * @author letellier
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class ScriptHandler implements TreeSelectionListener, CaretListener {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ private static Log log = LogFactory.getLog(ScriptHandler.class);
+
+ /** Couleur de succes (vert leger). */
+ protected static final Color COLOR_SUCCESS = new Color(210, 255, 210);
+
+ /** Couleur d'echec (rouge leger). */
+ protected static final Color COLOR_FAILURE = new Color(255, 210, 210);
+
+ /** Storage for currently edited file. */
+ protected CodeSourceStorage codeStorage;
+
+ /** Freemarke configuration used to create new script (based on templates). */
+ protected Configuration freemarkerConfiguration;
+
+ /** UI managed by this action class. */
+ protected ScriptUI scriptUI;
+
+ /**
+ * Constructeur.
+ *
+ * Init freemarker.
+ *
+ * @param scriptUI managed script UI
+ */
+ public ScriptHandler(ScriptUI scriptUI) {
+
+ this.scriptUI = scriptUI;
+
+ freemarkerConfiguration = new Configuration(Configuration.VERSION_2_3_0);
+ // needed to overwrite "Defaults to default system encoding."
+ // fix encoding issue on some systems
+ freemarkerConfiguration.setDefaultEncoding("utf-8");
+ // specific template loader to get template from jars (classpath)
+ ClassTemplateLoader templateLoader = new ClassTemplateLoader(ScriptHandler.class, "/");
+ freemarkerConfiguration.setTemplateLoader(templateLoader);
+
+ }
+
+ /**
+ * Post init, must be called after ui building.
+ */
+ public void afterInit() {
+
+ ScriptTree scriptTree = this.scriptUI.getScriptTree();
+
+ // add listeners
+ scriptTree.addTreeSelectionListener(this);
+ this.scriptUI.getEditor().addCaretListener(this);
+
+ // expand official VCS tree node
+ scriptTree.expandRow(0);
+ }
+
+ /**
+ * Update script UI component actions buttons.
+ */
+ protected void setButton() {
+
+ File selectedFile = scriptUI.getScriptTree().getSelectedFile();
+
+ if (selectedFile != null) {
+ scriptUI.setSingleFileSelected(selectedFile.isFile());
+ scriptUI.setJavaFileSelected(selectedFile.getName().endsWith(".java"));
+ } else {
+ scriptUI.setSingleFileSelected(false);
+ scriptUI.setJavaFileSelected(false);
+ }
+ }
+
+ protected void setStatusMessage(String msg) {
+ // FIXME remove all parent container reference
+ WelcomePanelUI parentUI = scriptUI.getParentContainer(WelcomePanelUI.class);
+ parentUI.setStatusMessage(msg);
+ }
+ protected void setStatusMessage(String msg, boolean running) {
+ // FIXME remove all parent container reference
+ WelcomePanelUI parentUI = scriptUI.getParentContainer(WelcomePanelUI.class);
+ parentUI.setStatusMessage(msg, running);
+ }
+
+ /**
+ * Make new script, and select it on tree.
+ */
+ public void newScript(MouseEvent event) {
+ JPopupMenu menu = new JPopupMenu();
+
+ // make a basic copy of already existing menu
+ JMenu oldMenu = scriptUI.getScriptNewMenu();
+ for (int i = 0; i < oldMenu.getItemCount(); i++) {
+ JMenuItem oldMenuItem = (JMenuItem)oldMenu.getMenuComponent(i);
+ JMenuItem miCopy = new JMenuItem();
+ miCopy.setText(oldMenuItem.getText());
+ miCopy.setIcon(oldMenuItem.getIcon());
+ for (ActionListener l : oldMenuItem.getActionListeners()) {
+ miCopy.addActionListener(l);
+ }
+ menu.add(miCopy);
+ }
+
+ menu.show((Component)event.getSource(), event.getX(), event.getY());
+ }
+
+ /**
+ * Make new script, and select it on tree.
+ *
+ * @param scriptType script to make
+ */
+ public void newScript(ScriptMapping scriptType) {
+
+ String equationModelType = "";
+ String equationModelTypePath = "";
+
+ // specific case for equation model
+ if (scriptType.equals(ScriptMapping.Formule)) {
+ List<String> values = FormuleStorage.getCategories();
+ equationModelType = (String) JOptionPane.showInputDialog(scriptUI,
+ t("isisfish.message.new.formule.category"),
+ t("isisfish.message.new.formule.title"),
+ JOptionPane.PLAIN_MESSAGE, null, values.toArray(), values.get(0));
+ equationModelTypePath = equationModelType + File.separator;
+ }
+
+ // if user has not choose "cancel"
+ if (equationModelType != null) {
+ String fileName = JOptionPane.showInputDialog(t("isisfish.message.new.filename"));
+ // user cancel
+ if (!StringUtils.isEmpty(fileName)) {
+ File scriptFile = newScript(equationModelTypePath + fileName, scriptType);
+ // creation successful
+ if (scriptFile != null) {
+ ScriptTreeModel model = scriptUI.getScriptTreeModel();
+ model.fileAdded(scriptFile);
+ TreePath treePath = model.getTreePathFor(scriptFile);
+ scriptUI.getScriptTree().setSelectionPath(treePath);
+ }
+ }
+ }
+ }
+
+ /**
+ * Creer un nouveau script, ici un script peut-etre un Script, un Simulator,
+ * un Export.
+ *
+ * @param fileName full filename
+ * @param scriptType le type que l'on souhaite Script, Simulator, ou Export.
+ * @return created file or {@code null} if any error happen
+ */
+ protected File newScript(String fileName, ScriptMapping scriptType) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("newScript called [" + scriptType + "]");
+ }
+
+ File scriptFile = null;
+
+ try {
+ // Vérifie qu'il n'y pas de caractères spéciaux. Seul les caractre
+ // de a à z (majuscule ou minuscule) ainsi que les nombres sont
+ // autorisés. + pour signifier qu'il doit y avoir
+ // au moins 1 caractère.
+ String realFilename;
+ String category;
+
+ int pos = fileName.lastIndexOf('/');
+ if (pos != -1) {
+ if (scriptType != ScriptMapping.Formule) {
+ // interdit pour le moment ?
+ String message = t("isisfish.error.invalid.file.name",
+ fileName);
+ Exception e = new RuntimeException(message);
+ returnError(t("isisfish.error.script.create", fileName, e.getMessage()), e);
+ return null;
+ }
+ // il y a un sous type à traiter
+ if (pos == fileName.length() - 1) {
+ String message = t("isisfish.error.invalid.file.name",
+ fileName);
+ Exception e = new RuntimeException(message);
+ returnError(t("isisfish.error.script.create", fileName, e.getMessage()), e);
+ return null;
+ }
+ realFilename = fileName
+ .substring(fileName.lastIndexOf('/') + 1);
+ category = fileName.substring(0, fileName.lastIndexOf('/'));
+ } else {
+ realFilename = fileName;
+ category = "";
+ }
+ if (!realFilename.matches("[A-Z0-9_][a-zA-Z0-9_]*")) {
+ String message = t("isisfish.error.invalid.file.name", fileName);
+ Exception e = new RuntimeException(message);
+ returnError(t("isisfish.error.script.create", fileName, e.getMessage()), e);
+ return null;
+ }
+ //TODO do test on category
+ CodeSourceStorage script = null;
+ switch (scriptType) {
+ case CommunityFormule:
+ script = FormuleStorage.createFormule(category, realFilename,
+ Language.JAVA);
+ break;
+ case CommunitySimulationPlan:
+ script = SimulationPlanStorage.createSimulationPlan(fileName, Location.COMMUNITY);
+ break;
+ case CommunityExport:
+ case CommunityExportStep:
+ script = ExportStorage.createExport(fileName, Location.COMMUNITY);
+ break;
+ case CommunityObjective:
+ script = ObjectiveStorage.createObjective(fileName, Location.COMMUNITY);
+ break;
+ case CommunityOptimization:
+ script = OptimizationStorage.createOptimization(fileName, Location.COMMUNITY);
+ break;
+ case CommunityRule:
+ script = RuleStorage.createRule(fileName, Location.COMMUNITY);
+ break;
+ case CommunityScript:
+ script = ScriptStorage.createScript(fileName, Location.COMMUNITY);
+ break;
+ case CommunitySimulator:
+ script = SimulatorStorage.createSimulator(fileName, Location.COMMUNITY);
+ break;
+ case CommunitySensitivity:
+ script = SensitivityAnalysisStorage.createSensitivityAnalysis(fileName, Location.COMMUNITY);
+ break;
+ case CommunitySensitivityExport:
+ script = SensitivityExportStorage
+ .createSensitivityExport(fileName, Location.COMMUNITY);
+ break;
+ default:
+ if (log.isErrorEnabled()) {
+ log.fatal("ScriptType unknown: " + scriptType);
+ }
+ }
+
+ if (script.exists()) {
+ // Message d'erreur si le fichier existe en local.
+ String message = t("isisfish.error.file.already.exists", fileName);
+ Exception e = new RuntimeException(message);
+ returnError(t("isisfish.error.script.create", fileName, e
+ .getMessage()), e);
+ }
+
+ String scriptTemplatePath = scriptType.getTemplatePath();
+
+ if (scriptTemplatePath != null) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Parsing freemarker template located in "
+ + scriptTemplatePath);
+ }
+
+ // get template
+ Template template = freemarkerConfiguration
+ .getTemplate(scriptTemplatePath);
+
+ // context values
+ Map<String, Object> root = new HashMap<String, Object>();
+ root.put("name", realFilename);
+ root.put("date", new Date());
+ root.put("author", IsisFish.config.getUserName());
+ root.put("email", IsisFish.config.getUserMail());
+
+ // process template
+ Writer out = new StringWriter();
+ template.process(root, out);
+ out.flush();
+ script.setContent(out.toString());
+ } else {
+ throw new IsisFishRuntimeException("There is no templatePath");
+ }
+
+ codeStorage = script;
+ scriptFile = script.getFile();
+ } catch (Exception eee) {
+ returnError(t("isisfish.error.script.create", fileName, eee
+ .getMessage()), eee);
+ }
+
+ return scriptFile;
+ }
+
+ /**
+ * Write error in log and display exception to user.
+ *
+ * @param s message
+ * @param eee cause
+ */
+ protected void returnError(String s, Exception eee) {
+ if (log.isErrorEnabled()) {
+ log.error(s, eee);
+ }
+ ErrorHelper.showErrorDialog(s, eee);
+ }
+
+ /*
+ * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
+ */
+ @Override
+ public void valueChanged(TreeSelectionEvent e) {
+ if (e.getNewLeadSelectionPath() != null) {
+ Object selectedNode = e.getNewLeadSelectionPath().getLastPathComponent();
+ if (selectedNode instanceof File && ((File)selectedNode).isFile()) {
+ File selectedFile = (File)selectedNode;
+ // load file into current action codeStorage
+ loadScript(selectedFile);
+ scriptUI.getEditor().open(selectedFile);
+ // force refresh
+ scriptUI.getEditor().repaint();
+ scriptUI.getEditor().validate();
+
+ setButton();
+ }
+ else {
+ scriptUI.getEditor().close();
+ // force refresh
+ scriptUI.getEditor().repaint();
+ scriptUI.getEditor().validate();
+
+ setButton();
+ }
+ }
+ }
+
+ /**
+ * Load specified script in current action.
+ *
+ * TODO can we change this ?
+ *
+ * @param file file to load
+ */
+ public void loadScript(File file) {
+ ScriptMapping mapping = ScriptMapping.getMappingFor(file);
+ CodeSourceStorage script = null;
+
+ try {
+ switch (mapping) {
+ case Formule:
+ case CommunityFormule:
+ String fullPath = file.getAbsolutePath();
+ int lastIndexOf = fullPath.lastIndexOf('/');
+ // in string .../aaa/bbb/ccc/ddd.java
+ // get ccc
+ String category = fullPath.substring(fullPath.lastIndexOf('/',
+ lastIndexOf - 1) + 1, lastIndexOf);
+ if (mapping.equals(ScriptMapping.Formule)) {
+ script = FormuleStorage.getFormule(category, file.getName());
+ } else {
+ script = FormuleStorage.getCommunityFormule(category, file.getName());
+ }
+ break;
+ case Rule:
+ script = RuleStorage.getRule(file.getName(), Location.OFFICIAL);
+ break;
+ case Objective:
+ script = ObjectiveStorage.getObjective(file.getName(), Location.OFFICIAL);
+ break;
+ case Optimization:
+ script = OptimizationStorage.getOptimization(file.getName(), Location.OFFICIAL);
+ break;
+ case SimulationPlan:
+ script = SimulationPlanStorage.getSimulationPlan(file.getName(), Location.OFFICIAL);
+ break;
+ case Export:
+ case ExportStep:
+ script = ExportStorage.getExport(file.getName(), Location.OFFICIAL);
+ break;
+ case Script:
+ script = ScriptStorage.getScript(file.getName(), Location.OFFICIAL);
+ break;
+ case Simulator:
+ script = SimulatorStorage.getSimulator(file.getName(), Location.OFFICIAL);
+ break;
+ case Sensitivity:
+ script = SensitivityAnalysisStorage.getSensitivityAnalysis(file.getName(), Location.OFFICIAL);
+ break;
+ case SensitivityExport:
+ script = SensitivityExportStorage.getSensitivityExport(file.getName(), Location.OFFICIAL);
+ break;
+ case CommunityObjective:
+ script = ObjectiveStorage.getObjective(file.getName(), Location.COMMUNITY);
+ break;
+ case CommunityOptimization:
+ script = OptimizationStorage.getOptimization(file.getName(), Location.COMMUNITY);
+ break;
+ case CommunityRule:
+ script = RuleStorage.getRule(file.getName(), Location.COMMUNITY);
+ break;
+ case CommunitySimulationPlan:
+ script = SimulationPlanStorage.getSimulationPlan(file.getName(), Location.COMMUNITY);
+ break;
+ case CommunityExport:
+ case CommunityExportStep:
+ script = ExportStorage.getExport(file.getName(), Location.COMMUNITY);
+ break;
+ case CommunityScript:
+ script = ScriptStorage.getScript(file.getName(), Location.COMMUNITY);
+ break;
+ case CommunitySimulator:
+ script = SimulatorStorage.getSimulator(file.getName(), Location.COMMUNITY);
+ break;
+ case CommunitySensitivity:
+ script = SensitivityAnalysisStorage.getSensitivityAnalysis(file.getName(), Location.COMMUNITY);
+ break;
+ case CommunitySensitivityExport:
+ script = SensitivityExportStorage.getSensitivityExport(file.getName(), Location.COMMUNITY);
+ break;
+ default:
+ log.fatal("ScriptType unknown: " + file.getName());
+ }
+
+ //frame.setInfoText(t("isisfish.message.load.finished"));
+ } catch (Exception eee) {
+ returnError(t("isisfish.error.script.load", file.getAbsolutePath(),
+ eee.getMessage()), eee);
+
+ } finally {
+ codeStorage = script;
+ }
+ }
+
+ public boolean fileLoaded() {
+ return codeStorage != null;
+ }
+
+ public boolean isJavaScript() {
+ return JavaSourceStorage.class.isInstance(codeStorage);
+ }
+
+ /**
+ * Save current editor test in current loaded codeStorage.
+ */
+ public void saveScript() {
+ if (log.isDebugEnabled()) {
+ log.debug("saveScript called on " + codeStorage.getName());
+ }
+
+ try {
+ // setContent() or scriptUI.getEditor().save()
+ // if setContent() only editor ask for t saving
+ scriptUI.getEditor().save();
+ String content = scriptUI.getEditor().getText();
+ codeStorage.setContent(content, false);
+
+ // notify tree to refresh
+ ScriptTreeModel model = scriptUI.getScriptTreeModel();
+ model.fileModified(codeStorage.getFile());
+ } catch (Exception eee) {
+ returnError(t("isisfish.error.script.save", codeStorage.getFile(),
+ eee.getMessage()), eee);
+ }
+ setStatusMessage(t("isisfish.message.save.finished"));
+ }
+
+ /**
+ * Save script, and display commit UI.
+ */
+ public void commitScript() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("commitScript called for " + codeStorage.getName());
+ }
+
+ try {
+ // save script before commit
+ saveScript();
+
+ String msg = JOptionPane.showInputDialog(t("isisfish.message.script.commit", codeStorage.getName()));
+ if (msg == null) {
+ setStatusMessage(t("isisfish.message.commit.cancelled"));
+ } else {
+ codeStorage.commit(msg);
+ codeStorage.reload();
+ setStatusMessage(t("isisfish.message.commit.finished"));
+ }
+ } catch (Exception ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Error on script commit", ex);
+ }
+
+ // if vcs can't write
+ ErrorHelper.showErrorDialog(ex.getMessage(), ex);
+ }
+ }
+
+ /**
+ * Exporte le(s) script(s) sélectionnés dans l'arbre.
+ * <br>L'arbre doit avoir au moins un script de selectionnés
+ */
+ public void exportScript() {
+
+ TreePath[] selectedFilesPath = scriptUI.getScriptTree().getSelectionPaths();
+
+ // first step : acquire list of files required
+ int prefixLength = IsisFish.config.getDatabaseDirectory()
+ .getAbsolutePath().length() + 1;
+ List<String> listFiles = extractFiles(prefixLength, selectedFilesPath);
+
+ }
+
+ protected static List<String> extractFiles(int prefixLength,
+ TreePath[] selectedPaths) {
+ List<String> result = new ArrayList<String>();
+ List<File> dirFound = new ArrayList<File>();
+ List<File> dirWithFileFound = new ArrayList<File>();
+
+ for (TreePath selectedPath : selectedPaths) {
+
+ DefaultMutableTreeNode node = (DefaultMutableTreeNode) selectedPath
+ .getPathComponent(1);
+ String moduleDisplayName = String.valueOf(node.getUserObject());
+ File file = ScriptMapping.valueOf(moduleDisplayName).getModule();
+ int nbPaths = selectedPath.getPathCount();
+ if (nbPaths > 2)
+ for (int i = 2; i < nbPaths; i++) {
+ node = (DefaultMutableTreeNode) selectedPath
+ .getPathComponent(i);
+ String pathName = String.valueOf(node.getUserObject());
+ file = new File(file, pathName);
+ }
+ if (file.isFile()) {
+ File parentFile = file.getParentFile();
+ if (!dirFound.contains(parentFile)) {
+ dirFound.add(parentFile);
+ }
+ dirWithFileFound.add(parentFile);
+ result.add(file.getAbsolutePath().substring(prefixLength));
+ } else {
+ // mark the file
+ dirFound.add(file);
+ }
+ }
+
+ // keep only user selected directories
+ dirFound.removeAll(dirWithFileFound);
+ dirWithFileFound.clear();
+
+ if (!dirFound.isEmpty()) {
+ List<File> listF = new ArrayList<File>();
+ // there is some directories selected by user
+ for (File dir : dirFound) {
+ FileFilter filter = new FileFilter() {
+ FileFilter excludeFilter = getScriptFileFilter();
+
+ public boolean accept(File pathname) {
+ return !excludeFilter.accept(pathname);
+ }
+ };
+ listF.addAll(FileUtil.getFilteredElements(dir, filter, true));
+ }
+ for (File file : listF)
+ result.add(file.getAbsolutePath().substring(prefixLength));
+ listF.clear();
+ }
+ dirFound.clear();
+ return result;
+ }
+
+ /**
+ * Cut selection in current editor.
+ */
+ public void cut() {
+ scriptUI.getEditor().cut();
+ }
+
+ /**
+ * Copy selection in current editor.
+ */
+ public void copy() {
+ scriptUI.getEditor().copy();
+ }
+
+ /**
+ * Paste clipboard content in editor.
+ */
+ public void paste() {
+ scriptUI.getEditor().paste();
+ }
+
+ protected static FileFilter scriptFileFilter;
+
+ public static FileFilter getScriptFileFilter() {
+ if (scriptFileFilter == null) {
+ scriptFileFilter = new ScriptFileFilter(IsisFish.vcs);
+ }
+ return scriptFileFilter;
+ }
+
+ /**
+ * Check script content.
+ *
+ * @return compilation success flag
+ */
+ public boolean checkScript() {
+
+ boolean check = false;
+
+ // can't compile formule
+ if (codeStorage instanceof FormuleStorage) {
+ return false;
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("checkScript called");
+ }
+ // save script before compile
+ saveScript();
+
+ JavaSourceStorage javaCode = (JavaSourceStorage) codeStorage;
+ StringWriter result = new StringWriter();
+ PrintWriter out = new PrintWriter(result);
+ try {
+ int compileResult = javaCode.compile(false, out);
+
+ if (compileResult == 0) {
+ check = true;
+ }
+ } catch (Exception eee) {
+ eee.printStackTrace(out);
+ }
+ out.flush();
+
+ if (check) {
+ scriptUI.getActionLogArea().setText(
+ t("isisfish.script.compilation.ok", result.toString()));
+ scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS);
+ } else {
+ scriptUI.getActionLogArea().setText(
+ t("isisfish.script.compilation.failed", result
+ .toString()));
+ scriptUI.getActionLogArea().setBackground(COLOR_FAILURE);
+ }
+
+ setStatusMessage(t("isisfish.message.check.finished"));
+ return check;
+ }
+
+ /**
+ * Check all scripts.
+ */
+ public void checkAllScripts() {
+ new SwingWorker<Void, Void>() {
+ public Void doInBackground() {
+ checkAllScripts();
+ return null;
+ }
+ }.execute();
+ }
+
+ protected void checkAllScriptsAsync() {
+
+ setStatusMessage(t("isisfish.message.check.inprogress"), true);
+
+ boolean allSuccess = true;
+
+ // reste previous state
+ scriptUI.getActionLogArea().setBackground(null);
+ scriptUI.getActionLogArea().setText("");
+
+ for (ScriptMapping scriptMapping : ScriptMapping.values()) {
+ // normalement ne match pas les formules
+ // le cas est différent pour les formules
+ // le fichier java ne sont pas compilable sans la formule associée
+ List<File> javaFiles = FileUtil.find(scriptMapping.getModule(), ".+\\.java$", false);
+ for (File javaFile : javaFiles) {
+ scriptUI.getActionLogArea().append(t("isisfish.script.compilingfile", javaFile));
+
+ StringWriter result = new StringWriter();
+ PrintWriter out = new PrintWriter(result);
+ int compileResult = CompileHelper.compile(IsisFish.config.getDatabaseDirectory(), javaFile, IsisFish.config.getCompileDirectory(), out);
+ out.flush();
+
+ if (compileResult == 0) {
+ scriptUI.getActionLogArea().append(t("isisfish.common.ok") + "\n");
+ }
+ else {
+ scriptUI.getActionLogArea().append(t("isisfish.common.error") + ":\n");
+ scriptUI.getActionLogArea().append(result.toString() + "\n");
+ scriptUI.getActionLogArea().setBackground(COLOR_FAILURE);
+ allSuccess = false;
+ }
+
+ // scroll down
+ scriptUI.getActionLogArea().setCaretPosition(scriptUI.getActionLogArea().getText().length());
+ }
+ }
+
+ // set final color
+ if (allSuccess) {
+ scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS);
+ }
+
+ setStatusMessage(t("isisfish.message.check.finished"));
+ }
+
+ /**
+ * Call main method in current cod storage code.
+ * Check script before call.
+ */
+ public void evaluateScript() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("evaluateScript called");
+ }
+
+ try {
+ if (checkScript()) {
+ // reset area color
+ scriptUI.getActionLogArea().setBackground(null);
+
+ JavaSourceStorage javaCode = (JavaSourceStorage) codeStorage;
+ ByteArrayOutputStream result = new ByteArrayOutputStream();
+ PrintStream out = new PrintStream(result);
+ PrintStream err = new PrintStream(result);
+ PrintStream oldOut = System.out;
+ PrintStream oldErr = System.err;
+ System.setOut(out);
+ System.setErr(err);
+ Class<?> clazz = javaCode.getCodeClass();
+ Method main = clazz.getMethod("main", String[].class);
+ //noinspection RedundantArrayCreation
+ main.invoke(null, new Object[] { new String[] {} });
+ System.setOut(oldOut);
+ System.setErr(oldErr);
+ scriptUI.getActionLogArea().setText(result.toString());
+ }
+ } catch (Exception ex) {
+ if (log.isDebugEnabled()) {
+ log.debug("Error on script evaluation", ex);
+ }
+ ByteArrayOutputStream result = new ByteArrayOutputStream();
+ PrintStream out = new PrintStream(result);
+ ex.printStackTrace(out);
+ scriptUI.getActionLogArea().setText(result.toString());
+ }
+ setStatusMessage(t("isisfish.message.evaluation.finished"));
+ }
+
+ /**
+ * Copy a single file to destination directory.
+ *
+ * @param src file to copy
+ * @param path path of file to copy
+ * @param suffix file suffix
+ * @throws IOException if copy fail
+ */
+ protected void backup(File src, String path, String suffix)
+ throws IOException {
+
+ }
+
+ /**
+ * Scan archive for script, and return an array of new files and conflict files.
+ *
+ * @param source archive file
+ * @param root database directory
+ * @return an array [newFiles, conflictFiles]
+ */
+ protected static List<String>[] scanZip(File source, File root) {
+
+ List<String> overwrittenFiles = new ArrayList<String>();
+ List<String> newFiles = new ArrayList<String>();
+
+ // ontain list of relative paths (to add or overwrite)
+ try {
+ ZipUtil.scan(source, root, newFiles, overwrittenFiles,
+ getScriptFileFilter(), null, null);
+ } catch (IOException e) {
+ log.error("Can't scan zip (" + source + ")", e);
+ throw new RuntimeException(e);
+ }
+
+ return new List[] { newFiles, overwrittenFiles };
+ }
+
+ /**
+ * Delete a script
+ *
+ * @param deleteRemote {@code true} to remove in vcs too
+ */
+ public void deleteScript(boolean deleteRemote) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("DeleteScript called");
+ }
+
+ String name = codeStorage.getName();
+ int resp = JOptionPane.showConfirmDialog(scriptUI, t("isisfish.message.confirm.remove.script", name),
+ null, JOptionPane.YES_NO_OPTION);
+ if (resp == JOptionPane.YES_OPTION) {
+ // stay in UI even if deleted
+ scriptUI.getEditor().close();
+
+ try {
+ // TODO change this, need to be called before
+ // effective deletion
+ scriptUI.getScriptTreeModel().fileDeleted(codeStorage.getFile());
+
+ //TODO desactive editor
+ //TODO Review this because after delete fi file saw previously
+ //TODO modified, it ask if we want to save, and then we have
+ //TODO again the file in panel but not in tree panel ?
+ codeStorage.delete(deleteRemote);
+ if (codeStorage.getFile().exists()) {
+ ErrorHelper.showErrorDialog(t("isisfish.error.script.delete", codeStorage
+ .getFile()));
+ }
+ } catch (Exception eee) {
+ returnError(t("isisfish.error.script.delete",
+ codeStorage == null ? null : codeStorage.getFile(), eee
+ .getMessage()), eee);
+ }
+ setStatusMessage(t("isisfish.message.delete.finished"));
+ } else {
+ setStatusMessage(t("isisfish.message.delete.canceled"));
+ }
+ }
+
+ /**
+ * Show diff between selected files and files server version.
+ */
+ public void diffScript() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Method diffScript called on " + codeStorage.getFile());
+ }
+
+ try {
+ String result = null;
+ if (IsisFish.vcs.isOnRemote(codeStorage.getFile())) {
+ result = IsisFish.vcs.getDiff(codeStorage.getFile());
+ } else {
+ result = "File not on remote";
+ }
+ scriptUI.getActionLogArea().setText(result);
+ } catch (VCSException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't get diff", e);
+ }
+ ErrorHelper.showErrorDialog(t("isisfish.vcs.vcssvn.diff.error"), e);
+ }
+ }
+
+ /** enum to encapsulate a script module */
+ protected enum ScriptMapping {
+
+ Export(
+ ExportStorage.getExportDirectory(),
+ ExportStorage.EXPORT_TEMPLATE, true),
+ ExportStep(
+ ExportStorage.getExportDirectory(),
+ ExportStorage.EXPORT_STEP_TEMPLATE, true),
+ Rule(
+ RuleStorage.getRuleDirectory(),
+ RuleStorage.RULE_TEMPLATE, true),
+ Objective(
+ ObjectiveStorage.getObjectiveDirectory(),
+ ObjectiveStorage.OBJECTIVE_TEMPLATE, true),
+ Optimization(
+ OptimizationStorage.getOptimizationDirectory(),
+ OptimizationStorage.OPTIMIZATION_TEMPLATE, true),
+ Script(
+ ScriptStorage.getScriptDirectory(),
+ ScriptStorage.SCRIPT_TEMPLATE, true),
+ Sensitivity(
+ SensitivityAnalysisStorage.getSensitivityAnalysisDirectory(),
+ SensitivityAnalysisStorage.SENSITIVITY_ANALYSIS_TEMPLATE, true),
+ SensitivityExport(
+ SensitivityExportStorage.getSensitivityExportDirectory(),
+ SensitivityExportStorage.SENSITIVITY_EXPORT_TEMPLATE, true),
+ SimulationPlan(
+ SimulationPlanStorage.getSimulationPlanDirectory(),
+ SimulationPlanStorage.SIMULATION_PLAN_TEMPLATE, true),
+ Simulator(
+ SimulatorStorage.getSimulatorDirectory(),
+ SimulatorStorage.SIMULATOR_TEMPLATE, true),
+ Formule(
+ FormuleStorage.getFormuleDirectory(),
+ FormuleStorage.FORMULE_TEMPLATE, true),
+
+ CommunityExport(
+ ExportStorage.getCommunityExportDirectory(),
+ ExportStorage.EXPORT_TEMPLATE),
+ CommunityExportStep(
+ ExportStorage.getCommunityExportDirectory(),
+ ExportStorage.EXPORT_STEP_TEMPLATE),
+ CommunityObjective(
+ ObjectiveStorage.getCommunityObjectiveDirectory(),
+ ObjectiveStorage.OBJECTIVE_TEMPLATE, true),
+ CommunityOptimization(
+ OptimizationStorage.getCommunityOptimizationDirectory(),
+ OptimizationStorage.OPTIMIZATION_TEMPLATE, true),
+ CommunityRule(
+ RuleStorage.getCommunityRuleDirectory(),
+ RuleStorage.RULE_TEMPLATE),
+ CommunityScript(
+ ScriptStorage.getCommunityScriptDirectory(),
+ ScriptStorage.SCRIPT_TEMPLATE),
+ CommunitySensitivity(
+ SensitivityAnalysisStorage.getCommunitySensitivityAnalysisDirectory(),
+ SensitivityAnalysisStorage.SENSITIVITY_ANALYSIS_TEMPLATE),
+ CommunitySensitivityExport(
+ SensitivityExportStorage.getCommunitySensitivityExportDirectory(),
+ SensitivityExportStorage.SENSITIVITY_EXPORT_TEMPLATE),
+ CommunitySimulationPlan(
+ SimulationPlanStorage.getCommunitySimulationPlanDirectory(),
+ SimulationPlanStorage.SIMULATION_PLAN_TEMPLATE),
+ CommunitySimulator(
+ SimulatorStorage.getCommunitySimulatorDirectory(),
+ SimulatorStorage.SIMULATOR_TEMPLATE),
+ CommunityFormule(
+ FormuleStorage.getCommunityFormuleDirectory(),
+ FormuleStorage.FORMULE_TEMPLATE);
+
+ protected File module;
+ protected String templatePath;
+ protected boolean officialVCS;
+
+ private ScriptMapping(File module, String templatePath) {
+ this(module, templatePath, false);
+ }
+
+ private ScriptMapping(File module, String templatePath, boolean officialVCS) {
+ this.module = module;
+ this.templatePath = templatePath;
+ this.officialVCS = officialVCS;
+ }
+
+ /**
+ * Get script type for script path.
+ *
+ * @param file file to get type
+ * @return ScriptMapping type
+ */
+ public static ScriptMapping getMappingFor(File file) {
+
+ ScriptMapping result = null;
+
+ // test if path starts with type begin path
+
+ // don't forget last / for distinction begin
+ // "sensitivity" and "sensitivityexport"
+ for (ScriptMapping mapping : ScriptMapping.values()) {
+ if (file.getAbsolutePath().startsWith(mapping.getModule().getAbsolutePath() + File.separator)) {
+ result = mapping;
+ }
+ }
+
+ return result;
+ }
+
+ public File getModule() {
+ return module;
+ }
+
+ public String getTemplatePath() {
+ return templatePath;
+ }
+
+ public boolean isOfficialVCS() {
+ return officialVCS;
+ }
+ }
+
+ /**
+ * Generate javadoc and display output in UI.
+ */
+ public void generateScriptJavadoc() {
+ setStatusMessage(t("isisfish.script.menu.javadocgenerating",
+ IsisFish.config.getJavadocDirectory()), true);
+
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ File rootDatabase = IsisFish.config.getDatabaseDirectory();
+ File javadocDirectory = IsisFish.config.getJavadocDirectory();
+
+ StringWriter output = new StringWriter();
+ PrintWriter out = new PrintWriter(output);
+ int ok = JavadocHelper.generateJavadoc(rootDatabase,
+ javadocDirectory, out);
+
+ if (ok == 0) {
+ scriptUI.getActionLogArea().setText(
+ t("isisfish.script.javadoc.ok", output.toString()));
+ // vert leger
+ scriptUI.getActionLogArea().setBackground(COLOR_SUCCESS);
+ } else {
+ scriptUI.getActionLogArea().setText(
+ t("isisfish.script.compilation.failed", output
+ .toString()));
+ // rouge leger
+ scriptUI.getActionLogArea().setBackground(COLOR_FAILURE);
+ }
+
+ setStatusMessage(t("isisfish.script.menu.javadocgenerated",
+ IsisFish.config.getJavadocDirectory()));
+ }
+ });
+ }
+
+ /**
+ * Open a browser displaying javadoc.
+ */
+ public void showScriptJavadoc() {
+ try {
+ // in faut ouvrir l'index, sinon, ca ouvre
+ // un explorateur de fichier
+ File indexFile = new File(IsisFish.config.getJavadocDirectory(),
+ "index.html");
+
+ URI uri = indexFile.toURI();
+ Desktop.getDesktop().browse(uri);
+ } catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't show script javadocs", e);
+ }
+ }
+ }
+
+ /*
+ * @see javax.swing.event.CaretListener#caretUpdate(javax.swing.event.CaretEvent)
+ */
+ @Override
+ public void caretUpdate(CaretEvent e) {
+ // selection pas vide si dot = mark
+ scriptUI.setTextSelected(e.getDot() != e.getMark());
+ }
+
+ /**
+ * Move files.
+ * (called by drag and drop handler).
+ *
+ * @param directory directory to moves files to
+ * @param filesToMove files to move to directory
+ */
+ public void moveFiles(File directory, Collection<File> filesToMove) {
+
+ ScriptTreeModel model = scriptUI.getScriptTreeModel();
+ for (File fileToMove : filesToMove) {
+ model.fileDeleted(fileToMove);
+ File destFile = new File(directory, fileToMove.getName());
+ try {
+ FileUtils.moveFile(fileToMove, destFile);
+ } catch (IOException ex) {
+ throw new IsisFishRuntimeException("Can't move file", ex);
+ }
+ model.fileAdded(destFile);
+ }
+ }
+}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptTypesComboModel.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptTypesComboModel.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptTypesComboModel.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -30,7 +30,7 @@
import javax.swing.DefaultComboBoxModel;
-import fr.ifremer.isisfish.ui.script.ScriptAction.ScriptMapping;
+import fr.ifremer.isisfish.ui.script.ScriptHandler.ScriptMapping;
/**
* Model pour la liste des scripts disponibles.
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/ScriptUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -24,16 +24,16 @@
-->
<JPanel layout='{new BorderLayout()}'>
- <ScriptAction id="scriptAction" javaBean="new ScriptAction(this)" />
+ <ScriptHandler id="handler" constructorParams="this" />
<import>
- javax.swing.SwingWorker
java.awt.Font
</import>
+
<script><![CDATA[
- protected void $afterCompleteSetup() {
- getScriptAction().postInit();
- }
+ protected void $afterCompleteSetup() {
+ handler.afterInit();
+ }
]]></script>
<Boolean id="fileSelected" javaBean="false" />
@@ -46,63 +46,63 @@
<JMenu id="scriptTxtFile" text="isisfish.script.menu.file">
<JMenu id="scriptNewMenu" text="isisfish.script.menu.new" icon="script.png">
<JMenuItem id="miNewScript" text="isisfish.script.menu.txtNewScript"
- onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunityScript)' icon="script.png" />
+ onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunityScript)' icon="script.png" />
<JMenuItem id="miNewSimulator" text="isisfish.script.menu.txtNewSimulator"
- onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunitySimulator)' icon="script.png" />
+ onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunitySimulator)' icon="script.png" />
<JMenuItem id="miNewExport" text="isisfish.script.menu.txtNewExport"
- onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunityExport)' icon="script.png" />
+ onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunityExport)' icon="script.png" />
<JMenuItem id="miNewExportStep" text="isisfish.script.menu.txtNewExportStep"
- onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunityExportStep)' icon="script.png" />
+ onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunityExportStep)' icon="script.png" />
<JMenuItem id="miNewRule" text="isisfish.script.menu.txtNewRule"
- onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunityRule)' icon="script.png" />
+ onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunityRule)' icon="script.png" />
<JMenuItem id="miNewSImulationPlan" text="isisfish.script.menu.txtNewSimulationPlan"
- onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunitySimulationPlan)' icon="script.png" />
+ onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunitySimulationPlan)' icon="script.png" />
<JMenuItem id="miNewSensitivity" text="isisfish.script.menu.txtNewSensitivity"
- onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunitySensitivity)' icon="script.png" />
+ onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunitySensitivity)' icon="script.png" />
<JMenuItem id="miNewSensitivityExport" text="isisfish.script.menu.txtNewSensitivityExport"
- onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunitySensitivityExport)' icon="script.png" />
+ onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunitySensitivityExport)' icon="script.png" />
<JMenuItem text="isisfish.script.menu.txtNewObjective"
- onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunityObjective)' icon="script.png" />
+ onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunityObjective)' icon="script.png" />
<JMenuItem text="isisfish.script.menu.txtNewOptimization"
- onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunityOptimization)' icon="script.png" />
+ onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunityOptimization)' icon="script.png" />
<JMenuItem id="miNewEquationModel" text="isisfish.script.menu.txtNewEquationModel"
- onActionPerformed='getScriptAction().newScript(ScriptAction.ScriptMapping.CommunityFormule)' icon="script.png" />
+ onActionPerformed='handler.newScript(ScriptHandler.ScriptMapping.CommunityFormule)' icon="script.png" />
</JMenu>
<JMenuItem id="miSave" text="isisfish.script.menu.save"
- onActionPerformed="getScriptAction().saveScript()" icon="script_save.png" enabled='{isSingleFileSelected()}' />
+ onActionPerformed="handler.saveScript()" icon="script_save.png" enabled='{isSingleFileSelected()}' />
<JSeparator/>
<JMenuItem id="miDelete" text="isisfish.script.menu.deleteLocaly"
- onActionPerformed='getScriptAction().deleteScript(false)' icon="script_delete.png" enabled='{isSingleFileSelected()}' />
+ onActionPerformed='handler.deleteScript(false)' icon="script_delete.png" enabled='{isSingleFileSelected()}' />
</JMenu>
<JMenu id="scriptTxtEdit" text="isisfish.script.menu.edit">
<JMenuItem id="miCut" text="isisfish.script.menu.cut"
- onActionPerformed="getScriptAction().cut()" icon="cut.png" enabled='{isTextSelected()}' />
+ onActionPerformed="handler.cut()" icon="cut.png" enabled='{isTextSelected()}' />
<JMenuItem id="miCopy" text="isisfish.script.menu.copy"
- onActionPerformed="getScriptAction().copy()" icon="page_copy.png" enabled='{isTextSelected()}' />
+ onActionPerformed="handler.copy()" icon="page_copy.png" enabled='{isTextSelected()}' />
<JMenuItem id="miPaste" text="isisfish.script.menu.paste"
- onActionPerformed="getScriptAction().paste()" icon="page_paste.png" enabled='{isSingleFileSelected()}' />
+ onActionPerformed="handler.paste()" icon="page_paste.png" enabled='{isSingleFileSelected()}' />
</JMenu>
<JMenu id="scriptTxtVCS" text="isisfish.script.menu.txtVCS">
<JMenuItem id="miCommitVCS" text="isisfish.script.menu.commit" icon="database_go.png"
- onActionPerformed="getScriptAction().commitScript()" enabled='{isSingleFileSelected()}' />
+ onActionPerformed="handler.commitScript()" enabled='{isSingleFileSelected()}' />
<JMenuItem id="miDiffVCS" text="isisfish.script.menu.diff" accelerator="mnDiffVCS"
- onActionPerformed="getScriptAction().diffScript()" enabled='{isSingleFileSelected()}' />
+ onActionPerformed="handler.diffScript()" enabled='{isSingleFileSelected()}' />
<JSeparator/>
<JMenuItem id="miDeleteVCS" text="isisfish.script.menu.deleteLocalyServer"
- onActionPerformed='getScriptAction().deleteScript(true)' icon="database_delete.png"/>
+ onActionPerformed='handler.deleteScript(true)' icon="database_delete.png"/>
</JMenu>
<JMenu id="scriptTxtCode" text="isisfish.script.menu.code">
<JMenuItem id="miCheckSyntax" text="isisfish.script.menu.checkSyntax" icon="script_code_red.png"
- onActionPerformed="getScriptAction().checkScript()" enabled='{isJavaFileSelected()}' />
+ onActionPerformed="handler.checkScript()" enabled='{isJavaFileSelected()}' />
<JMenuItem id="miCheckAllSyntax" text="isisfish.script.menu.checkAllSyntax" icon="script_code_red.png"
- onActionPerformed="new SwingWorker<Void, Void>(){public Void doInBackground(){getScriptAction().checkAllScripts();return null;}}.execute()" />
+ onActionPerformed="handler.checkAllScripts()" />
<JMenuItem id="miEvaluate" text="isisfish.script.menu.evaluate" icon="script_gear.png"
- onActionPerformed="getScriptAction().evaluateScript()" enabled='{isJavaFileSelected()}' />
+ onActionPerformed="handler.evaluateScript()" enabled='{isJavaFileSelected()}' />
<JSeparator/>
<JMenuItem id="miGenerateJavadoc" text="isisfish.script.menu.javadocgenerate"
- onActionPerformed="getScriptAction().generateScriptJavadoc()"/>
+ onActionPerformed="handler.generateScriptJavadoc()"/>
<JMenuItem id="miShowJavadoc" text="isisfish.script.menu.javadocshow"
- onActionPerformed="getScriptAction().showScriptJavadoc()"/>
+ onActionPerformed="handler.showScriptJavadoc()"/>
</JMenu>
</JMenuBar>
@@ -110,23 +110,23 @@
<JPanel layout='{new BorderLayout()}' constraints='BorderLayout.CENTER'>
<JPanel id="buttonBar" layout='{new GridLayout()}' constraints='BorderLayout.NORTH'>
<JButton id="buttonScriptNew" text="isisfish.script.newplus" toolTipText='isisfish.script.new.tooltip'
- onMousePressed='getScriptAction().newScript(this, event)' icon="script.png" />
+ onMousePressed='handler.newScript(event)' icon="script.png" />
<JButton id="buttonScriptSave" text="isisfish.script.save" toolTipText="isisfish.script.save.tooltip"
- enabled='{isSingleFileSelected()}' onActionPerformed='getScriptAction().saveScript()' icon="script_save.png" />
+ enabled='{isSingleFileSelected()}' onActionPerformed='handler.saveScript()' icon="script_save.png" />
<JButton id="buttonScriptExport" text="isisfish.script.export" toolTipText="isisfish.script.export.tooltip" enabled='false'
- onActionPerformed='getScriptAction().exportScript()' icon="page_white_compressed.png" />
+ onActionPerformed='handler.exportScript()' icon="page_white_compressed.png" />
<JButton id="buttonScriptCommit" text="isisfish.script.commit" toolTipText="isisfish.script.commit.tooltip" enabled='{isSingleFileSelected()}'
- onActionPerformed='getScriptAction().commitScript()' icon="database_go.png" />
+ onActionPerformed='handler.commitScript()' icon="database_go.png" />
<JButton id="buttonScriptCut" text="isisfish.script.cut" toolTipText="isisfish.script.cut.tooltip" enabled='{isTextSelected()}'
- onActionPerformed='getScriptAction().cut()' icon="cut.png" />
+ onActionPerformed='handler.cut()' icon="cut.png" />
<JButton id="buttonScriptCopy" text="isisfish.script.copy" toolTipText="isisfish.script.copy.tooltip" enabled='{isTextSelected()}'
- onActionPerformed='getScriptAction().copy()' icon="page_copy.png" />
+ onActionPerformed='handler.copy()' icon="page_copy.png" />
<JButton id="buttonScriptPaste" text="isisfish.script.paste" toolTipText="isisfish.script.paste.tooltip" enabled='{isSingleFileSelected()}'
- onActionPerformed='getScriptAction().paste()' icon="page_paste.png" />
+ onActionPerformed='handler.paste()' icon="page_paste.png" />
<JButton id="buttonScriptCheck" text="isisfish.script.check" toolTipText="isisfish.script.check.tooltip" enabled='{isJavaFileSelected()}'
- onActionPerformed='getScriptAction().checkScript()' icon="script_code_red.png" />
+ onActionPerformed='handler.checkScript()' icon="script_code_red.png" />
<JButton id="buttonScriptEval" text="isisfish.script.evaluate" toolTipText="isisfish.script.evaluate.tooltip" enabled='{isJavaFileSelected()}'
- onActionPerformed='getScriptAction().evaluateScript()' icon="script_gear.png" />
+ onActionPerformed='handler.evaluateScript()' icon="script_gear.png" />
</JPanel>
<JSplitPane oneTouchExpandable="true" dividerLocation="250" orientation="HORIZONTAL" constraints='BorderLayout.CENTER'>
<JScrollPane>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTransferHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTransferHandler.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/script/model/ScriptTransferHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -151,7 +151,7 @@
if (directory != null) {
Object myObject = transferable.getTransferData(ScriptTranferable.myData);
List<File> movedFiles = (List<File>) myObject;
- scriptUI.getScriptAction().moveFiles(directory, movedFiles);
+ scriptUI.getHandler().moveFiles(directory, movedFiles);
}
} catch (IOException e) {
if (log.isErrorEnabled()) {
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityContext.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityContext.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityContext.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,51 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2015 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.ui.sensitivity;
+
+import fr.ifremer.isisfish.ui.WelcomeSaveVerifier;
+import fr.ifremer.isisfish.ui.simulator.SimulAction;
+import jaxx.runtime.JAXXContext;
+import jaxx.runtime.context.JAXXInitialContext;
+
+/**
+ * Ce contexte regroupe les élements qui servent à une hierachie d'interfaces Sensitivity.
+ *
+ * @author Eric Chatellier
+ */
+public class SensitivityContext extends JAXXInitialContext {
+
+ public SensitivityContext(JAXXContext parent) {
+ setParentContext(parent);
+
+ // add save verifier for this hierarchy
+ SensitivitySaveVerifier sensitivitySaveVerifier = new SensitivitySaveVerifier();
+ add(sensitivitySaveVerifier);
+
+ // this verifier is linked to global verifier
+ WelcomeSaveVerifier welcomeSaveVerifier = getContextValue(WelcomeSaveVerifier.class);
+ welcomeSaveVerifier.addSaveVerifier(sensitivitySaveVerifier);
+
+ // FIXME remove this
+ add(new SimulAction());
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityContext.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -32,12 +32,10 @@
import java.io.File;
import java.util.List;
-import javax.swing.JComponent;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.event.TreeSelectionEvent;
-import javax.swing.text.JTextComponent;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
@@ -47,9 +45,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.math.matrix.gui.MatrixPanelEditor;
import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.TopiaEntityContextable;
import org.nuiton.util.FileUtil;
@@ -59,18 +55,14 @@
import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan;
import fr.ifremer.isisfish.simulator.sensitivity.Factor;
import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
-import fr.ifremer.isisfish.types.Month;
-import fr.ifremer.isisfish.types.TimeStep;
+import fr.ifremer.isisfish.ui.NavigationHandler;
import fr.ifremer.isisfish.ui.input.InputContentUI;
-import fr.ifremer.isisfish.ui.input.InputHandler;
-import fr.ifremer.isisfish.ui.input.equation.InputOneEquationUI;
import fr.ifremer.isisfish.ui.input.tree.FisheryDataProvider;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeHelper;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeNode;
import fr.ifremer.isisfish.ui.input.tree.FisheryTreeRenderer;
import fr.ifremer.isisfish.ui.sensitivity.wizard.FactorWizardUI;
import fr.ifremer.isisfish.ui.sensitivity.wizard.SensitivityWizardHandler;
-import fr.ifremer.isisfish.ui.simulator.RuleChooser;
import fr.ifremer.isisfish.ui.simulator.SimulAction;
/**
@@ -82,7 +74,7 @@
* Last update : $Date$
* By : $Author$
*/
-public class SensitivityInputHandler extends InputHandler {
+public class SensitivityInputHandler extends NavigationHandler {
/** Class logger. */
private static Log log = LogFactory.getLog(SensitivityInputHandler.class);
@@ -313,37 +305,13 @@
}
}
- /**
- * Return if type can be defined as a factor.
- *
- * @param type type
- * @return {@code true} if type can be defined as a factor
- */
- public boolean canBeFactor(Class type) {
- boolean result = false;
-
- if (TopiaEntity.class.isAssignableFrom(type)) {
- result = true;
- } else if (double.class.isAssignableFrom(type)) {
- result = true;
- } else if (Number.class.isAssignableFrom(type)) {
- result = true;
- } else if (TimeStep.class.isAssignableFrom(type)) {
- result = true;
- } else if (Month.class.isAssignableFrom(type)) {
- result = true;
- }
-
- return result;
- }
-
- /**
+ /*
* Return value in swing component that could be next used into factor
* for discrete factor values.
*
* @param component component
* @return factor value
- */
+ *
protected Object getComponentValue(JComponent component) {
Object result = null;
if (component instanceof JTextComponent) {
@@ -360,7 +328,7 @@
}
return result;
- }
+ }*/
/**
* Export factors list to xml mexico file.
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySaveVerifier.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySaveVerifier.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivitySaveVerifier.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -23,8 +23,6 @@
package fr.ifremer.isisfish.ui.sensitivity;
-import javax.swing.JOptionPane;
-
import fr.ifremer.isisfish.ui.input.InputSaveVerifier;
/**
@@ -47,7 +45,7 @@
// qui sont passés ou des modifications d'equation
// on ne doit pas demander à l'utilisateur de sauver
// ou meme carrement sauver les modification
- return JOptionPane.YES_OPTION;
+ return YES_OPTION;
}
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -5,7 +5,7 @@
$Id$
$HeadURL$
%%
- Copyright (C) 2009 - 2011 Ifremer, CodeLutin, Chatellier Eric
+ Copyright (C) 2009 - 2015 Ifremer, CodeLutin, Chatellier Eric
%%
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as
@@ -46,8 +46,8 @@
@Override
public void refresh() {
- paramsUI.refresh();
- advancedParamsUI.refresh();
+ paramsUI.getHandler().refresh();
+ advancedParamsUI.getHandler().refresh();
}
@Override
@@ -75,13 +75,14 @@
sensitivityTabUI.setFactorModel();
}
]]></script>
+
<JTabbedPane id="bodyTabbedPane">
<tab title='isisfish.params.title'>
<fr.ifremer.isisfish.ui.simulator.ParamsUI id='paramsUI' sensitivity='true' regionStorage="{getRegionStorage()}"
constructorParams='new JAXXInitialContext().add(new SensitivitySaveVerifier()).add("SimulationUI", this).add(this)' />
</tab>
<tab title='isisfish.sensitivity.title' enabled="false">
- <fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI id="sensitivityTabUI"
+ <SensitivityTabUI id="sensitivityTabUI"
constructorParams='new JAXXInitialContext().add(new SensitivitySaveVerifier()).add("SimulationUI", this).add(this)' />
</tab>
<tab title='isisfish.sensitivityChooser.title' enabled="false">
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/wizard/SensitivityWizardHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -40,8 +40,6 @@
import javax.swing.JTextField;
import javax.swing.text.JTextComponent;
-import jaxx.runtime.context.JAXXInitialContext;
-
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,144 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 - 2014 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.ui.simulator;
+
+import static org.nuiton.i18n.I18n.t;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import javax.swing.table.DefaultTableModel;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * AdvancedParams UI handler.
+ *
+ * @author Eric Chatellier
+ */
+public class AdvancedParamsHandler extends SimulationTabHandler {
+
+ /** Class logger. */
+ private static final Log log = LogFactory.getLog(AdvancedParamsHandler.class);
+
+ protected AdvancedParamsUI tabUI;
+
+ protected AdvancedParamsHandler(AdvancedParamsUI tabUI) {
+ super(tabUI);
+ this.tabUI = tabUI;
+ }
+
+ protected void afterInit() {
+ /**
+ * Listener to enable/disable remove button.
+ */
+ tabUI.tableTagValues.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ tabUI.setRemove(tabUI.tableTagValues.getSelectedRow() != -1);
+ }
+ });
+
+ refresh();
+ }
+
+ public void refresh() {
+ tabUI.fieldSimulAdvParamsSimulatorSelect.setSelectedItem(tabUI.getContextValue(SimulAction.class).getSimulationParameter().getSimulatorName());
+ tabUI.fieldSimulationStatistique.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().getUseStatistic());
+ tabUI.fieldSimulationCache.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().getUseCache());
+
+ tabUI.fieldSimulAdvParamsSimulLoggerError.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().isSimulErrorLevel());
+ tabUI.fieldSimulAdvParamsSimulLoggerWarn.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().isSimulWarnLevel());
+ tabUI.fieldSimulAdvParamsSimulLoggerInfo.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().isSimulInfoLevel());
+ tabUI.fieldSimulAdvParamsSimulLoggerDebug.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().isSimulDebugLevel());
+
+ tabUI.fieldSimulAdvParamsScriptLoggerError.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().isScriptErrorLevel());
+ tabUI.fieldSimulAdvParamsScriptLoggerWarn.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().isScriptWarnLevel());
+ tabUI.fieldSimulAdvParamsScriptLoggerInfo.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().isScriptInfoLevel());
+ tabUI.fieldSimulAdvParamsScriptLoggerDebug.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().isScriptDebugLevel());
+
+ tabUI.fieldSimulAdvParamsLibLoggerError.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().isLibErrorLevel());
+ tabUI.fieldSimulAdvParamsLibLoggerWarn.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().isLibWarnLevel());
+ tabUI.fieldSimulAdvParamsLibLoggerInfo.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().isLibInfoLevel());
+ tabUI.fieldSimulAdvParamsLibLoggerDebug.setSelected(tabUI.getContextValue(SimulAction.class).getSimulationParameter().isLibDebugLevel());
+
+ setTableTagValues();
+ }
+
+ protected void addTagValue() {
+ tabUI.getContextValue(SimulAction.class).addTagValue(tabUI.fieldTag.getText(), tabUI.fieldValue.getText());
+ setTableTagValues();
+ valueChanged(true);
+ }
+
+ protected void removeTagValue() {
+ tabUI.getContextValue(SimulAction.class).removeTagValue(tabUI.tableTagValues.getValueAt(tabUI.tableTagValues.getSelectedRow(),0).toString());
+ setTableTagValues();
+ valueChanged(true);
+ }
+
+ protected void saveTagValues() {
+ if (tabUI.fieldSimulAdvParamsSimulatorSelect.getSelectedIndex() != -1) {
+ tabUI.getContextValue(SimulAction.class).saveTagValue(tabUI.fieldSimulAdvParamsSimulatorSelect.getSelectedItem().toString());
+ }
+ valueChanged(false);
+ }
+
+ protected void setSimulatorName() {
+ if (tabUI.fieldSimulAdvParamsSimulatorSelect.getSelectedIndex() != -1) {
+ tabUI.getContextValue(SimulAction.class).getSimulationParameter().setSimulatorName(tabUI.fieldSimulAdvParamsSimulatorSelect.getSelectedItem().toString());
+ valueChanged(true);
+ }
+ }
+
+ protected void setTableTagValues() {
+ Map<String, String> tagValues = tabUI.getContextValue(SimulAction.class).getSimulationParameter().getTagValue();
+
+ // TODO make a table model for it
+ String columnName[] = { t("isisfish.common.tag"), t("isisfish.common.value")};
+ if (tagValues != null) {
+ DefaultTableModel model = new DefaultTableModel(columnName, tagValues.size()) {
+ @Override
+ public boolean isCellEditable(int row, int column) {
+ return false;
+ }
+ };
+ //Set<Entry<String, String>> set = tagValues.entrySet();
+ int row = 0;
+ for (Iterator<String> it = tagValues.keySet().iterator(); it.hasNext();) {
+ String name = it.next();
+ model.setValueAt(name, row, 0);
+ model.setValueAt(tagValues.get(name), row, 1);
+ row++;
+ }
+ tabUI.tableTagValues.setModel(model);
+ }
+ }
+
+ protected void valueChanged(boolean b) {
+ tabUI.setChanged(b);
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/AdvancedParamsUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -23,120 +23,24 @@
#L%
-->
<Table>
+
+ <AdvancedParamsHandler id="handler" constructorParams="this" />
+
<Boolean id='ajout' javaBean='false'/>
<Boolean id='remove' javaBean='false'/>
<Boolean id='changed' javaBean='false'/>
<import>
static org.nuiton.i18n.I18n.t
- javax.swing.table.DefaultTableModel;
- java.util.Map.Entry;
- javax.swing.event.ListSelectionListener
- java.util.Set
- java.util.Iterator
javax.swing.DefaultComboBoxModel
- javax.swing.event.ListSelectionEvent
</import>
- <script><![CDATA[
-
+ <script><![CDATA[
protected void $afterCompleteSetup() {
- /**
- * Listener to enable/disable remove button.
- */
- tableTagValues.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
- @Override
- public void valueChanged(ListSelectionEvent e) {
- setRemove(tableTagValues.getSelectedRow() != -1);
- }
- });
-
- refresh();
+ handler.afterInit();
}
-
- public void refresh() {
- fieldSimulAdvParamsSimulatorSelect.setSelectedItem(getContextValue(SimulAction.class).getSimulationParameter().getSimulatorName());
- fieldSimulationStatistique.setSelected(getContextValue(SimulAction.class).getSimulationParameter().getUseStatistic());
- fieldSimulationCache.setSelected(getContextValue(SimulAction.class).getSimulationParameter().getUseCache());
+ ]]></script>
- fieldSimulAdvParamsSimulLoggerError.setSelected(getContextValue(SimulAction.class).getSimulationParameter().isSimulErrorLevel());
- fieldSimulAdvParamsSimulLoggerWarn.setSelected(getContextValue(SimulAction.class).getSimulationParameter().isSimulWarnLevel());
- fieldSimulAdvParamsSimulLoggerInfo.setSelected(getContextValue(SimulAction.class).getSimulationParameter().isSimulInfoLevel());
- fieldSimulAdvParamsSimulLoggerDebug.setSelected(getContextValue(SimulAction.class).getSimulationParameter().isSimulDebugLevel());
-
- fieldSimulAdvParamsScriptLoggerError.setSelected(getContextValue(SimulAction.class).getSimulationParameter().isScriptErrorLevel());
- fieldSimulAdvParamsScriptLoggerWarn.setSelected(getContextValue(SimulAction.class).getSimulationParameter().isScriptWarnLevel());
- fieldSimulAdvParamsScriptLoggerInfo.setSelected(getContextValue(SimulAction.class).getSimulationParameter().isScriptInfoLevel());
- fieldSimulAdvParamsScriptLoggerDebug.setSelected(getContextValue(SimulAction.class).getSimulationParameter().isScriptDebugLevel());
-
- fieldSimulAdvParamsLibLoggerError.setSelected(getContextValue(SimulAction.class).getSimulationParameter().isLibErrorLevel());
- fieldSimulAdvParamsLibLoggerWarn.setSelected(getContextValue(SimulAction.class).getSimulationParameter().isLibWarnLevel());
- fieldSimulAdvParamsLibLoggerInfo.setSelected(getContextValue(SimulAction.class).getSimulationParameter().isLibInfoLevel());
- fieldSimulAdvParamsLibLoggerDebug.setSelected(getContextValue(SimulAction.class).getSimulationParameter().isLibDebugLevel());
-
- setTableTagValues();
- }
-
- public AdvancedParamsUI(SimulAction action) {
- setContextValue(action);
- }
-
- protected void addTagValue() {
- getContextValue(SimulAction.class).addTagValue(fieldTag.getText(), fieldValue.getText());
- setTableTagValues();
- valueChanged(true);
- }
-
- protected void removeTagValue() {
- getContextValue(SimulAction.class).removeTagValue(tableTagValues.getValueAt(tableTagValues.getSelectedRow(),0).toString());
- setTableTagValues();
- valueChanged(true);
- }
-
- protected void saveTagValues() {
- if (fieldSimulAdvParamsSimulatorSelect.getSelectedIndex() != -1) {
- getContextValue(SimulAction.class).saveTagValue(fieldSimulAdvParamsSimulatorSelect.getSelectedItem().toString());
- }
- valueChanged(false);
- }
-
- protected void setSimulatorName() {
- if (fieldSimulAdvParamsSimulatorSelect.getSelectedIndex() != -1) {
- getContextValue(SimulAction.class).getSimulationParameter().setSimulatorName(fieldSimulAdvParamsSimulatorSelect.getSelectedItem().toString());
- valueChanged(true);
- }
- }
-
- protected void setTableTagValues() {
- Map<String, String> tagValues = getContextValue(SimulAction.class).getSimulationParameter().getTagValue();
-
- // TODO make a table model for it
- String columnName[] = { t("isisfish.common.tag"), t("isisfish.common.value")};
- if (tagValues != null) {
- DefaultTableModel model = new DefaultTableModel(columnName, tagValues.size()) {
- @Override
- public boolean isCellEditable(int row, int column) {
- return false;
- }
- };
- Set<Entry<String, String>> set = tagValues.entrySet();
- int row = 0;
- for (Iterator<String> it = tagValues.keySet().iterator(); it.hasNext();) {
- String name = it.next();
- model.setValueAt(name, row, 0);
- model.setValueAt(tagValues.get(name), row, 1);
- row++;
- }
- tableTagValues.setModel(model);
- }
- }
-
- protected void valueChanged(boolean b) {
- setChanged(b);
- }
-
- ]]>
- </script>
<row>
<cell fill="horizontal" rows="2">
<JLabel text="isisfish.advancedParams.simulatorUse"/>
@@ -145,7 +49,7 @@
<JComboBox id="fieldSimulAdvParamsSimulatorSelect"
genericType="String"
model='{new DefaultComboBoxModel(getContextValue(SimulAction.class).getSimulatorNames().toArray())}'
- onActionPerformed='setSimulatorName()'/>
+ onActionPerformed='handler.setSimulatorName()'/>
</cell>
</row>
<row>
@@ -254,7 +158,7 @@
</row>
<row>
<cell columns="4" fill="horizontal" weightx="1.0">
- <JButton text="isisfish.common.add" enabled="{isAjout()}" onActionPerformed='addTagValue()'/>
+ <JButton text="isisfish.common.add" enabled="{isAjout()}" onActionPerformed='handler.addTagValue()'/>
</cell>
</row>
<row>
@@ -266,12 +170,12 @@
</row>
<row>
<cell columns="4" fill="horizontal" weightx="1.0">
- <JButton text="isisfish.common.remove" enabled="{isRemove()}" onActionPerformed='removeTagValue()'/>
+ <JButton text="isisfish.common.remove" enabled="{isRemove()}" onActionPerformed='handler.removeTagValue()'/>
</cell>
</row>
<row>
<cell columns="5" fill="horizontal">
- <JButton text="isisfish.common.saveNextSimulation" enabled="{isChanged()}" onActionPerformed='saveTagValues()'/>
+ <JButton text="isisfish.common.saveNextSimulation" enabled="{isChanged()}" onActionPerformed='handler.saveTagValues()'/>
</cell>
</row>
</Table>
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,118 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 - 2014 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.ui.simulator;
+
+import static org.nuiton.i18n.I18n.t;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.swing.event.ListSelectionEvent;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import fr.ifremer.isisfish.ui.WelcomePanelUI;
+import fr.ifremer.isisfish.ui.models.common.GenericListModel;
+
+/**
+ * Export UI handler.
+ *
+ * @author Eric Chatellier
+ */
+public class ExportHandler extends SimulationTabHandler {
+
+ /** Class logger. */
+ private static final Log log = LogFactory.getLog(ExportHandler.class);
+
+ protected ExportUI tabUI;
+
+ protected ExportHandler(ExportUI tabUI) {
+ super(tabUI);
+ this.tabUI = tabUI;
+ }
+
+ protected void afterInit() {
+ refresh();
+ }
+
+ protected SimulAction getSimulAction() {
+ return tabUI.getContextValue(SimulAction.class);
+ }
+
+ public void refresh() {
+
+ // FIXME listen for export modification here
+
+ // fill export
+ setListSimulExportChooseModel();
+ }
+
+ protected void setListSimulExportChooseModel() {
+ java.util.List<String> availableExports = getSimulAction().getExportNames();
+ java.util.List<String> userExports = getSimulAction().getSimulationParameter().getExportNames();
+ // userExports = intersection(userExports,availableExports)
+ userExports.retainAll(availableExports);
+
+ GenericListModel<String> exportModel = new GenericListModel<String>(availableExports);
+ tabUI.listSimulExportChoose.setModel(exportModel);
+
+ for (String userExport : userExports) {
+ int index = availableExports.indexOf(userExport);
+ tabUI.listSimulExportChoose.addSelectionInterval(index, index);
+ }
+ }
+
+ protected void saveSimulationExports(ListSelectionEvent event) {
+ // Set exports (this can save empty list (not a big deal))
+ List<String> values = tabUI.listSimulExportChoose.getSelectedValuesList();
+ List<String> exportNames = new LinkedList<>();
+ for (String o : values) {
+ exportNames.add(o);
+ }
+ getSimulAction().getSimulationParameter().setExportNames(exportNames);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Set exports in simulation : " + exportNames);
+ }
+ }
+
+ protected void saveConfigExports() {
+ // Set exports (this can save empty list (not a big deal))
+ List<String> values = tabUI.listSimulExportChoose.getSelectedValuesList();
+ List<String> exportNames = new LinkedList<String>();
+ for (String o : values) {
+ exportNames.add(o);
+ }
+ getSimulAction().getSimulationParameter().setExportNames(exportNames);
+
+ getSimulAction().saveExport();
+ setInfoText(t("isisfish.export.saved"));
+ }
+
+ protected void setInfoText(String txt) {
+ // TODO remove getParentContainer use
+ WelcomePanelUI root = tabUI.getParentContainer(WelcomePanelUI.class);
+ root.setStatusMessage(txt);
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -23,94 +23,27 @@
#L%
-->
<Table>
- <import>
- static org.nuiton.i18n.I18n.t
- fr.ifremer.isisfish.ui.WelcomePanelUI;
- fr.ifremer.isisfish.ui.models.common.GenericListModel;
- javax.swing.event.ListSelectionEvent;
- java.util.LinkedList
- </import>
+ <ExportHandler id="handler" constructorParams="this" />
<script><![CDATA[
-
protected void $afterCompleteSetup() {
- refresh();
+ handler.afterInit();
}
+ ]]></script>
- protected SimulAction getSimulAction() {
- return getContextValue(SimulAction.class);
- }
-
- public void refresh() {
-
- // FIXME listen for export modification here
-
- // fill export
- setListSimulExportChooseModel();
- }
-
- protected void setListSimulExportChooseModel() {
- java.util.List<String> availableExports = getSimulAction().getExportNames();
- java.util.List<String> userExports = getSimulAction().getSimulationParameter().getExportNames();
- // userExports = intersection(userExports,availableExports)
- userExports.retainAll(availableExports);
-
- GenericListModel<String> exportModel = new GenericListModel<String>(availableExports);
- listSimulExportChoose.setModel(exportModel);
-
- for (String userExport : userExports) {
- int index = availableExports.indexOf(userExport);
- listSimulExportChoose.addSelectionInterval(index, index);
- }
- }
-
- protected void saveSimulationExports(ListSelectionEvent event) {
- // Set exports (this can save empty list (not a big deal))
- List<String> values = listSimulExportChoose.getSelectedValuesList();
- List<String> exportNames = new LinkedList<>();
- for (String o : values) {
- exportNames.add(o);
- }
- getSimulAction().getSimulationParameter().setExportNames(exportNames);
-
- if (log.isDebugEnabled()) {
- log.debug("Set exports in simulation : " + exportNames);
- }
- }
-
- protected void saveConfigExports() {
- // Set exports (this can save empty list (not a big deal))
- List<String> values = listSimulExportChoose.getSelectedValuesList();
- List<String> exportNames = new LinkedList<String>();
- for (String o : values) {
- exportNames.add(o);
- }
- getSimulAction().getSimulationParameter().setExportNames(exportNames);
-
- getSimulAction().saveExport();
- setInfoText(t("isisfish.export.saved"));
- }
-
- protected void setInfoText(String txt) {
- // TODO remove getParentContainer use
- WelcomePanelUI root = getParentContainer(WelcomePanelUI.class);
- root.setStatusMessage(txt);
- }
- ]]>
- </script>
<row>
<cell fill="both" weightx="1.0" weighty="1.0">
<JScrollPane>
<JList id="listSimulExportChoose" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}"
genericType="String"
cellRenderer='{new fr.ifremer.isisfish.ui.models.export.ExportNameListRenderer()}'
- onValueChanged='saveSimulationExports(event)' />
+ onValueChanged='handler.saveSimulationExports(event)' />
</JScrollPane>
</cell>
</row>
<row>
<cell fill="horizontal">
- <JButton text="isisfish.common.saveNextSimulation" onActionPerformed='saveConfigExports()'/>
+ <JButton text="isisfish.common.saveNextSimulation" onActionPerformed='handler.saveConfigExports()'/>
</cell>
</row>
</Table>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -63,48 +63,55 @@
import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI;
import fr.ifremer.isisfish.ui.widget.editor.FactorEditorListener;
-public class OptimizationHandler {
+public class OptimizationHandler extends SimulationTabHandler {
private static final Log log = LogFactory.getLog(OptimizationHandler.class);
protected FactorEditorListener factorEditorListener;
- public void init(final OptimizationUI view) {
-
+ protected OptimizationUI tabUI;
+
+ public OptimizationHandler(OptimizationUI tabUI) {
+ super(tabUI);
+ this.tabUI = tabUI;
}
+
+ public void afterInit() {
+ // model init
+ tabUI.getExportObservationTable().setModel(getExportObservationTableModel());
+ }
- public void refresh(OptimizationUI view) {
+ public void refresh() {
// get info
- SimulAction simulAction = view.getContextValue(SimulAction.class);
+ SimulAction simulAction = tabUI.getContextValue(SimulAction.class);
SimulationParameter param = simulAction.getSimulationParameter();
- RegionStorage regionStorage = view.getContextValue(RegionStorage.class);
+ RegionStorage regionStorage = tabUI.getContextValue(RegionStorage.class);
// refresh after simulation storage set
if (param.getObjective() != null) {
- view.getFieldObjectiveMethodSelect().setSelectedItem(ObjectiveStorage.getName(param.getObjective()));
+ tabUI.getFieldObjectiveMethodSelect().setSelectedItem(ObjectiveStorage.getName(param.getObjective()));
}
if (param.getOptimization() != null) {
- view.getFieldOptimizationMethodSelect().setSelectedItem(OptimizationStorage.getName(param.getOptimization()));
+ tabUI.getFieldOptimizationMethodSelect().setSelectedItem(OptimizationStorage.getName(param.getOptimization()));
}
// export/observation
- view.getExportObservationTable().setModel(getExportObservationTableModel(view));
+ tabUI.getExportObservationTable().setModel(getExportObservationTableModel());
// order matters
- view.getExportObservationTable().getColumnModel().getColumn(0).setCellRenderer(new ExportTableCellRenderer());
+ tabUI.getExportObservationTable().getColumnModel().getColumn(0).setCellRenderer(new ExportTableCellRenderer());
ExportTableCellEditor editor = new ExportTableCellEditor();
editor.setRegionStorage(regionStorage);
- view.getExportObservationTable().getColumnModel().getColumn(1).setCellEditor(editor);
- view.getExportObservationTable().getColumnModel().getColumn(1).setCellRenderer(new ExportTableCellRenderer());
+ tabUI.getExportObservationTable().getColumnModel().getColumn(1).setCellEditor(editor);
+ tabUI.getExportObservationTable().getColumnModel().getColumn(1).setCellRenderer(new ExportTableCellRenderer());
}
/**
* Get simulation parameter from ui context.
*
- * @param view view (ui context)
* @return simulation parameters
*/
- protected SimulationParameter getSimulationParameter(OptimizationUI view) {
- SimulAction simulAction = view.getContextValue(SimulAction.class);
+ protected SimulationParameter getSimulationParameter() {
+ SimulAction simulAction = tabUI.getContextValue(SimulAction.class);
SimulationParameter param = simulAction.getSimulationParameter();
return param;
}
@@ -115,7 +122,7 @@
* @return model
*/
public GenericComboModel<String> getObjectiveComboModel() {
- List<String> result = new ArrayList<String>();
+ List<String> result = new ArrayList<>();
for (String r : ObjectiveStorage.getObjectiveNames()) {
// there is some non java files in sensitivity directory
if (r.endsWith(".java")) {
@@ -125,19 +132,17 @@
}
}
- GenericComboModel<String> model = new GenericComboModel<String>(result);
+ GenericComboModel<String> model = new GenericComboModel<>(result);
return model;
}
/**
* Selection d'une méthode d'optimisation.
- *
- * @param view view
*/
- public void objectiveChanged(OptimizationUI view) {
- String objectiveName = (String)view.getFieldObjectiveMethodSelect().getSelectedItem();
- SimulationParameter param = getSimulationParameter(view);
- RegionStorage regionStorage = view.getContextValue(RegionStorage.class);
+ public void objectiveChanged() {
+ String objectiveName = (String)tabUI.getFieldObjectiveMethodSelect().getSelectedItem();
+ SimulationParameter param = getSimulationParameter();
+ RegionStorage regionStorage = tabUI.getContextValue(RegionStorage.class);
// creation new instance only when name change to not lose parameters value
Objective objective = param.getObjective();
@@ -158,37 +163,36 @@
// update model
ScriptParametersTableModel parametersTableModel = new ScriptParametersTableModel(objective);
- view.getSimulObjectiveMethodParam().setModel(parametersTableModel);
- view.getSimulObjectiveMethodParam().getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(objective));
+ tabUI.getSimulObjectiveMethodParam().setModel(parametersTableModel);
+ tabUI.getSimulObjectiveMethodParam().getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(objective));
ScriptParametersTableCellEditor editor = new ScriptParametersTableCellEditor(objective);
editor.setRegionStorage(regionStorage);
- editor.setFactorActionListener(getFactorActionListener(view));
- view.getSimulObjectiveMethodParam().getColumnModel().getColumn(1).setCellEditor(editor);
+ editor.setFactorActionListener(getFactorActionListener());
+ tabUI.getSimulObjectiveMethodParam().getColumnModel().getColumn(1).setCellEditor(editor);
}
}
/**
* Retourne une instance de action listener qui affichera l'interface de sélection d'un facteur.
*
- * @param view parent view
* @return action listener
*/
- protected FactorEditorListener getFactorActionListener(final OptimizationUI view) {
+ protected FactorEditorListener getFactorActionListener() {
if (factorEditorListener == null) {
factorEditorListener = new FactorEditorListener() {
public void actionPerformed(ActionEvent event) {
// init new sensitivity tav ui hierarchy
- final SensitivityTabUI sensitivityTabUI = new SensitivityTabUI(view);
+ final SensitivityTabUI sensitivityTabUI = new SensitivityTabUI(tabUI);
sensitivityTabUI.setContextValue(new SensitivitySaveVerifier()); // prevent NPE
- sensitivityTabUI.setContextValue(view.getParentContainer(SimulationUI.class), "SimulationUI"); // prevent NPE
+ sensitivityTabUI.setContextValue(tabUI.getParentContainer(SimulationUI.class), "SimulationUI"); // prevent NPE
// init region
// FIXME this transaction in never closed
// and can't be closed because used in
try {
- RegionStorage regionStorage = view.getContextValue(RegionStorage.class);
+ RegionStorage regionStorage = tabUI.getContextValue(RegionStorage.class);
TopiaContext tx = regionStorage.getStorage().beginTransaction();
FisheryRegion fisheryRegion = RegionStorage.getFisheryRegion(tx);
sensitivityTabUI.setFisheryRegion(fisheryRegion);
@@ -202,7 +206,7 @@
dialog.setTitle("Sélection d'un facteur");
dialog.add(sensitivityTabUI);
dialog.setSize(800, 600);
- dialog.setLocationRelativeTo(view);
+ dialog.setLocationRelativeTo(tabUI);
dialog.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
@@ -240,19 +244,17 @@
}
}
- GenericComboModel<String> model = new GenericComboModel<String>(result);
+ GenericComboModel<String> model = new GenericComboModel<>(result);
return model;
}
/**
* Selection d'une méthode d'optimisation.
- *
- * @param view view
*/
- public void optimizationChanged(OptimizationUI view) {
- String optimizationName = (String)view.getFieldOptimizationMethodSelect().getSelectedItem();
- SimulationParameter param = getSimulationParameter(view);
- RegionStorage regionStorage = view.getContextValue(RegionStorage.class);
+ public void optimizationChanged() {
+ String optimizationName = (String)tabUI.getFieldOptimizationMethodSelect().getSelectedItem();
+ SimulationParameter param = getSimulationParameter();
+ RegionStorage regionStorage = tabUI.getContextValue(RegionStorage.class);
// creation new instance only when name change to not lose parameters value
Optimization optimization = param.getOptimization();
@@ -273,13 +275,13 @@
// update model
ScriptParametersTableModel parametersTableModel = new ScriptParametersTableModel(optimization);
- view.getSimulOptimizationMethodParam().setModel(parametersTableModel);
- view.getSimulOptimizationMethodParam().getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(optimization));
+ tabUI.getSimulOptimizationMethodParam().setModel(parametersTableModel);
+ tabUI.getSimulOptimizationMethodParam().getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(optimization));
ScriptParametersTableCellEditor editor = new ScriptParametersTableCellEditor(optimization);
editor.setRegionStorage(regionStorage);
- editor.setFactorActionListener(getFactorActionListener(view));
- view.getSimulOptimizationMethodParam().getColumnModel().getColumn(1).setCellEditor(editor);
+ editor.setFactorActionListener(getFactorActionListener());
+ tabUI.getSimulOptimizationMethodParam().getColumnModel().getColumn(1).setCellEditor(editor);
}
}
@@ -289,7 +291,7 @@
* @return model
*/
public ListModel<String> getExportListModel() {
- List<String> result = new ArrayList<String>();
+ List<String> result = new ArrayList<>();
for (String r : ExportStorage.getExportNames()) {
// there is some non java files in sensitivity directory
if (r.endsWith(".java")) {
@@ -306,11 +308,10 @@
/**
* ExportInfo model for combo box.
*
- * @param view view
* @return model
*/
- public ExportObservationTableModel getExportObservationTableModel(OptimizationUI view) {
- SimulationParameter param = getSimulationParameter(view);
+ public ExportObservationTableModel getExportObservationTableModel() {
+ SimulationParameter param = getSimulationParameter();
Map<ExportInfo, Observation> optimizationExportsObservations = param.getOptimizationExportsObservations();
ExportObservationTableModel model = new ExportObservationTableModel(optimizationExportsObservations);
return model;
@@ -318,16 +319,14 @@
/**
* Add selected export.
- *
- * @param view view
*/
- public void addExports(OptimizationUI view) {
+ public void addExports() {
// get elements
- SimulationParameter param = getSimulationParameter(view);
- ExportObservationTableModel tableModel = (ExportObservationTableModel)view.getExportObservationTable().getModel();
+ SimulationParameter param = getSimulationParameter();
+ ExportObservationTableModel tableModel = (ExportObservationTableModel)tabUI.getExportObservationTable().getModel();
// add all selected exports
- List<String> selectedExports = view.getFieldExportList().getSelectedValuesList();
+ List<String> selectedExports = tabUI.getFieldExportList().getSelectedValuesList();
for (String selectedExport : selectedExports) {
try {
// create export instance
@@ -347,16 +346,14 @@
/**
* Remove selected exports in table.
- *
- * @param view view
*/
- public void removeExports(OptimizationUI view) {
+ public void removeExports() {
// get element
- SimulationParameter param = getSimulationParameter(view);
+ SimulationParameter param = getSimulationParameter();
Map<ExportInfo, Observation> optimizationExports = param.getOptimizationExportsObservations();
- ExportObservationTableModel tableModel = (ExportObservationTableModel)view.getExportObservationTable().getModel();
+ ExportObservationTableModel tableModel = (ExportObservationTableModel)tabUI.getExportObservationTable().getModel();
- JTable table = view.getExportObservationTable();
+ JTable table = tabUI.getExportObservationTable();
int[] rows = table.getSelectedRows();
// reverse order
for (int i = rows.length - 1; i >= 0; i--) {
@@ -371,14 +368,12 @@
/**
* Clear all export in table.
- *
- * @param view view
*/
- public void clearExports(OptimizationUI view) {
+ public void clearExports() {
// get elements
- SimulationParameter param = getSimulationParameter(view);
+ SimulationParameter param = getSimulationParameter();
Map<ExportInfo, Observation> optimizationExports = param.getOptimizationExportsObservations();
- ExportObservationTableModel tableModel = (ExportObservationTableModel)view.getExportObservationTable().getModel();
+ ExportObservationTableModel tableModel = (ExportObservationTableModel)tabUI.getExportObservationTable().getModel();
// clear
optimizationExports.clear();
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -23,23 +23,15 @@
#L%
-->
<Table>
- <script><![CDATA[
- protected void $afterCompleteSetup() {
- handler.init(this);
- }
- // application will be refreshed by regionStorage change
- protected void regionStorageChanged() {
- //handler.refresh(this);
- }
+ <OptimizationHandler id="handler" constructorParams="this" />
- public void refresh() {
- handler.refresh(this);
- }
+ <script><![CDATA[
+ protected void $afterCompleteSetup() {
+ handler.afterInit();
+ }
]]></script>
- <OptimizationHandler id="handler" javaBean='new OptimizationHandler()'/>
-
<!-- Objective choice and param -->
<row>
<cell fill="horizontal">
@@ -47,7 +39,7 @@
</cell>
<cell fill="horizontal" weightx="1.0" columns="2">
<JComboBox id="fieldObjectiveMethodSelect" genericType="String" model='{handler.getObjectiveComboModel()}'
- onActionPerformed='handler.objectiveChanged(this)'
+ onActionPerformed='handler.objectiveChanged()'
renderer="{new fr.ifremer.isisfish.ui.models.optimization.ObjectiveComboRenderer()}"/>
</cell>
</row>
@@ -66,7 +58,7 @@
</cell>
<cell fill="horizontal" weightx="1.0" columns="2">
<JComboBox id="fieldOptimizationMethodSelect" genericType="String" model='{handler.getOptimizationComboModel()}'
- onActionPerformed='handler.optimizationChanged(this)'
+ onActionPerformed='handler.optimizationChanged()'
renderer="{new fr.ifremer.isisfish.ui.models.optimization.OptimizationComboRenderer()}"/>
</cell>
</row>
@@ -97,26 +89,26 @@
<row>
<cell fill="horizontal">
<JButton id="addExportsButton" text="isisfish.common.add" enabled="false"
- onActionPerformed="handler.addExports(this)" />
+ onActionPerformed="handler.addExports()" />
</cell>
</row>
<row>
<cell fill="horizontal">
<JButton id="removeExportsButton" text="isisfish.common.remove" enabled="false"
- onActionPerformed="handler.removeExports(this)" />
+ onActionPerformed="handler.removeExports()" />
</cell>
</row>
<row>
<cell fill="horizontal">
<JButton id="clearExportsButton" text="isisfish.common.clear" enabled="false"
- onActionPerformed="handler.clearExports(this)" />
+ onActionPerformed="handler.clearExports()" />
</cell>
</row>
</Table>
</cell>
<cell fill="both" weightx="1.0" weighty="1.0">
<JScrollPane>
- <JTable id="exportObservationTable" model="{handler.getExportObservationTableModel(this)}" rowHeight='24' />
+ <JTable id="exportObservationTable" rowHeight='24' />
<ListSelectionModel id="exportObservationSelectionModel" initializer="exportObservationTable.getSelectionModel()"
onValueChanged='removeExportsButton.setEnabled(!exportObservationSelectionModel.isSelectionEmpty());clearExportsButton.setEnabled(exportObservationTable.getModel().getRowCount() > 0);' />
</JScrollPane>
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,383 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 - 2014 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.ui.simulator;
+
+import static org.nuiton.i18n.I18n.t;
+
+import java.awt.Cursor;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.ComboBoxModel;
+import javax.swing.DefaultListModel;
+import javax.swing.SwingUtilities;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaException;
+
+import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.datastore.StorageChangeEvent;
+import fr.ifremer.isisfish.datastore.StorageChangeListener;
+import fr.ifremer.isisfish.datastore.StorageException;
+import fr.ifremer.isisfish.entities.FisheryRegion;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.entities.Strategy;
+import fr.ifremer.isisfish.simulator.launcher.SimulationJob;
+import fr.ifremer.isisfish.simulator.launcher.SimulationService;
+import fr.ifremer.isisfish.simulator.launcher.SimulationServiceListener;
+import fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher;
+import fr.ifremer.isisfish.ui.SimulationUI;
+import fr.ifremer.isisfish.ui.WelcomePanelUI;
+import fr.ifremer.isisfish.ui.WelcomeTabUI;
+import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
+import fr.ifremer.isisfish.ui.sensitivity.SensitivityUI;
+
+/**
+ * Params UI handler.
+ *
+ * @author Eric Chatellier
+ */
+public class ParamsHandler extends SimulationTabHandler {
+
+ /** Class logger. */
+ private static final Log log = LogFactory.getLog(ParamsHandler.class);
+
+ protected ParamsUI tabUI;
+
+ // instances variables déclaration
+ protected SimulationServiceListener simulationListener;
+ protected StorageChangeListener regionStorageListener;
+
+ protected List<String> oldSimulNames = null;
+
+ protected ParamsHandler(ParamsUI tabUI) {
+ super(tabUI);
+ this.tabUI = tabUI;
+ }
+
+ protected void afterInit() {
+ regionStorageListener = new StorageChangeListener() {
+ @Override
+ public void versionDataChanged(StorageChangeEvent e) {
+ GenericComboModel<String> model = new GenericComboModel<String>(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames());
+ tabUI.fieldSimulParamsRegion.setModel(model);
+ }
+ };
+ RegionStorage.addStorageChangeListener(regionStorageListener);
+
+ simulationListener = new SimulationServiceListener() {
+ @Override
+ public void simulationStart(SimulationService simService, SimulationJob job) {
+
+ }
+
+ @Override
+ public void simulationStop(SimulationService simService, final SimulationJob job) {
+ final GenericComboModel<String> model = (GenericComboModel<String>)tabUI.fieldSimulParamsSelect.getModel();
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ model.addElement(job.getId());
+ }
+ });
+ }
+
+ @Override
+ public void clearJobDone(SimulationService simService) {
+
+ }
+ };
+ SimulationService.getService().addSimulationServiceListener(simulationListener);
+
+ // la gestion des regles est maintenant independante de SimulAction
+ // il faut faire la lié aux parametres de simulations
+ getSimulAction().getSimulationParameter().setRules(tabUI.ruleChooser.getRulesList());
+ }
+
+ public void refresh() {
+ if (getSimulAction().getSimulationStorage() != null) {
+ tabUI.fieldSimulParamsName.setText(getSimulAction().getSimulationStorage().getName());
+ }
+ tabUI.fieldSimulParamsDesc.setText(getSimulAction().getSimulationParameter().getDescription());
+ setListSimulParamsStrategiesItems();
+ setListSimulParamsPopulationsItems();
+ }
+
+ /**
+ * Called on user region selection change.
+ */
+ protected void regionChange() {
+ // le premier item est " " pour ne pas avoir de selection par defaut
+ final String selected = tabUI.fieldSimulParamsRegion.getSelectedItem().toString();
+ if (log.isDebugEnabled()) {
+ log.debug(" selected " + selected);
+ }
+ if(selected != null && !selected.trim().isEmpty()) {
+ tabUI.getParentContainer(WelcomePanelUI.class).setStatusMessage(t("isisfish.message.loading.region"));
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ getSimulAction().regionChange(tabUI, selected);
+ // FIXME fix this
+ if (!tabUI.isSensitivity()) {
+ tabUI.getParentContainer(SimulUI.class).refresh();
+ } else {
+ tabUI.getParentContainer(SensitivityUI.class).refresh();
+ }
+ setSensitivityTabRegion();
+ tabUI.getParentContainer(WelcomePanelUI.class).setStatusMessage(t("isisfish.message.region.loaded"));
+ }
+ });
+ }
+ }
+
+ protected void initSimulationParams() {
+ if (!tabUI.isSensitivity()){
+ // prescript
+ String preScript = getSimulAction().getSimulationParameter().getPreScript();
+ tabUI.fieldUseSimulPreScripts.setSelected(preScript != null && !preScript.isEmpty());
+ tabUI.getParentContainer(SimulUI.class).getPreScriptUI().getFieldSimulPreScript().setText(preScript);
+
+ // simulation plan
+ tabUI.fieldSimulUseSimulationPlan.setSelected(getSimulAction().getSimulationParameter().getUseSimulationPlan());
+ tabUI.getParentContainer(SimulUI.class).getPlanUI().getHandler().refresh();
+
+ // optimization
+ tabUI.fieldSimulUseOptimization.setSelected(getSimulAction().getSimulationParameter().getUseOptimization());
+ tabUI.getParentContainer(SimulUI.class).getOptimizationUI().getHandler().refresh();
+
+ }
+ }
+
+ protected void setSensitivityTabRegion() {
+ if (tabUI.isSensitivity()) {
+ try {
+ // FIXME this transaction in never closed
+ // and can't be closed because used in
+ TopiaContext tx = getSimulAction().getRegionStorage().getStorage().beginTransaction();
+ FisheryRegion fisheryRegion = RegionStorage.getFisheryRegion(tx);
+ tabUI.getParentContainer(SensitivityUI.class).getSensitivityTabUI().setFisheryRegion(fisheryRegion);
+ tabUI.getParentContainer(SensitivityUI.class).getSensitivityTabUI().setTreeModel();
+ } catch (StorageException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't reload factors", ex);
+ }
+ } catch (TopiaException ex) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't reload factors", ex);
+ }
+ }
+ }
+ }
+ protected void initSensitivityParams() {
+ if (tabUI.isSensitivity()) {
+ tabUI.getParentContainer(SensitivityUI.class).getSensitivityChooserUI().refreshSelectedSensitivityAnalysis();
+ tabUI.getParentContainer(SensitivityUI.class).getSensitivityTabUI().setFactorModel();
+ tabUI.getParentContainer(SensitivityUI.class).getSensitivityChooserUI().setSensitivityExportListModel();
+ tabUI.sensitivityOnlyKeepFirstResultCheckBox.setSelected(getSimulAction().getSimulationParameter().isSensitivityAnalysisOnlyKeepFirst());
+ }
+ }
+
+ /*public void setSimulationParameter(SimulAction simulAction){
+ getSimulAction().setSimulationParameter(getSimulAction().getSimulationParameter());
+ }*/
+
+ protected void loadOldSimulation() {
+ final String selected = tabUI.fieldSimulParamsSelect.getSelectedItem().toString();
+ // le premier item est " " pour ne pas avoir de selection par defaut
+ if (selected != null && !selected.equals(" ")) {
+ tabUI.getParentContainer(WelcomePanelUI.class).setStatusMessage(t("isisfish.message.loading.old.simulation"));
+ tabUI.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+
+ getSimulAction().loadOldSimulation(selected);
+ tabUI.fieldSimulParamsRegion.setSelectedItem(tabUI.getContextValue(SimulAction.class).getSimulationParameter().getRegionName());
+
+ // FIXME fix this
+ if (!tabUI.isSensitivity()) {
+ tabUI.getParentContainer(SimulUI.class).refresh();
+ } else {
+ tabUI.getParentContainer(SensitivityUI.class).refresh();
+ }
+
+ // mise a jour des années
+ tabUI.fieldSimulParamsNbMois.setText(String.valueOf(getSimulAction().getNumberOfMonths()));
+ initSimulationParams();
+ initSensitivityParams();
+
+ // regles
+ tabUI.ruleChooser.setRulesList(getSimulAction().getSimulationParameter().getRules());
+
+ tabUI.getParentContainer(WelcomePanelUI.class).setStatusMessage(t("isisfish.message.old.simulation.loaded"));
+ tabUI.setCursor(Cursor.getDefaultCursor());
+ }
+ });
+ }
+ }
+
+ /**
+ * Lance la simulation.
+ */
+ protected void launchSimulation() {
+
+ if (!tabUI.isSensitivity()) {
+ getSimulAction().launchSimulation(tabUI.fieldSimulParamsName.getText(), (SimulatorLauncher)tabUI.comboSelLauncher.getSelectedItem());
+ } else {
+ getSimulAction().launchSimulationWithSensibility(tabUI.fieldSimulParamsName.getText(), (SimulatorLauncher)tabUI.comboSelLauncher.getSelectedItem());
+ }
+
+ // dans le cas d'une fenetre independante, il n'y a pas de ParentContainer
+ WelcomeTabUI parent = tabUI.getParentContainer(WelcomeTabUI.class);
+ if (parent != null) {
+ parent.setQueueTabSelection();
+ }
+ }
+ protected void enablePreScript() {
+ getSimulAction().getSimulationParameter().setUsePreScript(tabUI.fieldUseSimulPreScripts.isSelected());
+ SimulationUI simulationUI = tabUI.getParentContainer(SimulationUI.class);
+ simulationUI.setEnabledPrescriptTab(tabUI.fieldUseSimulPreScripts.isSelected());
+ }
+ protected void enableSimulationPlan() {
+ getSimulAction().getSimulationParameter().setUseSimulationPlan(tabUI.fieldSimulUseSimulationPlan.isSelected());
+ SimulationUI simulationUI = tabUI.getParentContainer(SimulationUI.class);
+ simulationUI.setEnabledSimulationPlanTab(tabUI.fieldSimulUseSimulationPlan.isSelected());
+ }
+
+ protected void enableOptimization() {
+ getSimulAction().getSimulationParameter().setUseOptimization(tabUI.fieldSimulUseOptimization.isSelected());
+ SimulationUI simulationUI = tabUI.getParentContainer(SimulationUI.class);
+ simulationUI.setEnabledOptimizationTab(tabUI.fieldSimulUseOptimization.isSelected());
+ }
+
+ protected void setListSimulParamsStrategiesItems() {
+ List<Strategy> strategiesSelected = getSimulAction().getSimulationParameter().getStrategies();
+ DefaultListModel listSimulParamsStrategiesModel = new DefaultListModel();
+ List<Strategy> strategies = getSimulAction().getStrategies();
+ for (Strategy s : strategies){
+ listSimulParamsStrategiesModel.addElement(s);
+ }
+ tabUI.listSimulParamsStrategies.setModel(listSimulParamsStrategiesModel);
+ if (listSimulParamsStrategiesModel.size() != 0) {
+ for (Strategy s : strategiesSelected){
+ int index = listSimulParamsStrategiesModel.indexOf(s);
+ tabUI.listSimulParamsStrategies.addSelectionInterval(index, index);
+ }
+ //strategySelected();
+ }
+ }
+ protected void setListSimulParamsPopulationsItems(){
+ List<Population> populationsSelected = getSimulAction().getSimulationParameter().getPopulations();
+ DefaultListModel listSimulParamsPopulationsModel = new DefaultListModel();
+ List<Population> populations = getSimulAction().getPopulations();
+ for (Population p : populations){
+ listSimulParamsPopulationsModel.addElement(p);
+ }
+ tabUI.listSimulParamsPopulations.setModel(listSimulParamsPopulationsModel);
+ if (listSimulParamsPopulationsModel.size() != 0) {
+ for (Population p : populationsSelected) {
+ int index = listSimulParamsPopulationsModel.indexOf(p);
+ tabUI.listSimulParamsPopulations.addSelectionInterval(index, index);
+ }
+ //getSimulAction().populationSelected(this);
+ }
+ }
+
+ protected void strategySelected(){
+ getSimulAction().setStrategies(tabUI.listSimulParamsStrategies.getSelectedValuesList());
+ }
+
+ protected ComboBoxModel<String> getSimulParamsSelectModel() {
+ return getSimulParamsSelectModel(false);
+ }
+
+ protected ComboBoxModel<String> getSimulParamsSelectModel(boolean force) {
+ List<String> items = getFilteredOldSimulatorNames(force);
+ GenericComboModel<String> result = new GenericComboModel<String>(items);
+ return result;
+ }
+
+ protected void resetFilter(){
+ resetOldSimulatorNames();
+ tabUI.fieldSimulParamsSelect.setModel(getSimulParamsSelectModel(false));
+ }
+
+ /**
+ * Return old simulations.
+ *
+ * @return old simulations
+ */
+ public List<String> getOldSimulationItem() {
+
+ //try {
+ oldSimulNames = new ArrayList<String>();
+
+ //FilterModel<SimulationProperties, String> filterModel;
+ // keep in context list of old simulation names (for filter process)
+ oldSimulNames.addAll(SimulationStorage.getSimulationNames());
+ // create filter model
+ //filterModel = SimulationFilterUtil.createFilterModel(oldSimulNames);
+ // to used directly model.getFilteredResult() in xml
+ // we must fill filterModel result with original items
+ //filterModel.selectAll();
+
+ // chatellier : Ajout d'une entrée vide pour forcer la sélection
+ // et que le changement lance un evenement sur la liste
+ // Add empty item after, otherwise, un " " directory
+ // will be created
+ oldSimulNames.add(0, " ");
+
+ return oldSimulNames;
+ /*} catch (ParseException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't get old simulation item", e);
+ }
+ ErrorHelper.showErrorDialog(t("isisfish.error.simulation.listoldsimulation"), e);
+ } catch (IOException e) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't get old simulation item", e);
+ }
+ ErrorHelper.showErrorDialog(t("isisfish.error.simulation.listoldsimulation"), e);
+ }
+ return null;*/
+ }
+
+ public List<String> getFilteredOldSimulatorNames(boolean force) {
+ if (oldSimulNames == null || force) {
+ oldSimulNames = getOldSimulationItem();
+ }
+ return oldSimulNames;
+ }
+
+ public void setOldSimulatorNames(List<String> sn) {
+ oldSimulNames = sn;
+ }
+
+ public void resetOldSimulatorNames() {
+ oldSimulNames = getOldSimulationItem();
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -23,296 +23,24 @@
#L%
-->
<Table>
+ <ParamsHandler id="handler" constructorParams="this" />
+
<fr.ifremer.isisfish.datastore.RegionStorage id="regionStorage" javaBean="null" />
<!-- ui state when editing -->
<Boolean id='sensitivity' javaBean='false' />
<import>
- static org.nuiton.i18n.I18n.t
- java.text.ParseException;
- fr.ifremer.isisfish.datastore.RegionStorage
- fr.ifremer.isisfish.datastore.StorageChangeEvent
- fr.ifremer.isisfish.datastore.StorageChangeListener
- fr.ifremer.isisfish.datastore.StorageException
- fr.ifremer.isisfish.entities.Population
- fr.ifremer.isisfish.entities.Strategy
- fr.ifremer.isisfish.entities.FisheryRegion
- fr.ifremer.isisfish.ui.SimulationUI
- fr.ifremer.isisfish.ui.WelcomePanelUI
- fr.ifremer.isisfish.ui.WelcomeTabUI
- fr.ifremer.isisfish.ui.models.common.GenericComboModel
- fr.ifremer.isisfish.ui.sensitivity.SensitivityUI
- fr.ifremer.isisfish.ui.widget.FilterableComboBox
- fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher
- fr.ifremer.isisfish.simulator.launcher.SimulationService
- fr.ifremer.isisfish.simulator.launcher.SimulationJob
- fr.ifremer.isisfish.simulator.launcher.SimulationServiceListener
- org.nuiton.topia.TopiaException
- org.nuiton.topia.TopiaContext
- javax.swing.SwingUtilities
- javax.swing.DefaultComboBoxModel
- java.awt.CardLayout
- java.awt.Cursor
java.awt.Dimension
- java.io.IOException
- javax.swing.DefaultListModel
- javax.swing.ComboBoxModel
+ javax.swing.DefaultComboBoxModel
</import>
- <script><![CDATA[
-// instances variables déclaration
-SimulationServiceListener simulationListener;
-StorageChangeListener regionStorageListener;
-SimulAction simulAction = getContextValue(SimulAction.class);
-regionStorageListener = new StorageChangeListener() {
- @Override
- public void versionDataChanged(StorageChangeEvent e) {
- GenericComboModel<String> model = new GenericComboModel<String>(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames());
- fieldSimulParamsRegion.setModel(model);
+ <script><![CDATA[
+ protected void $afterCompleteSetup() {
+ handler.afterInit();
}
-};
-RegionStorage.addStorageChangeListener(regionStorageListener);
+ ]]></script>
-simulationListener = new SimulationServiceListener() {
- @Override
- public void simulationStart(SimulationService simService, SimulationJob job) {
-
- }
-
- @Override
- public void simulationStop(SimulationService simService, final SimulationJob job) {
- final GenericComboModel<String> model = (GenericComboModel<String>)fieldSimulParamsSelect.getModel();
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- model.addElement(job.getId());
- }
- });
- }
-
- @Override
- public void clearJobDone(SimulationService simService) {
-
- }
-}
-SimulationService.getService().addSimulationServiceListener(simulationListener);
-
-// la gestion des regles est maintenant independante de SimulAction
-// il faut faire la lié aux parametres de simulations
-simulAction.getSimulationParameter().setRules(ruleChooser.getRulesList());
-
-public void refresh() {
- if (simulAction.getSimulationStorage() != null) {
- fieldSimulParamsName.setText(simulAction.getSimulationStorage().getName());
- }
- fieldSimulParamsDesc.setText(simulAction.getSimulationParameter().getDescription());
- setListSimulParamsStrategiesItems();
- setListSimulParamsPopulationsItems();
-}
-
-/**
- * Called on user region selection change.
- */
-protected void regionChange() {
- // le premier item est " " pour ne pas avoir de selection par defaut
- final String selected = fieldSimulParamsRegion.getSelectedItem().toString();
- if (log.isDebugEnabled()) {
- log.debug(" selected " + selected);
- }
- if(selected != null && !selected.trim().isEmpty()) {
- getParentContainer(WelcomePanelUI.class).setStatusMessage(t("isisfish.message.loading.region"));
- SwingUtilities.invokeLater(new Runnable() {
- @Override
- public void run() {
- simulAction.regionChange(ParamsUI.this, selected);
- // FIXME fix this
- if (!isSensitivity()) {
- getParentContainer(SimulUI.class).refresh();
- } else {
- getParentContainer(SensitivityUI.class).refresh();
- }
- setSensitivityTabRegion();
- getParentContainer(WelcomePanelUI.class).setStatusMessage(t("isisfish.message.region.loaded"));
- }
- });
- }
-}
-
-protected void initSimulationParams() {
- if (!isSensitivity()){
- // prescript
- String preScript = simulAction.getSimulationParameter().getPreScript();
- fieldUseSimulPreScripts.setSelected(preScript != null && !preScript.isEmpty());
- getParentContainer(SimulUI.class).getPreScriptUI().getFieldSimulPreScript().setText(preScript);
-
- // simulation plan
- fieldSimulUseSimulationPlan.setSelected(simulAction.getSimulationParameter().getUseSimulationPlan());
- getParentContainer(SimulUI.class).getSensUI().refresh();
-
- // optimization
- fieldSimulUseOptimization.setSelected(simulAction.getSimulationParameter().getUseOptimization());
- getParentContainer(SimulUI.class).getOptimizationUI().refresh();
-
- }
-}
-
-protected void setSensitivityTabRegion() {
- if (isSensitivity()) {
- try {
- // FIXME this transaction in never closed
- // and can't be closed because used in
- TopiaContext tx = simulAction.getRegionStorage().getStorage().beginTransaction();
- FisheryRegion fisheryRegion = RegionStorage.getFisheryRegion(tx);
- getParentContainer(SensitivityUI.class).getSensitivityTabUI().setFisheryRegion(fisheryRegion);
- getParentContainer(SensitivityUI.class).getSensitivityTabUI().setTreeModel();
- } catch (StorageException ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't reload factors", ex);
- }
- } catch (TopiaException ex) {
- if (log.isErrorEnabled()) {
- log.error("Can't reload factors", ex);
- }
- }
- }
-}
-protected void initSensitivityParams() {
- if (isSensitivity()) {
- getParentContainer(SensitivityUI.class).getSensitivityChooserUI().refreshSelectedSensitivityAnalysis();
- getParentContainer(SensitivityUI.class).getSensitivityTabUI().setFactorModel();
- getParentContainer(SensitivityUI.class).getSensitivityChooserUI().setSensitivityExportListModel();
- sensitivityOnlyKeepFirstResultCheckBox.setSelected(simulAction.getSimulationParameter().isSensitivityAnalysisOnlyKeepFirst());
- }
-}
-
-public void setSimulationParameter(SimulAction simulAction){
- simulAction.setSimulationParameter(simulAction.getSimulationParameter());
-}
-
-protected void loadOldSimulation() {
- final String selected = fieldSimulParamsSelect.getSelectedItem().toString();
- // le premier item est " " pour ne pas avoir de selection par defaut
- if (selected != null && !selected.equals(" ")) {
- getParentContainer(WelcomePanelUI.class).setStatusMessage(t("isisfish.message.loading.old.simulation"));
- setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
-
- SwingUtilities.invokeLater(new Runnable() {
- @Override
- public void run() {
-
- simulAction.loadOldSimulation(selected);
- fieldSimulParamsRegion.setSelectedItem(getContextValue(SimulAction.class).getSimulationParameter().getRegionName());
-
- // FIXME fix this
- if (!isSensitivity()) {
- getParentContainer(SimulUI.class).refresh();
- } else {
- getParentContainer(SensitivityUI.class).refresh();
- }
-
- // mise a jour des années
- fieldSimulParamsNbMois.setText(String.valueOf(simulAction.getNumberOfMonths()));
- initSimulationParams();
- initSensitivityParams();
-
- // regles
- ruleChooser.setRulesList(simulAction.getSimulationParameter().getRules());
-
- getParentContainer(WelcomePanelUI.class).setStatusMessage(t("isisfish.message.old.simulation.loaded"));
- setCursor(Cursor.getDefaultCursor());
- }
- });
- }
-}
-
-/**
- * Lance la simulation.
- */
-protected void launchSimulation() {
-
- if (!isSensitivity()) {
- simulAction.launchSimulation(fieldSimulParamsName.getText(), (SimulatorLauncher)comboSelLauncher.getSelectedItem());
- }
- else {
- simulAction.launchSimulationWithSensibility(fieldSimulParamsName.getText(), (SimulatorLauncher)comboSelLauncher.getSelectedItem());
- }
-
- // dans le cas d'une fenetre independante, il n'y a pas de ParentContainer
- WelcomeTabUI parent = getParentContainer(WelcomeTabUI.class);
- if (parent != null) {
- parent.setQueueTabSelection();
- }
-}
-protected void enablePreScript() {
- simulAction.getSimulationParameter().setUsePreScript(fieldUseSimulPreScripts.isSelected());
- SimulationUI simulationUI = getParentContainer(SimulationUI.class);
- simulationUI.setEnabledPrescriptTab(fieldUseSimulPreScripts.isSelected());
-}
-protected void enableSimulationPlan() {
- simulAction.getSimulationParameter().setUseSimulationPlan(fieldSimulUseSimulationPlan.isSelected());
- SimulationUI simulationUI = getParentContainer(SimulationUI.class);
- simulationUI.setEnabledSimulationPlanTab(fieldSimulUseSimulationPlan.isSelected());
-}
-
-protected void enableOptimization() {
- simulAction.getSimulationParameter().setUseOptimization(fieldSimulUseOptimization.isSelected());
- SimulationUI simulationUI = getParentContainer(SimulationUI.class);
- simulationUI.setEnabledOptimizationTab(fieldSimulUseOptimization.isSelected());
-}
-
-protected void setListSimulParamsStrategiesItems() {
- List<Strategy> strategiesSelected = simulAction.getSimulationParameter().getStrategies();
- DefaultListModel listSimulParamsStrategiesModel = new DefaultListModel();
- java.util.List<Strategy> strategies = simulAction.getStrategies();
- for (Strategy s : strategies){
- listSimulParamsStrategiesModel.addElement(s);
- }
- listSimulParamsStrategies.setModel(listSimulParamsStrategiesModel);
- if (listSimulParamsStrategiesModel.size() != 0) {
- for (Strategy s : strategiesSelected){
- int index = listSimulParamsStrategiesModel.indexOf(s);
- listSimulParamsStrategies.addSelectionInterval(index, index);
- }
- //strategySelected();
- }
-}
-protected void setListSimulParamsPopulationsItems(){
- List<Population> populationsSelected = simulAction.getSimulationParameter().getPopulations();
- DefaultListModel listSimulParamsPopulationsModel = new DefaultListModel();
- List<Population> populations = simulAction.getPopulations();
- for (Population p : populations){
- listSimulParamsPopulationsModel.addElement(p);
- }
- listSimulParamsPopulations.setModel(listSimulParamsPopulationsModel);
- if (listSimulParamsPopulationsModel.size() != 0) {
- for (Population p : populationsSelected) {
- int index = listSimulParamsPopulationsModel.indexOf(p);
- listSimulParamsPopulations.addSelectionInterval(index, index);
- }
- //simulAction.populationSelected(this);
- }
-}
-
-protected void strategySelected(){
- simulAction.setStrategies(listSimulParamsStrategies.getSelectedValuesList());
-}
-
-protected ComboBoxModel<String> getSimulParamsSelectModel() {
- return getSimulParamsSelectModel(false);
-}
-
-protected ComboBoxModel<String> getSimulParamsSelectModel(boolean force) {
- List<String> items = simulAction.getFilteredOldSimulatorNames(force);
- GenericComboModel<String> result = new GenericComboModel<String>(items);
- return result;
-}
-
-protected void resetFilter(){
- simulAction.resetOldSimulatorNames();
- fieldSimulParamsSelect.setModel(getSimulParamsSelectModel(false));
-}
- ]]>
- </script>
<row>
<cell fill="horizontal" weightx="1.0">
<Table>
@@ -321,10 +49,10 @@
<JLabel text="isisfish.params.loadOldSimulation" />
</cell>
<cell fill="horizontal" weightx="1.0">
- <FilterableComboBox id="fieldSimulParamsSelect"
+ <fr.ifremer.isisfish.ui.widget.FilterableComboBox id="fieldSimulParamsSelect"
genericType="String"
- model='{getSimulParamsSelectModel()}'
- onActionPerformed='loadOldSimulation()' />
+ model='{handler.getSimulParamsSelectModel()}'
+ onActionPerformed='handler.loadOldSimulation()' />
</cell>
</row>
</Table>
@@ -352,8 +80,8 @@
<JTextField id="fieldSimulParamsName" />
<javax.swing.text.Document
javaBean="fieldSimulParamsName.getDocument()"
- onInsertUpdate='simulAction.setName(fieldSimulParamsName.getText())'
- onRemoveUpdate='simulAction.setName(fieldSimulParamsName.getText())' />
+ onInsertUpdate='getContextValue(SimulAction.class).setName(fieldSimulParamsName.getText())'
+ onRemoveUpdate='getContextValue(SimulAction.class).setName(fieldSimulParamsName.getText())' />
</cell>
</row>
</Table>
@@ -368,7 +96,7 @@
<JComboBox id="fieldSimulParamsRegion" genericType="String"
model='{new fr.ifremer.isisfish.ui.models.common.GenericComboModel<String>(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames())}'
selectedItem='{getContextValue(SimulAction.class).getSimulationParameter().getRegionName()}'
- onActionPerformed='regionChange()' />
+ onActionPerformed='handler.regionChange()' />
</cell>
</row>
</Table>
@@ -384,11 +112,11 @@
weighty="0.3">
<JScrollPane>
<JTextArea id="fieldSimulParamsDesc"
- text='{simulAction.getSimulationParameter().getDescription()}' />
+ text='{getContextValue(SimulAction.class).getSimulationParameter().getDescription()}' />
<javax.swing.text.Document
javaBean="fieldSimulParamsDesc.getDocument()"
- onInsertUpdate='simulAction.getSimulationParameter().setDescription(fieldSimulParamsDesc.getText())'
- onRemoveUpdate='simulAction.getSimulationParameter().setDescription(fieldSimulParamsDesc.getText())' />
+ onInsertUpdate='getContextValue(SimulAction.class).getSimulationParameter().setDescription(fieldSimulParamsDesc.getText())'
+ onRemoveUpdate='getContextValue(SimulAction.class).getSimulationParameter().setDescription(fieldSimulParamsDesc.getText())' />
</JScrollPane>
</cell>
</row>
@@ -404,11 +132,11 @@
<cell fill="both" weightx="1.0">
<JTextField
id="fieldSimulParamsNbMois"
- text='{String.valueOf(simulAction.getSimulationParameter().getNumberOfMonths())}' />
+ text='{String.valueOf(getContextValue(SimulAction.class).getSimulationParameter().getNumberOfMonths())}' />
<javax.swing.text.Document
javaBean="fieldSimulParamsNbMois.getDocument()"
- onInsertUpdate='simulAction.setNumberOfMonths(fieldSimulParamsNbMois.getText())'
- onRemoveUpdate='simulAction.setNumberOfMonths(fieldSimulParamsNbMois.getText())' />
+ onInsertUpdate='getContextValue(SimulAction.class).setNumberOfMonths(fieldSimulParamsNbMois.getText())'
+ onRemoveUpdate='getContextValue(SimulAction.class).setNumberOfMonths(fieldSimulParamsNbMois.getText())' />
</cell>
</row>
</Table>
@@ -438,7 +166,7 @@
genericType="fr.ifremer.isisfish.entities.Strategy"
selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}"
selectionModel="{new jaxx.runtime.swing.OneClicListSelectionModel(listSimulParamsStrategies.getSelectionModel(), listSimulParamsStrategies.getModel())}"
- onValueChanged='strategySelected()'
+ onValueChanged='handler.strategySelected()'
enabled="{getRegionStorage() != null}" />
</JScrollPane>
</cell>
@@ -449,7 +177,7 @@
genericType="fr.ifremer.isisfish.entities.Population"
selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}"
selectionModel="{new jaxx.runtime.swing.OneClicListSelectionModel(listSimulParamsPopulations.getSelectionModel(), listSimulParamsPopulations.getModel())}"
- onValueChanged='simulAction.populationSelected(this)'
+ onValueChanged='getContextValue(SimulAction.class).populationSelected(this)'
enabled="{getRegionStorage() != null}" />
</JScrollPane>
</cell>
@@ -457,7 +185,7 @@
<row>
<cell fill="both" weighty="1" columns="2">
<JPanel id="populationEffectivesPanel"
- layout="{new CardLayout()}">
+ layout="{new java.awt.CardLayout()}">
<JLabel text="isisfish.params.nopopulation"
horizontalAlignment="center"
border="{BorderFactory.createEtchedBorder()}"
@@ -483,7 +211,7 @@
<cell anchor="north">
<JButton id="addRuleFactorButton"
icon='{SwingUtil.createImageIcon("building_add.png")}'
- onActionPerformed="simulAction.addFactorWithComponent(this, ruleChooser)"
+ onActionPerformed="getContextValue(SimulAction.class).addFactorWithComponent(this, ruleChooser)"
visible="{isSensitivity()}"
enabled="{getRegionStorage() != null}" />
</cell>
@@ -503,32 +231,32 @@
<cell fill="horizontal" weightx="1">
<JCheckBox text="isisfish.params.usePreSimulationScript"
id="fieldUseSimulPreScripts"
- selected='{simulAction.getSimulationParameter().getUsePreScript()}'
+ selected='{getContextValue(SimulAction.class).getSimulationParameter().getUsePreScript()}'
visible='{!isSensitivity()}'
- onItemStateChanged='enablePreScript()' />
+ onItemStateChanged='handler.enablePreScript()' />
</cell>
<cell fill="horizontal" weightx="1">
<JCheckBox text="isisfish.params.useSimulationPlan"
id="fieldSimulUseSimulationPlan"
- selected='{simulAction.getSimulationParameter().getUseSimulationPlan()}'
+ selected='{getContextValue(SimulAction.class).getSimulationParameter().getUseSimulationPlan()}'
visible='{!isSensitivity()}'
- onItemStateChanged='enableSimulationPlan()'
+ onItemStateChanged='handler.enableSimulationPlan()'
enabled="{getRegionStorage() != null}" />
</cell>
<cell fill="horizontal" weightx="1">
<JCheckBox text="isisfish.params.useOptimization"
id="fieldSimulUseOptimization"
- selected='{simulAction.getSimulationParameter().getUseOptimization()}'
+ selected='{getContextValue(SimulAction.class).getSimulationParameter().getUseOptimization()}'
visible='{!isSensitivity()}'
- onItemStateChanged='enableOptimization()'
+ onItemStateChanged='handler.enableOptimization()'
enabled="{getRegionStorage() != null}" />
</cell>
<cell fill="horizontal" weightx="1">
<JCheckBox text="isisfish.params.sensitivityOnlyKeepFirstResult"
id="sensitivityOnlyKeepFirstResultCheckBox"
- selected='{simulAction.getSimulationParameter().isSensitivityAnalysisOnlyKeepFirst()}'
+ selected='{getContextValue(SimulAction.class).getSimulationParameter().isSensitivityAnalysisOnlyKeepFirst()}'
visible='{isSensitivity()}'
- onItemStateChanged='simulAction.getSimulationParameter().setSensitivityAnalysisOnlyKeepFirst(sensitivityOnlyKeepFirstResultCheckBox.isSelected())'
+ onItemStateChanged='getContextValue(SimulAction.class).getSimulationParameter().setSensitivityAnalysisOnlyKeepFirst(sensitivityOnlyKeepFirstResultCheckBox.isSelected())'
enabled="{getRegionStorage() != null}" />
</cell>
</row>
@@ -545,12 +273,12 @@
<cell fill="horizontal" weightx="0.4">
<JComboBox id="comboSelLauncher"
genericType="fr.ifremer.isisfish.simulator.launcher.SimulatorLauncher"
- model='{new DefaultComboBoxModel(simulAction.getSimulationLauncher().toArray())}' />
+ model='{new DefaultComboBoxModel(getContextValue(SimulAction.class).getSimulationLauncher().toArray())}' />
</cell>
<cell fill="horizontal" weightx="0.4">
<JButton id="buttonSimulParamsSimulate"
text="isisfish.common.simulate"
- onActionPerformed='launchSimulation()'
+ onActionPerformed='handler.launchSimulation()'
enabled="{getRegionStorage() != null}" />
</cell>
<cell fill="horizontal" weightx="0.2">
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,144 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 - 2014 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.ui.simulator;
+
+import java.util.List;
+
+import javax.swing.table.DefaultTableModel;
+
+import fr.ifremer.isisfish.datastore.RegionStorage;
+import fr.ifremer.isisfish.datastore.SimulationPlanStorage;
+import fr.ifremer.isisfish.datastore.StorageChangeEvent;
+import fr.ifremer.isisfish.datastore.StorageChangeListener;
+import fr.ifremer.isisfish.simulator.SimulationPlan;
+import fr.ifremer.isisfish.ui.models.common.GenericComboModel;
+import fr.ifremer.isisfish.ui.models.common.GenericListModel;
+import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellEditor;
+import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellRenderer;
+import fr.ifremer.isisfish.ui.models.common.ScriptParametersTableModel;
+
+/**
+ * Plan UI handler.
+ *
+ * @author Eric Chatellier
+ */
+public class PlanHandler extends SimulationTabHandler {
+
+ protected PlanUI tabUI;
+
+ protected StorageChangeListener simulationPlanStorageListener;
+
+ protected PlanHandler(PlanUI tabUI) {
+ super(tabUI);
+ this.tabUI = tabUI;
+ }
+
+ protected void afterInit() {
+ simulationPlanStorageListener = new StorageChangeListener() {
+ @Override
+ public void versionDataChanged(StorageChangeEvent e) {
+ refresh();
+ }
+ };
+ SimulationPlanStorage.addStorageChangeListener(simulationPlanStorageListener);
+
+ // model init
+ tabUI.fieldSimulParamsSimulationPlansSelect.setModel(getSimulationPlansComboModel());
+ tabUI.listSimulParamsSimulationPlansList.setModel(getSimulationSimulationPlansListModel());
+ }
+
+ public void refresh() {
+ // simulation plans names list
+ tabUI.fieldSimulParamsSimulationPlansSelect.setModel(getSimulationPlansComboModel());
+ // simulation simulation plans instance
+ tabUI.listSimulParamsSimulationPlansList.setModel(getSimulationSimulationPlansListModel());
+ }
+
+ /**
+ * Refresh simulation plan names list.
+ */
+ protected GenericComboModel<String> getSimulationPlansComboModel() {
+ List<String> simulationPlanNames = tabUI.simulAction.getSimulationPlanNames();
+ GenericComboModel<String> model = new GenericComboModel<>(simulationPlanNames);
+ return model;
+ }
+
+ /**
+ * Refresh simulation simulation plan list.
+ */
+ protected GenericListModel<SimulationPlan> getSimulationSimulationPlansListModel() {
+ List<SimulationPlan> simulationPlans = tabUI.simulAction.getParamSimulationPlans();
+ GenericListModel<SimulationPlan> model = new GenericListModel<>(simulationPlans);
+ return model;
+ }
+
+ protected void addSimulationPlan() {
+ String selectedSimulationPlanName = (String)tabUI.fieldSimulParamsSimulationPlansSelect.getSelectedItem();
+ tabUI.simulAction.addSimulationPlan(tabUI, selectedSimulationPlanName);
+ tabUI.listSimulParamsSimulationPlansList.setModel(getSimulationSimulationPlansListModel());
+ setSimulationPlanButtons();
+ }
+
+ protected void removeSimulationPlan() {
+ SimulationPlan selectedSimulationPlan = (SimulationPlan)tabUI.listSimulParamsSimulationPlansList.getSelectedValue();
+ tabUI.simulAction.removeSimulationPlan(selectedSimulationPlan);
+ tabUI.listSimulParamsSimulationPlansList.setModel(getSimulationSimulationPlansListModel());
+ setSimulationPlanButtons();
+ }
+
+ protected void clearSimulationPlan() {
+ tabUI.simulAction.clearSimulationPlans();
+ tabUI.listSimulParamsSimulationPlansList.setModel(getSimulationSimulationPlansListModel());
+ setSimulationPlanButtons();
+ }
+
+ protected void setSimulationPlanButtons() {
+ if (tabUI.getContextValue(SimulAction.class).getParamSimulationPlans().isEmpty()) {
+ tabUI.buttonSimulParamsSimulationPlansClear.setEnabled(false);
+ tabUI.buttonSimulParamsSimulationPlansRemove.setEnabled(false);
+ } else {
+ if (tabUI.listSimulParamsSimulationPlansList.getSelectedIndex() != -1) {
+ tabUI.buttonSimulParamsSimulationPlansRemove.setEnabled(true);
+ } else {
+ tabUI.buttonSimulParamsSimulationPlansRemove.setEnabled(false);
+ }
+ tabUI.buttonSimulParamsSimulationPlansClear.setEnabled(true);
+ }
+ setSimulParamsSimulationPlans();
+ }
+
+ protected void setSimulParamsSimulationPlans() {
+ SimulationPlan selectedSimulationPlan = (SimulationPlan)tabUI.listSimulParamsSimulationPlansList.getSelectedValue();
+ if (selectedSimulationPlan != null) {
+ ScriptParametersTableModel model = new ScriptParametersTableModel(selectedSimulationPlan);
+ tabUI.simulParamsSimulationPlans.setModel(model);
+ ScriptParametersTableCellEditor cellEditor = new ScriptParametersTableCellEditor(selectedSimulationPlan);
+ cellEditor.setRegionStorage(tabUI.getContextValue(RegionStorage.class));
+ tabUI.simulParamsSimulationPlans.getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(selectedSimulationPlan));
+ tabUI.simulParamsSimulationPlans.getColumnModel().getColumn(1).setCellEditor(cellEditor);
+ } else {
+ // clear table
+ tabUI.simulParamsSimulationPlans.setModel(new DefaultTableModel());
+ }
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanHandler.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
Copied: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanUI.jaxx (from rev 4226, trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx)
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanUI.jaxx (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PlanUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,92 @@
+<!--
+ #%L
+ IsisFish
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2005 - 2015 Ifremer, CodeLutin, Chatellier Eric
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 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 Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+<Table>
+ <PlanHandler id="handler" constructorParams="this" />
+
+ <import>
+ java.awt.Dimension
+ </import>
+
+ <SimulAction id='simulAction' javaBean='getContextValue(SimulAction.class)' />
+
+ <script><![CDATA[
+ protected void $afterCompleteSetup() {
+ handler.afterInit();
+ }
+ ]]></script>
+
+ <row>
+ <cell columns="2" fill="horizontal" weightx="1.0">
+ <JComboBox id="fieldSimulParamsSimulationPlansSelect"
+ genericType="String"
+ renderer='{new fr.ifremer.isisfish.ui.models.simulationplan.SimulationPlanComboRenderer()}' />
+ </cell>
+ </row>
+ <row>
+ <cell fill="both" weightx="0.5">
+ <JScrollPane minimumSize='{new Dimension(0,0)}' preferredSize='{new Dimension(0,0)}'>
+ <JList id="listSimulParamsSimulationPlansList" selectionMode="{javax.swing.ListSelectionModel.SINGLE_SELECTION}"
+ genericType="fr.ifremer.isisfish.simulator.SimulationPlan"
+ onValueChanged='handler.setSimulationPlanButtons()'
+ cellRenderer='{new fr.ifremer.isisfish.ui.models.simulationplan.SimulationPlanListRenderer()}'/>
+ </JScrollPane>
+ </cell>
+ <cell fill="both" weightx="0.5">
+ <Table name="isisfish.sens.title">
+ <row>
+ <cell fill="both" weightx="1.0">
+ <JButton id="buttonSimulParamsSimulationPlansAdd" text="isisfish.common.add"
+ onActionPerformed='handler.addSimulationPlan()'/>
+ </cell>
+ </row>
+ <row>
+ <cell fill="both" weightx="1.0">
+ <JButton id="buttonSimulParamsSimulationPlansRemove" text="isisfish.common.remove"
+ onActionPerformed='handler.removeSimulationPlan()' enabled='false'/>
+ </cell>
+ </row>
+ <row>
+ <cell fill="both" weightx="1.0">
+ <JButton id="buttonSimulParamsSimulationPlansClear" text="isisfish.common.clear"
+ onActionPerformed='handler.clearSimulationPlan()' enabled='false'/>
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
+ <row>
+ <cell columns="2" fill="both" weightx="1.0" weighty="1.0">
+ <JScrollPane>
+ <JTable id="simulParamsSimulationPlans" rowHeight='24' name="isisfish.sens.planParameters"/>
+ </JScrollPane>
+ </cell>
+ </row>
+ <row>
+ <cell columns="2" fill="horizontal" weightx="1.0">
+ <JButton text="isisfish.sens.backParameter" onActionPerformed='getParentContainer(fr.ifremer.isisfish.ui.SimulationUI.class).selectParametersTab()'/>
+ </cell>
+ </row>
+</Table>
+
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,50 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 - 2014 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.ui.simulator;
+
+/**
+ * Prescript UI handler.
+ *
+ * @author Eric Chatellier
+ */
+public class PreScriptsHandler extends SimulationTabHandler {
+
+ protected PreScriptsUI tabUI;
+
+ protected PreScriptsHandler(PreScriptsUI tabUI) {
+ super(tabUI);
+ this.tabUI = tabUI;
+ }
+
+ protected void afterInit() {
+
+ }
+
+ protected void save() {
+ tabUI.getContextValue(SimulAction.class).getSimulationParameter().setPreScript(tabUI.fieldSimulPreScript.getText());
+ }
+
+ public void refresh() {
+
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -23,28 +23,20 @@
#L%
-->
<JPanel layout='{new BorderLayout()}'>
- <script><![CDATA[
- public PreScriptsUI(SimulAction action) {
- setContextValue(action);
- }
- protected void save() {
- getContextValue(SimulAction.class).getSimulationParameter().setPreScript(fieldSimulPreScript.getText());
- }
+ <PreScriptsHandler id="handler" constructorParams="this" />
- protected void refresh() {
-
- }
-
- /*protected void backParameter() {
- SimulUI simul = getParentContainer(SimulUI.class);
- simul.selTab(0);
- }*/
+ <script><![CDATA[
+ protected void $afterCompleteSetup() {
+ handler.afterInit();
+ }
]]></script>
+
<org.fife.ui.rtextarea.RTextScrollPane constraints='BorderLayout.CENTER'>
- <org.fife.ui.rsyntaxtextarea.RSyntaxTextArea id="fieldSimulPreScript" onFocusLost='save()'
+ <org.fife.ui.rsyntaxtextarea.RSyntaxTextArea id="fieldSimulPreScript" onFocusLost='handler.save()'
syntaxEditingStyle="{org.fife.ui.rsyntaxtextarea.SyntaxConstants.SYNTAX_STYLE_JAVA}" />
</org.fife.ui.rtextarea.RTextScrollPane>
+
<JButton constraints='BorderLayout.SOUTH' text="isisfish.preScript.backParameter"
onActionPerformed='getParentContainer(fr.ifremer.isisfish.ui.SimulationUI.class).selectParametersTab()'/>
</JPanel>
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,89 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2013 - 2014 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.ui.simulator;
+
+import static org.nuiton.i18n.I18n.t;
+
+import java.util.List;
+
+import javax.swing.event.ListSelectionEvent;
+
+import fr.ifremer.isisfish.ui.WelcomePanelUI;
+import fr.ifremer.isisfish.ui.models.common.GenericListModel;
+
+/**
+ * Result choice UI handler.
+ *
+ * @author Eric Chatellier
+ */
+public class ResultChoiceHandler extends SimulationTabHandler {
+
+ protected ResultChoiceUI tabUI;
+
+ public ResultChoiceHandler(ResultChoiceUI tabUI) {
+ super(tabUI);
+ this.tabUI = tabUI;
+ }
+
+ protected void afterInit() {
+ refresh();
+ }
+
+ public void refresh() {
+
+ // FIXME listen for result name modification
+
+ setListSimulResultChooseModel();
+ }
+
+ protected void setListSimulResultChooseModel() {
+
+ List<String> availableResults = getSimulAction().getResultNames();
+ List<String> userResults = getSimulAction().getDefaultResultNames();
+ // userResults = intersection(userResults,availableResult)
+ userResults.retainAll(availableResults);
+
+ GenericListModel<String> resultModel = new GenericListModel<>(availableResults);
+ tabUI.listResultNames.setModel(resultModel);
+
+ for (String userResult : userResults) {
+ int index = availableResults.indexOf(userResult);
+ tabUI.listResultNames.addSelectionInterval(index, index);
+ }
+ }
+
+ protected void saveParametersResultNames(ListSelectionEvent event) {
+ tabUI.getContextValue(SimulAction.class).saveParametersResultNames(tabUI.listResultNames.getSelectedValuesList());
+ }
+
+ protected void saveConfigResultNames() {
+ tabUI.getContextValue(SimulAction.class).saveConfigurationResultNames(tabUI.listResultNames.getSelectedValuesList());
+ setStatusMessage(t("isisfish.resultChoice.saved"));
+ }
+
+ protected void setStatusMessage(String txt) {
+ // TODO remove getParentContainer use
+ WelcomePanelUI root = tabUI.getParentContainer(WelcomePanelUI.class);
+ root.setStatusMessage(txt);
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -23,69 +23,22 @@
#L%
-->
<JPanel layout='{new BorderLayout()}'>
- <import>
- static org.nuiton.i18n.I18n.t
- fr.ifremer.isisfish.ui.WelcomePanelUI
- fr.ifremer.isisfish.ui.models.common.GenericListModel
- javax.swing.event.ListSelectionEvent
- </import>
- <script><![CDATA[
-
+ <ResultChoiceHandler id="handler" constructorParams="this" />
+
+ <script><![CDATA[
protected void $afterCompleteSetup() {
- refresh();
+ handler.afterInit();
}
+ ]]></script>
- public void refresh() {
-
- // FIXME listen for result name modification
-
- setListSimulResultChooseModel();
- }
-
- protected SimulAction getSimulAction() {
- return getContextValue(SimulAction.class);
- }
-
- protected void setListSimulResultChooseModel() {
-
- List<String> availableResults = getSimulAction().getResultNames();
- List<String> userResults = getSimulAction().getDefaultResultNames();
- // userResults = intersection(userResults,availableResult)
- userResults.retainAll(availableResults);
-
- GenericListModel<String> resultModel = new GenericListModel<>(availableResults);
- listResultNames.setModel(resultModel);
-
- for (String userResult : userResults) {
- int index = availableResults.indexOf(userResult);
- listResultNames.addSelectionInterval(index, index);
- }
- }
-
- protected void saveParametersResultNames(ListSelectionEvent event) {
- getContextValue(SimulAction.class).saveParametersResultNames(listResultNames.getSelectedValuesList());
- }
-
- protected void saveConfigResultNames() {
- getContextValue(SimulAction.class).saveConfigurationResultNames(listResultNames.getSelectedValuesList());
- setStatusMessage(t("isisfish.resultChoice.saved"));
- }
-
- protected void setStatusMessage(String txt) {
- // TODO remove getParentContainer use
- WelcomePanelUI root = getParentContainer(WelcomePanelUI.class);
- root.setStatusMessage(txt);
- }
- ]]>
- </script>
<JLabel text="isisfish.resultChoice.save" horizontalAlignment="center" constraints='BorderLayout.NORTH'/>
<JScrollPane constraints='BorderLayout.CENTER'>
<JList id="listResultNames" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}"
genericType="String"
cellRenderer='{new fr.ifremer.isisfish.ui.models.result.ResultListRenderer()}'
- onValueChanged='saveParametersResultNames(event)' />
+ onValueChanged='handler.saveParametersResultNames(event)' />
</JScrollPane>
- <JButton constraints='BorderLayout.SOUTH' text="isisfish.common.saveNextSimulation" onActionPerformed='saveConfigResultNames()'/>
+ <JButton constraints='BorderLayout.SOUTH' text="isisfish.common.saveNextSimulation" onActionPerformed='handler.saveConfigResultNames()'/>
</JPanel>
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -25,6 +25,8 @@
@param : Region storage (context)
-->
<Table>
+ <RuleChooserHandler id="handler" constructorParams="this" />
+
<!-- Rules collection managed by current ui instance. -->
<java.util.List genericType='fr.ifremer.isisfish.rule.Rule' id="rulesList" javaBean='new java.util.ArrayList<fr.ifremer.isisfish.rule.Rule>()'/>
@@ -33,35 +35,9 @@
<Boolean id="showFactorColumn" javaBean="false" />
- <RuleChooserHandler id="handler" />
-
- <import>
- java.beans.PropertyChangeEvent
- java.beans.PropertyChangeListener
- java.util.List
- fr.ifremer.isisfish.rule.Rule
- fr.ifremer.isisfish.ui.models.common.GenericListModel
- fr.ifremer.isisfish.ui.models.common.ScriptParametersTableModel
- </import>
-
<script><![CDATA[
protected void $afterCompleteSetup() {
- // Manage rule list change
- addPropertyChangeListener(PROPERTY_RULES_LIST, new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- if (evt.getNewValue() == null) {
- selectedRulesListModel.setElementList(new ArrayList<Rule>());
- } else {
- List<Rule> rules = (List<Rule>)evt.getNewValue();
- selectedRulesListModel.setElementList(rules);
- }
- }
- });
-
- // fix colums size for buttons
- if (isShowFactorColumn()) {
- SwingUtil.fixTableColumnWidth(selectedRuleParameterTable, 2, 30);
- }
+ handler.afterInit();
}
]]></script>
@@ -88,7 +64,7 @@
</JScrollPane>
</cell>
<cell fill='horizontal'>
- <JButton id="addRulesButton" text="isisfish.common.add" enabled="false" onActionPerformed='handler.addSelectedRules(this)'/>
+ <JButton id="addRulesButton" text="isisfish.common.add" enabled="false" onActionPerformed='handler.addSelectedRules()'/>
</cell>
<cell fill="both" rows="3" weightx="1" weighty="1">
<JScrollPane enabled="{isActive()}">
@@ -96,20 +72,20 @@
<JList id="selectedRulesList" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}"
genericType="fr.ifremer.isisfish.rule.Rule" model='{selectedRulesListModel}'
cellRenderer='{new fr.ifremer.isisfish.ui.models.rule.RuleListCellRenderer()}'
- onValueChanged='removeRuleButton.setEnabled(selectedRulesList.getSelectedIndex() != -1);clearRulesButton.setEnabled(selectedRulesList.getSelectedIndex() != -1);handler.displayRuleParameters(this)' />
+ onValueChanged='removeRuleButton.setEnabled(selectedRulesList.getSelectedIndex() != -1);clearRulesButton.setEnabled(selectedRulesList.getSelectedIndex() != -1);handler.displayRuleParameters()' />
</JScrollPane>
</cell>
</row>
<row>
<cell fill='horizontal'>
<JButton id="removeRuleButton" text="isisfish.common.remove"
- enabled="false" onActionPerformed='handler.removeSelectedRules(this)'/>
+ enabled="false" onActionPerformed='handler.removeSelectedRules()'/>
</cell>
</row>
<row>
<cell fill='horizontal' anchor="north">
<JButton id="clearRulesButton" text="isisfish.common.clear"
- enabled="false" onActionPerformed='handler.clearAllRules(this)'/>
+ enabled="false" onActionPerformed='handler.clearAllRules()'/>
</cell>
</row>
<row weightx="2" weighty="2" columns="3">
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -23,6 +23,9 @@
package fr.ifremer.isisfish.ui.simulator;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
import java.util.List;
import fr.ifremer.isisfish.IsisFishException;
@@ -36,6 +39,7 @@
import fr.ifremer.isisfish.ui.models.rule.RuleParametersFactorTableCellEditor;
import fr.ifremer.isisfish.ui.models.rule.RuleParametersFactorTableCellRenderer;
import fr.ifremer.isisfish.ui.widget.editor.ScriptParameterDialog;
+import jaxx.runtime.SwingUtil;
/**
* Handler for {@link RuleChooser class}.
@@ -48,12 +52,36 @@
*/
public class RuleChooserHandler {
+ protected RuleChooser ruleChooser;
+
+ public RuleChooserHandler(RuleChooser ruleChooser) {
+ this.ruleChooser = ruleChooser;
+ }
+
+ protected void afterInit() {
+
+ // Manage rule list change
+ ruleChooser.addPropertyChangeListener(RuleChooser.PROPERTY_RULES_LIST, new PropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (evt.getNewValue() == null) {
+ ruleChooser.selectedRulesListModel.setElementList(new ArrayList<Rule>());
+ } else {
+ List<Rule> rules = (List<Rule>)evt.getNewValue();
+ ruleChooser.selectedRulesListModel.setElementList(rules);
+ }
+ }
+ });
+
+ // fix colums size for buttons
+ if (ruleChooser.isShowFactorColumn()) {
+ SwingUtil.fixTableColumnWidth(ruleChooser.selectedRuleParameterTable, 2, 30);
+ }
+ }
+
/**
* Get new instance for selected rules names and add it to {@code rulesList} list.
- *
- * @param ruleChooser rule chooser ui
*/
- protected void addSelectedRules(RuleChooser ruleChooser) {
+ protected void addSelectedRules() {
List<String> availableRuleValues = ruleChooser.getAvailableRuleList().getSelectedValuesList();
for (String availableRuleName : availableRuleValues) {
try {
@@ -74,10 +102,8 @@
/**
* Remove selected rules for selected rules list.
- *
- * @param ruleChooser rule chooser ui
*/
- protected void removeSelectedRules(RuleChooser ruleChooser) {
+ protected void removeSelectedRules() {
SimulAction simulAction = ruleChooser.getContextValue(SimulAction.class);
List<Rule> selectedRuleValues = ruleChooser.getSelectedRulesList().getSelectedValuesList();
for (Rule selectedRuleValue : selectedRuleValues) {
@@ -99,10 +125,8 @@
/**
* Clear selected rule list.
- *
- * @param ruleChooser rule chooser ui
*/
- protected void clearAllRules(RuleChooser ruleChooser) {
+ protected void clearAllRules() {
// condition pour savoir si on est dans l'instance principal
// de définition d'une simulation (hack)
if (ruleChooser.isShowFactorColumn()) {
@@ -120,10 +144,8 @@
/**
* Display parameters table form single selected list.
- *
- * @param ruleChooser rule chooser ui
*/
- protected void displayRuleParameters(RuleChooser ruleChooser) {
+ protected void displayRuleParameters() {
Rule selectedRule = (Rule)ruleChooser.getSelectedRulesList().getSelectedValue();
if (selectedRule != null) {
ruleChooser.getSelectedRuleParameterTableModel().setScript(selectedRule);
Deleted: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -1,187 +0,0 @@
-<!--
- #%L
- IsisFish
-
- $Id$
- $HeadURL$
- %%
- Copyright (C) 2005 - 2015 Ifremer, CodeLutin, Chatellier Eric
- %%
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 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 Public License for more details.
-
- You should have received a copy of the GNU General Public
- License along with this program. If not, see
- <http://www.gnu.org/licenses/gpl-3.0.html>.
- #L%
- -->
-<Table>
- <import>
- java.awt.Dimension
- javax.swing.table.DefaultTableModel
- fr.ifremer.isisfish.datastore.SimulationPlanStorage
- fr.ifremer.isisfish.datastore.StorageChangeEvent
- fr.ifremer.isisfish.datastore.StorageChangeListener
- fr.ifremer.isisfish.simulator.SimulationPlan
- fr.ifremer.isisfish.ui.models.common.GenericComboModel
- fr.ifremer.isisfish.ui.models.simulationplan.SimulationPlanComboRenderer
- fr.ifremer.isisfish.ui.models.common.GenericListModel
- fr.ifremer.isisfish.ui.models.simulationplan.SimulationPlanListRenderer
- fr.ifremer.isisfish.ui.models.common.ScriptParametersTableModel
- fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellEditor
- fr.ifremer.isisfish.ui.models.common.ScriptParametersTableCellRenderer
- fr.ifremer.isisfish.datastore.RegionStorage
- </import>
- <SimulAction id='simulAction' javaBean='getContextValue(SimulAction.class)' />
-
- <script><![CDATA[
-
- // to be notified of storage change event
- StorageChangeListener simulationPlanStorageListener;
-
- protected void $afterCompleteSetup() {
- simulationPlanStorageListener = new StorageChangeListener() {
- @Override
- public void versionDataChanged(StorageChangeEvent e) {
- refresh();
- }
- };
- SimulationPlanStorage.addStorageChangeListener(simulationPlanStorageListener);
- }
-
- public void refresh() {
- // simulation plans names list
- fieldSimulParamsSimulationPlansSelect.setModel(getSimulationPlansComboModel());
- // simulation simulation plans instance
- listSimulParamsSimulationPlansList.setModel(getSimulationSimulationPlansListModel());
- }
-
- /**
- * Refresh simulation plan names list.
- */
- protected GenericComboModel<String> getSimulationPlansComboModel() {
- List<String> simulationPlanNames = simulAction.getSimulationPlanNames();
- GenericComboModel<String> model = new GenericComboModel<>(simulationPlanNames);
- return model;
- }
-
- /**
- * Refresh simulation simulation plan list.
- */
- protected GenericListModel<SimulationPlan> getSimulationSimulationPlansListModel() {
- List<SimulationPlan> simulationPlans = simulAction.getParamSimulationPlans();
- GenericListModel<SimulationPlan> model = new GenericListModel<>(simulationPlans);
- return model;
- }
-
- protected void addSimulationPlan() {
- String selectedSimulationPlanName = (String)fieldSimulParamsSimulationPlansSelect.getSelectedItem();
- simulAction.addSimulationPlan(this, selectedSimulationPlanName);
- listSimulParamsSimulationPlansList.setModel(getSimulationSimulationPlansListModel());
- setSimulationPlanButtons();
- }
-
- protected void removeSimulationPlan() {
- SimulationPlan selectedSimulationPlan = (SimulationPlan)listSimulParamsSimulationPlansList.getSelectedValue();
- simulAction.removeSimulationPlan(selectedSimulationPlan);
- listSimulParamsSimulationPlansList.setModel(getSimulationSimulationPlansListModel());
- setSimulationPlanButtons();
- }
-
- protected void clearSimulationPlan() {
- simulAction.clearSimulationPlans();
- listSimulParamsSimulationPlansList.setModel(getSimulationSimulationPlansListModel());
- setSimulationPlanButtons();
- }
-
- protected void setSimulationPlanButtons() {
- if (getContextValue(SimulAction.class).getParamSimulationPlans().isEmpty()) {
- buttonSimulParamsSimulationPlansClear.setEnabled(false);
- buttonSimulParamsSimulationPlansRemove.setEnabled(false);
- } else {
- if (listSimulParamsSimulationPlansList.getSelectedIndex() != -1) {
- buttonSimulParamsSimulationPlansRemove.setEnabled(true);
- } else {
- buttonSimulParamsSimulationPlansRemove.setEnabled(false);
- }
- buttonSimulParamsSimulationPlansClear.setEnabled(true);
- }
- setSimulParamsSimulationPlans();
- }
-
- protected void setSimulParamsSimulationPlans() {
- SimulationPlan selectedSimulationPlan = (SimulationPlan)listSimulParamsSimulationPlansList.getSelectedValue();
- if (selectedSimulationPlan != null) {
- ScriptParametersTableModel model = new ScriptParametersTableModel(selectedSimulationPlan);
- simulParamsSimulationPlans.setModel(model);
- ScriptParametersTableCellEditor cellEditor = new ScriptParametersTableCellEditor(selectedSimulationPlan);
- cellEditor.setRegionStorage(getContextValue(RegionStorage.class));
- simulParamsSimulationPlans.getColumnModel().getColumn(0).setCellRenderer(new ScriptParametersTableCellRenderer(selectedSimulationPlan));
- simulParamsSimulationPlans.getColumnModel().getColumn(1).setCellEditor(cellEditor);
- } else {
- // clear table
- simulParamsSimulationPlans.setModel(new DefaultTableModel());
- }
- }
- ]]>
- </script>
- <row>
- <cell columns="2" fill="horizontal" weightx="1.0">
- <JComboBox id="fieldSimulParamsSimulationPlansSelect" model='{getSimulationPlansComboModel()}'
- genericType="String"
- renderer='{new SimulationPlanComboRenderer()}' />
- </cell>
- </row>
- <row>
- <cell fill="both" weightx="0.5">
- <JScrollPane minimumSize='{new Dimension(0,0)}' preferredSize='{new Dimension(0,0)}'>
- <JList id="listSimulParamsSimulationPlansList" selectionMode="{javax.swing.ListSelectionModel.SINGLE_SELECTION}"
- genericType="fr.ifremer.isisfish.simulator.SimulationPlan"
- onValueChanged='setSimulationPlanButtons()' model='{getSimulationSimulationPlansListModel()}'
- cellRenderer='{new SimulationPlanListRenderer()}'/>
- </JScrollPane>
- </cell>
- <cell fill="both" weightx="0.5">
- <Table name="isisfish.sens.title">
- <row>
- <cell fill="both" weightx="1.0">
- <JButton id="buttonSimulParamsSimulationPlansAdd" text="isisfish.common.add"
- onActionPerformed='addSimulationPlan()'/>
- </cell>
- </row>
- <row>
- <cell fill="both" weightx="1.0">
- <JButton id="buttonSimulParamsSimulationPlansRemove" text="isisfish.common.remove"
- onActionPerformed='removeSimulationPlan()' enabled='false'/>
- </cell>
- </row>
- <row>
- <cell fill="both" weightx="1.0">
- <JButton id="buttonSimulParamsSimulationPlansClear" text="isisfish.common.clear"
- onActionPerformed='clearSimulationPlan()' enabled='false'/>
- </cell>
- </row>
- </Table>
- </cell>
- </row>
- <row>
- <cell columns="2" fill="both" weightx="1.0" weighty="1.0">
- <JScrollPane>
- <JTable id="simulParamsSimulationPlans" rowHeight='24' name="isisfish.sens.planParameters"/>
- </JScrollPane>
- </cell>
- </row>
- <row>
- <cell columns="2" fill="horizontal" weightx="1.0">
- <JButton text="isisfish.sens.backParameter" onActionPerformed='getParentContainer(fr.ifremer.isisfish.ui.SimulationUI.class).selectParametersTab()'/>
- </cell>
- </row>
-</Table>
-
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -135,7 +135,6 @@
protected RegionStorage regionStorage = null;
protected SimulationStorage simulStorage = null;
- protected List<String> oldSimulNames = null;
protected String simulName = null;
/**
@@ -504,61 +503,6 @@
return SimulatorStorage.getSimulatorNames();
}
- /**
- * Return old simulations.
- *
- * @return old simulations
- */
- public List<String> getOldSimulationItem() {
-
- //try {
- oldSimulNames = new ArrayList<String>();
-
- //FilterModel<SimulationProperties, String> filterModel;
- // keep in context list of old simulation names (for filter process)
- oldSimulNames.addAll(SimulationStorage.getSimulationNames());
- // create filter model
- //filterModel = SimulationFilterUtil.createFilterModel(oldSimulNames);
- // to used directly model.getFilteredResult() in xml
- // we must fill filterModel result with original items
- //filterModel.selectAll();
-
- // chatellier : Ajout d'une entrée vide pour forcer la sélection
- // et que le changement lance un evenement sur la liste
- // Add empty item after, otherwise, un " " directory
- // will be created
- oldSimulNames.add(0, " ");
-
- return oldSimulNames;
- /*} catch (ParseException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't get old simulation item", e);
- }
- ErrorHelper.showErrorDialog(t("isisfish.error.simulation.listoldsimulation"), e);
- } catch (IOException e) {
- if (log.isErrorEnabled()) {
- log.error("Can't get old simulation item", e);
- }
- ErrorHelper.showErrorDialog(t("isisfish.error.simulation.listoldsimulation"), e);
- }
- return null;*/
- }
-
- public List<String> getFilteredOldSimulatorNames(boolean force) {
- if (oldSimulNames == null || force) {
- oldSimulNames = getOldSimulationItem();
- }
- return oldSimulNames;
- }
-
- public void setOldSimulatorNames(List<String> sn) {
- oldSimulNames = sn;
- }
-
- public void resetOldSimulatorNames() {
- oldSimulNames = getOldSimulationItem();
- }
-
/*
************
* AdvancedParameterUI
@@ -651,12 +595,12 @@
return param.getSimulationPlans();
}
- public void addSimulationPlan(SensUI sensUI, String name) {
+ public void addSimulationPlan(PlanUI planUI, String name) {
try {
SimulationPlan sp = SimulationPlanStorage.getSimulationPlan(name).getNewInstance();
// add it after autoconfiguration (if enabled)
- sp = (SimulationPlan)ScriptParameterDialog.displayConfigurationFrame(sensUI, sp);
+ sp = (SimulationPlan)ScriptParameterDialog.displayConfigurationFrame(planUI, sp);
if (sp != null) {
getSimulationParameter().addSimulationPlan(sp);
}
Modified: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2015-05-20 13:37:54 UTC (rev 4230)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2015-05-21 13:11:05 UTC (rev 4231)
@@ -27,14 +27,14 @@
<script><![CDATA[
@Override
public void refresh() {
- paramsUI.refresh();
- preScriptUI.refresh();
- sensUI.refresh();
- optimizationUI.refresh();
- exportUI.refresh();
- resultChoiceUI.refresh();
- advancedParamsUI.refresh();
- optimizationUI.refresh();
+ paramsUI.getHandler().refresh();
+ preScriptUI.getHandler().refresh();
+ planUI.getHandler().refresh();
+ optimizationUI.getHandler().refresh();
+ exportUI.getHandler().refresh();
+ resultChoiceUI.getHandler().refresh();
+ advancedParamsUI.getHandler().refresh();
+ optimizationUI.getHandler().refresh();
}
/**
@@ -42,7 +42,7 @@
*/
@Override
protected void regionStorageChanged() {
- optimizationUI.regionStorageChanged();
+ //optimizationUI.getHandler().regionStorageChanged();
}
@Override
@@ -82,7 +82,7 @@
<PreScriptsUI id="preScriptUI" constructorParams='this' />
</tab>
<tab title='isisfish.sens.title' enabled='false'>
- <SensUI id="sensUI" constructorParams='this' />
+ <PlanUI id="planUI" constructorParams='this' />
</tab>
<tab title='isisfish.optimization.title' enabled='false'>
<OptimizationUI id="optimizationUI" constructorParams='this' />
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulationTabHandler.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulationTabHandler.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulationTabHandler.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,44 @@
+package fr.ifremer.isisfish.ui.simulator;
+
+import fr.ifremer.isisfish.simulator.SimulationParameter;
+import fr.ifremer.isisfish.simulator.sensitivity.FactorGroup;
+import fr.ifremer.isisfish.ui.CommonHandler;
+import jaxx.runtime.JAXXContext;
+
+/**
+ * Handler common à tous les handler de chaque onglet de l'interface de simulation.
+ *
+ * @author Eric Chatellier
+ */
+public abstract class SimulationTabHandler extends CommonHandler {
+
+ // TODO might be something else, like SimulatorTabUI ?
+ protected JAXXContext simulationUI;
+
+ protected SimulationTabHandler(JAXXContext simulationUI) {
+ this.simulationUI = simulationUI;
+ }
+
+ /**
+ * Return simulation parameters from context.
+ *
+ * @return SimulationParameter
+ */
+ protected SimulationParameter getParameters() {
+ return simulationUI.getContextValue(SimulationParameter.class);
+ }
+
+ /**
+ * Return FactorGroup from context.
+ *
+ * @return FactorGroup
+ */
+ protected FactorGroup getFactorGroup() {
+ return simulationUI.getContextValue(FactorGroup.class);
+ }
+
+ @Deprecated
+ protected SimulAction getSimulAction() {
+ return simulationUI.getContextValue(SimulAction.class);
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulationTabHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorContext.java
===================================================================
--- trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorContext.java (rev 0)
+++ trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorContext.java 2015-05-21 13:11:05 UTC (rev 4231)
@@ -0,0 +1,41 @@
+/*
+ * #%L
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2015 Ifremer, Codelutin, Chatellier Eric
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.isisfish.ui.simulator;
+
+import jaxx.runtime.JAXXContext;
+import jaxx.runtime.context.JAXXInitialContext;
+
+/**
+ * Ce contexte regroupe les élements qui servent à une hierachie d'interfaces Simulator.
+ *
+ * @author Eric Chatellier
+ */
+public class SimulatorContext extends JAXXInitialContext {
+
+ public SimulatorContext(JAXXContext parent) {
+ setParentContext(parent);
+
+ // FIXME remove this
+ add(new SimulAction());
+ }
+}
Property changes on: trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulatorContext.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
1
0