package menuPopupBug; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import com.icesoft.faces.component.tree.IceUserObject; import java.util.List; import java.util.LinkedList; import java.util.Enumeration; public class MenuPopupBug { private DefaultTreeModel treeModel; public MenuPopupBug() { init(); } protected void init() { DefaultMutableTreeNode rootNode = addNode(null, "Root"); this.treeModel = new DefaultTreeModel(rootNode); for (int i = 0; i < 1; i++) { DefaultMutableTreeNode node = addNode( rootNode, "Node" + i ); for (int j = 0; j < 10; j++) { addNode( node, "Subnode" + j ); } } } private DefaultMutableTreeNode addNode(DefaultMutableTreeNode parent, String title ) { DefaultMutableTreeNode node = new DefaultMutableTreeNode(); IceUserObject userObject = new IceUserObject(node); node.setUserObject(userObject); userObject.setText(title); userObject.setLeaf(false); userObject.setExpanded(true); node.setAllowsChildren(true); // finally add the node to the parent. if (parent != null) { parent.add(node); } return node; } public DefaultTreeModel getTreeModel() { return this.treeModel; } public List getContents(){ List result = new LinkedList(); DefaultMutableTreeNode rootNode = (DefaultMutableTreeNode)this.treeModel.getRoot(); if ( rootNode != null ){ Enumeration enumeration = rootNode.preorderEnumeration(); while (enumeration.hasMoreElements()) { DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode)enumeration.nextElement(); result.add( ((IceUserObject)treeNode.getUserObject()).getText() ); } } return result; } }