/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * CheckBoxNode.java * Copyright (C) 2006 Robert Jung * */ package weka.gui.ensembleLibraryEditor.tree; import javax.swing.tree.DefaultMutableTreeNode; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; /** * This class is responsible for implementing the underlying logic of * tree nodes representing a single nominal value. This is either going to * be true/false values or an enumeration of values defined by the model. * Check box nodes are relatively simple in that they are simply toggled * on or off by the user indicating whether or not they are to be used. * * @author Robert Jung (mrbobjung@gmail.com) * @version $Revision: 1.1 $ */ public class CheckBoxNode extends DefaultMutableTreeNode implements ItemListener { /** for serialization */ private static final long serialVersionUID = 727140674668443817L; /** tracks whether this node is currently selected as a model parameter */ private boolean m_Selected; /** the tip text for our node editor to display */ private String m_ToolTipText; /** * The constructor initializes the members of this node. Note that * the text String is stored as the userObject. * * @param name the name of this attribute * @param selected the initial value of this node * @param toolTipText the toolTipText to be displayed */ public CheckBoxNode(String name, boolean selected, String toolTipText) { super(name); setName(name); this.m_Selected = selected; this.m_ToolTipText = toolTipText; } /** * getter for the node state * * @return whether or not this node is selected */ public boolean getSelected() { return m_Selected; } /** * setter for the node state * * @param newValue the new selected state */ public void setSelected(boolean newValue) { m_Selected = newValue; } /** * sets whether the box is selected * * @param newValue if true the box will be selected */ public void setBoxSelected(boolean newValue) { m_Selected = newValue; } /** * gets the name of the parameter value represented by this node * which is stored as the node's user object * * @return the name of this parameter */ public String getName() { return (String) getUserObject().toString(); } /** * sets the name of the parameter value represented by this node * and stores it as the node's user object * * @param newValue the new name */ public void setName(String newValue) { setUserObject(newValue); } /** * getter for the tooltip text * * @return tooltip text */ public String getToolTipText() { return m_ToolTipText; } /** * this is a simple filter for the setUserObject method. We basically * don't want null values to be passed in. * * @param o the user object */ public void setUserObject(Object o) { if (o != null) super.setUserObject(o); } /** * ToString methods prints out the toString method of this nodes user * object * * @return a string representation */ public String toString() { return getClass().getName() + "[" + getUserObject() + "/" + m_Selected + "]"; } /** * This is the listener that fires when the check box is actually toggled. * Here we just want to change the selected state accordingly. * * @param e the event */ public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { setBoxSelected(true); } else if (e.getStateChange() == ItemEvent.DESELECTED) { setBoxSelected(false); } } }