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());