/** * $RCSfile: ,v $ * $Revision: $ * $Date: $ * * Copyright (C) 2004-2011 Jive Software. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jivesoftware.spark.component; import java.util.Enumeration; import javax.swing.Icon; /** * Creates one tree node with a check box. */ public class CheckNode extends JiveTreeNode { private static final long serialVersionUID = -5071520630042479195L; /** * Mode to use if the node should not expand when selected. */ public static final int SINGLE_SELECTION = 0; /** * Mode to use if the node should be expaned if selected and if possible. */ public static final int DIG_IN_SELECTION = 4; private int selectionMode; private boolean isSelected; private String fullName; private Object associatedObject; /** * Construct an empty node. */ public CheckNode() { this(null); } /** * Creates a new CheckNode with the specified name. * * @param userObject the name to use. */ public CheckNode(Object userObject) { this(userObject, true, false); } /** * Constructs a new CheckNode. * * @param userObject the name to use. * @param allowsChildren true if it allows children. * @param isSelected true if it is to be selected. */ public CheckNode(Object userObject, boolean allowsChildren, boolean isSelected) { super(userObject, allowsChildren); this.isSelected = isSelected; setSelectionMode(DIG_IN_SELECTION); } /** * Constructs a new CheckNode. * * @param userObject the name to use. * @param allowsChildren true if it allows children. * @param icon the icon to use. */ public CheckNode(String userObject, boolean allowsChildren, Icon icon){ super(userObject, allowsChildren, icon); setSelectionMode(DIG_IN_SELECTION); } /** * Constructs a new CheckNode. * * @param userObject the name to use. * @param allowsChildren true if it allows children. * @param isSelected true if it is selected. * @param name the identifier name. */ public CheckNode(Object userObject, boolean allowsChildren, boolean isSelected, String name) { super(userObject, allowsChildren); this.isSelected = isSelected; setSelectionMode(DIG_IN_SELECTION); fullName = name; } /** * Returns the full name of the node. * * @return the full name of the node. */ public String getFullName() { return fullName; } /** * Sets the selection mode. * * @param mode the selection mode to use. */ public void setSelectionMode(int mode) { selectionMode = mode; } /** * Returns the selection mode. * * @return the selection mode. */ public int getSelectionMode() { return selectionMode; } /** * Selects or deselects node. * * @param isSelected true if the node should be selected, false otherwise. */ public void setSelected(boolean isSelected) { this.isSelected = isSelected; if (selectionMode == DIG_IN_SELECTION && children != null) { Enumeration<CheckNode> nodeEnum = children.elements(); while (nodeEnum.hasMoreElements()) { CheckNode node = nodeEnum.nextElement(); node.setSelected(isSelected); } } } /** * Returns true if the node is selected. * * @return true if the node is selected. */ public boolean isSelected() { return isSelected; } /** * Returns the associated object of this node. * * @return the associated object. */ public Object getAssociatedObject() { return associatedObject; } /** * Sets an assoicated object for this node. * * @param associatedObject the associated object set. */ public void setAssociatedObject(Object associatedObject) { this.associatedObject = associatedObject; } }