Author: sletellier Date: 2009-03-18 20:43:04 +0000 (Wed, 18 Mar 2009) New Revision: 2002 Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanel.jaxx Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizard.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java Log: Equation continuous is enabled Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2009-03-18 17:30:19 UTC (rev 2001) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2009-03-18 20:43:04 UTC (rev 2002) @@ -22,6 +22,15 @@ accept(e); } }}' /> + <jaxx.runtime.swing.BlockingLayerUI2 id='layerUI2' + blockIcon='{SwingUtil.createImageIcon("building.png")}' + acceptIcon='{SwingUtil.createImageIcon("building_add.png")}' + acceptAction='{new AbstractAction() { private static final long serialVersionUID = 1L; + @Override + public void actionPerformed(ActionEvent e) { + accept(e); + } + }}' /> <script><![CDATA[ import fr.ifremer.isisfish.ui.WelcomePanelUI; @@ -68,12 +77,18 @@ if (classBean != null){ isSensitivity = UtilsUI.isSensitivity(classBean.getSimpleName().replace("Impl", "") + "." + method); } - jaxx.runtime.swing.BlockingLayerUI ui = active ? layerUI.clone() : null; - if (classBean == null && ui != null){ - ui.setBlock(true); + ui = null; + if (isSensitivity){ + jaxx.runtime.swing.BlockingLayerUI2 ui = active ? layerUI2.clone() : null; + SwingUtil.getLayer(boxed).setUI(ui); + } else { + jaxx.runtime.swing.BlockingLayerUI ui = active ? layerUI.clone() : null; + if (classBean == null && ui != null){ + ui.setBlock(true); + } + ui.setUseIcon(isSensitivity && isActif()); + SwingUtil.getLayer(boxed).setUI(ui); } - ui.setUseIcon(isSensitivity && isActif()); - SwingUtil.getLayer(boxed).setUI(ui); } } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2009-03-18 17:30:19 UTC (rev 2001) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EditorHelper.java 2009-03-18 20:43:04 UTC (rev 2002) @@ -22,6 +22,7 @@ import fr.ifremer.isisfish.entities.Selectivity; import fr.ifremer.isisfish.entities.TargetSpecies; import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; +import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain; import fr.ifremer.isisfish.types.Month; import fr.ifremer.isisfish.ui.input.InputAction; @@ -189,16 +190,14 @@ DefaultContinuousPanel continuousPanel = null; if (c instanceof InputOneEquationUI){ InputOneEquationUI origine = (InputOneEquationUI) c; - InputOneEquationUI ui = new InputOneEquationUI(new JAXXInitialContext().add(new InputAction())); + EquationContinuousPanel ui = new EquationContinuousPanel(new JAXXInitialContext().add(new InputAction())); ui.setLblText(origine.getLblText()); ui.setNameEquation(origine.getNameEquation()); ui.setClazz(origine.getClazz()); ui.setMethodGet(origine.getMethodGet()); ui.setMethodSet(origine.getMethodSet()); ui.setBean(e); - ui.setActif(true); - ui.refresh(); -// result = ui; + result = ui; } else if (c instanceof MatrixPanelEditor){ MatrixContinuousPanel matrixPanel = new MatrixContinuousPanel(); matrixPanel.setMatrix((MatrixND)callMethod(e, fieldName)); @@ -208,7 +207,9 @@ continuousPanel = new DefaultContinuousPanel(); result = continuousPanel; } - continuousPanel.init(getNewBoundEditor(c, e), getNewBoundEditor(c, e)); + if (continuousPanel != null){ + continuousPanel.init(getNewBoundEditor(c, e), getNewBoundEditor(c, e)); + } } catch (Exception ex) { Logger.getLogger(EditorHelper.class.getName()).log(Level.SEVERE, null, ex); } @@ -228,16 +229,19 @@ DefaultContinuousPanel continuousPanel = null; if (c instanceof InputOneEquationUI){ InputOneEquationUI origine = (InputOneEquationUI) c; - InputOneEquationUI ui = new InputOneEquationUI(new JAXXInitialContext().add(new InputAction())); + EquationContinuousPanel ui = new EquationContinuousPanel(new JAXXInitialContext().add(new InputAction())); ui.setLblText(origine.getLblText()); ui.setNameEquation(origine.getNameEquation()); ui.setClazz(origine.getClazz()); ui.setMethodGet(origine.getMethodGet()); ui.setMethodSet(origine.getMethodSet()); -// ui.setBean(e); - ui.setActif(true); - ui.refresh(); -// result = ui; + ui.setBean(origine.getBean()); + + EquationContinuousDomain equationDomain = (EquationContinuousDomain)domain; + ui.addDomain(equationDomain); + ui.setTable(); + + result = ui; } else if (c instanceof MatrixPanelEditor){ MatrixContinuousPanel panel = new MatrixContinuousPanel(); MatrixContinuousDomain matrixDomain = (MatrixContinuousDomain)domain; @@ -249,7 +253,9 @@ continuousPanel = new DefaultContinuousPanel(); result = continuousPanel; } - continuousPanel.init(new JTextField(String.valueOf(domain.getMinBound())), new JTextField(String.valueOf(domain.getMaxBound()))); + if (continuousPanel != null){ + continuousPanel.init(new JTextField(String.valueOf(domain.getMinBound())), new JTextField(String.valueOf(domain.getMaxBound()))); + } } catch (Exception ex) { Logger.getLogger(EditorHelper.class.getName()).log(Level.SEVERE, null, ex); } @@ -397,7 +403,7 @@ result = ((JRadioButton)c).isSelected(); } else if (c instanceof InputOneEquationUI){ - result = ((InputOneEquationUI) c).getFormule(); + result = ((InputOneEquationUI) c).getEditor().getText(); } else if (c instanceof IntervalPanel){ // ((IntervalPanel) result).setModel((BeanUtils.getProperty(e, fieldName))); @@ -463,8 +469,10 @@ if (c instanceof JTextComponent) { if (Double.class.isInstance(o)){ return true; - } else if (Long.class.isInstance(o)){ + } else if (Long.class.isInstance(o)){ return true; + } else if (InputOneEquationUI.class.isInstance(c)){ + return true; } } return false; Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanel.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanel.jaxx (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/EquationContinuousPanel.jaxx 2009-03-18 20:43:04 UTC (rev 2002) @@ -0,0 +1,246 @@ +<!-- +/* *##% + * Copyright (C) 2005 + * Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin + * + * 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. + *##%*/ + +/* * + * IsisFish.java + * + * Created: 1 aout 2005 18:37:25 CEST + * + * @author Benjamin POUSSIN <poussin at codelutin.com> + * @version $Revision: 1312 $ + * + * Last update: $Date: 2008-08-28 10:21:07 +0200 (jeu, 28 aoû 2008) $ + * by : $Author: sletellier $ + */ + --> +<ContinuousPanelContainer> + + <!-- bean property --> + <fr.ifremer.isisfish.entities.Formule id='formule' javaBean='null'/> + <String id='lblText' javaBean='null'/> + <org.codelutin.topia.persistence.TopiaEntity id='bean' javaBean='null'/> + <Class id='clazz' javaBean='null'/> + <String id='methodGet' javaBean='null'/> + <String id='methodSet' javaBean='null'/> + <String id='nameEquation' javaBean='null'/> + <fr.ifremer.isisfish.entities.Equation id='selectedEquation' javaBean='null'/> + + <script><![CDATA[ +import javax.swing.table.AbstractTableModel; +import javax.swing.table.DefaultTableModel; +import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableModel; + +protected String[] columnNames = {"Name", "Min", "Max", "Operator", "Action"}; +protected java.util.List<EquationContinuousDomain> datas = new ArrayList<EquationContinuousDomain>(); +protected java.util.List<JComboBox> operateurs = new ArrayList<JComboBox>(); +protected java.util.List<JButton> actions = new ArrayList<JButton>(); + +public java.util.List<EquationContinuousDomain> getDomains(){ + return datas; +} +public void setDomains(java.util.List<EquationContinuousDomain> domains){ + datas = domains; +} +public void addDomain(EquationContinuousDomain domain){ + datas.add(domain); +} +protected AbstractTableModel getTableModel(){ + AbstractTableModel model = new AbstractTableModel() { + + @Override + public int getRowCount() { + return datas.size(); + } + + @Override + public int getColumnCount() { + return columnNames.length; + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return true; + } + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if (columnIndex == 0){ + return datas.get(rowIndex).getVariableName(); + } else if (columnIndex == 1){ + return datas.get(rowIndex).getMinBound(); + } else if (columnIndex == 2){ + return datas.get(rowIndex).getMaxBound(); + } else if (columnIndex == 3){ + return datas.get(rowIndex).getOperator(); + } else if (columnIndex == 4){ + return _("isisfish.factor.validDiscretNumber"); + } + return null; + } + + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + if (String.class.isInstance(aValue)){ + if (!((String)aValue).equals("")){ + if (columnIndex == 0){ + datas.get(rowIndex).setVariableName((String)aValue); + } else if (columnIndex == 1){ + datas.get(rowIndex).setMinBound(Long.parseLong((String)aValue)); + } else if (columnIndex == 2){ + datas.get(rowIndex).setMaxBound(Long.parseLong((String)aValue)); + } else if (columnIndex == 3){ + datas.get(rowIndex).setOperator((String)aValue); + } + } + } + } + + @Override + public String getColumnName(int col) { + return columnNames[col].toString(); + } + + }; + return model; +} +protected JComboBox getOperateur(){ + JComboBox result = new JComboBox(); + result.addItem("+"); + result.addItem("-"); + result.addItem("*"); + result.addItem("/"); + operateurs.add(result); + result.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + JComboBox source = (JComboBox)e.getSource(); + int i = operateurs.indexOf(source); + datas.get(i).setOperator((String)source.getSelectedItem()); + } + }); + return result; +} +protected void newButton(){ + JButton result = new JButton(); + result.setText(_("isisfish.factor.validDiscretNumber")); + actions.add(result); + result.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + JButton source = (JButton)e.getSource(); + int i = actions.indexOf(source); + valid(i); + } + }); +} +protected JButton getActionButton(int i){ + return actions.get(i); +} +protected void valid(int i){ + String variableName = datas.get(i).getVariableName(); + String text = editor.getEditor().getText().replaceAll(variableName, "getContextOf(" + variableName); + editor.getEditor().setText(text); +} +protected void setTable(){ + params.setModel(getTableModel()); + params.getColumnModel().getColumn(3).setCellEditor(new DefaultCellEditor(getOperateur())); + params.getColumnModel().getColumn(4).setCellEditor(new TableCellEditor() { + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + return getActionButton(row); + } + + @Override + public Object getCellEditorValue() { + return null; + } + + @Override + public boolean isCellEditable(EventObject anEvent) { + return true; + } + + @Override + public boolean shouldSelectCell(EventObject anEvent) { + return true; + } + + @Override + public boolean stopCellEditing() { + return true; + } + + @Override + public void cancelCellEditing() { + } + + @Override + public void addCellEditorListener(CellEditorListener l) { + } + + @Override + public void removeCellEditorListener(CellEditorListener l) { + } + }); +} +protected void add(){ + datas.add(new EquationContinuousDomain()); + newButton(); + setTable(); +} +protected void remove(){ + int i = params.getSelectedRow(); + datas.remove(i); + operateurs.remove(i); + actions.remove(i); + setTable(); +} + ]]> + </script> + <Table id='content' constraints='BorderLayout.CENTER'> + <row> + <cell fill='both' columns='2' weightx='1' weighty='0.5'> + <JScrollPane> + <JTable id='params' visible='{isContinuePossible()}' model='{getTableModel()}' enabled='{isContinueSelected()}'/> + </JScrollPane> + </cell> + </row> + <row> + <cell fill='horizontal' weightx='0.5'> + <JButton id='add' text='isisfish.common.add' visible='{isContinuePossible()}' enabled='{isContinueSelected()}' onActionPerformed='add()'/> + </cell> + <cell fill='horizontal' weightx='0.5'> + <JButton id='remove' text='isisfish.common.remove' visible='{isContinuePossible()}' enabled='{isContinueSelected()}' onActionPerformed='remove()'/> + </cell> + </row> + <row> + <cell fill='both' columns='2' weightx='1' weighty='0.5'> + <fr.ifremer.isisfish.ui.input.InputOneEquationUI id='editor' formule='{getFormule()}' lblText='{getLblText()}' + constructorParams='this' bean='{getBean()}' clazz='{getClazz()}' methodGet='{getMethodGet()}' actif='{isContinueSelected()}' + methodSet='{getMethodSet()}' nameEquation='{getNameEquation()}' selectedEquation='{getSelectedEquation()}' + visible='{isContinuePossible()}' enabled='{isContinueSelected()}'/> + </cell> + </row> + </Table> +</ContinuousPanelContainer> \ No newline at end of file Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java 2009-03-18 17:30:19 UTC (rev 2001) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorAction.java 2009-03-18 20:43:04 UTC (rev 2002) @@ -18,6 +18,7 @@ package fr.ifremer.isisfish.ui.sensitivity; +import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain; import fr.ifremer.isisfish.ui.simulator.SimulAction; import java.io.Serializable; import java.util.ArrayList; @@ -39,7 +40,13 @@ String operateur = (String)matrixPanel.getOperator().getSelectedItem(); action.addContinuousMatrixFactor(name, path, getMin(defaultPanel), getMax(defaultPanel), matrix, operateur, cOrigine, exist); - }else if (DefaultContinuousPanel.class.isInstance(panel)){ + } else if (EquationContinuousPanel.class.isInstance(panel)){ + EquationContinuousPanel equationPanel = (EquationContinuousPanel)panel; + List<EquationContinuousDomain> domains = equationPanel.getDomains(); + for (EquationContinuousDomain domain : domains){ + action.addContinuousEquationFactor(name, path, domain, equationPanel.getEditor().getEditor().getText(), cOrigine, exist); + } + } else if (DefaultContinuousPanel.class.isInstance(panel)){ defaultPanel = (DefaultContinuousPanel)panel; action.addContinuousFactor(name, path, getMin(defaultPanel), getMax(defaultPanel), cOrigine, exist); } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizard.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizard.jaxx 2009-03-18 17:30:19 UTC (rev 2001) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorWizard.jaxx 2009-03-18 20:43:04 UTC (rev 2002) @@ -55,6 +55,7 @@ protected java.util.List<JComponent> discretComponents = new ArrayList<JComponent>(); protected String path = null; protected ContinuousPanelContainer continuousPanel = null; +protected Factor factor = null; addPropertyChangeListener("continuePossible", new PropertyChangeListener(){ @Override @@ -124,6 +125,7 @@ this.path = f.getPath(); factorName.setText(f.getName()); Domain domain = f.getDomain(); + this.factor = f; if (ContinuousDomain.class.isInstance(domain)){ ContinuousDomain cDomain = (ContinuousDomain) domain; @@ -193,7 +195,7 @@ this.dispose(); } protected void remove(){ - getSimulAction().removeFactor(path); + getSimulAction().removeFactor(path, factor); getContextValue(InputSaveVerifier.class).getSensPanel().setFactorModel(); this.dispose(); } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-03-18 17:30:19 UTC (rev 2001) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-03-18 20:43:04 UTC (rev 2002) @@ -78,6 +78,15 @@ protected void setTableModel(){ Map<String, Class<?>> values = getSimulAction().getSensitivityParameterNames((String)fieldSensitivitySelect.getSelectedItem()); setParamsTable(values, simulSensitivityParam); + simulSensitivityParam.getModel().addTableModelListener(new TableModelListener() { + @Override + public void tableChanged(TableModelEvent e) { + int row = e.getFirstRow(); + TableModel model = (TableModel)e.getSource(); + GenericCell data = (GenericCell) model.getValueAt(row, 0); + getContextValue(SimulAction.class).setSensitivityParameterValue(data.getName(), model.getValueAt(row, 1)); + } + }); } public void setFactorCardinalityModel(){ DefaultTableModel model = new DefaultTableModel(){ @@ -128,6 +137,16 @@ protected void setExportParams(){ Map<String, Class<?>> values = getAction().getSensitivityExportParameterNames(getSelectedExport()); setParamsTable(values, exportParams); + + exportParams.getModel().addTableModelListener(new TableModelListener() { + @Override + public void tableChanged(TableModelEvent e) { + int row = e.getFirstRow(); + TableModel model = (TableModel)e.getSource(); + GenericCell data = (GenericCell) model.getValueAt(row, 0); + getContextValue(SimulAction.class).setSensitivityExportParameterNames(getSelectedExport(), (String)data.getName(), model.getValueAt(row, 1)); + } + }); } protected void setParamsTable(Map<String, Class<?>> values, JTable table){ int row = 0; @@ -158,15 +177,6 @@ ParameterColumnEditor cellEditor = new ParameterColumnEditor(); cellEditor.setRegion(getContextValue(SimulAction.class).getRegionStorage()); table.getColumnModel().getColumn(1).setCellEditor(cellEditor); - table.getModel().addTableModelListener(new TableModelListener() { - @Override - public void tableChanged(TableModelEvent e) { - int row = e.getFirstRow(); - TableModel model = (TableModel)e.getSource(); - GenericCell data = (GenericCell) model.getValueAt(row, 0); - getContextValue(SimulAction.class).setSensitivityParameterValue(data.getName(), model.getValueAt(row, 1)); - } - }); } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-03-18 17:30:19 UTC (rev 2001) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-03-18 20:43:04 UTC (rev 2002) @@ -678,6 +678,15 @@ public Map<String, Class<?>> getSensitivityExportParameterNames(SensitivityExport export){ return ExportStorage.getParameterNames(export); } + public void setSensitivityExportParameterNames(Export export, String paramName, Object value){ + if (value != null){ + try { + ExportStorage.setParameterValue(export, paramName, value); + } catch (IsisFishException ex) { + Logger.getLogger(SimulAction.class.getName()).log(Level.SEVERE, null, ex); + } + } + } public List<String> getSensitivityName(){ return SensitivityStorage.getSensitivityNames(); } @@ -703,7 +712,9 @@ } public void setSensitivityParameterValue(String paramName, Object value){ try { - SensitivityStorage.setParameterValue(param.getSensitivityCalculator(), paramName, value); + if (value != null){ + SensitivityStorage.setParameterValue(param.getSensitivityCalculator(), paramName, value); + } } catch (IsisFishException ex) { Logger.getLogger(SimulAction.class.getName()).log(Level.SEVERE, null, ex); showMsgBox(ex); @@ -730,8 +741,8 @@ return result; } public void addFactor(String path, Factor f, JComponent c){ - factors.put(path, f); - factorComponent.put(path, c); + factors.put(path + f.getName(), f); + factorComponent.put(path + f.getName(), c); designPlan.setFactors(getFactors()); } public Factor<? extends Serializable> getFactor(String name){ @@ -745,7 +756,7 @@ f.setDomain(domain); f.setPath(path); if (exist) - removeFactor(path); + removeFactor(path, f); addFactor(path, f, c); } public void addDiscreteFactor(String name, String path, List<Serializable> values, JComponent c, boolean exist){ @@ -762,41 +773,38 @@ f.setDomain(domain); f.setPath(path); if (exist) - removeFactor(path); + removeFactor(path, f); addFactor(path, f, c); } - public void addContinuousMatrixFactor(String name, String path, Serializable min, Serializable max, MatrixND matrix, String operateur, JComponent c, boolean exist){ + public void addContinuousEquationFactor(String name, String path, EquationContinuousDomain domain, String equation, JComponent c, boolean exist){ Factor f = new Factor(name); - MatrixContinuousDomain<Serializable> domain = new MatrixContinuousDomain<Serializable>(); - domain.setMatrix(matrix); - domain.setOperator(operateur); - domain.setMaxBound(max); - domain.setMinBound(min); + f.setValue(equation); f.setDomain(domain); f.setPath(path); if (exist) - removeFactor(path); + removeFactor(path, f); addFactor(path, f, c); } - public void addContinuousEquationFactor(String name, String path, String varName, Serializable min, Serializable max, MatrixND matrix, String operateur, JComponent c, boolean exist){ + public void addContinuousMatrixFactor(String name, String path, Serializable min, Serializable max, MatrixND matrix, String operateur, JComponent c, boolean exist){ Factor f = new Factor(name); - EquationContinuousDomain<Serializable> domain = new EquationContinuousDomain<Serializable>(); - domain.setVariableName(varName); + MatrixContinuousDomain<Serializable> domain = new MatrixContinuousDomain<Serializable>(); + domain.setMatrix(matrix); domain.setOperator(operateur); domain.setMaxBound(max); domain.setMinBound(min); f.setDomain(domain); f.setPath(path); + f.setValue(matrix); if (exist) - removeFactor(path); + removeFactor(path, f); addFactor(path, f, c); } public JComponent getFactorComponent(String path){ return factorComponent.get(path); } - public void removeFactor(String path){ - factors.remove(path); - factorComponent.remove(path); + public void removeFactor(String path, Factor f){ + factors.remove(path + f.getName()); + factorComponent.remove(path + f.getName()); designPlan.setFactors(getFactors()); }