r3932 - in branches/4.0.1/src/main/java/fr/ifremer/isisfish: simulator ui/models/optimization ui/simulator ui/widget/editor
Author: echatellier Date: 2014-04-04 15:00:45 +0200 (Fri, 04 Apr 2014) New Revision: 3932 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3932 Log: refs #4803: Saisie des exports et observations Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellEditor.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellRenderer.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObservationComboRenderer.java Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2014-04-04 08:18:00 UTC (rev 3931) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameter.java 2014-04-04 13:00:45 UTC (rev 3932) @@ -35,8 +35,10 @@ import fr.ifremer.isisfish.IsisConfig; import fr.ifremer.isisfish.datastore.RegionStorage; +import fr.ifremer.isisfish.entities.Observation; import fr.ifremer.isisfish.entities.Population; import fr.ifremer.isisfish.entities.Strategy; +import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.export.SensitivityExport; import fr.ifremer.isisfish.rule.Rule; import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis; @@ -343,7 +345,9 @@ public void setSensitivityExport(List<SensitivityExport> sensitivityExport); /** - * Return used optimization script + * Return used optimization script. + * + * @return optimization method */ public Optimization getOptimization(); @@ -363,10 +367,26 @@ /** * Set objective. + * + * @param objective objective */ public void setObjective(Objective objective); /** + * Get exports and observations map. + * + * @return exports and observations map + */ + public Map<Export, Observation> getOptimizationExportsObservations(); + + /** + * Set exports and observations map. + * + * @param exportsObservations exports and observations map + */ + public void setOptimizationExportsObservations(Map<Export, Observation> exportsObservations); + + /** * Get use simulation plans property. * * @return use simulation plan. @@ -440,7 +460,9 @@ /** * Generated pre script is internal script generated by isis. This script - * must be executed before user defined preScript + * must be executed before user defined preScript. + * + * @return generated pre script */ public String getGeneratedPreScript(); Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java 2014-04-04 08:18:00 UTC (rev 3931) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterCache.java 2014-04-04 13:00:45 UTC (rev 3932) @@ -45,8 +45,10 @@ import fr.ifremer.isisfish.IsisFishRuntimeException; import fr.ifremer.isisfish.datastore.RegionStorage; +import fr.ifremer.isisfish.entities.Observation; import fr.ifremer.isisfish.entities.Population; import fr.ifremer.isisfish.entities.Strategy; +import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.export.SensitivityExport; import fr.ifremer.isisfish.rule.Rule; import fr.ifremer.isisfish.simulator.sensitivity.SensitivityAnalysis; @@ -454,7 +456,6 @@ SimulationParameter param = getParam(); param.setSensitivityAnalysis(sensitivityAnalysis); store(param); - } /* @@ -936,5 +937,16 @@ store(param); } - + @Override + public Map<Export, Observation> getOptimizationExportsObservations() { + SimulationParameter param = getParam(); + return param.getOptimizationExportsObservations(); + } + + @Override + public void setOptimizationExportsObservations(Map<Export, Observation> exportsObservations) { + SimulationParameter param = getParam(); + param.setOptimizationExportsObservations(exportsObservations); + store(param); + } } Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java 2014-04-04 08:18:00 UTC (rev 3931) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/SimulationParameterImpl.java 2014-04-04 13:00:45 UTC (rev 3932) @@ -62,10 +62,12 @@ import fr.ifremer.isisfish.datastore.SensitivityExportStorage; import fr.ifremer.isisfish.datastore.SimulationPlanStorage; import fr.ifremer.isisfish.datastore.StorageHelper; +import fr.ifremer.isisfish.entities.Observation; import fr.ifremer.isisfish.entities.Population; import fr.ifremer.isisfish.entities.PopulationDAO; import fr.ifremer.isisfish.entities.Strategy; import fr.ifremer.isisfish.entities.StrategyDAO; +import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.export.ExportHelper; import fr.ifremer.isisfish.export.SensitivityExport; import fr.ifremer.isisfish.rule.Rule; @@ -182,6 +184,9 @@ /** Fonction d'objectif. */ protected Objective objective; + /** Exports et observations (optimisation). */ + protected Map<Export, Observation> optimizationExportsObservations; + /** La liste des resultats qui nous interesse. */ protected Collection<String> resultEnabled; @@ -930,6 +935,23 @@ this.objective = objective; } + @Override + public Map<Export, Observation> getOptimizationExportsObservations() { + if (optimizationExportsObservations == null) { + // must be sorted for ui (LinkedHashMap) + optimizationExportsObservations = new LinkedHashMap<>(); + + // FIXME echatellier 20140404 finish restore parameters + } + + return optimizationExportsObservations; + } + + @Override + public void setOptimizationExportsObservations(Map<Export, Observation> optimizationExportsObservations) { + this.optimizationExportsObservations = optimizationExportsObservations; + } + /* * @see fr.ifremer.isisfish.simulator.SimulationParameter#getUseAnalysePlan() */ @@ -1832,6 +1854,8 @@ // sensitivity params result.setProperty("sensitivityAnalysisOnlyKeepFirst", String.valueOf(isSensitivityAnalysisOnlyKeepFirst())); + // FIXME echatellier 20140404 store optimization params + result.setProperty("generatedPreScript", getGeneratedPreScript()); result.setProperty("usePreScript", String.valueOf(getUsePreScript())); result.setProperty("preScript", getPreScript()); Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java 2014-04-04 08:18:00 UTC (rev 3931) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportObservationTableModel.java 2014-04-04 13:00:45 UTC (rev 3932) @@ -2,19 +2,57 @@ import static org.nuiton.i18n.I18n.t; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + import javax.swing.table.AbstractTableModel; +import fr.ifremer.isisfish.entities.Observation; +import fr.ifremer.isisfish.export.Export; + public class ExportObservationTableModel extends AbstractTableModel { /** serialVersionUID. */ private static final long serialVersionUID = 7555677813473489539L; + /** Optimizations exports and observations. */ + protected Map<Export, Observation> optimizationExportsObservations; + + /** Indexed keys list. */ + protected List<Export> keysCache; + /** Columns names. */ public final static String[] COLUMN_NAMES = { t("isisfish.optimization.export"), t("isisfish.optimization.observation") }; + + public ExportObservationTableModel() { + + } + public ExportObservationTableModel(Map<Export, Observation> optimizationExportsObservations) { + this(); + setOptimizationExportsObservations(optimizationExportsObservations); + } + + public void setOptimizationExportsObservations(Map<Export, Observation> optimizationExportsObservations) { + this.optimizationExportsObservations = optimizationExportsObservations; + keysCache = new ArrayList<Export>(optimizationExportsObservations.keySet()); + fireTableDataChanged(); + } + + public Export getExportForRow(int line) { + return keysCache.get(line); + } + + public void deleteExport(Export export) { + int index = keysCache.indexOf(export); + keysCache.remove(index); + fireTableRowsDeleted(index, index); + } + /* * @see javax.swing.table.TableModel#getColumnCount() */ @@ -29,7 +67,10 @@ */ @Override public int getRowCount() { - int result = 4; + int result = 0; + if (keysCache != null) { + result = keysCache.size(); + } return result; } @@ -43,10 +84,25 @@ @Override public Object getValueAt(int rowIndex, int columnIndex) { - if (columnIndex == 0) { - return "Export " + rowIndex; - } else { - return "Observation " + rowIndex; + Export export = keysCache.get(rowIndex); + Object result = export; + if (columnIndex == 1) { + result = optimizationExportsObservations.get(export); } + return result; } + + /* + * @see javax.swing.table.TableModel#isCellEditable(int, int) + */ + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return columnIndex > 0; + } + + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + Export export = getExportForRow(rowIndex); + this.optimizationExportsObservations.put(export, (Observation)aValue); + } } Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellEditor.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellEditor.java (rev 0) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellEditor.java 2014-04-04 13:00:45 UTC (rev 3932) @@ -0,0 +1,105 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2011 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.models.optimization; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.List; + +import javax.swing.AbstractCellEditor; +import javax.swing.JComboBox; +import javax.swing.JTable; +import javax.swing.table.TableCellEditor; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.TopiaContext; + +import fr.ifremer.isisfish.datastore.RegionStorage; +import fr.ifremer.isisfish.entities.Observation; + +/** + * Observation editor. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class ExportTableCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener { + + /** Class logger. */ + private static Log log = LogFactory.getLog(ExportTableCellEditor.class); + + /** serialVersionUID. */ + private static final long serialVersionUID = -1655744662816030649L; + + protected RegionStorage regionStorage = null; + + protected JComboBox<Observation> editorComponent; + + public void setRegionStorage(RegionStorage regionStorage) { + this.regionStorage = regionStorage; + } + + @Override + public Object getCellEditorValue() { + return editorComponent.getSelectedItem(); + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + + try { + if (regionStorage == null) { + return null; + } + TopiaContext context = regionStorage.getStorage().beginTransaction(); + if (context != null) { + List<Observation> list = context.findAll("from " + Observation.class.getName()); + editorComponent = new JComboBox<Observation>(list.toArray(new Observation[list.size()])); + editorComponent.setSelectedItem(value); + editorComponent.setRenderer(new ObservationComboRenderer()); + editorComponent.addActionListener(this); + context.closeContext(); + } + + } catch (Exception eee) { + if (log.isWarnEnabled()) { + log.warn("Can't get entity object for combobox", eee); + } + } + + return editorComponent; + } + + @Override + public void actionPerformed(ActionEvent e) { + stopCellEditing(); + } +} Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellEditor.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellRenderer.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellRenderer.java (rev 0) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellRenderer.java 2014-04-04 13:00:45 UTC (rev 3932) @@ -0,0 +1,80 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2011 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.models.optimization; + +import java.awt.Component; + +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; + +import fr.ifremer.isisfish.entities.Observation; +import fr.ifremer.isisfish.export.Export; + +/** + * Export renderer for table. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class ExportTableCellRenderer extends DefaultTableCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -1655744662816030649L; + + /* + * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) + */ + @Override + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + + String stringValue = null; + String tooltip = null; + + switch (column) { + case 0: + Export export = (Export)value; + stringValue = value.getClass().getSimpleName(); + tooltip = export.getDescription(); + break; + default: + Observation observation = (Observation)value; + if (observation != null) { + stringValue = observation.getName(); + tooltip = observation.getComment(); + } + break; + } + + JLabel c = (JLabel) super.getTableCellRendererComponent(table, stringValue, isSelected, hasFocus, row, column); + c.setToolTipText(tooltip); + return c; + } +} Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ExportTableCellRenderer.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObservationComboRenderer.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObservationComboRenderer.java (rev 0) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObservationComboRenderer.java 2014-04-04 13:00:45 UTC (rev 3932) @@ -0,0 +1,70 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2010 Ifremer, Code Lutin + * %% + * 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.models.optimization; + +import java.awt.Component; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JLabel; +import javax.swing.JList; + +import fr.ifremer.isisfish.entities.Observation; + +/** + * Renderer pour la combo des observations. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class ObservationComboRenderer extends DefaultListCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + /* + * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) + */ + @Override + public Component getListCellRendererComponent(JList<?> list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + + // this must be used to have alterned highlight rows and default + // selection color + JLabel c = (JLabel) super.getListCellRendererComponent(list, value, + index, isSelected, cellHasFocus); + + if (value != null) { + Observation observation = (Observation) value; + c.setText(observation.getName()); + c.setToolTipText(observation.getComment()); + } + + return c; + } +} Property changes on: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/models/optimization/ObservationComboRenderer.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2014-04-04 08:18:00 UTC (rev 3931) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationHandler.java 2014-04-04 13:00:45 UTC (rev 3932) @@ -24,34 +24,60 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; +import javax.swing.JTable; +import javax.swing.ListModel; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import fr.ifremer.isisfish.IsisFishException; +import fr.ifremer.isisfish.IsisFishRuntimeException; import fr.ifremer.isisfish.datastore.ExportStorage; import fr.ifremer.isisfish.datastore.ObjectiveStorage; import fr.ifremer.isisfish.datastore.OptimizationStorage; +import fr.ifremer.isisfish.datastore.RegionStorage; +import fr.ifremer.isisfish.entities.Observation; +import fr.ifremer.isisfish.export.Export; import fr.ifremer.isisfish.simulator.Objective; import fr.ifremer.isisfish.simulator.Optimization; +import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.ui.input.InputHandler; +import fr.ifremer.isisfish.ui.models.common.GenericComboModel; 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.common.GenericComboModel; 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 javax.swing.ListModel; -import javax.swing.table.TableModel; - public class OptimizationHandler extends InputHandler { private static final Log log = LogFactory.getLog(OptimizationHandler.class); public void init(OptimizationUI view) { + RegionStorage regionStorage = view.getContextValue(RegionStorage.class); + view.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()); } /** + * 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); + SimulationParameter param = simulAction.getSimulationParameter(); + return param; + } + + /** * Optimization model for combo box. * * @return model @@ -61,7 +87,7 @@ for (String r : ObjectiveStorage.getObjectiveNames()) { // there is some non java files in sensitivity directory if (r.endsWith(".java")) { - // Remove .java extention + // Remove .java extension // for example SensitivityStorage.getRuleName(String) result.add(r.substring(0, r.length() - 5)); } @@ -78,12 +104,12 @@ */ public void objectiveChanged(OptimizationUI view) { String objectiveName = (String)view.getFieldObjectiveMethodSelect().getSelectedItem(); - SimulAction simulAction = view.getContextValue(SimulAction.class); + SimulationParameter param = getSimulationParameter(view); // creation new instance only when name change to not lose parameters value - Objective objective = simulAction.getObjective(); + Objective objective = param.getObjective(); if (objective != null && objective.getClass().getSimpleName().equals(objectiveName)) { - objective = simulAction.getObjective(); + objective = param.getObjective(); } else { try { ObjectiveStorage objectiveStorage = ObjectiveStorage.getObjective(objectiveName); @@ -97,14 +123,7 @@ // can be null for example if analysis can't be compiled if (objective != null) { - simulAction.setObjective(objective); - - /*CardLayout factorPanelLayout = (CardLayout)view.getFactorCardinalityPanel().getLayout(); - if (sensitivityAnalysis.canManageCardinality()) { - factorPanelLayout.show(factorCardinalityPanel, "factorCardinalitySupported"); - } else { - factorPanelLayout.show(factorCardinalityPanel, "factorCardinalityNotSupported"); - }*/ + param.setObjective(objective); // update model ScriptParametersTableModel parametersTableModel = new ScriptParametersTableModel(objective); @@ -125,7 +144,7 @@ for (String r : OptimizationStorage.getOptimizationNames()) { // there is some non java files in sensitivity directory if (r.endsWith(".java")) { - // Remove .java extention + // Remove .java extension // for example SensitivityStorage.getRuleName(String) result.add(r.substring(0, r.length() - 5)); } @@ -142,12 +161,12 @@ */ public void optimizationChanged(OptimizationUI view) { String optimizationName = (String)view.getFieldOptimizationMethodSelect().getSelectedItem(); - SimulAction simulAction = view.getContextValue(SimulAction.class); + SimulationParameter param = getSimulationParameter(view); // creation new instance only when name change to not lose parameters value - Optimization optimization = simulAction.getOptimization(); + Optimization optimization = param.getOptimization(); if (optimization != null && optimization.getClass().getSimpleName().equals(optimizationName)) { - optimization = simulAction.getOptimization(); + optimization = param.getOptimization(); } else { try { OptimizationStorage optimizationStorage = OptimizationStorage.getOptimization(optimizationName); @@ -161,15 +180,8 @@ // can be null for example if analysis can't be compiled if (optimization != null) { - simulAction.setOptimization(optimization); + param.setOptimization(optimization); - /*CardLayout factorPanelLayout = (CardLayout)view.getFactorCardinalityPanel().getLayout(); - if (sensitivityAnalysis.canManageCardinality()) { - factorPanelLayout.show(factorCardinalityPanel, "factorCardinalitySupported"); - } else { - factorPanelLayout.show(factorCardinalityPanel, "factorCardinalityNotSupported"); - }*/ - // update model ScriptParametersTableModel parametersTableModel = new ScriptParametersTableModel(optimization); view.getSimulOptimizationMethodParam().setModel(parametersTableModel); @@ -178,7 +190,6 @@ } } - /** * Export model for combo box. * @@ -201,11 +212,86 @@ /** * Export model for combo box. - * + * + * @param view view * @return model */ - public TableModel getExportObservationTableModel() { - ExportObservationTableModel model = new ExportObservationTableModel(); + public ExportObservationTableModel getExportObservationTableModel(OptimizationUI view) { + SimulationParameter param = getSimulationParameter(view); + Map<Export, Observation> optimizationExportsObservations = param.getOptimizationExportsObservations(); + ExportObservationTableModel model = new ExportObservationTableModel(optimizationExportsObservations); return model; } + + /** + * Add selected export. + * + * @param view view + */ + public void addExports(OptimizationUI view) { + // get elements + SimulationParameter param = getSimulationParameter(view); + ExportObservationTableModel tableModel = view.getExportObservationTableModel(); + + // add all selected exports + List<String> selectedExports = view.getFieldExportList().getSelectedValuesList(); + for (String selectedExport : selectedExports) { + try { + // create export instance + ExportStorage exportStorage = ExportStorage.getExport(selectedExport); + Export export = exportStorage.getNewInstance(); + + // add export instance into parameters + Map<Export, Observation> optimizationExports = param.getOptimizationExportsObservations(); + optimizationExports.put(export, null); // new entry + tableModel.setOptimizationExportsObservations(optimizationExports); // FIXME add fire + param.setOptimizationExportsObservations(optimizationExports); + } catch (IsisFishException ex) { + throw new IsisFishRuntimeException("Can't create new export", ex); + } + } + } + + /** + * Remove selected exports in table. + * + * @param view view + */ + public void removeExports(OptimizationUI view) { + // get element + SimulationParameter param = getSimulationParameter(view); + Map<Export, Observation> optimizationExports = param.getOptimizationExportsObservations(); + ExportObservationTableModel tableModel = view.getExportObservationTableModel(); + + JTable table = view.getExportObservationTable(); + int[] rows = table.getSelectedRows(); + // reverse order + for (int i = rows.length - 1; i >= 0; i--) { + Export export = tableModel.getExportForRow(rows[i]); + optimizationExports.remove(export); + tableModel.deleteExport(export); + } + + // force save + param.setOptimizationExportsObservations(optimizationExports); + } + + /** + * Clear all export in table. + * + * @param view view + */ + public void clearExports(OptimizationUI view) { + // get elements + SimulationParameter param = getSimulationParameter(view); + Map<Export, Observation> optimizationExports = param.getOptimizationExportsObservations(); + ExportObservationTableModel tableModel = view.getExportObservationTableModel(); + + // clear + optimizationExports.clear(); + tableModel.setOptimizationExportsObservations(optimizationExports); + + // force save + param.setOptimizationExportsObservations(optimizationExports); + } } Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx 2014-04-04 08:18:00 UTC (rev 3931) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/OptimizationUI.jaxx 2014-04-04 13:00:45 UTC (rev 3932) @@ -31,19 +31,22 @@ </import> <script><![CDATA[ -// protected void $afterCompleteSetup() { -// handler.init(this); -// } + /*protected void $afterCompleteSetup() { + handler.init(this); + }*/ + protected void regionStorageChanged() { + handler.init(this); + } + public void refresh() { // Objective names list fieldObjectiveMethodSelect.setModel(handler.getObjectiveComboModel()); // Optimization names list fieldOptimizationMethodSelect.setModel(handler.getOptimizationComboModel()); - } + } + ]]></script> - - ]]></script> <OptimizationHandler id="handler" javaBean='new OptimizationHandler()'/> <!-- Objective choice and param --> @@ -94,31 +97,38 @@ <JScrollPane> <JList id="fieldExportList" genericType="String" model='{handler.getExportListModel()}' - cellRenderer='{new fr.ifremer.isisfish.ui.models.export.ExportNameListRenderer()}' /> + cellRenderer='{new fr.ifremer.isisfish.ui.models.export.ExportNameListRenderer()}' + onValueChanged='addExportsButton.setEnabled(fieldExportList.getSelectedIndex() != -1)' /> </JScrollPane> </cell> <cell fill="horizontal" weighty="1.0"> <Table> <row> <cell fill="horizontal"> - <JButton text="isisfish.common.add" /> + <JButton id="addExportsButton" text="isisfish.common.add" enabled="false" + onActionPerformed="handler.addExports(this)" /> </cell> </row> <row> <cell fill="horizontal"> - <JButton text="isisfish.common.remove" /> + <JButton id="removeExportsButton" text="isisfish.common.remove" enabled="false" + onActionPerformed="handler.removeExports(this)" /> </cell> </row> <row> <cell fill="horizontal"> - <JButton text="isisfish.common.clear" /> + <JButton id="clearExportsButton" text="isisfish.common.clear" enabled="false" + onActionPerformed="handler.clearExports(this)" /> </cell> </row> </Table> </cell> <cell fill="both" weightx="1.0" weighty="1.0"> <JScrollPane> - <JTable id="exportObservationTable" model="{handler.getExportObservationTableModel()}" rowHeight='24' /> + <ExportObservationTableModel id="exportObservationTableModel" javaBean="handler.getExportObservationTableModel(this)" /> + <JTable id="exportObservationTable" model="{getExportObservationTableModel()}" rowHeight='24' /> + <ListSelectionModel id="exportObservationSelectionModel" initializer="exportObservationTable.getSelectionModel()" + onValueChanged='removeExportsButton.setEnabled(!exportObservationSelectionModel.isSelectionEmpty());clearExportsButton.setEnabled(exportObservationTableModel.getRowCount() > 0);' /> </JScrollPane> </cell> </row> Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java 2014-04-04 08:18:00 UTC (rev 3931) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooserHandler.java 2014-04-04 13:00:45 UTC (rev 3932) @@ -118,7 +118,7 @@ } /** - * Display paramters table form single selected list. + * Display parameters table form single selected list. * * @param ruleChooser rule chooser ui */ Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2014-04-04 08:18:00 UTC (rev 3931) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2014-04-04 13:00:45 UTC (rev 3932) @@ -1329,20 +1329,4 @@ throw new IsisFishRuntimeException("Can't add factor on rule", ex); }*/ } - - public Objective getObjective() { - return param.getObjective(); - } - - public void setObjective(Objective objective) { - param.setObjective(objective); - } - - public Optimization getOptimization() { - return param.getOptimization(); - } - - public void setOptimization(Optimization optimization) { - param.setOptimization(optimization); - } } Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2014-04-04 08:18:00 UTC (rev 3931) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2014-04-04 13:00:45 UTC (rev 3932) @@ -34,6 +34,7 @@ exportUI.refresh(); resultChoiceUI.refresh(); advancedParamsUI.refresh(); + optimizationUI.refresh(); } /** @@ -41,7 +42,7 @@ */ @Override protected void regionStorageChanged() { - + optimizationUI.regionStorageChanged(); } @Override Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java 2014-04-04 08:18:00 UTC (rev 3931) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/ui/widget/editor/ParameterTableCellEditor.java 2014-04-04 13:00:45 UTC (rev 3932) @@ -51,7 +51,6 @@ import fr.ifremer.isisfish.types.TimeStep; import fr.ifremer.isisfish.types.Month; import fr.ifremer.isisfish.util.ConverterUtil; -import org.apache.commons.lang3.StringUtils; /** * Un editeur generic de champs qui se base sur le model de données
participants (1)
-
echatellier@users.forge.codelutin.com