~ubuntu-branches/ubuntu/precise/weka/precise

« back to all changes in this revision

Viewing changes to weka/gui/ensembleLibraryEditor/tree/DefaultNode.java

  • Committer: Bazaar Package Importer
  • Author(s): Soeren Sonnenburg
  • Date: 2008-02-24 09:18:45 UTC
  • Revision ID: james.westby@ubuntu.com-20080224091845-1l8zy6fm6xipbzsr
Tags: upstream-3.5.7+tut1
ImportĀ upstreamĀ versionĀ 3.5.7+tut1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *    This program is free software; you can redistribute it and/or modify
 
3
 *    it under the terms of the GNU General Public License as published by
 
4
 *    the Free Software Foundation; either version 2 of the License, or
 
5
 *    (at your option) any later version.
 
6
 *
 
7
 *    This program is distributed in the hope that it will be useful,
 
8
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
9
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
10
 *    GNU General Public License for more details.
 
11
 *
 
12
 *    You should have received a copy of the GNU General Public License
 
13
 *    along with this program; if not, write to the Free Software
 
14
 *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
15
 */
 
16
 
 
17
/*
 
18
 *    DefaultNode.java
 
19
 *    Copyright (C) 2006 Robert Jung
 
20
 *
 
21
 */
 
22
 
 
23
package weka.gui.ensembleLibraryEditor.tree;
 
24
 
 
25
import weka.gui.EnsembleLibraryEditor;
 
26
 
 
27
import java.beans.PropertyChangeEvent;
 
28
import java.beans.PropertyChangeListener;
 
29
import java.beans.PropertyEditor;
 
30
 
 
31
import javax.swing.tree.DefaultMutableTreeNode;
 
32
 
 
33
/**
 
34
 * This class is responsible for representing objects that we haven't explicitly
 
35
 * written custom tree node editors for. In other words - Objects that are
 
36
 * "weird". It didn't make sense for us to try to come up with a nice tree
 
37
 * representation for absolutely everything, e.g. CostMatrixes or ArrayLists.
 
38
 * This class is responsible for representing Classifier parameter values that
 
39
 * are not numbers, an enumeration of values (e.g. true/false), or Objects that
 
40
 * have their own GenericObjectEditors (like other Classifiers). So in these
 
41
 * cases we can just use the default editor that came with the object.
 
42
 * 
 
43
 * @author  Robert Jung (mrbobjung@gmail.com)
 
44
 * @version $Revision: 1.1 $
 
45
 */
 
46
public class DefaultNode
 
47
  extends DefaultMutableTreeNode
 
48
  implements PropertyChangeListener {
 
49
  
 
50
  /** for serialization */
 
51
  private static final long serialVersionUID = -2182147677358461880L;
 
52
 
 
53
  /** the name of this node */
 
54
  private String m_Name;
 
55
  
 
56
  /** the tip text for our node editor to display */
 
57
  private String m_ToolTipText;
 
58
  
 
59
  /** The default PropertyEditor that was supplied for this node */
 
60
  private PropertyEditor m_PropertyEditor;
 
61
  
 
62
  /**
 
63
   * The constructor initializes the members of this node.
 
64
   * 
 
65
   * @param name
 
66
   *            the name of the value represented by this node
 
67
   * @param toolTipText
 
68
   *            the tool tip text to be displayed
 
69
   * @param value
 
70
   *            the intial value
 
71
   * @param propertyEditor
 
72
   *            the editor provided for this node
 
73
   */
 
74
  public DefaultNode(String name, String toolTipText, Object value,
 
75
      PropertyEditor propertyEditor) {
 
76
    
 
77
    super(value);
 
78
    
 
79
    this.m_Name = name;
 
80
    this.m_ToolTipText = toolTipText;
 
81
    this.m_PropertyEditor = propertyEditor;
 
82
    
 
83
    m_PropertyEditor.addPropertyChangeListener(this);
 
84
    
 
85
  }
 
86
  
 
87
  /**
 
88
   * this returns the property editor that was provided for this object. This
 
89
   * propertyEditor object is initially chosen inside of the GenericObjectNode
 
90
   * updateTree() method if you are interested in where it comes from.
 
91
   * 
 
92
   * @return the default editor for this node
 
93
   */
 
94
  public PropertyEditor getEditor() {
 
95
    m_PropertyEditor.setValue(this.getUserObject());
 
96
    return m_PropertyEditor;
 
97
  }
 
98
  
 
99
  /**
 
100
   * getter for the tooltip text
 
101
   * 
 
102
   * @return tooltip text
 
103
   */
 
104
  public String getToolTipText() {
 
105
    return m_ToolTipText;
 
106
  }
 
107
  
 
108
  /**
 
109
   * gets the name of the parameter value represented by this node
 
110
   * 
 
111
   * @return the name of this parameter
 
112
   */
 
113
  public String getName() {
 
114
    return m_Name;
 
115
  }
 
116
  
 
117
  /**
 
118
   * this is a simple filter for the setUserObject method. We basically don't
 
119
   * want null values to be passed in.
 
120
   * 
 
121
   * @param o           the user object
 
122
   */
 
123
  public void setUserObject(Object o) {
 
124
    if (o != null)
 
125
      super.setUserObject(o);
 
126
  }
 
127
  
 
128
  /**
 
129
   * ToString method simply prints out the user object toString for this node
 
130
   * 
 
131
   * @return            a string representation
 
132
   */
 
133
  public String toString() {
 
134
    return getClass().getName() + "[" + getUserObject().toString() + "]";
 
135
  }
 
136
  
 
137
  /**
 
138
   * This implements the PropertyChangeListener for this node that gets
 
139
   * registered with its Editor. All we really have to do is change the Object
 
140
   * value stored internally at this node when its editor says the value
 
141
   * changed.
 
142
   * 
 
143
   * @param evt         the event
 
144
   */
 
145
  public void propertyChange(PropertyChangeEvent evt) {
 
146
    
 
147
    Object source = evt.getSource();
 
148
    
 
149
    Object value = EnsembleLibraryEditor.getEditorValue(source);
 
150
    
 
151
    /*
 
152
     * //was useful for debugging when we encountered some strange value
 
153
     * types //these printouts tell you the classes that the editor is
 
154
     * supplying System.out.println("prop name: " + evt.getPropertyName() +
 
155
     * "new value: " + evt.getNewValue() + "old value: " +
 
156
     * evt.getOldValue()); System.out.println("prop val: " +
 
157
     * source.toString() + " expected val: " + value);
 
158
     */
 
159
    setUserObject(value);
 
160
  }
 
161
}
 
 
b'\\ No newline at end of file'