controlp5/src/controlP5/ControllerProperty.java

177 lines
3.9 KiB
Java
Executable File

package controlP5;
/**
* controlP5 is a processing gui library.
*
* 2006-2015 by Andreas Schlegel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*
* @author Andreas Schlegel (http://www.sojamo.de)
* @modified ##date##
* @version ##version##
*
*/
import java.io.Serializable;
/**
* A controller property saves the value, address, getter and setter of a registered controller.
*
* @example controllers/ControlP5properties
*/
public class ControllerProperty implements Serializable , Cloneable {
private static final long serialVersionUID = 4506431150330867327L;
private String setter;
private String getter;
private Class< ? > type;
private Object value;
private String address;
private int id;
private transient boolean active;
private transient ControllerInterface< ? > controller;
ControllerProperty( ControllerInterface< ? > theController , String theSetter , String theGetter ) {
setController( theController );
setAddress( theController.getAddress( ) );
setSetter( theSetter );
setGetter( theGetter );
setActive( true );
setId( theController.getId( ) );
}
@Override protected Object clone( ) throws CloneNotSupportedException {
ControllerProperty clone = ( ControllerProperty ) super.clone( );
clone.setSetter( getSetter( ) );
clone.setGetter( getGetter( ) );
clone.setType( getType( ) );
clone.setValue( getValue( ) );
clone.setAddress( getAddress( ) );
clone.setActive( isActive( ) );
clone.setController( getController( ) );
clone.setId( getId( ) );
return clone;
}
/**
* @exclude {@inheritDoc}
*/
@Override public boolean equals( Object o ) {
if ( this == o ) {
return true;
}
if ( o == null || getClass( ) != o.getClass( ) ) {
return false;
}
ControllerProperty p = ( ControllerProperty ) o;
if ( !address.equals( p.address ) || !setter.equals( p.setter ) || !getter.equals( p.getter ) ) {
return false;
}
return true;
}
/**
* @exclude {@inheritDoc}
*/
@Override public int hashCode( ) {
int result = 17;
result = 37 * result + ( address != null ? address.hashCode( ) : 0 );
result = 37 * result + ( setter != null ? setter.hashCode( ) : 0 );
result = 37 * result + ( getter != null ? getter.hashCode( ) : 0 );
return result;
}
public void disable( ) {
active = false;
}
public void enable( ) {
active = true;
}
@Override public String toString( ) {
return address + " " + setter + ", " + getter;
}
void setAddress( String theAddress ) {
address = theAddress;
}
String getAddress( ) {
return address;
}
ControllerInterface< ? > getController( ) {
return controller;
}
void setController( ControllerInterface< ? > theController ) {
controller = theController;
}
Object getValue( ) {
return value;
}
void setValue( Object theValue ) {
value = theValue;
}
Class< ? > getType( ) {
return type;
}
void setType( Class< ? > theType ) {
type = theType;
}
boolean isActive( ) {
return active;
}
void setActive( boolean theValue ) {
active = theValue;
}
String getGetter( ) {
return getter;
}
void setGetter( String theValue ) {
getter = theValue;
}
String getSetter( ) {
return setter;
}
void setSetter( String theValue ) {
setter = theValue;
}
int getId( ) {
return id;
}
void setId( int theValue ) {
id = theValue;
}
}