Author: chatellier Date: 2009-06-15 16:37:09 +0000 (Mon, 15 Jun 2009) New Revision: 2379 Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportParametersTableCellEditor.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportParametersTableCellRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportParametersTableModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorComboModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorComboRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorListModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorListRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorParametersTableCellEditor.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorParametersTableCellRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorParametersTableModel.java Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/analyzeplan/AnalyzePlanComboRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/analyzeplan/AnalyzePlanParametersTableModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/util/TooltipHelper.java isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties Log: Add sensitivity and exports models. Refactor Sensitivity chooser UI. Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/analyzeplan/AnalyzePlanComboRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/analyzeplan/AnalyzePlanComboRenderer.java 2009-06-15 08:36:04 UTC (rev 2378) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/analyzeplan/AnalyzePlanComboRenderer.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -18,6 +18,8 @@ package fr.ifremer.isisfish.ui.models.analyzeplan; +import static org.codelutin.i18n.I18n._; + import java.awt.Component; import java.util.HashMap; import java.util.Map; @@ -29,6 +31,7 @@ import fr.ifremer.isisfish.datastore.AnalysePlanStorage; import fr.ifremer.isisfish.simulator.AnalysePlan; +import fr.ifremer.isisfish.ui.util.TooltipHelper; /** * Renderer pour la combo des plans d'analyse. @@ -83,7 +86,8 @@ c.setToolTipText(plan.getDescription()); } catch (Exception e) { - // can't get exception + String errorTooltip = TooltipHelper.getErrorTooltip(_("isisfish.error.compile.fileerror", analysePlanName)); + c.setToolTipText(errorTooltip); } return c; Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/analyzeplan/AnalyzePlanParametersTableModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/analyzeplan/AnalyzePlanParametersTableModel.java 2009-06-15 08:36:04 UTC (rev 2378) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/analyzeplan/AnalyzePlanParametersTableModel.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -32,7 +32,6 @@ import fr.ifremer.isisfish.IsisFishException; import fr.ifremer.isisfish.datastore.AnalysePlanStorage; import fr.ifremer.isisfish.simulator.AnalysePlan; -import fr.ifremer.isisfish.ui.input.metier.MetierSeasonInfoTargetSpeciesModel; /** * Model de la table de definition de parametre d'un plan d'analyse. @@ -51,7 +50,7 @@ /** Log. */ private static Log log = LogFactory - .getLog(MetierSeasonInfoTargetSpeciesModel.class); + .getLog(AnalyzePlanParametersTableModel.class); /** serialVersionUID. */ private static final long serialVersionUID = 3169786638868209920L; @@ -182,7 +181,7 @@ AnalysePlanStorage.setParameterValue(plan, name, value); } catch (IsisFishException e) { if (log.isErrorEnabled()) { - log.error("Can't set parameter value"); + log.error("Can't set parameter value", e); } } break; Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListModel.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListModel.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,98 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.export; + +import java.util.List; + +import javax.swing.AbstractListModel; + +import fr.ifremer.isisfish.export.Export; + +/** + * Model pour la liste des instances d'exports. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class ExportListModel extends AbstractListModel { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + protected List<? extends Export> exports; + + /** + * Empty constructor. + */ + public ExportListModel() { + this(null); + } + + /** + * Constructor with plan list. + * + * @param exports exports + */ + public ExportListModel(List<? extends Export> exports) { + super(); + setExport(exports); + } + + /** + * Get exports list. + * + * @return the exports + */ + public List<? extends Export> getExports() { + return exports; + } + + /** + * Set exports list. + * + * @param exports the exports to set + */ + public void setExport(List<? extends Export> exports) { + this.exports = exports; + } + + /* + * @see javax.swing.ListModel#getElementAt(int) + */ + @Override + public Object getElementAt(int index) { + return exports.get(index); + } + + /* + * @see javax.swing.ListModel#getSize() + */ + @Override + public int getSize() { + int size = 0; + + if (exports != null) { + size = exports.size(); + } + return size; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListRenderer.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportListRenderer.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,69 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.export; + +import java.awt.Component; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.ListCellRenderer; + +import fr.ifremer.isisfish.datastore.ExportStorage; +import fr.ifremer.isisfish.export.Export; + +/** + * Renderer pour la liste des plans d'analyse. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class ExportListRenderer extends DefaultListCellRenderer implements + ListCellRenderer { + + /** 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); + + Export export = (Export) value; + c.setText(ExportStorage.getName(export)); + + try { + c.setToolTipText(export.getDescription()); + } catch (Exception e) { + // can't get exception + } + + return this; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListModel.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListModel.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,97 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.export; + +import java.util.List; + +import javax.swing.DefaultListModel; + +/** + * Model pour la liste des noms d'exports. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class ExportNameListModel extends DefaultListModel { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + /** Analyze plan names. */ + protected List<String> exportNames; + + /** + * Empty constructor. + */ + public ExportNameListModel() { + this(null); + } + + /** + * Constructor with export list. + * + * @param exportNames exports Names + */ + public ExportNameListModel(List<String> exportNames) { + super(); + setExportNames(exportNames); + } + + /** + * Get exports names. + * + * @return the analyze plan names + */ + public List<String> getExportNames() { + return exportNames; + } + + /** + * Set analyze plan names. + * + * @param exportNames the exports names to set + */ + public void setExportNames(List<String> exportNames) { + this.exportNames = exportNames; + } + + /* + * @see javax.swing.ListModel#getElementAt(int) + */ + @Override + public Object getElementAt(int index) { + return exportNames.get(index); + } + + /* + * @see javax.swing.ListModel#getSize() + */ + @Override + public int getSize() { + int size = 0; + + if (exportNames != null) { + size = exportNames.size(); + } + return size; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListRenderer.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListRenderer.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,94 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.export; + +import static org.codelutin.i18n.I18n._; + +import java.awt.Component; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.ListCellRenderer; + +import fr.ifremer.isisfish.datastore.ExportStorage; +import fr.ifremer.isisfish.export.Export; +import fr.ifremer.isisfish.ui.util.TooltipHelper; + +/** + * Renderer pour la combo des noms d'export. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class ExportNameListRenderer extends DefaultListCellRenderer implements + ListCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + /** Export cache. */ + protected Map<String, Export> exportCache; + + /** + * Empty constructor. + */ + public ExportNameListRenderer() { + exportCache = new HashMap<String, Export>(); + } + + /* + * @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); + + String exportName = (String) value; + c.setText(exportName); + + // c'est tres couteux d'avoir une instance + // on les met en cache + try { + Export export = exportCache.get(exportName); + if (export == null) { + ExportStorage storage = ExportStorage.getExport(exportName); + export = storage.getNewExportInstance(); + exportCache.put(exportName, export); + } + + c.setToolTipText(export.getDescription()); + } catch (Exception e) { + String errorTooltip = TooltipHelper.getErrorTooltip(_("isisfish.error.compile.fileerror", exportName)); + c.setToolTipText(errorTooltip); + } + + return c; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportParametersTableCellEditor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportParametersTableCellEditor.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportParametersTableCellEditor.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,72 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.export; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import fr.ifremer.isisfish.datastore.ExportStorage; +import fr.ifremer.isisfish.export.Export; +import fr.ifremer.isisfish.ui.widget.editor.ParameterTableCellEditor; + +/** + * Specific editor for export parameters. + * + * @author chatellier + * @version $Revision: 1.0 $ + * + * Last update : $Date: 9 juin 2009 $ + * By : $Author: chatellier $ + */ +public class ExportParametersTableCellEditor extends ParameterTableCellEditor { + + /** serialVersionUID. */ + private static final long serialVersionUID = 8211639776194497615L; + + protected Export export; + + protected List<Class<?>> exportParametersTypes; + + /** + * Constructor with export parameter. + * + * @param export export + */ + public ExportParametersTableCellEditor(Export export) { + super(); + + this.export = export; + exportParametersTypes = new ArrayList<Class<?>>(); + //TODO map may be sorted + Map<String, Class<?>> planParametersNamesAndTypes = ExportStorage + .getParameterNames(export); + for (Class<?> type : planParametersNamesAndTypes.values()) { + exportParametersTypes.add(type); + } + } + + /* + * @see fr.ifremer.isisfish.ui.widget.editor.ParameterTableCellEditor#getType(java.lang.Object, int, int) + */ + @Override + protected Class<?> getType(Object value, int row, int column) { + return exportParametersTypes.get(row); + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportParametersTableCellRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportParametersTableCellRenderer.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportParametersTableCellRenderer.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,76 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.export; + +import java.awt.Component; + +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableCellRenderer; + +import fr.ifremer.isisfish.datastore.ExportStorage; +import fr.ifremer.isisfish.export.Export; +import fr.ifremer.isisfish.ui.util.TooltipHelper; +import fr.ifremer.isisfish.util.Doc; + +/** + * Specific renderer for export parameters. + * + * @author chatellier + * @version $Revision: 1.0 $ + * + * Last update : $Date: 9 juin 2009 $ + * By : $Author: chatellier $ + */ +public class ExportParametersTableCellRenderer extends DefaultTableCellRenderer + implements TableCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -1655744662816030649L; + + protected Export export; + + public ExportParametersTableCellRenderer(Export export) { + this.export = export; + } + + /* + * @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) { + + // this must be used to have alterned highlight rows and default + // selection color + JLabel c = (JLabel) super.getTableCellRendererComponent(table, value, + isSelected, hasFocus, row, column); + + String parameterName = (String) value; + c.setText(parameterName); + + Doc doc = ExportStorage.getParameterDoc(export, parameterName); + String documentation = TooltipHelper.docToString(doc); + c.setToolTipText(documentation); + + return c; + } + +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportParametersTableModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportParametersTableModel.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportParametersTableModel.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,194 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.export; + +import static org.codelutin.i18n.I18n._; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import javax.swing.table.AbstractTableModel; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import fr.ifremer.isisfish.IsisFishException; +import fr.ifremer.isisfish.datastore.ExportStorage; +import fr.ifremer.isisfish.export.Export; + +/** + * Model de la table de definition de parametre d'un export. + * + * Columns : + * <li>Parameter name</li> + * <li>Parameter value</li> + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class ExportParametersTableModel extends AbstractTableModel { + + /** Log. */ + private static Log log = LogFactory + .getLog(ExportParametersTableModel.class); + + /** serialVersionUID. */ + private static final long serialVersionUID = 3169786638868209920L; + + /** Columns names. */ + public final static String[] COLUMN_NAMES = { _("isisfish.common.name"), + _("isisfish.common.value") }; + + protected Export export; + + protected List<String> exportParametersNames; + + /** + * Constructor with data. + * + * @param export export to edit parameters + */ + public ExportParametersTableModel(Export export) { + super(); + this.export = export; + + //TODO map may be sorted + exportParametersNames = new ArrayList<String>(); + Map<String, Class<?>> planParametersNamesAndTypes = ExportStorage + .getParameterNames(export); + for (String names : planParametersNamesAndTypes.keySet()) { + exportParametersNames.add(names); + } + } + + /* + * @see javax.swing.table.TableModel#getColumnCount() + */ + @Override + public int getColumnCount() { + return COLUMN_NAMES.length; + } + + /* + * @see javax.swing.table.TableModel#getRowCount() + */ + @Override + public int getRowCount() { + return exportParametersNames.size(); + } + + /* + * @see javax.swing.table.TableModel#getValueAt(int, int) + */ + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + + Object result = null; + + String name = exportParametersNames.get(rowIndex); + switch (columnIndex) { + case 0: + result = name; + break; + case 1: + try { + result = ExportStorage.getParameterValue(export, name); + } catch (IsisFishException e) { + if (log.isErrorEnabled()) { + log.debug("Can't get parameters value", e); + } + } + break; + default: + throw new IndexOutOfBoundsException("No such column " + columnIndex); + } + + return result; + } + + /* + * @see javax.swing.table.TableModel#getColumnClass(int) + */ + @Override + public Class<?> getColumnClass(int columnIndex) { + + Class<?> result = null; + + switch (columnIndex) { + case 0: + result = String.class; + break; + case 1: + result = Object.class; + break; + default: + throw new IndexOutOfBoundsException("No such column " + columnIndex); + } + + return result; + } + + /* + * @see javax.swing.table.TableModel#getColumnName(int) + */ + @Override + public String getColumnName(int columnIndex) { + return COLUMN_NAMES[columnIndex]; + } + + /* + * @see javax.swing.table.TableModel#isCellEditable(int, int) + */ + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return columnIndex > 0; + } + + /* + * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int) + */ + @Override + public void setValueAt(Object value, int rowIndex, int columnIndex) { + + if (log.isDebugEnabled()) { + log.debug("Cell edition (column " + columnIndex + ") = " + value); + } + + String name = exportParametersNames.get(rowIndex); + switch (columnIndex) { + case 1: + try { + ExportStorage.setParameterValue(export, name, value); + } catch (IsisFishException e) { + if (log.isErrorEnabled()) { + log.error("Can't set parameter value", e); + } + } + break; + default: + throw new IndexOutOfBoundsException("Can't edit column " + + columnIndex); + } + + } +} Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboRenderer.java 2009-06-15 08:36:04 UTC (rev 2378) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboRenderer.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -18,6 +18,8 @@ package fr.ifremer.isisfish.ui.models.rule; +import static org.codelutin.i18n.I18n._; + import java.awt.Component; import java.util.HashMap; import java.util.Map; @@ -29,6 +31,7 @@ import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.rule.Rule; +import fr.ifremer.isisfish.ui.util.TooltipHelper; /** * Renderer pour la combo des noms de regles. @@ -81,7 +84,8 @@ c.setToolTipText(rule.getDescription()); } catch (Exception e) { - // can't get exception + String errorTooltip = TooltipHelper.getErrorTooltip(_("isisfish.error.compile.fileerror", ruleName)); + c.setToolTipText(errorTooltip); } return c; Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableModel.java 2009-06-15 08:36:04 UTC (rev 2378) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableModel.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -32,7 +32,6 @@ import fr.ifremer.isisfish.IsisFishException; import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.rule.Rule; -import fr.ifremer.isisfish.ui.input.metier.MetierSeasonInfoTargetSpeciesModel; /** * Model de la table de definition de parametre d'une regle. @@ -51,7 +50,7 @@ /** Log. */ private static Log log = LogFactory - .getLog(MetierSeasonInfoTargetSpeciesModel.class); + .getLog(RuleParametersTableModel.class); /** serialVersionUID. */ private static final long serialVersionUID = 3169786638868209920L; @@ -181,7 +180,7 @@ RuleStorage.setParameterValue(rule, name, value); } catch (IsisFishException e) { if (log.isErrorEnabled()) { - log.error("Can't set parameter value"); + log.error("Can't set parameter value", e); } } break; Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorComboModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorComboModel.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorComboModel.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,103 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.sensitivity; + +import java.util.List; + +import javax.swing.DefaultComboBoxModel; + +/** + * Model pour la liste des calculateurs de sensibilite. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class SensitivityCalculatorComboModel extends DefaultComboBoxModel { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + /** SensitivityCalculator names. */ + protected List<String> sensitivityCalculatorNames; + + /** + * Empty constructor. + */ + public SensitivityCalculatorComboModel() { + this(null); + } + + /** + * Constructor with calculator list. + * + * @param sensitivityCalculatorNames sensitivity calculator Names + */ + public SensitivityCalculatorComboModel(List<String> sensitivityCalculatorNames) { + super(); + setSensitivityCalculatorNames(sensitivityCalculatorNames); + } + + /** + * Get analyze plan names. + * + * @return the analyze plan names + */ + public List<String> getSensitivityCalculatorNames() { + return sensitivityCalculatorNames; + } + + /** + * Set sensitivity names. + * + * @param sensitivityCalculatorNames the names to set + */ + public void setSensitivityCalculatorNames(List<String> sensitivityCalculatorNames) { + this.sensitivityCalculatorNames = sensitivityCalculatorNames; + + // default first selected + /* disable default selection + if (!sensitivityCalculatorNames.isEmpty()) { + setSelectedItem(sensitivityCalculatorNames.get(0)); + }*/ + } + + /* + * @see javax.swing.ListModel#getElementAt(int) + */ + @Override + public Object getElementAt(int index) { + return sensitivityCalculatorNames.get(index); + } + + /* + * @see javax.swing.ListModel#getSize() + */ + @Override + public int getSize() { + int size = 0; + + if (sensitivityCalculatorNames != null) { + size = sensitivityCalculatorNames.size(); + } + return size; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorComboRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorComboRenderer.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorComboRenderer.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,95 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.sensitivity; + +import static org.codelutin.i18n.I18n._; + +import java.awt.Component; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.ListCellRenderer; + +import fr.ifremer.isisfish.datastore.SensitivityStorage; +import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator; +import fr.ifremer.isisfish.ui.util.TooltipHelper; + +/** + * Renderer pour la combo des calculateurs de sensibilités. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class SensitivityCalculatorComboRenderer extends DefaultListCellRenderer implements + ListCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + /** Sensitivity cache. */ + protected Map<String, SensitivityCalculator> sensitivityCalculatorCache; + + /** + * Empty constructor. + */ + public SensitivityCalculatorComboRenderer() { + sensitivityCalculatorCache = new HashMap<String, SensitivityCalculator>(); + } + + /* + * @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); + + String sensitivityName = (String) value; + c.setText(sensitivityName); + + // c'est tres couteux d'avoir une instance + // on les met en cache + try { + SensitivityCalculator plan = sensitivityCalculatorCache.get(sensitivityName); + if (plan == null) { + SensitivityStorage storage = SensitivityStorage + .getSensitivity(sensitivityName); + plan = storage.getNewSensitivityInstance(); + sensitivityCalculatorCache.put(sensitivityName, plan); + } + + c.setToolTipText(plan.getDescription()); + } catch (Exception e) { + String errorTooltip = TooltipHelper.getErrorTooltip(_("isisfish.error.compile.fileerror", sensitivityName)); + c.setToolTipText(errorTooltip); + } + + return c; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorListModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorListModel.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorListModel.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,98 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.sensitivity; + +import java.util.List; + +import javax.swing.AbstractListModel; + +import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator; + +/** + * Model pour la liste des instances de calculateurs. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class SensitivityCalculatorListModel extends AbstractListModel { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + protected List<SensitivityCalculator> sensitivityCalculators; + + /** + * Empty constructor. + */ + public SensitivityCalculatorListModel() { + this(null); + } + + /** + * Constructor with list. + * + * @param sensitivityCalculators calculators + */ + public SensitivityCalculatorListModel(List<SensitivityCalculator> sensitivityCalculators) { + super(); + setSensitivityCalculators(sensitivityCalculators); + } + + /** + * Get calculators list. + * + * @return the calculators + */ + public List<SensitivityCalculator> getSensitivityCalculators() { + return sensitivityCalculators; + } + + /** + * Set calculators list. + * + * @param sensitivityCalculators the calculators to set + */ + public void setSensitivityCalculators(List<SensitivityCalculator> sensitivityCalculators) { + this.sensitivityCalculators = sensitivityCalculators; + } + + /* + * @see javax.swing.ListModel#getElementAt(int) + */ + @Override + public Object getElementAt(int index) { + return sensitivityCalculators.get(index); + } + + /* + * @see javax.swing.ListModel#getSize() + */ + @Override + public int getSize() { + int size = 0; + + if (sensitivityCalculators != null) { + size = sensitivityCalculators.size(); + } + return size; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorListRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorListRenderer.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorListRenderer.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,69 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.sensitivity; + +import java.awt.Component; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.ListCellRenderer; + +import fr.ifremer.isisfish.datastore.SensitivityStorage; +import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator; + +/** + * Renderer pour la liste des plans d'analyse. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class SensitivityCalculatorListRenderer extends DefaultListCellRenderer implements + ListCellRenderer { + + /** 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); + + SensitivityCalculator sensitivity = (SensitivityCalculator) value; + c.setText(SensitivityStorage.getName(sensitivity)); + + try { + c.setToolTipText(sensitivity.getDescription()); + } catch (Exception e) { + // can't get exception + } + + return this; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorParametersTableCellEditor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorParametersTableCellEditor.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorParametersTableCellEditor.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,73 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.sensitivity; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import fr.ifremer.isisfish.datastore.SensitivityStorage; +import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator; +import fr.ifremer.isisfish.ui.widget.editor.ParameterTableCellEditor; + +/** + * Specific editor for rule parameters. + * + * @author chatellier + * @version $Revision: 1.0 $ + * + * Last update : $Date: 9 juin 2009 $ + * By : $Author: chatellier $ + */ +public class SensitivityCalculatorParametersTableCellEditor extends + ParameterTableCellEditor { + + /** serialVersionUID. */ + private static final long serialVersionUID = 8211639776194497615L; + + protected SensitivityCalculator sensitivityCalculator; + + protected List<Class<?>> sensitivityCalculatorParametersTypes; + + /** + * Constructor with calculator parameter. + * + * @param sensitivityCalculator plan + */ + public SensitivityCalculatorParametersTableCellEditor(SensitivityCalculator sensitivityCalculator) { + super(); + + this.sensitivityCalculator = sensitivityCalculator; + sensitivityCalculatorParametersTypes = new ArrayList<Class<?>>(); + //TODO map may be sorted + Map<String, Class<?>> planParametersNamesAndTypes = SensitivityStorage + .getParameterNames(sensitivityCalculator); + for (Class<?> type : planParametersNamesAndTypes.values()) { + sensitivityCalculatorParametersTypes.add(type); + } + } + + /* + * @see fr.ifremer.isisfish.ui.widget.editor.ParameterTableCellEditor#getType(java.lang.Object, int, int) + */ + @Override + protected Class<?> getType(Object value, int row, int column) { + return sensitivityCalculatorParametersTypes.get(row); + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorParametersTableCellRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorParametersTableCellRenderer.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorParametersTableCellRenderer.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,76 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.sensitivity; + +import java.awt.Component; + +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableCellRenderer; + +import fr.ifremer.isisfish.datastore.SensitivityStorage; +import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator; +import fr.ifremer.isisfish.ui.util.TooltipHelper; +import fr.ifremer.isisfish.util.Doc; + +/** + * Specific renderer for calculator parameters. + * + * @author chatellier + * @version $Revision: 1.0 $ + * + * Last update : $Date: 9 juin 2009 $ + * By : $Author: chatellier $ + */ +public class SensitivityCalculatorParametersTableCellRenderer extends + DefaultTableCellRenderer implements TableCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -1655744662816030649L; + + protected SensitivityCalculator sensitivityCalculator; + + public SensitivityCalculatorParametersTableCellRenderer(SensitivityCalculator sensitivityCalculator) { + this.sensitivityCalculator = sensitivityCalculator; + } + + /* + * @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) { + + // this must be used to have alterned highlight rows and default + // selection color + JLabel c = (JLabel) super.getTableCellRendererComponent(table, value, + isSelected, hasFocus, row, column); + + String parameterName = (String) value; + c.setText(parameterName); + + Doc doc = SensitivityStorage.getParameterDoc(sensitivityCalculator, parameterName); + String documentation = TooltipHelper.docToString(doc); + c.setToolTipText(documentation); + + return c; + } + +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorParametersTableModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorParametersTableModel.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/models/sensitivity/SensitivityCalculatorParametersTableModel.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -0,0 +1,194 @@ +/* *##% + * Copyright (C) 2009 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.models.sensitivity; + +import static org.codelutin.i18n.I18n._; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import javax.swing.table.AbstractTableModel; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import fr.ifremer.isisfish.IsisFishException; +import fr.ifremer.isisfish.datastore.SensitivityStorage; +import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator; + +/** + * Model de la table de definition de parametre d'un plan d'analyse. + * + * Columns : + * <li>Parameter name</li> + * <li>Parameter value</li> + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class SensitivityCalculatorParametersTableModel extends AbstractTableModel { + + /** Log. */ + private static Log log = LogFactory + .getLog(SensitivityCalculatorParametersTableModel.class); + + /** serialVersionUID. */ + private static final long serialVersionUID = 3169786638868209920L; + + /** Columns names. */ + public final static String[] COLUMN_NAMES = { _("isisfish.common.name"), + _("isisfish.common.value") }; + + protected SensitivityCalculator sensitivityCalculator; + + protected List<String> planParametersNames; + + /** + * Constructor with data. + * + * @param sensitivityCalculator plan to edit parameters + */ + public SensitivityCalculatorParametersTableModel(SensitivityCalculator sensitivityCalculator) { + super(); + this.sensitivityCalculator = sensitivityCalculator; + + //TODO map may be sorted + planParametersNames = new ArrayList<String>(); + Map<String, Class<?>> planParametersNamesAndTypes = SensitivityStorage + .getParameterNames(sensitivityCalculator); + for (String names : planParametersNamesAndTypes.keySet()) { + planParametersNames.add(names); + } + } + + /* + * @see javax.swing.table.TableModel#getColumnCount() + */ + @Override + public int getColumnCount() { + return COLUMN_NAMES.length; + } + + /* + * @see javax.swing.table.TableModel#getRowCount() + */ + @Override + public int getRowCount() { + return planParametersNames.size(); + } + + /* + * @see javax.swing.table.TableModel#getValueAt(int, int) + */ + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + + Object result = null; + + String name = planParametersNames.get(rowIndex); + switch (columnIndex) { + case 0: + result = name; + break; + case 1: + try { + result = SensitivityStorage.getParameterValue(sensitivityCalculator, name); + } catch (IsisFishException e) { + if (log.isErrorEnabled()) { + log.debug("Can't get parameters value", e); + } + } + break; + default: + throw new IndexOutOfBoundsException("No such column " + columnIndex); + } + + return result; + } + + /* + * @see javax.swing.table.TableModel#getColumnClass(int) + */ + @Override + public Class<?> getColumnClass(int columnIndex) { + + Class<?> result = null; + + switch (columnIndex) { + case 0: + result = String.class; + break; + case 1: + result = Object.class; + break; + default: + throw new IndexOutOfBoundsException("No such column " + columnIndex); + } + + return result; + } + + /* + * @see javax.swing.table.TableModel#getColumnName(int) + */ + @Override + public String getColumnName(int columnIndex) { + return COLUMN_NAMES[columnIndex]; + } + + /* + * @see javax.swing.table.TableModel#isCellEditable(int, int) + */ + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return columnIndex > 0; + } + + /* + * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int) + */ + @Override + public void setValueAt(Object value, int rowIndex, int columnIndex) { + + if (log.isDebugEnabled()) { + log.debug("Cell edition (column " + columnIndex + ") = " + value); + } + + String name = planParametersNames.get(rowIndex); + switch (columnIndex) { + case 1: + try { + SensitivityStorage.setParameterValue(sensitivityCalculator, name, value); + } catch (IsisFishException e) { + if (log.isErrorEnabled()) { + log.error("Can't set parameter value", e); + } + } + break; + default: + throw new IndexOutOfBoundsException("Can't edit column " + + columnIndex); + } + + } +} Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-06-15 08:36:04 UTC (rev 2378) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-06-15 16:37:09 UTC (rev 2379) @@ -36,26 +36,38 @@ import fr.ifremer.isisfish.ui.simulator.ToolTipListModelFactory; import fr.ifremer.isisfish.ui.widget.renderer.SimpleToolTipComboBoxRenderer; import fr.ifremer.isisfish.ui.widget.renderer.SimpleToolTipTableColumnRenderer; + + import fr.ifremer.isisfish.ui.models.export.ExportListModel; + import fr.ifremer.isisfish.ui.models.export.ExportListRenderer; + import fr.ifremer.isisfish.ui.models.export.ExportNameListModel; + import fr.ifremer.isisfish.ui.models.export.ExportNameListRenderer; + import fr.ifremer.isisfish.ui.models.export.ExportParametersTableCellEditor; + import fr.ifremer.isisfish.ui.models.export.ExportParametersTableCellRenderer; + import fr.ifremer.isisfish.ui.models.export.ExportParametersTableModel; + + import fr.ifremer.isisfish.ui.models.sensitivity.SensitivityCalculatorComboModel; + import fr.ifremer.isisfish.ui.models.sensitivity.SensitivityCalculatorComboRenderer; + import fr.ifremer.isisfish.ui.models.sensitivity.SensitivityCalculatorListModel; + import fr.ifremer.isisfish.ui.models.sensitivity.SensitivityCalculatorListRenderer; + import fr.ifremer.isisfish.ui.models.sensitivity.SensitivityCalculatorParametersTableCellEditor; + import fr.ifremer.isisfish.ui.models.sensitivity.SensitivityCalculatorParametersTableCellRenderer; + import fr.ifremer.isisfish.ui.models.sensitivity.SensitivityCalculatorParametersTableModel; protected SimulAction getSimulAction() { return getContextValue(SimulAction.class); } public ComboBoxModel getSensitivityCalculatorModel() { - java.util.List<Item> items = new ArrayList<Item>(); - items.add(new Item("null", " ", null, true)); - for (String s : getSimulAction().getSensitivityNames()) { - items.add(new Item(s, s, s, false)); - } - fieldSensitivityCalculatorSelect.setItems(items); - // add list tooltip renderer - //fieldSensitivityCalculatorSelect.setCellRenderer(new SimpleToolTipComboBoxRenderer(ToolTipListModelFactory.createRuleDescriptionsModel(getSimulAction().getSensitivityNames()))); - return fieldSensitivityCalculatorSelect.getModel(); + java.util.List<String> sensitivityNames = getSimulAction().getSensitivityNames(); + SensitivityCalculatorComboModel model = new SensitivityCalculatorComboModel(sensitivityNames); + return model; } /** * Auto select calculator in JComboBox * with calculator selected in SimulAction. + * + * Used by "reloadOldSimulation" operation. */ public void refreshSelectedSensitivityCalculator() { SensitivityCalculator calculator = getSimulAction().getSensitivityCalculator(); @@ -67,7 +79,7 @@ fieldSensitivityCalculatorSelect.setSelectedItem(calculator.getClass().getSimpleName()); } } - + protected void sensCalculatorChanged() { // TODO change combo box content @@ -75,70 +87,23 @@ // this event is thrown by build a new Calculator instance // and parameter are lost - if (fieldSensitivityCalculatorSelect.getSelectedIndex() != -1) { - String sensitivityName = (String)fieldSensitivityCalculatorSelect.getSelectedItem(); - getSimulAction().setSensitivity(sensitivityName); - - // enable/disable table - try { - SensitivityCalculator sens = SensitivityStorage.getSensitivity(sensitivityName).getNewSensitivityInstance(); - factorCardinalityScrollPane.setVisible(!sens.canManageCardinality()); - validate(); - } - catch(IsisFishException e) { - if (log.isErrorEnabled()) { - log.error("Can't get canManageCardinality() value", e); - } - } - setSensitivityCalculatorParamsModel(); - } - } - - protected void setSensitivityCalculatorParamsModel() { String sensitivityName = (String)fieldSensitivityCalculatorSelect.getSelectedItem(); - Map<String, Class<?>> values = getSimulAction().getSensitivityParameterNames(sensitivityName); - setSensitivityCalculatorParamsTableModel(values, simulSensitivityCalculatorParam); - simulSensitivityCalculatorParam.getModel().addTableModelListener(new TableModelListener() { - @Override - public void tableChanged(TableModelEvent e) { - int row = e.getFirstRow(); - TableModel model = (TableModel)e.getSource(); - GenericCell data = (GenericCell) model.getValueAt(row, 0); - getContextValue(SimulAction.class).setSensitivityCalculatorParameterValue(data.getName(), model.getValueAt(row, 1)); - } - }); - simulSensitivityCalculatorParam.getColumnModel().getColumn(0).setCellRenderer(new SimpleToolTipTableColumnRenderer(ToolTipListModelFactory.createSensitivityParamsModel(sensitivityName))); - } + SensitivityCalculator sensivitityCalculator = getSimulAction().getSensivitityCalculatorInstance(sensitivityName); + + // can be null for example if calculator can't be compiled + if (sensivitityCalculator != null) { + getSimulAction().setSensitivityCalculator(sensivitityCalculator); + + // enable/disable table (if sensivitityCalculator can manage it) + factorCardinalityScrollPane.setVisible(!sensivitityCalculator.canManageCardinality()); + validate(); - protected void setSensitivityCalculatorParamsTableModel(Map<String, Class<?>> values, JTable table) { - int row = 0; - if (values != null){ - DefaultTableModel model = new DefaultTableModel() { - @Override - public boolean isCellEditable(int row, int column) { - boolean result = false; - if (column > 0) { - result = true; - } - return result; - } - }; - java.util.List<GenericCell> paramNamesList = new ArrayList<GenericCell>(); - java.util.List<Object> paramValuesList = new ArrayList<Object>(); - for (Iterator<String> it = values.keySet().iterator(); it.hasNext();) { - String name = it.next(); - Object properties = getContextValue(SimulAction.class).getSensitivityCalculatorParameterValue(name); - GenericCell value = new GenericCell(name, values.get(name), null); - paramNamesList.add(value); - paramValuesList.add(properties); - row++; - } - model.addColumn(_("isisfish.common.name"), paramNamesList.toArray()); - model.addColumn(_("isisfish.common.value"), paramValuesList.toArray()); - table.setModel(model); - ParameterColumnEditor cellEditor = new ParameterColumnEditor(); - cellEditor.setRegion(getContextValue(SimulAction.class).getRegionStorage()); - table.getColumnModel().getColumn(1).setCellEditor(cellEditor); + // update model + //setSensitivityCalculatorParamsModel(); + SensitivityCalculatorParametersTableModel parametersTableModel = new SensitivityCalculatorParametersTableModel(sensivitityCalculator); + simulSensitivityCalculatorParam.setModel(parametersTableModel); + simulSensitivityCalculatorParam.getColumnModel().getColumn(0).setCellRenderer(new SensitivityCalculatorParametersTableCellRenderer(sensivitityCalculator)); + simulSensitivityCalculatorParam.getColumnModel().getColumn(1).setCellEditor(new SensitivityCalculatorParametersTableCellEditor(sensivitityCalculator)); } } @@ -180,114 +145,93 @@ }); } - protected DefaultComboBoxModel getExportTableModel() { + protected ExportNameListModel getAvailableExportListModel() { java.util.List<String> exportNames = getSimulAction().getSensitivityExportNames(); - DefaultComboBoxModel model = new DefaultComboBoxModel(exportNames.toArray()); - // TODO add tooltip model for this combo + ExportNameListModel model = new ExportNameListModel(exportNames); return model; } - - // FIXME use bindings ? - protected void exportListSelected() { - removeExportButton.setEnabled(exportList.getSelectedIndex() != -1); - setExportParams(); - } - - /** - * Fill export parameters names and values in table. - */ - protected void setExportParams() { - SensitivityExport export = getSelectedExport(); - Map<String, Class<?>> values = getSimulAction().getSensitivityExportParameterNames(export); - setSensitivityExportParamsTableModel(values, exportParamsTable); - exportParamsTable.getModel().addTableModelListener(new TableModelListener() { - @Override - public void tableChanged(TableModelEvent e) { - int row = e.getFirstRow(); - TableModel model = (TableModel)e.getSource(); - GenericCell data = (GenericCell) model.getValueAt(row, 0); - getContextValue(SimulAction.class).setSensitivityExportParameterValue(getSelectedExport(), (String)data.getName(), model.getValueAt(row, 1)); - } - }); - exportParamsTable.getColumnModel().getColumn(0).setCellRenderer(new SimpleToolTipTableColumnRenderer(ToolTipListModelFactory.createExportParamsModel(ExportStorage.getName(export)))); - } - /** - * FIXME can't be factorized with {link #setFactorCardinalityTableModel} + * Add multiples export. + * + * Export name can be duplicated. */ - protected void setSensitivityExportParamsTableModel(Map<String, Class<?>> values, JTable table) { - int row = 0; - if (values != null){ - DefaultTableModel model = new DefaultTableModel() { - @Override - public boolean isCellEditable(int row, int column) { - boolean result = false; - if (column > 0) { - result = true; - } - return result; - } - }; - java.util.List<GenericCell> paramNamesList = new ArrayList<GenericCell>(); - java.util.List<Object> paramValuesList = new ArrayList<Object>(); - for (Iterator<String> it = values.keySet().iterator(); it.hasNext();) { - String name = it.next(); - Object properties = getContextValue(SimulAction.class).getSensitivityExportParameterValue(getSelectedExport(), name); - GenericCell value = new GenericCell(name, values.get(name), null); - paramNamesList.add(value); - paramValuesList.add(properties); - row++; - } - model.addColumn(_("isisfish.common.name"), paramNamesList.toArray()); - model.addColumn(_("isisfish.common.value"), paramValuesList.toArray()); - table.setModel(model); - ParameterColumnEditor cellEditor = new ParameterColumnEditor(); - cellEditor.setRegion(getContextValue(SimulAction.class).getRegionStorage()); - table.getColumnModel().getColumn(1).setCellEditor(cellEditor); + protected void addExports() { + Object[] exportNames = (Object[])availableSensitivityExports.getSelectedValues(); + for (Object exportName : exportNames) { + getSimulAction().addSensitivityExport((String)exportName); } + setExportListModel(); } - protected SensitivityExport getSelectedExport(){ - return (SensitivityExport)((GenericCell)exportList.getSelectedValue()).getValue(); - } - /** - * Add an export. - * - * Export name can be duplicated. + * Remove multiple export. */ - protected void addExport() { - getSimulAction().addSensitivityExport((String)exportCombo.getSelectedItem()); + protected void removeExports() { + Object[] exports = (Object[])selectedSensitivityExports.getSelectedValues(); + for (Object export : exports) { + getSimulAction().removeSensitivityExport((SensitivityExport)export); + } setExportListModel(); - clearExportsButton.setEnabled(true); } - protected void removeExport() { - getSimulAction().removeSensitivityExport(getSelectedExport()); - setExportListModel(); - removeExportButton.setEnabled(false); - } - + /** + * Clear all export. + */ protected void clearExports() { getSimulAction().clearSensitivityExport(); setExportListModel(); - clearExportsButton.setEnabled(false); } /** - * Set model (refresh export Jlist). + * Set model (refresh export JList). */ public void setExportListModel() { - java.util.List<SensitivityExport> exports = getSimulAction().getSensitivityExportList(); - DefaultListModel model = new DefaultListModel(); - - for (SensitivityExport s : exports) { - model.addElement(new GenericCell(s.getExportFilename(), s, s.getClass())); + java.util.List<SensitivityExport> exports = getSimulAction().getSensitivityExports(); + ExportListModel model = new ExportListModel(exports); + selectedSensitivityExports.setModel(model); + selectedSensitivityExports.setCellRenderer(new ExportListRenderer()); + + 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"); } - exportList.setModel(model); - exportList.setCellRenderer(new SimpleToolTipComboBoxRenderer(ToolTipListModelFactory.createExportDescriptionsModel2(exports, clearExportsButton, exportList))); + 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(); + ExportParametersTableModel model = new ExportParametersTableModel(export); + exportParamsTable.setModel(model); + exportParamsTable.getColumnModel().getColumn(0).setCellRenderer(new ExportParametersTableCellRenderer(export)); + ExportParametersTableCellEditor cellEditor = new ExportParametersTableCellEditor(export); + cellEditor.setRegion(simulAction.getRegionStorage()); + exportParamsTable.getColumnModel().getColumn(1).setCellEditor(cellEditor); + } + else { + exportParamsTable.setModel(new DefaultTableModel()); + } + } ]]> </script> <row> @@ -295,7 +239,8 @@ <JLabel text="isisfish.sensitivity.select"/> </cell> <cell fill="horizontal" weightx="1.0"> - <JComboBox id="fieldSensitivityCalculatorSelect" model='{getSensitivityCalculatorModel()}' onActionPerformed='sensCalculatorChanged()'/> + <JComboBox id="fieldSensitivityCalculatorSelect" model='{getSensitivityCalculatorModel()}' + renderer='{new SensitivityCalculatorComboRenderer()}' onActionPerformed='sensCalculatorChanged()'/> </cell> </row> <row> @@ -312,6 +257,7 @@ </JScrollPane> </cell> </row> + <!-- <row> <cell fill="both" columns='2' weightx="1.0" weighty="1.0"> <Table> @@ -369,11 +315,56 @@ </row> </Table> </cell> + </row> --> + <row> + <cell fill="both" columns='3' weightx="1.0"> + <JLabel text="isisfish.sensitivity.export"/> + </cell> </row> <row> + <cell columns='2' fill="both" weightx="1.0" weighty="1.0"> + <Table> + <row> + <cell fill="both" weightx="0.5" weighty="1.0"> + <JScrollPane> + <JList id="availableSensitivityExports" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}" + model='{getAvailableExportListModel()}' cellRenderer='{new ExportNameListRenderer()}' + onValueChanged='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()' /> + </cell> + </row> + <row> + <cell fill="both"> + <JButton id="removeExportButton" text="isisfish.common.remove" enabled="false" onActionPerformed='removeExports()' /> + </cell> + </row> + <row> + <cell fill="both"> + <JButton id="clearExportsButton" text="isisfish.common.clear" enabled="false" onActionPerformed='clearExports()' /> + </cell> + </row> + </Table> + </cell> + <cell fill="both" weightx="0.5" weighty="1.0"> + <JScrollPane> + <JList id="selectedSensitivityExports" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}" + onValueChanged='selectedSensitivityExportSelection()' /> + </JScrollPane> + </cell> + </row> + </Table> + </cell> + </row> + <row> <cell fill="both" columns='2' weightx="1.0" weighty="1.0"> - <JScrollPane minimumSize='{new Dimension(0,50)}' preferredSize='{new Dimension(0,50)}'> - <JTable id="exportParamsTable" rowHeight='24'/> + <JScrollPane> + <JTable id="exportParamsTable" rowHeight='24' /> </JScrollPane> </cell> </row> Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-06-15 08:36:04 UTC (rev 2378) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -102,7 +102,6 @@ protected SimulationParameter param = null; protected RegionStorage regionStorage = null; protected SimulationStorage simulStorage = null; - protected Map<SensitivityExport, String> sensitivityExports = new HashMap<SensitivityExport, String>(); protected List<String> oldSimulNames = null; protected String simulName = null; @@ -110,7 +109,6 @@ protected Map<String, Factor> factors; protected Map<String, JComponent> factorComponent = new HashMap<String, JComponent>(); protected DesignPlan designPlan = new DesignPlan(); - protected SensitivityCalculator sensitivityCalculator = null; /* ************ @@ -295,14 +293,12 @@ param.setAnalysePlanNumber(-1); regionStorage = param.getRegion(); - // Chargement des sensibilites - sensitivityCalculator = param.getSensitivityCalculator(); - // Chargement des exports de sensibilites - sensitivityExports.clear(); + /* not used anymore + * sensitivityExports.clear(); for (SensitivityExport ex : param.getSensitivityExport()){ sensitivityExports.put(ex, ex.getExportFilename()); - } + }*/ // Chargement des facteurs File f = simulStorage.getMexicoDesignPlan(SimulationStorage.getSimulationDirectory(simulName)); @@ -704,22 +700,16 @@ return result; } - public List<SensitivityExport> getSensitivityExportList() { - List<SensitivityExport> result = new ArrayList<SensitivityExport>(); - for (Map.Entry<SensitivityExport, String> entry : sensitivityExports - .entrySet()) { - result.add(entry.getKey()); - } + public List<SensitivityExport> getSensitivityExports() { + List<SensitivityExport> result = param.getSensitivityExport(); return result; } public void addSensitivityExport(String name) { try { ExportStorage storage = ExportStorage.getExport(name); - SensitivityExport exInstance = (SensitivityExport) storage - .getNewExportInstance(); - sensitivityExports.put(exInstance, name); - param.setSensitivityExport(getSensitivityExportList()); + SensitivityExport sensitivityExport = (SensitivityExport) storage.getNewExportInstance(); + param.getSensitivityExport().add(sensitivityExport); } catch (IsisFishException e) { if (log.isErrorEnabled()) { log.error("Can't add sensitivity export", e); @@ -733,13 +723,11 @@ * @param export export to remove */ public void removeSensitivityExport(SensitivityExport export) { - sensitivityExports.remove(export); - param.setSensitivityExport(getSensitivityExportList()); + param.getSensitivityExport().remove(export); } public void clearSensitivityExport() { - sensitivityExports.clear(); - param.setSensitivityExport(getSensitivityExportList()); + param.getSensitivityExport().clear(); } public Map<String, Class<?>> getSensitivityExportParameterNames( @@ -780,79 +768,54 @@ public List<String> getSensitivityNames() { List<String> result = new ArrayList<String>(); for (String r : SensitivityStorage.getSensitivityNames()) { - // Remove .java extention - // TODO find a better way to to that - // for example SensitivityStorage.getRuleName(String) - result.add(r.substring(0, r.length() - 5)); - } - return result; - } - - public Map<String, Class<?>> getSensitivityParameterNames(String name) { - Map<String, Class<?>> result = null; - try { - SensitivityStorage sens = SensitivityStorage.getSensitivity(name); - result = sens.getParameterNames(); - } catch (IsisFishException e) { - if (log.isErrorEnabled()) { - log.error("Can't get sensitivity sensitivity params names", e); + // there is some non java files in sensitivity directory + if (r.endsWith(".java")) { + // Remove .java extention + // for example SensitivityStorage.getRuleName(String) + result.add(r.substring(0, r.length() - 5)); } } return result; } - public Object getSensitivityCalculatorParameterValue(String paramName) { - Object result = null; - try { - result = SensitivityStorage.getParameterValue(param - .getSensitivityCalculator(), paramName); - } catch (IsisFishException e) { - if (log.isErrorEnabled()) { - log.error("Can't get sensitivity param value", e); - } - showMsgBox(e); - } - return result; - } - - public void setSensitivityCalculatorParameterValue(String paramName, - Object value) { - try { - if (value != null) { - SensitivityStorage.setParameterValue(param - .getSensitivityCalculator(), paramName, value); - } - } catch (IsisFishException e) { - if (log.isErrorEnabled()) { - log.error("Can't set sensitivity param value", e); - } - showMsgBox(e); - } - } - /** * Get current sensitivity calculator instance. * @return sensitivity calculator */ public SensitivityCalculator getSensitivityCalculator() { - return sensitivityCalculator; + return param.getSensitivityCalculator(); } - public void setSensitivity(String name) { + /** + * Build a new sensitivity calculator instance by his name. + * + * @param name calcultor name + * @return instance + */ + public SensitivityCalculator getSensivitityCalculatorInstance(String name) { + SensitivityCalculator sensitivityCalculator = null; try { sensitivityStorage = SensitivityStorage.getSensitivity(name); - SensitivityCalculator sensCal = sensitivityStorage + sensitivityCalculator = sensitivityStorage .getNewSensitivityInstance(); - sensitivityCalculator = sensCal; - param.setSensitivityCalculator(sensitivityCalculator); } catch (IsisFishException e) { if (log.isErrorEnabled()) { log.error("Can't set sensitivity", e); } } + return sensitivityCalculator; } /** + * Set calculator instance to use. + * + * @param sensitivityCalculator new instance + */ + public void setSensitivityCalculator(SensitivityCalculator sensitivityCalculator) { + param.setSensitivityCalculator(sensitivityCalculator); + } + + /** * Get current simulation factor list. * * @return factor list @@ -1064,7 +1027,7 @@ public void launchSimulationWhithSensibility(String simulationId, SimulatorLauncher launcher) { - launchSimulation(simulationId, launcher, sensitivityCalculator, + launchSimulation(simulationId, launcher, getSensitivityCalculator(), designPlan); } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/util/TooltipHelper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/util/TooltipHelper.java 2009-06-15 08:36:04 UTC (rev 2378) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/util/TooltipHelper.java 2009-06-15 16:37:09 UTC (rev 2379) @@ -74,4 +74,20 @@ } return tooltip; } + + /** + * Format error as tootip error messsage. + * + * @param errorMessage error message + * @return html formated string + */ + public static String getErrorTooltip(String errorMessage) { + StringBuilder sb = new StringBuilder(); + sb.append("<html>"); + sb.append("<font color='red'><b>"); + sb.append(errorMessage); + sb.append("</b></font>"); + sb.append("</html>"); + return sb.toString(); + } } Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties =================================================================== --- isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-06-15 08:36:04 UTC (rev 2378) +++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-06-15 16:37:09 UTC (rev 2379) @@ -242,6 +242,7 @@ isisfish.error.change.classloader=Can't change classloader because can't create URL from file %1$s isisfish.error.change.equation=Can't change equation isisfish.error.check.region= +isisfish.error.compile.fileerror=Le fichier %s contient des erreurs \! isisfish.error.compile.script=Can't compile script\: %1$s isisfish.error.compiled.parameter=Can't get rule parameter from compiled class isisfish.error.conversion.data=Erreur lors de la conversion du fichier de donn\u00E9es Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties =================================================================== --- isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-06-15 08:36:04 UTC (rev 2378) +++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-06-15 16:37:09 UTC (rev 2379) @@ -242,7 +242,8 @@ isisfish.error.change.classloader=Can't change classloader because can't create URL from file %1$s isisfish.error.change.equation=Can't change equation isisfish.error.check.region= -isisfish.error.compile.script=Can't compile script\: %1$s +isisfish.error.compile.fileerror=Le fichier %s contient des erreurs \! +isisfish.error.compile.script=Impossible de compiler le script \: %s isisfish.error.compiled.parameter=Can't get rule parameter from compiled class isisfish.error.conversion.data=Erreur lors de la conversion du fichier de donn\u00E9es isisfish.error.create.equation=Can't create equation