Author: chatellier Date: 2011-05-18 15:54:41 +0000 (Wed, 18 May 2011) New Revision: 3332 Log: On peut maintenant ajouter des facteurs sur les parametres de regles. Pas encore utilisable et non utilis?\195?\169. Added: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java Removed: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabbedPaneListener.java Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableCellRenderer.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableModel.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/util/ErrorHelper.java Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2011-05-16 14:53:00 UTC (rev 3331) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2011-05-18 15:54:41 UTC (rev 3332) @@ -65,7 +65,6 @@ javax.swing.event.ChangeListener fr.ifremer.isisfish.entities.FisheryRegion fr.ifremer.isisfish.ui.sensitivity.SensitivityUtils - fr.ifremer.isisfish.ui.sensitivity.SensitivityTabbedPaneListener fr.ifremer.isisfish.ui.WelcomePanelUI org.nuiton.topia.persistence.TopiaEntityContextable org.nuiton.topia.TopiaContext @@ -77,8 +76,6 @@ </import> <script><![CDATA[ -protected ChangeListener tabbedPaneChangeListener; - /* * Overriden with generic type */ @@ -180,21 +177,13 @@ * @param tabbedPane tabbed pane to install change listener */ protected void installChangeListener(JTabbedPane tabbedPane) { - - // remove already registred listeners - for (ChangeListener changeListener : tabbedPane.getChangeListeners()) { - tabbedPane.removeChangeListener(changeListener); + // in fichery input, we must listener for tab switch + // to ask user for saving + // in sensitivity, fishery can't be saved + if (!isSensitivity()) { + ChangeListener tabbedPaneChangeListener = new InputTabbedPaneListener(); + tabbedPane.addChangeListener(tabbedPaneChangeListener); } - - if (tabbedPaneChangeListener == null) { - if (isSensitivity()) { - tabbedPaneChangeListener = new SensitivityTabbedPaneListener(); - } else { - tabbedPaneChangeListener = new InputTabbedPaneListener(); - } - } - - tabbedPane.addChangeListener(tabbedPaneChangeListener); } ]]></script> Added: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java (rev 0) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java 2011-05-18 15:54:41 UTC (rev 3332) @@ -0,0 +1,125 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 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 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, see + * <http://www.gnu.org/licenses/gpl-2.0.html>. + * #L% + */ + +package fr.ifremer.isisfish.ui.models.rule; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.AbstractCellEditor; +import javax.swing.Icon; +import javax.swing.JButton; +import javax.swing.JTable; +import javax.swing.table.TableCellEditor; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.Resource; + +import fr.ifremer.isisfish.IsisFishException; +import fr.ifremer.isisfish.datastore.RuleStorage; +import fr.ifremer.isisfish.rule.Rule; +import fr.ifremer.isisfish.ui.simulator.RuleChooser; +import fr.ifremer.isisfish.ui.simulator.SimulAction; + +/** + * Specific editor for rule parameters. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class RuleParametersFactorTableCellEditor extends AbstractCellEditor + implements TableCellEditor { + + /** serialVersionUID. */ + private static final long serialVersionUID = -1655744662816030649L; + + private static Log log = LogFactory.getLog(RuleParametersFactorTableCellEditor.class); + + protected RuleChooser ruleChooser; + + protected Rule rule; + + /** + * Constructor. + * + * Super dependant de l'ui {@link RuleChooser} et de {@link SimulAction}. + * + * @param ruleChooser rule chooser ui + * @param rule rule + */ + public RuleParametersFactorTableCellEditor(RuleChooser ruleChooser, Rule rule) { + this.ruleChooser = ruleChooser; + this.rule = rule; + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, + boolean isSelected, int row, int column) { + + Icon icon = Resource.getIcon("/icons/building_add.png"); + JButton button = new JButton(icon); + + boolean enabled = false; + final String paramName = (String)value; + try { + Object paramValue = RuleStorage.getParameterValue(rule, paramName); + //SensitivityInputHandler handler = ruleChooser.getContextValue(SensitivityInputHandler.class); + // FIXME chatellier : number n'est pas correct ici mais j'ai pas d'idée :( + if (/*handler.canBeContinue(paramValue) || */paramValue instanceof Number) { + enabled = true; + button.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + cancelCellEditing(); + SimulAction simulAction = ruleChooser.getContextValue(SimulAction.class); + simulAction.addRuleParameterFactor(ruleChooser, rule, paramName); + } + }); + } + } catch (IsisFishException ex) { + if (log.isWarnEnabled()) { + log.warn("Can't get value type", ex); + } + } + + button.setEnabled(enabled); + + return button; + } + + + /* + * @see javax.swing.CellEditor#getCellEditorValue() + */ + @Override + public Object getCellEditorValue() { + return null; + } +} Property changes on: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellEditor.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java (rev 0) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java 2011-05-18 15:54:41 UTC (rev 3332) @@ -0,0 +1,99 @@ +/* + * #%L + * IsisFish + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 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 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, see + * <http://www.gnu.org/licenses/gpl-2.0.html>. + * #L% + */ + +package fr.ifremer.isisfish.ui.models.rule; + +import java.awt.Component; + +import javax.swing.Icon; +import javax.swing.JButton; +import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.Resource; + +import fr.ifremer.isisfish.IsisFishException; +import fr.ifremer.isisfish.datastore.RuleStorage; +import fr.ifremer.isisfish.rule.Rule; +import fr.ifremer.isisfish.ui.simulator.RuleChooser; + +/** + * Specific editor for rule parameters. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class RuleParametersFactorTableCellRenderer extends DefaultTableCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -1655744662816030649L; + + /** Class logger. */ + private static Log log = LogFactory.getLog(RuleParametersFactorTableCellRenderer.class); + + protected RuleChooser ruleChooser; + + protected Rule rule; + + public RuleParametersFactorTableCellRenderer(RuleChooser ruleChooser, Rule rule) { + this.ruleChooser = ruleChooser; + this.rule = rule; + } + + /* + * @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) { + + Icon icon = Resource.getIcon("/icons/building_add.png"); + JButton button = new JButton(icon); + + boolean enabled = false; + String paramName = (String)value; + try { + Object paramValue = RuleStorage.getParameterValue(rule, paramName); + //SensitivityInputHandler handler = ruleChooser.getContextValue(SensitivityInputHandler.class); + // FIXME chatellier : number n'est pas correct ici mais j'ai pas d'idée :( + if (/*handler.canBeContinue(paramValue) || */paramValue instanceof Number) { + enabled = true; + } + } catch (IsisFishException ex) { + if (log.isWarnEnabled()) { + log.warn("Can't get value type", ex); + } + } + + button.setEnabled(enabled); + return button; + } + +} Property changes on: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersFactorTableCellRenderer.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableCellRenderer.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableCellRenderer.java 2011-05-16 14:53:00 UTC (rev 3331) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableCellRenderer.java 2011-05-18 15:54:41 UTC (rev 3332) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2009 - 2010 Ifremer, Code Lutin + * 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 @@ -30,7 +30,6 @@ import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; -import javax.swing.table.TableCellRenderer; import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.rule.Rule; @@ -46,8 +45,7 @@ * Last update : $Date$ * By : $Author$ */ -public class RuleParametersTableCellRenderer extends DefaultTableCellRenderer - implements TableCellRenderer { +public class RuleParametersTableCellRenderer extends DefaultTableCellRenderer { /** serialVersionUID. */ private static final long serialVersionUID = -1655744662816030649L; Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableModel.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableModel.java 2011-05-16 14:53:00 UTC (rev 3331) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableModel.java 2011-05-18 15:54:41 UTC (rev 3332) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2009 - 2010 Ifremer, Code Lutin + * 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 @@ -46,6 +46,7 @@ * Columns : * <li>Parameter name</li> * <li>Parameter value</li> + * <li>Parameter factor (if enabled)</li> * * @author chatellier * @version $Revision$ @@ -56,35 +57,36 @@ public class RuleParametersTableModel extends AbstractTableModel { /** Log. */ - private static Log log = LogFactory - .getLog(RuleParametersTableModel.class); + private static Log log = LogFactory.getLog(RuleParametersTableModel.class); /** serialVersionUID. */ private static final long serialVersionUID = 3169786638868209920L; /** Columns names. */ - public final static String[] COLUMN_NAMES = { _("isisfish.common.name"), - _("isisfish.common.value") }; + public final static String[] COLUMN_NAMES = { + _("isisfish.common.name"), + _("isisfish.common.value"), + _("isisfish.common.ellipsis")}; protected Rule rule; + protected List<String> ruleParametersNames; - /** - * Constructor. - */ - public RuleParametersTableModel() { - this(null); + /** If {@code true} display optional. */ + protected boolean showFactorColumn; + + public void setShowFactorColumn(boolean showFactorColumn) { + this.showFactorColumn = showFactorColumn; + fireTableStructureChanged(); } /** - * Constructor with data. - * - * @param rule rule to edit parameters + * Set new rule, and fire changed event. + * + * @param rule */ - public RuleParametersTableModel(Rule rule) { - super(); + public void setRule(Rule rule) { this.rule = rule; - //TODO map may be sorted ruleParametersNames = new ArrayList<String>(); if (rule != null) { @@ -94,6 +96,7 @@ ruleParametersNames.add(names); } } + fireTableDataChanged(); } /* @@ -101,7 +104,11 @@ */ @Override public int getColumnCount() { - return COLUMN_NAMES.length; + int result = 2; + if (showFactorColumn) { + result = 3; + } + return result; } /* @@ -109,7 +116,11 @@ */ @Override public int getRowCount() { - return ruleParametersNames.size(); + int result = 0; + if (ruleParametersNames != null) { + result = ruleParametersNames.size(); + } + return result; } /* @@ -134,6 +145,9 @@ } } break; + case 2: + result = name; + break; default: throw new IndexOutOfBoundsException("No such column " + columnIndex); } @@ -156,6 +170,9 @@ case 1: result = Object.class; break; + case 2: + result = String.class; + break; default: throw new IndexOutOfBoundsException("No such column " + columnIndex); } Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java 2011-05-16 14:53:00 UTC (rev 3331) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityInputHandler.java 2011-05-18 15:54:41 UTC (rev 3332) @@ -355,6 +355,31 @@ factorWizardUI.setContinueSelected(continueSelected); factorWizardUI.getContinueRadio().setSelected(continueSelected); } + + /** + * Permet d'intialiser le wizard avec une valeur independante de la + * provenance (utile pour les facteurs sur les parametres de regles). + * + * TODO chatellier : ne doit pas fonctionner pour des equations. + * + * @param factorWizardUI factorWizardUI + * @param value value + */ + public void initNewFactorWithValue(FactorWizardUI factorWizardUI, Object value) { + boolean continuePossible = canBeContinue(value); + boolean continueSelected = isContinue(value); + + // init panel + if (continuePossible) { + factorWizardUI.continuousPanel = getContinuousPanel(value, null, null); + factorWizardUI.getContinuousPanelContainer().add(factorWizardUI.continuousPanel, BorderLayout.CENTER); + } + + // after, for binding on continuePossible, continueSelected to work + factorWizardUI.setContinuePossible(continuePossible); + factorWizardUI.setContinueSelected(continueSelected); + factorWizardUI.getContinueRadio().setSelected(continueSelected); + } /** * Reaffiche un facteur existant. @@ -558,13 +583,9 @@ result = true; } - /*if (log.isDebugEnabled()) { - log.debug("Component " + component.getClass().getSimpleName() + - " with value " + value + "(" + value.getClass().getSimpleName() + ") can be continuous : " + result); - }*/ return result; } - + /** * Return if value is is continue factor enable. * @@ -651,6 +672,7 @@ * * @param domain domain * @param factor factor + * @param topiaContext context used to get database value in case of equation factors * @return component copy */ public ContinuousPanelContainerUI getContinuousPanelWithValue(Factor factor, ContinuousDomain domain, TopiaContext topiaContext) { @@ -823,14 +845,21 @@ } } else { - - // dans ce cas c'est des regles ou pop de départ + // dans ce cas c'est des regles, pop de départ ou parametres de regles + // c'est un peu galere car le code n'a rien a voir avec le reste + // donc, c'est du cas par cas if (factorPath.equals("parameters.rules")) { result = new RuleChooser(factorWizardUI); } else if (factorPath.startsWith("parameters.population.")) { - // todo + MatrixContinuousPanelUI currentPanel = (MatrixContinuousPanelUI)factorWizardUI.continuousPanel; + // on copie une des matrices du composant + MatrixND matrix = currentPanel.getReferenceValuePanel().getMatrix().copy(); + result = new MatrixPanelEditor(matrix, false); } + else if (factorPath.startsWith("parameters.rule.")) { + result = new JTextField(""); + } else { if (log.isWarnEnabled()) { log.warn("Can't find component for path " + factorPath); Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2011-05-16 14:53:00 UTC (rev 3331) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2011-05-18 15:54:41 UTC (rev 3332) @@ -45,6 +45,7 @@ javax.swing.JMenuItem java.awt.event.ActionEvent </import> + <SensitivityInputHandler id="handler" /> <fr.ifremer.isisfish.entities.FisheryRegion id='fisheryRegion' javaBean='null'/> Deleted: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabbedPaneListener.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabbedPaneListener.java 2011-05-16 14:53:00 UTC (rev 3331) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabbedPaneListener.java 2011-05-18 15:54:41 UTC (rev 3332) @@ -1,79 +0,0 @@ -/* - * #%L - * IsisFish - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2009 - 2011 Ifremer, CodeLutin, Chatellier Eric - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 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, see - * <http://www.gnu.org/licenses/gpl-2.0.html>. - * #L% - */ - -package fr.ifremer.isisfish.ui.sensitivity; - -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Sensitivity change listener to control tab swapping. - * - * @author letellier - * @version $Revision$ - * - * Last update : $Date$ - * By : $Author$ - */ -public class SensitivityTabbedPaneListener implements ChangeListener { - - /** Class logger. */ - private static Log log = LogFactory.getLog(SensitivityTabbedPaneListener.class); - - protected int cacheSelectedIndex = -1; - - @Override - public void stateChanged(ChangeEvent e) { - /*try { - JTabbedPane pane = (JTabbedPane)e.getSource(); - pane.removeChangeListener(this); - int selectedIndex = pane.getSelectedIndex(); - if (cacheSelectedIndex != -1){ - pane.setSelectedIndex(cacheSelectedIndex); - } - InputContentUI ui = (InputContentUI) pane.getSelectedComponent(); - pane.setSelectedIndex(selectedIndex); - ui = (InputContentUI) pane.getSelectedComponent(); - //ui.setSensitivity(true); - //ui.setLayer(true); - // otherwise save.cancel buttons are active in last - // refreshed ui - TopiaEntityContextable entity = ui.getBean(); - // refresh ui - ui.setBean(null); - ui.setBean(entity); - cacheSelectedIndex = pane.getSelectedIndex(); - pane.addChangeListener(this); - - // bug suis les UI autre que nimbus - // la selection des onglet ne se rafraichit pas tres bien - pane.repaint(); - } catch (Exception ex) { - log.error(ex); - }*/ - } -} Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2011-05-16 14:53:00 UTC (rev 3331) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUI.jaxx 2011-05-18 15:54:41 UTC (rev 3332) @@ -28,15 +28,13 @@ fr.ifremer.isisfish.ui.input.InputAction fr.ifremer.isisfish.ui.sensitivity.SensitivitySaveVerifier jaxx.runtime.context.JAXXInitialContext + jaxx.runtime.JAXXContext </import> - <script><![CDATA[ - /*protected void $afterCompleteSetup() { - super.$afterCompleteSetup(); - // both ParamsUI and SensitivityTabUI - setContextValue(new SensitivityAction()); - }*/ + <SensitivityInputHandler id="handler" /> + <script><![CDATA[ + /** * Refresh all simulation launch UI. */ @@ -75,11 +73,11 @@ <JTabbedPane id="bodyTabbedPane"> <tab title='isisfish.params.title'> <fr.ifremer.isisfish.ui.simulator.ParamsUI id='paramsUI' sensitivity='{true}' regionStorage="{getRegionStorage()}" - constructorParams='new JAXXInitialContext().add(new InputAction()).add(new SensitivitySaveVerifier()).add("SimulationUI", this).add(this)'/> + constructorParams='new JAXXInitialContext().add(new InputAction()).add(new SensitivitySaveVerifier()).add("SimulationUI", this).add(this)' /> </tab> <tab title='isisfish.sensitivity.title' enabled="false"> <fr.ifremer.isisfish.ui.sensitivity.SensitivityTabUI id="sensitivityTabUI" - constructorParams='new JAXXInitialContext().add(new InputAction()).add(new SensitivitySaveVerifier()).add("SimulationUI", this).add(this)'/> + constructorParams='new JAXXInitialContext().add(new InputAction()).add(new SensitivitySaveVerifier()).add("SimulationUI", this).add(this)' /> </tab> <tab title='isisfish.sensitivityChooser.title' enabled="false"> <SensitivityChooserUI id="sensitivityChooserUI" constructorParams='this'/> Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2011-05-16 14:53:00 UTC (rev 3331) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2011-05-18 15:54:41 UTC (rev 3332) @@ -495,9 +495,10 @@ <row> <cell fill="both" weightx="1" weighty="1"> <RuleChooser id="ruleChooser" constructorParams='this' - active="{getRegionStorage() != null}" /> + active="{getRegionStorage() != null}" + showFactorColumn="{isSensitivity()}" /> </cell> - <cell> + <cell anchor="north"> <JButton id="addRuleFactorButton" icon='{SwingUtil.createImageIcon("building_add.png")}' onActionPerformed="simulAction.addFactorWithComponent(this, ruleChooser)" Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx 2011-05-16 14:53:00 UTC (rev 3331) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx 2011-05-18 15:54:41 UTC (rev 3332) @@ -31,18 +31,22 @@ <!-- Active enabled binding property --> <Boolean id="active" javaBean="true"/> + <Boolean id="showFactorColumn" javaBean="false" /> + <import> - java.beans.PropertyChangeEvent; - java.beans.PropertyChangeListener; - fr.ifremer.isisfish.IsisFishException; - fr.ifremer.isisfish.datastore.RuleStorage; - fr.ifremer.isisfish.rule.Rule; - fr.ifremer.isisfish.ui.models.rule.RuleListModel; - fr.ifremer.isisfish.ui.models.rule.RuleParametersTableModel; - fr.ifremer.isisfish.ui.models.rule.RuleParametersTableCellEditor; - fr.ifremer.isisfish.ui.models.rule.RuleParametersTableCellRenderer; - fr.ifremer.isisfish.ui.util.ErrorHelper; - fr.ifremer.isisfish.datastore.RegionStorage; + java.beans.PropertyChangeEvent + java.beans.PropertyChangeListener + fr.ifremer.isisfish.IsisFishException + fr.ifremer.isisfish.datastore.RuleStorage + fr.ifremer.isisfish.rule.Rule + fr.ifremer.isisfish.ui.models.rule.RuleListModel + fr.ifremer.isisfish.ui.models.rule.RuleParametersTableModel + fr.ifremer.isisfish.ui.models.rule.RuleParametersTableCellEditor + fr.ifremer.isisfish.ui.models.rule.RuleParametersTableCellRenderer + fr.ifremer.isisfish.ui.models.rule.RuleParametersFactorTableCellRenderer + fr.ifremer.isisfish.ui.models.rule.RuleParametersFactorTableCellEditor + fr.ifremer.isisfish.ui.util.ErrorHelper + fr.ifremer.isisfish.datastore.RegionStorage </import> <script><![CDATA[ @@ -59,6 +63,13 @@ } } }); + + // fix colums size for buttons + if (isShowFactorColumn()) { + SwingUtil.fixTableColumnWidth(selectedRuleParameterTable, 2, 30); + + + } } /** @@ -111,16 +122,25 @@ protected void displayRuleParameters() { Rule selectedRule = (Rule)selectedRulesList.getSelectedValue(); if (selectedRule != null) { - RuleParametersTableModel model = new RuleParametersTableModel(selectedRule); - selectedRuleParameterTable.setModel(model); + selectedRuleParameterTableModel.setRule(selectedRule); + + RuleParametersTableCellRenderer cellRenderer = new RuleParametersTableCellRenderer(selectedRule); + selectedRuleParameterTable.getColumnModel().getColumn(0).setCellRenderer(cellRenderer); + + RuleParametersTableCellEditor cellEditor = new RuleParametersTableCellEditor(selectedRule); cellEditor.setRegionStorage(getContextValue(RegionStorage.class)); - RuleParametersTableCellRenderer cellRenderer = new RuleParametersTableCellRenderer(selectedRule); - selectedRuleParameterTable.getColumnModel().getColumn(0).setCellRenderer(cellRenderer); selectedRuleParameterTable.getColumnModel().getColumn(1).setCellEditor(cellEditor); + + if (isShowFactorColumn()) { + RuleParametersFactorTableCellRenderer sensitivityRenderer = new RuleParametersFactorTableCellRenderer(this, selectedRule); + selectedRuleParameterTable.getColumnModel().getColumn(2).setCellRenderer(sensitivityRenderer); + RuleParametersFactorTableCellEditor sensitivityEditor = new RuleParametersFactorTableCellEditor(this, selectedRule); + selectedRuleParameterTable.getColumnModel().getColumn(2).setCellEditor(sensitivityEditor); + } } else { - selectedRuleParameterTable.setModel(new RuleParametersTableModel()); + selectedRuleParameterTableModel.setRule(null); } } ]]></script> @@ -172,9 +192,10 @@ <row weightx="2" weighty="2" columns="3"> <cell fill='both'> <JScrollPane> + <fr.ifremer.isisfish.ui.models.rule.RuleParametersTableModel + id="selectedRuleParameterTableModel" showFactorColumn="{isShowFactorColumn()}" /> <JTable id="selectedRuleParameterTable" rowHeight='24' - model="{new fr.ifremer.isisfish.ui.models.rule.RuleParametersTableModel()}" - enabled="{isActive()}" /> + model="{selectedRuleParameterTableModel}" enabled="{isActive()}" /> </JScrollPane> </cell> </row> Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2011-05-16 14:53:00 UTC (rev 3331) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2011-05-18 15:54:41 UTC (rev 3332) @@ -1214,7 +1214,7 @@ /** * Population selection changed. * - * Fill matrix panel with population effectif of selected population. + * Fill matrix panel with population effective of selected population. * * @param paramsUI paramsUI */ @@ -1222,7 +1222,7 @@ CardLayout layout = (CardLayout)paramsUI.getPopulationEffectivesPanel().getLayout(); Object[] selectedPopulationsValues = paramsUI.getListSimulParamsPopulations().getSelectedValues(); - if (!ArrayUtils.isEmpty(selectedPopulationsValues)) { + if (ArrayUtils.isNotEmpty(selectedPopulationsValues)) { paramsUI.getPopulationEffectivesTabbedPane().removeAll(); setPopulations(selectedPopulationsValues); @@ -1239,18 +1239,17 @@ if (paramsUI.isSensitivity()) { matrixPanel.putClientProperty("sensitivityPopulation", selectedPopulation); // TODO add another thing that action - JButton addFactorButton = new JButton(); + JButton addFactorButton = new JButton(SwingUtil.createImageIcon("building_add.png")); addFactorButton.setAction(new AbstractAction() { - public void actionPerformed(ActionEvent e) { addFactorWithComponent(paramsUI, matrixPanel); } }); - addFactorButton.setIcon(SwingUtil.createImageIcon("building_add.png")); matrixPanelComponent.add(addFactorButton, BorderLayout.EAST); } - paramsUI.getPopulationEffectivesTabbedPane().add(matrixPanelComponent, _("isisfish.params.populationEffectives", selectedPopulation.getName())); + paramsUI.getPopulationEffectivesTabbedPane().add(matrixPanelComponent, + _("isisfish.params.populationEffectives", selectedPopulation.getName())); } layout.show(paramsUI.getPopulationEffectivesPanel(), "specific"); @@ -1313,4 +1312,42 @@ wizard.setVisible(true); } } + + /** + * Ajout d'un nouveau facteur sur un parametres de règles. + * + * Le facteur est directement crée avec un nom et un path correct. + * + * @param ruleChooser rule chooser + * @param rule rule + * @param paramName rule parameter name + */ + public void addRuleParameterFactor(RuleChooser ruleChooser, Rule rule, String paramName) { + + // get sensitivity handler (this break package rules) + // but no other choice :( + SensitivityInputHandler handler = new SensitivityInputHandler(); + + // get index of rule in rule list + // warning, factor path must always be cohérent + // with rule list, if a rule is deleted, factor on it must + // be deleted too, et next factor must be renamed + int index = ruleChooser.getRulesList().indexOf(rule); + String factorName = "parameters.rule." + index + "." + paramName; + try { + // arrivé ici, on doit pouvoir la mettre en facteur + Object object = RuleStorage.getParameterValue(rule, paramName); + + // init new factor wizard ui + FactorWizardUI factorWizardUI = new FactorWizardUI(ruleChooser); + factorWizardUI.getFactorNameField().setText(factorName); + factorWizardUI.setFactorPath(factorName); + handler.initNewFactorWithValue(factorWizardUI, object); + factorWizardUI.pack(); + factorWizardUI.setLocationRelativeTo(ruleChooser); + factorWizardUI.setVisible(true); + } catch (IsisFishException ex) { + throw new IsisFishRuntimeException("Can't add factor on rule", ex); + } + } } Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/util/ErrorHelper.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/util/ErrorHelper.java 2011-05-16 14:53:00 UTC (rev 3331) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/util/ErrorHelper.java 2011-05-18 15:54:41 UTC (rev 3332) @@ -109,11 +109,14 @@ email.setHostName("smtp"); // to email.addTo(emailTo, "Support"); + // from email.setFrom("no-reply at isis-fish.org", "Isis-Fish"); // subject email.setSubject("Project error notification : Isis-Fish"); - + // add reply-to for spam + email.addReplyTo("no-reply at isis-fish.org"); + // message description String message = formatMessage("Project", "Isis-Fish " + IsisConfig.getVersion()); message += formatMessage("Date", new Date().toString());