package games.strategy.engine.data.properties;
import javax.swing.JComponent;
/**
* An editable property.
*/
public interface IEditableProperty {
/**
* get the name of the property.
*
* @return the name
*/
String getName();
/**
* Get the value of the property.
*
* @return the value
*/
Object getValue();
/**
* @return is the object a valid object for setting as our value.
*/
boolean validate(Object value);
/**
* Set the value of the property (programmatically), GUI would normally use the editor.
*
* @param value
* the new value
* @throws ClassCastException
* if the type of value is wrong
*/
void setValue(Object value) throws ClassCastException;
/**
* @return component used to edit this property.
*/
JComponent getEditorComponent();
/**
* Get the view (read only) component for this property.
*/
JComponent getViewComponent();
/**
* Description of what this property is, can be used for tooltip.
*/
String getDescription();
int getRowsNeeded();
}