b7913ceb0b
it is now general purpose. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@912 542714f4-19e9-0310-aa3c-eee0fc999fb1
168 lines
4.2 KiB
Java
168 lines
4.2 KiB
Java
//
|
|
// $Id: AttributeChangedEvent.java,v 1.11 2002/02/01 23:32:37 mdb Exp $
|
|
|
|
package com.threerings.presents.dobj;
|
|
|
|
import java.io.DataInputStream;
|
|
import java.io.DataOutputStream;
|
|
import java.io.IOException;
|
|
import java.lang.reflect.Method;
|
|
|
|
import com.threerings.presents.io.ValueMarshaller;
|
|
|
|
/**
|
|
* An attribute changed event is dispatched when a single attribute of a
|
|
* distributed object has changed. It can also be constructed to request
|
|
* an attribute change on an object and posted to the dobjmgr.
|
|
*
|
|
* @see DObjectManager#postEvent
|
|
*/
|
|
public class AttributeChangedEvent extends TypedEvent
|
|
{
|
|
/** The typed object code for this event. */
|
|
public static final short TYPE = TYPE_BASE + 1;
|
|
|
|
/**
|
|
* Constructs a new attribute changed event on the specified target
|
|
* object with the supplied attribute name and value.
|
|
*
|
|
* @param targetOid the object id of the object whose attribute has
|
|
* changed.
|
|
* @param name the name of the attribute (data member) that has
|
|
* changed.
|
|
* @param value the new value of the attribute (in the case of
|
|
* primitive types, the reflection-defined object-alternative is
|
|
* used).
|
|
*/
|
|
public AttributeChangedEvent (int targetOid, String name, Object value)
|
|
{
|
|
super(targetOid);
|
|
_name = name;
|
|
_value = value;
|
|
}
|
|
|
|
/**
|
|
* Constructs a blank instance of this event in preparation for
|
|
* unserialization from the network.
|
|
*/
|
|
public AttributeChangedEvent ()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Returns the name of the attribute that has changed.
|
|
*/
|
|
public String getName ()
|
|
{
|
|
return _name;
|
|
}
|
|
|
|
/**
|
|
* Returns the new value of the attribute.
|
|
*/
|
|
public Object getValue ()
|
|
{
|
|
return _value;
|
|
}
|
|
|
|
/**
|
|
* Returns the new value of the attribute as a short. This will fail
|
|
* if the attribute in question is not a short.
|
|
*/
|
|
public short getShortValue ()
|
|
{
|
|
return ((Short)_value).shortValue();
|
|
}
|
|
|
|
/**
|
|
* Returns the new value of the attribute as an int. This will fail if
|
|
* the attribute in question is not an int.
|
|
*/
|
|
public int getIntValue ()
|
|
{
|
|
return ((Integer)_value).intValue();
|
|
}
|
|
|
|
/**
|
|
* Returns the new value of the attribute as a long. This will fail if
|
|
* the attribute in question is not a long.
|
|
*/
|
|
public long getLongValue ()
|
|
{
|
|
return ((Long)_value).longValue();
|
|
}
|
|
|
|
/**
|
|
* Returns the new value of the attribute as a float. This will fail
|
|
* if the attribute in question is not a float.
|
|
*/
|
|
public float getFloatValue ()
|
|
{
|
|
return ((Float)_value).floatValue();
|
|
}
|
|
|
|
/**
|
|
* Returns the new value of the attribute as a double. This will fail
|
|
* if the attribute in question is not a double.
|
|
*/
|
|
public double getDoubleValue ()
|
|
{
|
|
return ((Double)_value).doubleValue();
|
|
}
|
|
|
|
/**
|
|
* Applies this attribute change to the object.
|
|
*/
|
|
public boolean applyToObject (DObject target)
|
|
throws ObjectAccessException
|
|
{
|
|
// pass the new value on to the object
|
|
target.setAttribute(_name, _value);
|
|
return true;
|
|
}
|
|
|
|
// documentation inherited
|
|
public short getType ()
|
|
{
|
|
return TYPE;
|
|
}
|
|
|
|
// documentation inherited
|
|
public void writeTo (DataOutputStream out)
|
|
throws IOException
|
|
{
|
|
super.writeTo(out);
|
|
out.writeUTF(_name);
|
|
ValueMarshaller.writeTo(out, _value);
|
|
}
|
|
|
|
// documentation inherited
|
|
public void readFrom (DataInputStream in)
|
|
throws IOException
|
|
{
|
|
super.readFrom(in);
|
|
_name = in.readUTF();
|
|
_value = ValueMarshaller.readFrom(in);
|
|
}
|
|
|
|
// documentation inherited
|
|
protected void notifyListener (Object listener)
|
|
{
|
|
if (listener instanceof AttributeChangeListener) {
|
|
((AttributeChangeListener)listener).attributeChanged(this);
|
|
}
|
|
}
|
|
|
|
// documentation inherited
|
|
protected void toString (StringBuffer buf)
|
|
{
|
|
buf.append("CHANGE:");
|
|
super.toString(buf);
|
|
buf.append(", name=").append(_name);
|
|
buf.append(", value=").append(_value);
|
|
}
|
|
|
|
protected String _name;
|
|
protected Object _value;
|
|
}
|