|
|||||||||
| Home >> All >> java >> [ beans overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.beans
Interface PropertyEditor

- All Known Implementing Classes:
- PropertyEditorSupport
- public interface PropertyEditor
PropertyEditors are custom GUI editors for specific types of values. A PropertyEditor can be used, for example, if you are editing a type of value that can be more easily represented graphically, such as a Point, or one that can be more easily represented by a list, such as a boolean (true/false).
A PropertyEditor must be able to display its contents when asked to and be able to allow the user to change its underlying field value. However, it is not the PropertyEditor's responsibility to make the change to the underlying Object; in fact, the PropertyEditor does not even know about the Object it is actually editing--only about the property it is currently editing. When a change is made to the property, the PropertyEditor must simply fire a PropertyChangeEvent and allow the RAD tool to actually set the property in the underlying Bean.
PropertyEditors should not change the Objects they are given by setValue(). These Objects may or may not be the actual Objects which are properties of the Bean being edited. Instead, PropertyEditors should create a new Object and fire a PropertyChangeEvent with the old and new values.
PropertyEditors also must support the ability to return a Java initialization string. See the getJavaInitializationString() method for details.
There are several different ways a PropertyEditor may display and control editing of its value. When multiple types of input and display are given by a single PropertyEditor, the RAD tool may decide which of the call to support. Some RAD tools may even be text-only, so even if you support a graphical set and get, it may choose the text set and get whenever it can.
- Every PropertyEditor must support getValue() and setValue(). For setValue(), the component must only support it when the argument is the same type that the PropertyEditor supports.
- Every PropertyEditor must support getJavaInitializationString().
- You may support painting the value yourself if you wish. To do this, have isPaintable() return true and implement the paintValue() method. This method does not determine in any way how the value is edited; merely how it is displayed.
- Let the caller of the PropertyEditor give the user a text input. Do this by returning a non-null String from getAsText(). If you support text input, you *must* support setAsText().
- Give the caller a set of possible values, such as "true"/"false", that the user must select from. To do this, return the list of Strings from the getTags() method. The RAD tool may choose to implement the user input any way it wishes, and only guarantees that setAsText() will only be called with one of the Strings returned from getTags().
- You may support a whole custom editing control by supporting getCustomEditor(). To do this, return true from supportsCustomEditor() and return a Component that does the job. It is the component's job, or the PropertyEditor's job, to make sure that when the editor changes its value, the PropertyChangeEvent is thrown.
A PropertyChangeEvent should be thrown from the PropertyEditor whenever a bound property (a property PropertyDescriptor.isBound() set to true) changes. When this happens, the editor itself should *not* change the value itself, but rather allow the RAD tool to call setValue() or setAsText().
- Since:
- JDK1.1
- Version:
- 1.1.0, 30 June 1998
| Method Summary | |
void |
addPropertyChangeListener(PropertyChangeListener listener)
Adds a property change listener to this PropertyEditor. |
java.lang.String |
getAsText()
Get the value of this property in String format. |
java.awt.Component |
getCustomEditor()
The RAD tool calls this to grab the component that can edit this type. |
java.lang.String |
getJavaInitializationString()
Get a Java language-specific String which could be used to create an Object of the specified type. |
java.lang.String[] |
getTags()
Get a list of possible Strings which this property type can have. |
java.lang.Object |
getValue()
Accessor method to get the current value the PropertyEditor is working with. |
boolean |
isPaintable()
The RAD tool calls this to find out whether the PropertyEditor can paint itself. |
void |
paintValue(java.awt.Graphics g,
java.awt.Rectangle bounds)
The RAD tool calls this to paint the actual value of the property. |
void |
removePropertyChangeListener(PropertyChangeListener listener)
Removes a property change listener from this PropertyEditor. |
void |
setAsText(java.lang.String text)
Set the value of this property using a String. |
void |
setValue(java.lang.Object value)
Called by the RAD tool to set the value of this property for the PropertyEditor. |
boolean |
supportsCustomEditor()
The RAD tool calls this to find out whether the PropertyEditor supports a custom component to edit and display itself. |
| Method Detail |
setValue
public void setValue(java.lang.Object value)
- Called by the RAD tool to set the value of this property for the PropertyEditor.
If the property type is native, it should be wrapped in the appropriate
wrapper type.
getValue
public java.lang.Object getValue()
- Accessor method to get the current value the PropertyEditor is working with.
If the property type is native, it will be wrapped in the appropriate
wrapper type.
setAsText
public void setAsText(java.lang.String text) throws java.lang.IllegalArgumentException
- Set the value of this property using a String.
Whether or not this PropertyEditor is editing a String type, this converts
the String into the type of the PropertyEditor.
getAsText
public java.lang.String getAsText()
- Get the value of this property in String format.
Many times this can simply use Object.toString().
Return null if you do not support getAsText()/setAsText().
setAsText(getAsText())should be valid; i.e. the stuff you spit out in getAsText() should be able to go into setAsText().
getTags
public java.lang.String[] getTags()
- Get a list of possible Strings which this property type can have.
The value of these will be used by the RAD tool to construct some sort
of list box or to check text box input, and the resulting String passed
to setAsText() should be one of these. Note, however, that like most things
with this mammoth, unwieldy interface, this is not guaranteed. Thus, you
must check the value in setAsText() anyway.
isPaintable
public boolean isPaintable()
- The RAD tool calls this to find out whether the PropertyEditor can paint itself.
paintValue
public void paintValue(java.awt.Graphics g, java.awt.Rectangle bounds)
- The RAD tool calls this to paint the actual value of the property.
The Graphics context will have the same current font, color, etc. as the
parent Container. You may safely change the font, color, etc. and not
change them back.
This method should do a silent no-op if isPaintable() is false.
supportsCustomEditor
public boolean supportsCustomEditor()
- The RAD tool calls this to find out whether the PropertyEditor supports a custom component to edit and display itself.
getCustomEditor
public java.awt.Component getCustomEditor()
- The RAD tool calls this to grab the component that can edit this type.
The component may be painted anywhere the RAD tool wants to paint it--
even in its own window.
The component must hook up with the PropertyEditor and, whenever a change to the value is made, fire a PropertyChangeEvent to the source.
addPropertyChangeListener
public void addPropertyChangeListener(PropertyChangeListener listener)
- Adds a property change listener to this PropertyEditor.
removePropertyChangeListener
public void removePropertyChangeListener(PropertyChangeListener listener)
- Removes a property change listener from this PropertyEditor.
getJavaInitializationString
public java.lang.String getJavaInitializationString()
- Get a Java language-specific String which could be used to create an Object
of the specified type. Every PropertyEditor must support this.
The reason for this is that while most RAD tools will serialize the Beans and deserialize them at runtime, some RAD tools will generate code that creates the Beans. Examples of Java initialization strings would be:
2"I am a String"new MyObject(2, "String", new StringBuffer())
|
|||||||||
| Home >> All >> java >> [ beans overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC