package demo37;
import org.openswing.swing.tree.client.TreeDataLocator;
import org.openswing.swing.message.receive.java.Response;
import javax.swing.JTree;
import java.math.BigDecimal;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import org.openswing.swing.message.receive.java.VOResponse;
import org.openswing.swing.tree.java.OpenSwingTreeNode;
import javax.swing.event.TreeWillExpandListener;
import javax.swing.event.TreeExpansionEvent;
/**
* <p>Title: OpenSwing Demo</p>
* <p>Description: Tree-table data locator</p>
* <p>Copyright: Copyright (C) 2006 Mauro Carniel</p>
* <p> </p>
* @author Mauro Carniel
* @version 1.0
*/
public class TreeGridDataLocator extends TreeDataLocator implements TreeWillExpandListener {
JTree t = null;
public TreeGridDataLocator() {
}
/**
* Method called by the TreePanel to fill the tree.
* @return a VOReponse containing a DefaultTreeModel object
*/
public Response getTreeModel(JTree tree) {
t = tree;
tree.removeTreeWillExpandListener(this);
tree.addTreeWillExpandListener(this);
// only first level nodes are initially fetched
TestVO vo = new TestVO();
vo.setDescription("Product xxx");
vo.setItemCode("XXX");
vo.setPrice(new BigDecimal(110));
vo.setQty(new BigDecimal(1));
vo.setHasChildren(true);
DefaultMutableTreeNode root = new OpenSwingTreeNode(vo);
DefaultTreeModel model = new DefaultTreeModel(root);
for(int i=1;i<=10;i++) {
vo = new TestVO();
vo.setDescription("Component L"+i);
vo.setItemCode("L"+i);
vo.setHasChildren(i%2==0);
vo.setPrice(new BigDecimal(Math.ceil(Math.random()*10)));
vo.setQty(new BigDecimal(i));
DefaultMutableTreeNode node = new OpenSwingTreeNode(vo);
root.add(node);
}
return new VOResponse(model);
}
/**
* treeWillCollapse
*
* @param event TreeExpansionEvent
*/
public void treeWillCollapse(TreeExpansionEvent event) {
}
/**
* treeWillExpand
*
* @param event TreeExpansionEvent
*/
public void treeWillExpand(TreeExpansionEvent event) {
DefaultMutableTreeNode nodeToExpand = (DefaultMutableTreeNode)event.getPath().getLastPathComponent();
TestVO parentVO = (TestVO)nodeToExpand.getUserObject();
TestVO vo;
if (parentVO.isHasChildren() && nodeToExpand.getChildCount()==0)
for(int i=1;i<=10;i++) {
vo = new TestVO();
vo.setDescription("Component "+parentVO.getItemCode()+"."+i);
vo.setItemCode(parentVO.getItemCode()+"."+i);
vo.setHasChildren(nodeToExpand.getLevel()<5);
vo.setPrice(new BigDecimal(Math.ceil(Math.random()*10)));
vo.setQty(new BigDecimal(i));
DefaultMutableTreeNode node = new OpenSwingTreeNode(vo);
nodeToExpand.add(node);
}
}
}