1. package org.jr.swing.tree;
  2. import java.util.*;
  3. import javax.swing.tree.*;
  4. public class CheckNode extends DefaultMutableTreeNode {
  5. public final static int SINGLE_SELECTION = 0;
  6. public final static int CHILD_ALSO_SELECTION = 1;
  7. protected int selectionMode;
  8. protected boolean isSelected;
  9. public CheckNode() {
  10. this(null,true,false);
  11. }
  12. public CheckNode(Object userObject) {
  13. this(userObject, true, false);
  14. }
  15. public CheckNode(Object userObject, boolean allowsChildren
  16. , boolean isSelected) {
  17. super(userObject, allowsChildren);
  18. this.isSelected = isSelected;
  19. setSelectionMode(CHILD_ALSO_SELECTION);
  20. }
  21. public void setSelectionMode(int mode) {
  22. selectionMode = mode;
  23. }
  24. public int getSelectionMode() {
  25. return selectionMode;
  26. }
  27. public void setSelected(boolean isSelected) {
  28. this.isSelected = isSelected;
  29. if ((selectionMode == CHILD_ALSO_SELECTION)
  30. && (children != null)) {
  31. Enumeration enum = children.elements();
  32. while (enum.hasMoreElements()) {
  33. CheckNode node = (CheckNode)enum.nextElement();
  34. node.setSelected(isSelected);
  35. }
  36. }
  37. }
  38. public boolean isSelected() {
  39. return isSelected;
  40. }
  41. public void setUserObject(Object obj) {
  42. if (obj instanceof Boolean) {
  43. setSelected(((Boolean)obj).booleanValue());
  44. } else {
  45. super.setUserObject(obj);
  46. }
  47. }
  48. }