r2985 - in isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui: . input models models/common models/export models/result models/rule models/simulation simulator
Author: chatellier Date: 2010-02-04 16:09:42 +0000 (Thu, 04 Feb 2010) New Revision: 2985 Added: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/common/ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/common/StringListModel.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleNamesListRenderer.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx Removed: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/Common.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboRenderer.java Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListModel.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultListModel.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListModel.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/models/simulation/SimulationNamesComboModel.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.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/PreScriptsUI.jaxx isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.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/simulator/SimulUI.jaxx Log: Refactoring on simulation launch UI. - extract rule component factor - add UI inheritance - add more component activation after region loading Deleted: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/Common.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/Common.java 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/Common.java 2010-02-04 16:09:42 UTC (rev 2985) @@ -1,129 +0,0 @@ -/* *##% - * Copyright (C) 2006 - 2010 Ifremer, Code Lutin - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 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; - -import java.io.IOException; -import java.text.ParseException; -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import fr.ifremer.isisfish.datastore.RegionStorage; -import fr.ifremer.isisfish.datastore.RuleStorage; -import fr.ifremer.isisfish.datastore.SimulationStorage; -import fr.ifremer.isisfish.simulator.SimulationProperties; -import fr.ifremer.isisfish.ui.simulator.filter.SimulationFilterUtil; -import fr.ifremer.isisfish.ui.widget.filter.FilterModel; - -/** - * Common class containing static method to get some list (region, simulations...). - * - * Created: 22 août 2006 10:50:49 - * - * @author poussin - * @version $Revision: 1302 $ - * - * Last update: $Date: 2008-08-18 15:42:57 +0200 (Mon, 18 Aug 2008) $ - * by : $Author: bpoussin $ - * - * @deprecated (since 20091414) use xxxAction class instead) - */ -public class Common { - - /** Class logger. */ - private static Log log = LogFactory.getLog(Common.class); - - /** - * Return regions. - * - * @return regions - * - * @deprecated since 3.3.1.0, use {@link RegionStorage#getRegionNames()} instead - */ - public static Object[] getRegionItem() { - List<String> regionNames = new ArrayList<String>(); - - // FIXME chatellier : Ajout d'une entrée vide pour forcer la sélection - // et que le changement lance un evenement sur la liste - regionNames.add(" "); - - regionNames.addAll(RegionStorage.getRegionNames()); - Object[] result = regionNames.toArray(); - return result; - } - - /** - * Return old simulations. - * - * @return old simulations - * - * @deprecated since 3.3.1.0, use {@link SimulationStorage#getSimulationNames()} instead - */ - public static Object[] getOldSimulationItem() { - - try { - List<String> oldSimul = new ArrayList<String>(); - - FilterModel<SimulationProperties, String> filterModel; - // keep in context list of old simulation names (for filter process) - oldSimul.addAll(SimulationStorage.getSimulationNames()); - // create filter model - filterModel = SimulationFilterUtil.createFilterModel(oldSimul); - // to used directly model.getFilteredResult() in xml - // we must fill filterModel result with original items - filterModel.selectAll(); - Object[] result = oldSimul.toArray(); - - // FIXME chatellier : Ajout d'une entrée vide pour forcer la sélection - // et que le changement lance un evenement sur la liste - oldSimul.add(0, " "); - - return result; - } catch (ParseException ex) { - if (log.isErrorEnabled()) { - log.error("Can't get old simulations", ex); - } - } catch (IOException ex) { - if (log.isErrorEnabled()) { - log.error("Can't get old simulations", ex); - } - } - return null; - } - - /** - * Return list with all available rules names. - * - * @return list with all available rules names - * - * @deprecated since 3.3.1.0, use {@link RuleStorage#getRuleNames()} instead - */ - public static List<String> getAvailablesRuleNames() { - List<String> result = new ArrayList<String>(); - for (String ruleName : RuleStorage.getRuleNames()) { - // TODO remove last .java - String shortRuleName = ruleName.substring(0, ruleName.length() - 5); - result.add(shortRuleName); - } - return result; - } - -} Added: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx (rev 0) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/SimulationUI.jaxx 2010-02-04 16:09:42 UTC (rev 2985) @@ -0,0 +1,83 @@ +<!-- +/* *##% + * Copyright (C) 2010 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + --> +<JPanel layout='{new BorderLayout()}' abstract="true"> + + <script><![CDATA[ + + import fr.ifremer.isisfish.ui.simulator.SimulAction; + + /** + * Refresh all simulation launch UI. + */ + protected abstract void refresh(); + + /** + * Set selected tab to parameters tab. + */ + public abstract void selectParametersTab(); + + /** + * Change prescript tab enabled property. + */ + public abstract void setEnabledPrescriptTab(boolean selected); + + /** + * Change analyse plan tab enabled property. + */ + public abstract void setEnabledAnalysePlanTab(boolean selected); + + /** + * Open user dialog to selected a parameter file. + * Reload it, and call {@link refresh()}. + */ + protected void importSimulation() { + JFileChooser fc = new JFileChooser(); + int returnVal = fc.showOpenDialog(this); + + if (returnVal == JFileChooser.APPROVE_OPTION) { + File file = fc.getSelectedFile(); + //This is where a real application would open the file. + getContextValue(SimulAction.class).importSimulation(file); + refresh(); + } + } + + /** + * Save current parameter in user selected parameter output file. + */ + public void saveSimulation() { + JFileChooser fc = new JFileChooser(); + int returnVal = fc.showSaveDialog(this); + + if (returnVal == JFileChooser.APPROVE_OPTION) { + File file = fc.getSelectedFile(); + //This is where a real application would open the file. + getContextValue(SimulAction.class).saveSimulation(file); + } + } + ]]></script> + <JMenuBar constraints='BorderLayout.NORTH'> + <JMenu text="isisfish.simulation.menu.simulation"> + <JMenuItem id="miSave" text="isisfish.simulation.menu.save" onActionPerformed="saveSimulation()"/> + <JMenuItem id="miImport" text="isisfish.simulation.menu.import" onActionPerformed="importSimulation()"/> + </JMenu> + </JMenuBar> + <JTabbedPane id="bodyTabbedPane" constraints='BorderLayout.CENTER'/> +</JPanel> \ No newline at end of file Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2010-02-04 16:09:42 UTC (rev 2985) @@ -35,9 +35,9 @@ import fr.ifremer.isisfish.datastore.StorageChangeEvent; import fr.ifremer.isisfish.datastore.StorageChangeListener; import fr.ifremer.isisfish.entities.FisheryRegionImpl; -import fr.ifremer.isisfish.ui.Common; import fr.ifremer.isisfish.ui.WelcomeSaveVerifier; import fr.ifremer.isisfish.ui.WelcomePanelUI; +import fr.ifremer.isisfish.ui.models.common.StringListModel; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import jaxx.runtime.swing.navigation.NavigationTreeModel.NavigationTreeNode; @@ -68,11 +68,9 @@ return getContextValue(RegionStorage.class); } protected void setFieldCurrentRegionModel() { - fieldCurrentRegion.setModel(getFieldCurrentRegionModel()); + StringListModel model = new StringListModel(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames()); + fieldCurrentRegion.setModel(model); } -protected DefaultComboBoxModel getFieldCurrentRegionModel() { - return new DefaultComboBoxModel(Common.getRegionItem()); -} protected void regionChange(ItemEvent e) { // event launched twice with itemchange listener if (e.getStateChange() == ItemEvent.SELECTED) { @@ -253,7 +251,8 @@ </row> <row> <cell columns='2' fill='horizontal' weightx='1.0'> - <JComboBox id="fieldCurrentRegion" model='{getFieldCurrentRegionModel()}' onItemStateChanged='regionChange(event)' /> + <JComboBox id="fieldCurrentRegion" onItemStateChanged='regionChange(event)' + model='{new fr.ifremer.isisfish.ui.models.common.StringListModel(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames())}'/> </cell> </row> </Table> Added: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/common/StringListModel.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/common/StringListModel.java (rev 0) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/common/StringListModel.java 2010-02-04 16:09:42 UTC (rev 2985) @@ -0,0 +1,122 @@ +/* *##% + * Copyright (C) 2009-2010 Ifremer, Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 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.common; + +import java.util.List; + +import javax.swing.AbstractListModel; +import javax.swing.ComboBoxModel; +import javax.swing.JComboBox; +import javax.swing.JList; + +/** + * Model pour pour la representation d'une liste de {@link String}. + * Utilisation dans les {@link JList} et {@link JComboBox}. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author: chatellier $ + */ +public class StringListModel extends AbstractListModel implements ComboBoxModel { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + /** {@link String} list. */ + protected List<String> stringList; + + /** Selected element. */ + protected Object selectedElement; + + /** + * Empty constructor. + */ + public StringListModel() { + this(null); + } + + /** + * Constructor with export list. + * + * @param stringList {@link String} list + */ + public StringListModel(List<String> stringList) { + super(); + setStringList(stringList); + } + + /** + * Get {@link String} list. + * + * @return {@link String} list + */ + public List<String> getStringList() { + return stringList; + } + + /** + * Set {@link String} list. + * + * @param stringList {@link String} list to set + */ + public void setStringList(List<String> stringList) { + this.stringList = stringList; + // reset selected + selectedElement = null; + } + + /* + * @see javax.swing.ListModel#getElementAt(int) + */ + @Override + public Object getElementAt(int index) { + return stringList.get(index); + } + + /* + * @see javax.swing.ListModel#getSize() + */ + @Override + public int getSize() { + int size = 0; + + if (stringList != null) { + size = stringList.size(); + } + return size; + } + + /* + * @see javax.swing.ComboBoxModel#setSelectedItem(java.lang.Object) + */ + @Override + public void setSelectedItem(Object anItem) { + selectedElement = anItem; + } + + /* + * @see javax.swing.ComboBoxModel#getSelectedItem() + */ + @Override + public Object getSelectedItem() { + return selectedElement; + } +} Property changes on: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/common/StringListModel.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL" Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListModel.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListModel.java 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/export/ExportNameListModel.java 2010-02-04 16:09:42 UTC (rev 2985) @@ -22,6 +22,8 @@ import javax.swing.DefaultListModel; +import fr.ifremer.isisfish.ui.models.common.StringListModel; + /** * Model pour la liste des noms d'exports. * @@ -30,6 +32,8 @@ * * Last update : $Date$ * By : $Author$ + * + * @deprecated use {@link StringListModel} */ public class ExportNameListModel extends DefaultListModel { Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultListModel.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultListModel.java 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/result/ResultListModel.java 2010-02-04 16:09:42 UTC (rev 2985) @@ -22,6 +22,8 @@ import javax.swing.DefaultListModel; +import fr.ifremer.isisfish.ui.models.common.StringListModel; + /** * Model pour la liste des noms de resultats de simulation. * @@ -30,6 +32,8 @@ * * Last update : $Date$ * By : $Author$ + * + * @deprecated use {@link StringListModel} */ public class ResultListModel extends DefaultListModel { Deleted: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboRenderer.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboRenderer.java 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboRenderer.java 2010-02-04 16:09:42 UTC (rev 2985) @@ -1,93 +0,0 @@ -/* *##% - * 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.rule; - -import static org.nuiton.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.RuleStorage; -import fr.ifremer.isisfish.rule.Rule; -import fr.ifremer.isisfish.ui.util.TooltipHelper; - -/** - * Renderer pour la combo des noms de regles. - * - * @author chatellier - * @version $Revision$ - * - * Last update : $Date$ - * By : $Author$ - */ -public class RuleComboRenderer extends DefaultListCellRenderer implements - ListCellRenderer { - - /** serialVersionUID. */ - private static final long serialVersionUID = -4070846632975105788L; - - /** Rule cache. */ - protected Map<String, Rule> ruleCache; - - /** - * Empty constructor. - */ - public RuleComboRenderer() { - ruleCache = new HashMap<String, Rule>(); - } - - /* - * @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 ruleName = (String)value; - c.setText(ruleName); - - // c'est tres couteux d'avoir une instance - // on les met en cache - try { - Rule rule = ruleCache.get(ruleName); - if (rule == null) { - RuleStorage storage = RuleStorage.getRule(ruleName); - rule = storage.getNewRuleInstance(); - ruleCache.put(ruleName, rule); - } - - c.setToolTipText(rule.getDescription()); - } catch (Exception e) { - String errorTooltip = TooltipHelper.getErrorTooltip(_("isisfish.error.compile.fileerror", ruleName)); - c.setToolTipText(errorTooltip); - } - - return c; - } -} Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListModel.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListModel.java 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleListModel.java 2010-02-04 16:09:42 UTC (rev 2985) @@ -18,15 +18,10 @@ package fr.ifremer.isisfish.ui.models.rule; -import java.awt.Component; import java.util.List; import javax.swing.AbstractListModel; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.ListCellRenderer; -import fr.ifremer.isisfish.datastore.RuleStorage; import fr.ifremer.isisfish.rule.Rule; /** @@ -38,8 +33,7 @@ * Last update : $Date$ * By : $Author$ */ -public class RuleListModel extends AbstractListModel implements - ListCellRenderer { +public class RuleListModel extends AbstractListModel { /** serialVersionUID. */ private static final long serialVersionUID = -4070846632975105788L; @@ -101,31 +95,4 @@ } return size; } - - /* - * @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) { - - Rule rule = rules.get(index); - - JLabel label = new JLabel(); - - try { - label.setToolTipText(rule.getDescription()); - } catch (Exception e) { - // can't get exception - } - label.setText(RuleStorage.getName(rule)); - - if (isSelected) { - label.setBackground(list.getSelectionBackground()); - label.setForeground(list.getSelectionForeground()); - label.setOpaque(true); // background won't work - } - - return label; - } } Copied: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleNamesListRenderer.java (from rev 2946, isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleComboRenderer.java) =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleNamesListRenderer.java (rev 0) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleNamesListRenderer.java 2010-02-04 16:09:42 UTC (rev 2985) @@ -0,0 +1,91 @@ +/* *##% + * Copyright (C) 2009 - 2010 Ifremer, Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 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.rule; + +import static org.nuiton.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 fr.ifremer.isisfish.datastore.RuleStorage; +import fr.ifremer.isisfish.rule.Rule; +import fr.ifremer.isisfish.ui.util.TooltipHelper; + +/** + * Renderer pour les listes des noms de regles. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class RuleNamesListRenderer extends DefaultListCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -4070846632975105788L; + + /** Rule cache. */ + protected Map<String, Rule> ruleCache; + + /** + * Empty constructor. + */ + public RuleNamesListRenderer() { + ruleCache = new HashMap<String, Rule>(); + } + + /* + * @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 ruleName = (String)value; + c.setText(ruleName); + + // c'est tres couteux d'avoir une instance + // on les met en cache + try { + Rule rule = ruleCache.get(ruleName); + if (rule == null) { + RuleStorage storage = RuleStorage.getRule(ruleName); + rule = storage.getNewRuleInstance(); + ruleCache.put(ruleName, rule); + } + + c.setToolTipText(rule.getDescription()); + } catch (Exception e) { + String errorTooltip = TooltipHelper.getErrorTooltip(_("isisfish.error.compile.fileerror", ruleName)); + c.setToolTipText(errorTooltip); + } + + return c; + } +} 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 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/rule/RuleParametersTableModel.java 2010-02-04 16:09:42 UTC (rev 2985) @@ -63,6 +63,13 @@ protected List<String> ruleParametersNames; /** + * Constructor. + */ + public RuleParametersTableModel() { + this(null); + } + + /** * Constructor with data. * * @param rule rule to edit parameters @@ -73,10 +80,12 @@ //TODO map may be sorted ruleParametersNames = new ArrayList<String>(); - Map<String, Class<?>> ruleParametersNamesAndTypes = RuleStorage - .getParameterNames(rule); - for (String names : ruleParametersNamesAndTypes.keySet()) { - ruleParametersNames.add(names); + if (rule != null) { + Map<String, Class<?>> ruleParametersNamesAndTypes = RuleStorage + .getParameterNames(rule); + for (String names : ruleParametersNamesAndTypes.keySet()) { + ruleParametersNames.add(names); + } } } Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/simulation/SimulationNamesComboModel.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/simulation/SimulationNamesComboModel.java 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/models/simulation/SimulationNamesComboModel.java 2010-02-04 16:09:42 UTC (rev 2985) @@ -1,5 +1,5 @@ /* *##% - * Copyright (C) 2009 Code Lutin + * Copyright (C) 2009 - 2010 Ifremer, Code Lutin * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -30,6 +30,8 @@ * * Last update : $Date$ * By : $Author$ + * + * @deprecated since 3.3.1.0, use {@link StringListModel} instead */ public class SimulationNamesComboModel extends DefaultComboBoxModel { Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ExportUI.jaxx 2010-02-04 16:09:42 UTC (rev 2985) @@ -1,6 +1,6 @@ <!-- /* *##% - * Copyright (C) 2005 - 2009 Ifremer, Code Lutin + * Copyright (C) 2005 - 2010 Ifremer, Code Lutin * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License 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 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2010-02-04 16:09:42 UTC (rev 2985) @@ -18,12 +18,13 @@ *##%*/ --> <Table> + <Boolean id="regionLoaded" javaBean="false" /> + <!-- ui state when editing --> <Boolean id='sensitivity' javaBean='false'/> <script><![CDATA[ -import org.nuiton.topia.TopiaException; -import org.nuiton.topia.TopiaContext; +import java.util.EventObject; import java.text.ParseException; import fr.ifremer.isisfish.datastore.RegionStorage; import fr.ifremer.isisfish.datastore.StorageChangeEvent; @@ -33,11 +34,12 @@ import fr.ifremer.isisfish.entities.Strategy; import fr.ifremer.isisfish.entities.FisheryRegion; import fr.ifremer.isisfish.entities.FisheryRegionImpl; -import fr.ifremer.isisfish.ui.Common; +import fr.ifremer.isisfish.ui.SimulationUI; import fr.ifremer.isisfish.ui.WelcomePanelUI; import fr.ifremer.isisfish.ui.WelcomeTabUI; +import fr.ifremer.isisfish.ui.models.common.StringListModel; import fr.ifremer.isisfish.ui.models.rule.RuleComboModel; -import fr.ifremer.isisfish.ui.models.rule.RuleComboRenderer; +import fr.ifremer.isisfish.ui.models.rule.RuleNamesListRenderer; import fr.ifremer.isisfish.ui.models.rule.RuleListModel; import fr.ifremer.isisfish.ui.models.rule.RuleParametersTableModel; import fr.ifremer.isisfish.ui.models.rule.RuleParametersTableCellEditor; @@ -48,6 +50,10 @@ import fr.ifremer.isisfish.simulator.launcher.SimulationService; import fr.ifremer.isisfish.simulator.launcher.SimulationJob; import fr.ifremer.isisfish.simulator.launcher.SimulationServiceListener; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.TopiaContext; +import org.nuiton.math.matrix.MatrixND; +import org.apache.commons.lang.ArrayUtils; // instances variables déclaration SimulationServiceListener simulationListener; @@ -57,7 +63,8 @@ regionStorageListener = new StorageChangeListener() { @Override public void versionDataChanged(StorageChangeEvent e) { - fieldSimulParamsRegion.setModel(new DefaultComboBoxModel(Common.getRegionItem())); + StringListModel model = new StringListModel(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames()); + fieldSimulParamsRegion.setModel(model); } }; RegionStorage.addStorageChangeListener(regionStorageListener); @@ -78,24 +85,14 @@ } } -public ParamsUI(SimulAction action) { - setContextValue(action); -} - public void refresh() { - // TODO add comment why remove/readd ? - // Disabled , concurrent modification exception - // refresh is called durring listener iteration - //SimulationService.getService().removeSimulationServiceListener(simulationListener); - //SimulationService.getService().addSimulationServiceListener(simulationListener); - if (simulAction.getSimulationStorage() != null) { fieldSimulParamsName.setText(simulAction.getSimulationStorage().getName()); } fieldSimulParamsDesc.setText(simulAction.getSimulationParameter().getDescription()); setListSimulParamsStrategiesItems(); setListSimulParamsPopulationsItems(); - setRulesListModel(); + ruleChooser.setRegionStorage(simulAction.getRegionStorage()); } /** @@ -113,6 +110,8 @@ @Override public void run() { simulAction.regionChange(selected); + // not sure that setRegionLoaded is at the better place + setRegionLoaded(true); refresh(); setSensitivityTabRegion(); getParentContainer(WelcomePanelUI.class).setStatusMessage(_("isisfish.message.region.loaded")); @@ -189,12 +188,26 @@ setExportSens(); setSensitivityCalculator(); setFactor(); + + // regles + ruleChooser.setRulesList(simulAction.getSimulationParameter().getRules()); + getParentContainer(WelcomePanelUI.class).setStatusMessage(_("isisfish.message.old.simulation.loaded")); } }); } } + +/** + * Lance la simulation. + */ protected void launchSimulation() { + + // la gestion des regles est maintenant independante de SimulAction + // il faut faire le set qui va bien avant le lancement + simulAction.getSimulationParameter().setRules(ruleChooser.getRulesList()); + + if (!isSensitivity()) { simulAction.launchSimulation(fieldSimulParamsName.getText(), (SimulatorLauncher)comboSelLauncher.getSelectedItem()); } @@ -208,29 +221,17 @@ parent.setQueueTabSelection(); } } -protected void enablePreSimul() { +protected void enablePreScript() { simulAction.getSimulationParameter().setUsePreScript(fieldUseSimulPreScripts.isSelected()); - if (!isSensitivity()){ - SimulUI simul = getParentContainer(SimulUI.class); - simul.enablePreSimul(fieldUseSimulPreScripts.isSelected()); - } + SimulationUI simulationUI = getParentContainer(SimulationUI.class); + simulationUI.setEnabledPrescriptTab(fieldUseSimulPreScripts.isSelected()); } protected void enableAnalysePlan() { simulAction.getSimulationParameter().setUseAnalysePlan(fieldSimulUseAnalysePlan.isSelected()); - if (!isSensitivity()) { - SimulUI simul = getParentContainer(SimulUI.class); - simul.enableAnalysePlan(fieldSimulUseAnalysePlan.isSelected()); - } + SimulationUI simulationUI = getParentContainer(SimulationUI.class); + simulationUI.setEnabledAnalysePlanTab(fieldSimulUseAnalysePlan.isSelected()); } -protected void selTab(MouseEvent e, int i) { - if (((JCheckBox)e.getSource()).isSelected()){ - SimulUI simul = getParentContainer(SimulUI.class); - simul.selTab(i); - } -} -protected void setNbAnnees() { - simulAction.setNumberOfYear(fieldSimulParamsNbAnnees.getText()); -} + protected void setListSimulParamsStrategiesItems() { DefaultListModel listSimulParamsStrategiesModel = new DefaultListModel(); java.util.List<Strategy> strategies = simulAction.getStrategies(); @@ -264,76 +265,38 @@ populationSelected(); } } -protected void populationSelected(){ - if (listSimulParamsPopulations.getSelectedIndex() != -1) { - simulAction.setPopulations(listSimulParamsPopulations.getSelectedValues()); - simulParamsNumbers.setMatrix(simulAction.getSimulationParameter().getNumberOf((Population) listSimulParamsPopulations.getSelectedValue())); - } -} -protected void strategySelected(){ - simulAction.setStrategies(listSimulParamsStrategies.getSelectedValues()); -} -protected void saveDescription() { - simulAction.getSimulationParameter().setDescription(fieldSimulParamsDesc.getText()); -} - -protected void setRulesListModel() { - if (log.isDebugEnabled()) { - log.debug("Set simulation rules model"); - } - RuleListModel model = new RuleListModel(simulAction.getRules()); - listSimulParamsMesuresList.setModel(model); - listSimulParamsMesuresList.setCellRenderer(model); - - onRuleSelectionChange(); -} /** - * Called when selection change on rule list. + * Population selection changed. + * + * Fill matrix panel with population effectif of selected population. */ -protected void onRuleSelectionChange() { - if (simulAction.getRules().isEmpty()) { - buttonSimulParamsMesuresClear.setEnabled(false); - buttonSimulParamsMesuresRemove.setEnabled(false); +protected void populationSelected() { + CardLayout layout = (CardLayout)populationEffectivesPanel.getLayout(); + + Object[] selectedPopulationsValues = listSimulParamsPopulations.getSelectedValues(); + if (!ArrayUtils.isEmpty(selectedPopulationsValues)) { + populationEffectivesTabbedPane.removeAll(); + simulAction.setPopulations(selectedPopulationsValues); + + for (Object selectedPopulationValue : selectedPopulationsValues) { + Population selectedPopulation = (Population)selectedPopulationValue; + org.nuiton.math.matrix.gui.MatrixPanelEditor matrixPanel = new org.nuiton.math.matrix.gui.MatrixPanelEditor(); + MatrixND populationEffectives = simulAction.getSimulationParameter().getNumberOf(selectedPopulation); + matrixPanel.setMatrix(populationEffectives); + populationEffectivesTabbedPane.add(matrixPanel, _("isisfish.params.populationEffectives", selectedPopulation.getName())); + } + + layout.show(populationEffectivesPanel, "specific"); } else { - if (listSimulParamsMesuresList.getSelectedIndex() != -1) { - buttonSimulParamsMesuresRemove.setEnabled(true); - setSimulParamsRulesModel(); - } - buttonSimulParamsMesuresClear.setEnabled(true); + layout.show(populationEffectivesPanel, "default"); } } -protected void setSimulParamsRulesModel() { - int selectedRuleIndex = listSimulParamsMesuresList.getSelectedIndex(); - if (selectedRuleIndex != -1) { - RuleListModel listModel = (RuleListModel)listSimulParamsMesuresList.getModel(); - Rule selectedRule = listModel.getRules().get(selectedRuleIndex); - RuleParametersTableModel model = new RuleParametersTableModel(selectedRule); - RuleParametersTableCellEditor cellEditor = new RuleParametersTableCellEditor(selectedRule); - RuleParametersTableCellRenderer cellRenderer = new RuleParametersTableCellRenderer(selectedRule); - cellEditor.setRegion(simulAction.getRegionStorage()); - simulParamsRules.setModel(model); - simulParamsRules.getColumnModel().getColumn(0).setCellRenderer(cellRenderer); - simulParamsRules.getColumnModel().getColumn(1).setCellEditor(cellEditor); - } +protected void strategySelected(){ + simulAction.setStrategies(listSimulParamsStrategies.getSelectedValues()); } -protected void addRules() { - String selectedRuleName = (String)fieldSimulParamsMesuresSelect.getSelectedItem(); - simulAction.addNewRule(selectedRuleName); - setRulesListModel(); -} -protected void removeRules() { - RuleListModel listModel = (RuleListModel)listSimulParamsMesuresList.getModel(); - Rule selectedRule = listModel.getRules().get(listSimulParamsMesuresList.getSelectedIndex()); - simulAction.removeRule(selectedRule); - setRulesListModel(); -} -protected void clearRules() { - simulAction.getSimulationParameter().clearRules(); - setRulesListModel(); -} protected void selectFilter() { try { @@ -372,25 +335,6 @@ simulAction.resetOldSimulatorNames(); fieldSimulParamsSelect.setModel(getSimulParamsSelectModel(false)); } -protected void saveName(){ - simulAction.setName(fieldSimulParamsName.getText()); -} - -/** - * TODO : Common code with {@link SimulUI#saveSimulation()} - * TODO duplicated code (simulUI, Params UI, SensitivityUI) - */ -protected void saveSimulation() { - JFileChooser fc = new JFileChooser(); - int returnVal = fc.showSaveDialog(null); - - if (returnVal == JFileChooser.APPROVE_OPTION) { - File file = fc.getSelectedFile(); - //This is where a real application would open the file. - simulAction.saveSimulation(file); - } -} - ]]> </script> <row> @@ -426,10 +370,14 @@ <Table> <row> <cell fill="horizontal"> - <JLabel id='lblName' text='{isSensitivity() ? _("isisfish.params.sensitivityName") : _("isisfish.params.simulationName")}' minimumSize='{new Dimension(195,25)}' preferredSize='{new Dimension(195,25)}'/> + <JLabel id='lblName' text='{isSensitivity() ? _("isisfish.params.sensitivityName") : _("isisfish.params.simulationName")}' + minimumSize='{new Dimension(195,25)}' preferredSize='{new Dimension(195,25)}' /> </cell> <cell fill="both" weightx="1.0"> - <JTextField id="fieldSimulParamsName" onFocusLost='saveName()'/> + <JTextField id="fieldSimulParamsName"/> + <javax.swing.text.Document javaBean="fieldSimulParamsName.getDocument()" + onInsertUpdate='simulAction.setName(fieldSimulParamsName.getText())' + onRemoveUpdate='simulAction.setName(fieldSimulParamsName.getText())' /> </cell> </row> </Table> @@ -441,7 +389,8 @@ <JLabel text="isisfish.common.region"/> </cell> <cell fill="horizontal" weightx="1.0"> - <JComboBox id="fieldSimulParamsRegion" model='{new DefaultComboBoxModel(Common.getRegionItem())}' selectedItem='{getContextValue(SimulAction.class).getSimulationParameter().getRegionName()}' onActionPerformed='regionChange()'/> + <JComboBox id="fieldSimulParamsRegion" model='{new fr.ifremer.isisfish.ui.models.common.StringListModel(fr.ifremer.isisfish.datastore.RegionStorage.getRegionNames())}' + selectedItem='{getContextValue(SimulAction.class).getSimulationParameter().getRegionName()}' onActionPerformed='regionChange()'/> </cell> </row> </Table> @@ -449,22 +398,16 @@ </row> <row> <cell columns="4" fill="horizontal" weightx="1.0"> - <Table> - <row> - <cell> - <JLabel text="isisfish.params.description"/> - </cell> - <cell fill="horizontal" weightx="1.0"> - <JPanel/> - </cell> - </row> - </Table> + <JLabel text="isisfish.params.description"/> </cell> </row> <row> <cell columns="4" fill="both" weightx="1.0" weighty="0.3"> - <JScrollPane minimumSize='{new Dimension(0,0)}' preferredSize='{new Dimension(0,0)}'> - <JTextArea id="fieldSimulParamsDesc" text='{simulAction.getSimulationParameter().getDescription()}' onFocusLost='saveDescription()'/> + <JScrollPane> + <JTextArea id="fieldSimulParamsDesc" text='{simulAction.getSimulationParameter().getDescription()}'/> + <javax.swing.text.Document javaBean="fieldSimulParamsDesc.getDocument()" + onInsertUpdate='simulAction.getSimulationParameter().setDescription(fieldSimulParamsDesc.getText())' + onRemoveUpdate='simulAction.getSimulationParameter().setDescription(fieldSimulParamsDesc.getText())' /> </JScrollPane> </cell> </row> @@ -476,7 +419,10 @@ <JLabel text="isisfish.params.numberYear" minimumSize='{new Dimension(140,25)}' preferredSize='{new Dimension(140,25)}'/> </cell> <cell fill="both" weightx="1.0"> - <JTextField id="fieldSimulParamsNbAnnees" text='{simulAction.getSimulationParameter().getNumberOfYear()}' onFocusLost='setNbAnnees()'/> + <JTextField id="fieldSimulParamsNbAnnees" text='{simulAction.getSimulationParameter().getNumberOfYear()}'/> + <javax.swing.text.Document javaBean="fieldSimulParamsNbAnnees.getDocument()" + onInsertUpdate='simulAction.setNumberOfYear(fieldSimulParamsNbAnnees.getText())' + onRemoveUpdate='simulAction.setNumberOfYear(fieldSimulParamsNbAnnees.getText())' /> </cell> </row> </Table> @@ -486,101 +432,45 @@ </cell> </row> <row> - <cell fill="both" weightx="0.2" weighty="0.1"> - <Table> - <row> - <cell fill="horizontal"> - <JLabel text="isisfish.common.strategies"/> - </cell> - </row> - <row> - <cell fill="both" weightx="1.0" weighty="1.0"> - <JScrollPane minimumSize='{new Dimension(0,0)}' preferredSize='{new Dimension(0,0)}'> - <JList id="listSimulParamsStrategies" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}" onValueChanged='strategySelected()'/> - </JScrollPane> - </cell> - </row> - </Table> - </cell> - <cell fill="both" weightx="0.4" weighty="0.1"> - <Table> - <row> - <cell fill="horizontal"> - <JLabel text="isisfish.common.populations"/> - </cell> - </row> - <row> - <cell fill="both" weightx="1.0" weighty="1.0"> - <JScrollPane minimumSize='{new Dimension(0,0)}' preferredSize='{new Dimension(0,0)}'> - <JList id="listSimulParamsPopulations" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}" - onValueChanged='populationSelected()' onFocusGained="parametersTabbedPane.setSelectedIndex(0)" /> - </JScrollPane> - </cell> - </row> - </Table> - </cell> - <cell fill="both" weightx="0.4" weighty="0.1"> - <Table> - <row> - <cell fill="horizontal"> - <JLabel text="isisfish.common.rules"/> - </cell> - </row> - <row> - <cell fill="horizontal"> - <JComboBox id="fieldSimulParamsMesuresSelect" model='{new RuleComboModel(simulAction.getAvailableRuleNames())}' renderer='{new RuleComboRenderer()}'/> - </cell> - </row> - <row> - <cell fill="both" weightx="1.0" weighty="1.0"> - <JScrollPane minimumSize='{new Dimension(0,0)}' preferredSize='{new Dimension(0,0)}'> - <JList id="listSimulParamsMesuresList" selectionMode="{javax.swing.ListSelectionModel.SINGLE_SELECTION}" - onValueChanged='onRuleSelectionChange()' onFocusGained="parametersTabbedPane.setSelectedIndex(1)" /> - </JScrollPane> - </cell> - </row> - </Table> - </cell> - <cell fill="both" weighty="0.1"> - <Table> - <row> - <cell fill="horizontal"> - <JLabel text=" " minimumSize='{new Dimension(2,15)}' preferredSize='{new Dimension(2,15)}'/> - </cell> - </row> - <row> - <cell fill='horizontal'> - <JButton id="buttonSimulParamsMesuresAdd" text="isisfish.common.add" onActionPerformed='addRules()'/> - </cell> - </row> - <row> - <cell fill='horizontal'> - <JButton id="buttonSimulParamsMesuresRemove" text="isisfish.common.remove" enabled="false" onActionPerformed='removeRules()'/> - </cell> - </row> - <row> - <cell fill='horizontal'> - <JButton id="buttonSimulParamsMesuresClear" text="isisfish.common.clear" enabled="false" onActionPerformed='clearRules()'/> - </cell> - </row> - <row> - <cell fill='both' weighty="1.0"> - <JPanel/> - </cell> - </row> - </Table> - </cell> - </row> - <row> - <cell columns="4" fill="both" weightx="1.0" weighty="0.6"> - <JTabbedPane id="parametersTabbedPane" minimumSize='{new Dimension(0,0)}' preferredSize='{new Dimension(0,0)}'> - <tab title='{_("isisfish.params.populationNumbers")}'> - <org.nuiton.math.matrix.gui.MatrixPanelEditor id="simulParamsNumbers" name="isisfish.params.populationNumbers"/> + <cell columns="4" fill="both" weightx="1.0" weighty="0.6"> + <JTabbedPane id="parametersTabbedPane" enabled="{isRegionLoaded()}"> + <tab title='{_("isisfish.params.stategiesAndPopulations")}'> + <Table> + <row> + <cell fill="horizontal"> + <JLabel text="isisfish.common.strategies" enabled="{isRegionLoaded()}"/> + </cell> + <cell fill="horizontal"> + <JLabel text="isisfish.common.populations" enabled="{isRegionLoaded()}"/> + </cell> + </row> + <row> + <cell fill="both" weightx="1" weighty="1"> + <JScrollPane> + <JList id="listSimulParamsStrategies" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}" + onValueChanged='strategySelected()' enabled="{isRegionLoaded()}"/> + </JScrollPane> + </cell> + <cell fill="both" weightx="1" weighty="1"> + <JScrollPane> + <JList id="listSimulParamsPopulations" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}" + onValueChanged='populationSelected()' enabled="{isRegionLoaded()}"/> + </JScrollPane> + </cell> + </row> + <row> + <cell fill="both" weighty="1" columns="2"> + <JPanel id="populationEffectivesPanel" layout="{new CardLayout()}"> + <JLabel text="isisfish.params.nopopulation" horizontalAlignment="center" border="{BorderFactory.createEtchedBorder()}" + font-style="italic" constraints='"default"' enabled="{isRegionLoaded()}"/> + <JTabbedPane id="populationEffectivesTabbedPane" constraints='"specific"' enabled="{isRegionLoaded()}"/> + </JPanel> + </cell> + </row> + </Table> </tab> - <tab title='{_("isisfish.params.ruleParameters")}'> - <JScrollPane minimumSize='{new Dimension(0,0)}' preferredSize='{new Dimension(0,0)}'> - <JTable id="simulParamsRules" rowHeight='24' name="isisfish.params.ruleParameters"/> - </JScrollPane> + <tab title='{_("isisfish.params.rules")}'> + <RuleChooser id="ruleChooser" active="{isRegionLoaded()}" decorator="boxed"/> </tab> </JTabbedPane> </cell> @@ -595,12 +485,13 @@ <cell fill="horizontal" weightx="0.3"> <JCheckBox text="isisfish.params.usePreSimulationScript" id="fieldUseSimulPreScripts" selected='{simulAction.getSimulationParameter().getUsePreScript()}' - visible='{!isSensitivity()}' onItemStateChanged='enablePreSimul()' onMouseReleased='selTab(event, 1)'/> + visible='{!isSensitivity()}' onItemStateChanged='enablePreScript()'/> </cell> <cell fill="horizontal" weightx="0.3"> <JCheckBox text="isisfish.params.useAnalysePlan" id="fieldSimulUseAnalysePlan" selected='{simulAction.getSimulationParameter().getUseAnalysePlan()}' - visible='{!isSensitivity()}' onItemStateChanged='enableAnalysePlan()' onMouseReleased='selTab(event, 2)'/> + visible='{!isSensitivity()}' onItemStateChanged='enableAnalysePlan()' + enabled="{isRegionLoaded()}" /> </cell> </row> </Table> @@ -611,16 +502,19 @@ <Table> <row> <cell> - <JLabel id="lblLauncher" text="isisfish.params.lblLauncher"/> + <JLabel text="isisfish.params.simulationLauncher"/> </cell> <cell fill="horizontal" weightx="0.4"> <JComboBox id="comboSelLauncher" model='{new DefaultComboBoxModel(simulAction.getSimulationLauncher().toArray())}'/> </cell> <cell fill="horizontal" weightx="0.4"> - <JButton id="buttonSimulParamsSimulate" text="isisfish.common.simulate" onActionPerformed='launchSimulation()'/> + <JButton id="buttonSimulParamsSimulate" text="isisfish.common.simulate" + onActionPerformed='launchSimulation()' enabled="{isRegionLoaded()}"/> </cell> <cell fill="horizontal" weightx="0.2"> - <JButton id="saveSimul" text="isisfish.simulation.menu.save" onActionPerformed='saveSimulation()'/> + <JButton id="saveSimul" text="isisfish.simulation.menu.save" + onActionPerformed='getParentContainer(fr.ifremer.isisfish.ui.SimulationUI.class).saveSimulation()' + enabled="{isRegionLoaded()}"/> </cell> </row> </Table> Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsUI.jaxx =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsUI.jaxx 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/PreScriptsUI.jaxx 2010-02-04 16:09:42 UTC (rev 2985) @@ -1,6 +1,6 @@ <!-- /* *##% - * Copyright (C) 2005 - 2009 Ifremer, Code Lutin + * Copyright (C) 2005 - 2010 Ifremer, Code Lutin * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -31,13 +31,14 @@ } - protected void backParameter() { + /*protected void backParameter() { SimulUI simul = getParentContainer(SimulUI.class); simul.selTab(0); - } + }*/ ]]></script> <JScrollPane constraints='BorderLayout.CENTER'> <JTextArea id="fieldSimulPreScript" onFocusLost='save()'/> </JScrollPane> - <JButton constraints='BorderLayout.SOUTH' text="isisfish.preScript.backParameter" onActionPerformed='backParameter()'/> + <JButton constraints='BorderLayout.SOUTH' text="isisfish.preScript.backParameter" + onActionPerformed='getParentContainer(fr.ifremer.isisfish.ui.SimulationUI.class).selectParametersTab()'/> </JPanel> \ No newline at end of file Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/ResultChoiceUI.jaxx 2010-02-04 16:09:42 UTC (rev 2985) @@ -1,6 +1,6 @@ <!-- /* *##% - * Copyright (C) 2005 Ifremer, Code Lutin + * Copyright (C) 2005 - 2010 Ifremer, Code Lutin * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License Added: 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 (rev 0) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/RuleChooser.jaxx 2010-02-04 16:09:42 UTC (rev 2985) @@ -0,0 +1,171 @@ +<!-- +/* *##% + * Copyright (C) 2010 Ifremer, Code Lutin, Eric Chatellier + * + * 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. + *##%*/ + --> + +<Table> + <!-- Rules collection managed by current ui instance. --> + <java.util.List genericType='fr.ifremer.isisfish.rule.Rule' id="rulesList" javaBean='new java.util.ArrayList<fr.ifremer.isisfish.rule.Rule>()'/> + + <!-- Active enabled binding property --> + <Boolean id="active" javaBean="true"/> + + <!-- Storage to edit rule parameters. --> + <fr.ifremer.isisfish.datastore.RegionStorage id="regionStorage" javaBean="null"/> + + <script><![CDATA[ + import fr.ifremer.isisfish.IsisFishException; + import fr.ifremer.isisfish.datastore.RuleStorage; + import fr.ifremer.isisfish.rule.Rule; + import fr.ifremer.isisfish.ui.models.rule.RuleListModel; + import fr.ifremer.isisfish.ui.models.rule.RuleParametersTableModel; + import fr.ifremer.isisfish.ui.models.rule.RuleParametersTableCellEditor; + import fr.ifremer.isisfish.ui.models.rule.RuleParametersTableCellRenderer; + import fr.ifremer.isisfish.ui.util.ErrorHelper; + + // Manage rule list change + addPropertyChangeListener("rulesList", new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getNewValue() == null) { + selectedRulesList.setModel(new fr.ifremer.isisfish.ui.models.rule.RuleListModel()); + } + else /*if (evt.getNewValue() != null)*/ { + java.util.List<fr.ifremer.isisfish.rule.Rule> rules = (java.util.List<fr.ifremer.isisfish.rule.Rule>)evt.getNewValue(); + selectedRulesList.setModel(new fr.ifremer.isisfish.ui.models.rule.RuleListModel(rules)); + } + } + }); + + /** + * Get new instance for selected rules names and add it to {@link rulesList} list. + */ + protected void addSelectedRules() { + Object[] availableRuleValues = availableRuleList.getSelectedValues(); + for (Object availableRuleValue : availableRuleValues) { + String availableRuleName = (String)availableRuleValue; + try { + RuleStorage ruleStorage = RuleStorage.getRule(availableRuleName); + Rule ruleTmp = ruleStorage.getNewRuleInstance(); + rulesList.add(ruleTmp); + } catch (IsisFishException e) { + if (log.isErrorEnabled()) { + log.error("Can't add rule", e); + } + ErrorHelper.showErrorDialog(_("isisfish.error.simulation.addrule"), e); + } + } + + //TODO replace this by a better fire() event + selectedRulesList.setModel(new RuleListModel(rulesList)); + } + + /** + * Remove selected rules for selected rules list. + */ + protected void removeSelectedRules() { + Object[] selectedRuleValues = selectedRulesList.getSelectedValues(); + for (Object selectedRuleValue : selectedRuleValues) { + rulesList.remove(selectedRuleValue); + } + //TODO replace this by a better fire() event + selectedRulesList.setModel(new RuleListModel(rulesList)); + } + + /** + * Clear selected rule list. + */ + protected void clearAllRules() { + rulesList.clear(); + //TODO replace this by a better fire() event + selectedRulesList.setModel(new RuleListModel(rulesList)); + } + + /** + * Display paramters table form single selected list. + */ + protected void displayRuleParameters() { + Rule selectedRule = (Rule)selectedRulesList.getSelectedValue(); + if (selectedRule != null) { + RuleParametersTableModel model = new RuleParametersTableModel(selectedRule); + selectedRuleParameterTable.setModel(model); + RuleParametersTableCellEditor cellEditor = new RuleParametersTableCellEditor(selectedRule); + cellEditor.setRegion(getRegionStorage()); + RuleParametersTableCellRenderer cellRenderer = new RuleParametersTableCellRenderer(selectedRule); + selectedRuleParameterTable.getColumnModel().getColumn(0).setCellRenderer(cellRenderer); + selectedRuleParameterTable.getColumnModel().getColumn(1).setCellEditor(cellEditor); + } + else { + selectedRuleParameterTable.setModel(new RuleParametersTableModel()); + } + } + ]]></script> + + <row> + <cell fill="horizontal"> + <JLabel text="isisfish.params.rules.availables" enabled="{isActive()}"/> + </cell> + <cell> + <JPanel /> + </cell> + <cell fill="horizontal"> + <JLabel text="isisfish.params.rules.selected" enabled="{isActive()}"/> + </cell> + </row> + <row> + <cell fill="both" rows="3" weightx="1" weighty="1"> + <JScrollPane> + <JList id="availableRuleList" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}" + model='{new fr.ifremer.isisfish.ui.models.common.StringListModel(fr.ifremer.isisfish.datastore.RuleStorage.getRuleNames())}' + cellRenderer='{new fr.ifremer.isisfish.ui.models.rule.RuleNamesListRenderer()}' + onValueChanged='addRulesButton.setEnabled(availableRuleList.getSelectedIndex() != -1)' + enabled="{isActive()}"/> + </JScrollPane> + </cell> + <cell fill='horizontal'> + <JButton id="addRulesButton" text="isisfish.common.add" enabled="false" onActionPerformed='addSelectedRules()'/> + </cell> + <cell fill="both" rows="3" weightx="1" weighty="1"> + <JScrollPane> + <JList id="selectedRulesList" selectionMode="{javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}" + model='{new fr.ifremer.isisfish.ui.models.rule.RuleListModel(rulesList)}' + cellRenderer='{new fr.ifremer.isisfish.ui.models.rule.RuleListCellRenderer()}' + onValueChanged='removeRuleButton.setEnabled(selectedRulesList.getSelectedIndex() != -1);clearRulesButton.setEnabled(selectedRulesList.getSelectedIndex() != -1);displayRuleParameters()' + enabled="{isActive()}"/> + </JScrollPane> + </cell> + </row> + <row> + <cell fill='horizontal'> + <JButton id="removeRuleButton" text="isisfish.common.remove" enabled="false" onActionPerformed='removeSelectedRules()'/> + </cell> + </row> + <row> + <cell fill='horizontal' anchor="north"> + <JButton id="clearRulesButton" text="isisfish.common.clear" enabled="false" onActionPerformed='clearAllRules()'/> + </cell> + </row> + <row weightx="2" weighty="2" columns="3"> + <cell fill='both'> + <JScrollPane> + <JTable id="selectedRuleParameterTable" rowHeight='24' + model="{new fr.ifremer.isisfish.ui.models.rule.RuleParametersTableModel()}" + enabled="{isActive()}" /> + </JScrollPane> + </cell> + </row> +</Table> \ No newline at end of file Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SensUI.jaxx 2010-02-04 16:09:42 UTC (rev 2985) @@ -1,6 +1,6 @@ <!-- /* *##% - * Copyright (C) 2005 - 2009 Ifremer, Code Lutin + * Copyright (C) 2005 - 2010 Ifremer, Code Lutin * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -122,11 +122,11 @@ } } - protected void backParameter() { + /*protected void backParameter() { // TODO remove getParentContainer() use SimulUI simul = getParentContainer(SimulUI.class); simul.selTab(0); - } + }*/ ]]> </script> <row> @@ -170,7 +170,7 @@ </row> <row> <cell columns="2" fill="horizontal" weightx="1.0"> - <JButton text="isisfish.sens.backParameter" onActionPerformed='backParameter()'/> + <JButton text="isisfish.sens.backParameter" onActionPerformed='getParentContainer(fr.ifremer.isisfish.ui.SimulationUI.class).selectParametersTab()'/> </cell> </row> </Table> 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 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2010-02-04 16:09:42 UTC (rev 2985) @@ -30,8 +30,6 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,6 +74,7 @@ import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain; +import fr.ifremer.isisfish.simulator.sensitivity.group.FactorGroup; import fr.ifremer.isisfish.ui.util.ErrorHelper; /** @@ -103,7 +102,7 @@ protected List<String> oldSimulNames = null; protected String simulName = null; protected SensitivityStorage sensitivityStorage = null; - protected Map<String, Factor> factors; + protected SortedMap<String, Factor> factors; protected Map<String, JComponent> factorComponent = new HashMap<String, JComponent>(); protected DesignPlan designPlan = new DesignPlan(); @@ -147,8 +146,7 @@ } // factors has been requested to be sorted - // TODO add factor sorting - factors = new HashMap<String, Factor>(); + factors = new TreeMap<String, Factor>(); } protected void setName(String name) { @@ -467,9 +465,21 @@ public int getNumberOfYear() { return param.getNumberOfYear(); } - + + /** + * Change number of simulation year by parsing string value. + * Default to 1 if value is not parsable. + * + * @param years number of years to set + */ public void setNumberOfYear(String years) { - param.setNumberOfYear(Integer.parseInt(years)); + try { + param.setNumberOfYear(Integer.parseInt(years)); + } + catch (NumberFormatException ex) { + // defaut to one year + param.setNumberOfYear(1); + } } public List<String> getSimulatorNames() { @@ -820,36 +830,36 @@ * * @return factor list */ - public List<Factor<?, ?>> getFactors() { - List<Factor<?, ?>> result = new ArrayList<Factor<?, ?>>(); - for (Map.Entry<?, ?> entry : factors.entrySet()) { - result.add((Factor<?, ?>) entry.getValue()); + public FactorGroup getFactorGroup() { + FactorGroup result = new FactorGroup(_("isisfish.sensitivity.factors"), true); + for (Factor value : factors.values()) { + result.addFactor(value); } - // sort factor on name - Collections.sort(result, new Comparator<Factor<?, ?>> (){ + // sort factor on name (sorted on tree map now) + /*Collections.sort(result, new Comparator<Factor<?, ?>> (){ @Override public int compare(Factor<?, ?> o1, Factor<?, ?> o2) { return o1.getName().compareTo(o2.getName()); } - }); + });*/ return result; } - public void addFactor(Factor<?, ?> f, JComponent c) { + public void addFactor(Factor f, JComponent c) { if (log.isDebugEnabled()) { log.debug("Add factor (" + f.getName() + ") : " +f.getPath()); } factors.put(f.getPath() + f.getName(), f); factorComponent.put(f.getPath() + f.getName(), c); - designPlan.setFactors(getFactors()); + designPlan.setFactors(getFactorGroup().getFactors()); } public void addContinuousFactor(String name, String comment, String path, Double min, Double max, JComponent c, boolean exist) { - Factor<Double, Double> f = new Factor<Double, Double>(name); - ContinuousDomain<Double, Double> domain = new ContinuousDomain<Double, Double>(); + Factor f = new Factor(name); + ContinuousDomain domain = new ContinuousDomain(); domain.setMinBound(min); domain.setMaxBound(max); f.setDomain(domain); @@ -863,8 +873,8 @@ public void addDiscreteFactor(String name, String comment, String path, List<Serializable> values, JComponent c, boolean exist) { - Factor<Serializable, Serializable> f = new Factor<Serializable, Serializable>(name); - DiscreteDomain<Serializable, Serializable> domain = new DiscreteDomain<Serializable, Serializable>(); + Factor f = new Factor(name); + DiscreteDomain domain = new DiscreteDomain(); int i = 0; for (Serializable value : values) { // FIXME test when integer @@ -886,7 +896,7 @@ EquationContinuousDomain domain, JComponent c, boolean exist) { // factor name need to be composed - Factor<Double, Double> f = new Factor<Double, Double>(name + "." + domain.getVariableName()); + Factor f = new Factor(name + "." + domain.getVariableName()); f.setDomain(domain); f.setComment(comment); // don't modify path, need to be valid identifier @@ -901,7 +911,7 @@ public void addContinuousMatrixFactor(String name, String comment, String path, Double coef, MatrixND matrix, String operateur, JComponent c, boolean exist) { - Factor<MatrixND, Double> f = new Factor<MatrixND, Double>(name); + Factor f = new Factor(name); MatrixContinuousDomain domain = new MatrixContinuousDomain(); domain.setMatrix(matrix); domain.setOperator(operateur); @@ -915,14 +925,14 @@ addFactor(f, c); } - public JComponent getFactorComponent(Factor<?, ?> f) { + public JComponent getFactorComponent(Factor f) { return factorComponent.get(f.getPath() + f.getName()); } - public void removeFactor(Factor<?, ?> f) { + public void removeFactor(Factor f) { factors.remove(f.getPath() + f.getName()); factorComponent.remove(f.getPath() + f.getName()); - designPlan.setFactors(getFactors()); + designPlan.setFactors(getFactorGroup().getFactors()); } /* Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2010-02-04 16:06:06 UTC (rev 2984) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulUI.jaxx 2010-02-04 16:09:42 UTC (rev 2985) @@ -1,6 +1,6 @@ <!-- /* *##% - * Copyright (C) 2005 - 2009 Ifremer, Code Lutin + * Copyright (C) 2005 - 2010 Ifremer, Code Lutin * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -17,28 +17,10 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *##%*/ --> -<JPanel layout='{new BorderLayout()}'> - - <script><![CDATA[ - import jaxx.runtime.JAXXInitialContext; - import fr.ifremer.isisfish.ui.input.InputAction; - import fr.ifremer.isisfish.ui.input.InputSaveVerifier; - import fr.ifremer.isisfish.datastore.StorageException; - import fr.ifremer.isisfish.entities.FisheryRegionImpl; - import javax.swing.ToolTipManager; +<fr.ifremer.isisfish.ui.SimulationUI> - public SimulUI(SimulAction action) { - setContextValue(action); - } - protected void enablePreSimul(boolean selected) { - simulTabs.setEnabledAt(1, selected); - } - protected void enableAnalysePlan(boolean selected) { - simulTabs.setEnabledAt(2, selected); - } - protected void selTab(int i) { - simulTabs.setSelectedIndex(i); - } + <script><![CDATA[ + @Override public void refresh() { paramsUI.refresh(); preScriptUI.refresh(); @@ -47,38 +29,30 @@ resultChoiceUI.refresh(); advancedParamsUI.refresh(); } - // TODO duplicated code (simulUI, Params UI, SensitivityUI) - protected void importSimulation() { - JFileChooser fc = new JFileChooser(); - int returnVal = fc.showOpenDialog(null); - if (returnVal == JFileChooser.APPROVE_OPTION) { - File file = fc.getSelectedFile(); - //This is where a real application would open the file. - getContextValue(SimulAction.class).importSimulation(file); - refresh(); - } + @Override + public void selectParametersTab() { + bodyTabbedPane.setSelectedIndex(0); } - // TODO duplicated code (simulUI, Params UI, SensitivityUI) - protected void saveSimulation() { - JFileChooser fc = new JFileChooser(); - int returnVal = fc.showSaveDialog(null); - if (returnVal == JFileChooser.APPROVE_OPTION) { - File file = fc.getSelectedFile(); - //This is where a real application would open the file. - getContextValue(SimulAction.class).saveSimulation(file); + @Override + public void setEnabledPrescriptTab(boolean selected) { + bodyTabbedPane.setEnabledAt(1, selected); + if (selected) { + bodyTabbedPane.setSelectedIndex(1); } } + + @Override + public void setEnabledAnalysePlanTab(boolean selected) { + bodyTabbedPane.setEnabledAt(2, selected); + if (selected) { + bodyTabbedPane.setSelectedIndex(2); + } + } ]]> </script> - <JMenuBar id="simulMenuBar" constraints='BorderLayout.NORTH'> - <JMenu id="simulMenu" text="isisfish.simulation.menu.simulation"> - <JMenuItem id="siSave" text="isisfish.simulation.menu.save" onActionPerformed="saveSimulation()"/> - <JMenuItem id="siImport" text="isisfish.simulation.menu.import" onActionPerformed="importSimulation()"/> - </JMenu> - </JMenuBar> - <JTabbedPane id="simulTabs" constraints='BorderLayout.CENTER'> + <JTabbedPane id="bodyTabbedPane"> <tab id="paramsUITab" title='isisfish.params.title'> <ParamsUI id="paramsUI" constructorParams='this' /> </tab> @@ -98,4 +72,4 @@ <AdvancedParamsUI id="advancedParamsUI" constructorParams='this' /> </tab> </JTabbedPane> -</JPanel> \ No newline at end of file +</fr.ifremer.isisfish.ui.SimulationUI> \ No newline at end of file
participants (1)
-
chatellier@users.labs.libre-entreprise.org