Author: chatellier Date: 2009-06-02 08:50:57 +0000 (Tue, 02 Jun 2009) New Revision: 2298 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityCalculator.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/DesignPlan.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculatorRandomMock.java isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModelTest.java Log: Refactor sensitivity tree model (remove use of nodes) Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityCalculator.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityCalculator.java 2009-06-02 08:50:14 UTC (rev 2297) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityCalculator.java 2009-06-02 08:50:57 UTC (rev 2298) @@ -5,18 +5,14 @@ import java.util.Iterator; import java.util.List; -import org.apache.commons.beanutils.BeanUtils; -import org.apache.commons.beanutils.ConvertUtilsBean; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.j2r.REngine; import org.codelutin.j2r.RException; import org.codelutin.j2r.RProxy; -import org.codelutin.topia.persistence.TopiaEntity; import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain; -import fr.ifremer.isisfish.util.ConverterUtil; public abstract class AbstractSensitivityCalculator implements SensitivityCalculator { @@ -47,7 +43,7 @@ String isisfactors = "isis.factors<-data.frame(nomFacteur,Nominal,Continu,Binf,Bsup)"; //Create the vectors - List<Factor> factors = plan.getFactors(); + List<Factor<?, ?>> factors = plan.getFactors(); for (int i = 0; i < factors.size(); i++) { Factor factor = factors.get(i); if (i != 0) { Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/DesignPlan.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/DesignPlan.java 2009-06-02 08:50:14 UTC (rev 2297) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/DesignPlan.java 2009-06-02 08:50:57 UTC (rev 2298) @@ -40,13 +40,13 @@ private static final long serialVersionUID = 977975461743758075L; /** Liste des facteurs a utiliser */ - protected List<Factor> factors; + protected List<Factor<?, ?>> factors; /** * Constructor. */ public DesignPlan() { - factors = new ArrayList<Factor>(); + factors = new ArrayList<Factor<?, ?>>(); } /** @@ -54,7 +54,7 @@ * * @return factors list */ - public List<Factor> getFactors() { + public List<Factor<?, ?>> getFactors() { return factors; } @@ -63,7 +63,7 @@ * * @param factors the factors list to set */ - public void setFactors(List<Factor> factors) { + public void setFactors(List<Factor<?, ?>> factors) { this.factors = factors; } @@ -74,7 +74,7 @@ */ public void accept(DesignPlanVisitor visitor) { visitor.start(this); - for(Factor factor : factors) { + for (Factor<?, ?> factor : factors) { visitor.visit(this, factor); } visitor.end(this); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java 2009-06-02 08:50:14 UTC (rev 2297) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java 2009-06-02 08:50:57 UTC (rev 2298) @@ -22,8 +22,6 @@ import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; 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.visitor.FactorVisitor; /** @@ -136,8 +134,7 @@ /** * Set comment. * - * @param the - * comment to set + * @param comment comment to set */ public void setComment(String comment) { this.comment = comment; Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java 2009-06-02 08:50:14 UTC (rev 2297) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeCellRenderer.java 2009-06-02 08:50:57 UTC (rev 2298) @@ -24,7 +24,7 @@ import javax.swing.JLabel; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.TreeCellRenderer; import fr.ifremer.isisfish.simulator.sensitivity.Factor; import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain; @@ -37,10 +37,8 @@ * * Last update : $Date: 9 mars 2009 $ * By : $Author: chatellier $ - * - * TODO extends AbstractTreeCellRenderer and remove DefaultMutableTreeNode reference */ -public class FactorTreeCellRenderer extends DefaultTreeCellRenderer { +public class FactorTreeCellRenderer extends JLabel implements TreeCellRenderer { /** serialVersionUID. */ private static final long serialVersionUID = 1686424876690392268L; @@ -52,30 +50,23 @@ public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { - - JLabel c = (JLabel)super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); - if (value instanceof DefaultMutableTreeNode) { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; - Object userObject = node.getUserObject(); + if (value instanceof List) { + setText("Facteurs : "); + } + else if (value instanceof Factor) { + Factor<? ,?> factor = (Factor<?, ?>)value; - if (userObject instanceof List) { - c.setText("Facteurs : "); + if (factor.getDomain() instanceof EquationContinuousDomain) { + EquationContinuousDomain domain = (EquationContinuousDomain)factor.getDomain(); + setText(factor.getName() + "." + domain.getVariableName()); } - else if (userObject instanceof Factor) { - Factor factor = (Factor)userObject; - //c = new JLabel(factor.getName()); - if (factor.getDomain() instanceof EquationContinuousDomain){ - EquationContinuousDomain domain = (EquationContinuousDomain)factor.getDomain(); - c.setText(factor.getName() + "." + domain.getVariableName()); - } - else { - c.setText(factor.getName()); - } + else { + setText(factor.getName()); } } - return c; + return this; } } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModel.java 2009-06-02 08:50:14 UTC (rev 2297) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModel.java 2009-06-02 08:50:57 UTC (rev 2298) @@ -18,11 +18,13 @@ package fr.ifremer.isisfish.ui.sensitivity; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; -import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.DefaultTreeModel; -import javax.swing.tree.TreeNode; +import javax.swing.event.TreeModelListener; +import javax.swing.tree.TreeModel; +import javax.swing.tree.TreePath; import fr.ifremer.isisfish.simulator.sensitivity.Factor; @@ -35,83 +37,70 @@ * Last update : $Date: 2008-06-13 11:05:57 +0200 (ven., 13 juin 2008) * $ By : $Author: chatellier $ */ -public class FactorTreeModel extends DefaultTreeModel { +public class FactorTreeModel implements TreeModel { /** serialVersionUID. */ private static final long serialVersionUID = 593284613450915826L; + /** Tree model root. */ + protected List<Factor<?,?>> factorsList; + + /** Tree model listeners. */ + protected Collection<TreeModelListener> modelListeners; + /** * Constructor. * - * @param root root node + * @param factorsList factors list */ - public FactorTreeModel(TreeNode root) { - super(root); + public FactorTreeModel(List<Factor<?,?>> factorsList) { + this.factorsList = factorsList; + modelListeners = new ArrayList<TreeModelListener>(); } /* - * @see javax.swing.tree.DefaultTreeModel#getChild(java.lang.Object, int) + * @see javax.swing.tree.TreeModel#getChild(java.lang.Object, int) */ @Override public Object getChild(Object parent, int index) { Object value = null; - if (parent instanceof DefaultMutableTreeNode) { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) parent; - Object userObject = node.getUserObject(); - - if (userObject instanceof List) { - Object localUserObject = ((DefaultMutableTreeNode)root).getUserObject(); - List<Factor> factors = (List<Factor>)localUserObject; - value = new DefaultMutableTreeNode(factors.get(index)); - } + if (parent instanceof List) { + List<Factor<?,?>> factors = (List<Factor<?,?>>)parent; + value = factors.get(index); } return value; } /* - * @see org.jdesktop.swingx.treetable.DefaultTreeTableModel#getChildCount(java.lang.Object) + * @see javax.swing.tree.TreeModel#getChildCount(java.lang.Object) */ @Override public int getChildCount(Object parent) { int childCount = 0; - if (parent instanceof DefaultMutableTreeNode) { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) parent; - Object userObject = node.getUserObject(); - - if (userObject instanceof List) { - Object localUserObject = ((DefaultMutableTreeNode)root).getUserObject(); - List<Factor> factors = (List<Factor>)localUserObject; - childCount = factors.size(); - } + if (parent instanceof List) { + List<Factor<?,?>> factors = (List<Factor<?,?>>)parent; + childCount = factors.size(); } return childCount; } /* - * @see javax.swing.tree.DefaultTreeModel#getIndexOfChild(java.lang.Object, java.lang.Object) + * @see javax.swing.tree.TreeModel#getIndexOfChild(java.lang.Object, java.lang.Object) */ @Override public int getIndexOfChild(Object parent, Object child) { int childIndex = -1; - if (parent instanceof DefaultMutableTreeNode) { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) parent; - Object userObject = node.getUserObject(); - DefaultMutableTreeNode childNode = (DefaultMutableTreeNode) child; - Object childUserObject = childNode.getUserObject(); - - if (userObject instanceof List) { - Object localUserObject = ((DefaultMutableTreeNode)root).getUserObject(); - List<Factor> factors = (List<Factor>)localUserObject; - childIndex = factors.indexOf(childUserObject); - } + if (parent instanceof List) { + List<Factor<?,?>> factors = (List<Factor<?,?>>)parent; + childIndex = factors.indexOf(child); } return childIndex; @@ -125,4 +114,36 @@ return getChildCount(node) == 0; } + /* + * @see javax.swing.tree.TreeModel#addTreeModelListener(javax.swing.event.TreeModelListener) + */ + @Override + public void addTreeModelListener(TreeModelListener l) { + modelListeners.add(l); + } + + /* + * @see javax.swing.tree.TreeModel#getRoot() + */ + @Override + public Object getRoot() { + return factorsList; + } + + /* + * @see javax.swing.tree.TreeModel#removeTreeModelListener(javax.swing.event.TreeModelListener) + */ + @Override + public void removeTreeModelListener(TreeModelListener l) { + modelListeners.remove(l); + } + + /* + * @see javax.swing.tree.TreeModel#valueForPathChanged(javax.swing.tree.TreePath, java.lang.Object) + */ + @Override + public void valueForPathChanged(TreePath path, Object newValue) { + throw new RuntimeException("Not implemented"); + } + } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-06-02 08:50:14 UTC (rev 2297) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityChooserUI.jaxx 2009-06-02 08:50:57 UTC (rev 2298) @@ -153,13 +153,13 @@ return result; } }; - java.util.List<Factor> factors = getSimulAction().getFactors(); + java.util.List<Factor<?, ?>> factors = getSimulAction().getFactors(); - java.util.List<Factor> factorsContinue = new ArrayList<Factor>(); + java.util.List<Factor<?, ?>> factorsContinue = new ArrayList<Factor<?, ?>>(); java.util.List<String> factorsContinueCardinalities = new ArrayList<String>(); - for (Factor f : factors){ + for (Factor<?, ?> f : factors) { Domain domain = f.getDomain(); - if (ContinuousDomain.class.isInstance(domain)){ + if (ContinuousDomain.class.isInstance(domain)) { ContinuousDomain continuousDomain = (ContinuousDomain)domain; factorsContinue.add(f); factorsContinueCardinalities.add(continuousDomain.getCardinality() + ""); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2009-06-02 08:50:14 UTC (rev 2297) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityTabUI.jaxx 2009-06-02 08:50:57 UTC (rev 2298) @@ -49,7 +49,7 @@ getVerifier().setSensPanel(this); new fr.ifremer.isisfish.ui.sensitivity.SensitivityNavigationTreeSelectionAdapter(this); -factors.addMouseListener(new MouseListener() { +factorsTree.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { // clic droit @@ -70,23 +70,6 @@ factorSelected(); } } - - @Override - public void mousePressed(MouseEvent e) { - } - - @Override - public void mouseReleased(MouseEvent e) { - } - - @Override - public void mouseEntered(MouseEvent e) { - } - - @Override - public void mouseExited(MouseEvent e) { - } - }); protected InputAction getInputAction() { @@ -106,15 +89,14 @@ } protected void factorSelected() { - DefaultMutableTreeNode node = (DefaultMutableTreeNode)factors.getSelectionValue(); - if (node != null) { - Object o = node.getUserObject(); - if (Factor.class.isInstance(o)) { - Factor f = (Factor)o; + Object selectedObject = factorsTree.getSelectionValue(); + if (selectedObject != null) { + if (selectedObject instanceof Factor) { + Factor<?, ?> selectedFactor = (Factor<?, ?>)selectedObject; FactorWizardUI wizard = new FactorWizardUI(this); - JComponent c = getSimulAction().getFactorComponent(f); - if (c != null) { - wizard.initExisting(c, f); + JComponent component = getSimulAction().getFactorComponent(selectedFactor); + if (component != null) { + wizard.initExisting(component, selectedFactor); wizard.pack(); wizard.setVisible(true); } @@ -154,25 +136,24 @@ navigation.setModel(model); } public void setFactorModel() { - TreeNode root = new DefaultMutableTreeNode(getSimulAction().getFactors()); - factors.setRootVisible(true); - FactorTreeModel model = new FactorTreeModel(root); - factors.setModel(model); - factors.setCellRenderer(new FactorTreeCellRenderer()); + java.util.List<Factor<?, ?>> factors = getSimulAction().getFactors(); + FactorTreeModel model = new FactorTreeModel(factors); + factorsTree.setModel(model); + factorsTree.setRootVisible(true); + factorsTree.setCellRenderer(new FactorTreeCellRenderer()); getParentContainer(SensitivityUI.class).getSensitivityChooserUI().setFactorCardinalityTableModel(); } protected void deleteSelectedFactors() { - DefaultMutableTreeNode node = (DefaultMutableTreeNode)factors.getSelectionValue(); + Object selectedObject = factorsTree.getSelectionValue(); - if (node != null) { - Object o = node.getUserObject(); - if (o instanceof Factor) { - Factor factor = (Factor)o; + if (selectedObject != null) { + if (selectedObject instanceof Factor) { + Factor<?, ?> selectedFactor = (Factor<?, ?>)selectedObject; if (log.isDebugEnabled()) { - log.debug("Deleting factor " + factor.getName()); + log.debug("Deleting factor " + selectedFactor.getName()); } - getSimulAction().removeFactor(factor); + getSimulAction().removeFactor(selectedFactor); setFactorModel(); } } @@ -196,7 +177,7 @@ </Table> <JPanel id="factorPanel" name="factorPanel" layout='{new BorderLayout()}'> <JScrollPane constraints='BorderLayout.CENTER'> - <JTree id="factors" rootVisible="true" selectionRow='0' + <JTree id="factorsTree" rootVisible="true" selectionRow='0' model='{new DefaultTreeModel(null)}' /> </JScrollPane> </JPanel> Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-06-02 08:50:14 UTC (rev 2297) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/SimulAction.java 2009-06-02 08:50:57 UTC (rev 2298) @@ -954,15 +954,20 @@ } } - public List<Factor> getFactors() { - List<Factor> result = new ArrayList<Factor>(); - for (Map.Entry entry : factors.entrySet()) { - result.add((Factor) entry.getValue()); + /** + * Get current simulation factor list. + * + * @return factor list + */ + public List<Factor<?, ?>> getFactors() { + List<Factor<?, ?>> result = new ArrayList<Factor<?, ?>>(); + for (Map.Entry<?, ?> entry : factors.entrySet()) { + result.add((Factor<?, ?>) entry.getValue()); } return result; } - public void addFactor(Factor f, JComponent c) { + public void addFactor(Factor<?, ?> f, JComponent c) { factors.put(f.getPath() + f.getName(), f); factorComponent.put(f.getPath() + f.getName(), c); designPlan.setFactors(getFactors()); Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculatorRandomMock.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculatorRandomMock.java 2009-06-02 08:50:14 UTC (rev 2297) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculatorRandomMock.java 2009-06-02 08:50:57 UTC (rev 2298) @@ -89,7 +89,7 @@ // return result SensitivityScenarios sensitivityScenarios = new SensitivityScenarios(); - List<Factor> factors = plan.getFactors(); + List<Factor<?, ?>> factors = plan.getFactors(); for (int i = 0; i < factors.size() * 2; ++i) { Scenario scenario = new Scenario(); Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModelTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModelTest.java 2009-06-02 08:50:14 UTC (rev 2297) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/FactorTreeModelTest.java 2009-06-02 08:50:57 UTC (rev 2298) @@ -63,7 +63,7 @@ * * @return la liste des facteur */ - protected List<Factor> getFactors() { + protected List<Factor<?,?>> getFactors() { Factor<Integer, Integer> factor1 = new Factor<Integer, Integer>( "testint"); @@ -101,11 +101,10 @@ domain2.getValues().put("m1", matrix1); domain2.getValues().put("m2", matrix2); factor2.setDomain(domain2); - factor2 - .setPath("org.codelutin.math.matrix.MatrixND#563456293453#2.456347646#dim"); + factor2.setPath("org.codelutin.math.matrix.MatrixND#563456293453#2.456347646#dim"); factor2.setValueForIdentifier("m2"); - List<Factor> factors1 = new ArrayList<Factor>(); + List<Factor<?,?>> factors1 = new ArrayList<Factor<?,?>>(); factors1.add(factor1); factors1.add(factor2); @@ -118,10 +117,9 @@ @Test public void testJTreeModel() throws InterruptedException { - TreeNode root = new DefaultMutableTreeNode(getFactors()); - final JTree tree = new JTree(root); + final JTree tree = new JTree(); tree.setRootVisible(true); - FactorTreeModel model = new FactorTreeModel(root); + FactorTreeModel model = new FactorTreeModel(getFactors()); tree.setModel(model); tree.setCellRenderer(new FactorTreeCellRenderer());