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; } }