package lectures.mvc.properties;
import util.annotations.WebDocuments;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import lectures.graphics.ACartesianPoint;
import lectures.graphics.Point;
import lectures.mvc.properties.atomic.APropertyListenerSupport;
import bus.uigen.ObjectEditor;
@WebDocuments({"Lectures/MvcProperties.pptx", "Lectures/MvcProperties.pdf", "Videos/MvcProperties.avi"})
public class AnObservableObjectHolder<ObjectType> implements ObservableObjectHolder<ObjectType> {
ObjectType object;
PropertyListenerSupport propertyListenerSupport = new APropertyListenerSupport();
@Override
public ObjectType getObject() {
return object;
}
public void foo() {
}
@Override
public void setObject(ObjectType newVal) {
ObjectType oldVal = object;
object = newVal;
propertyListenerSupport.notifyAllListeners(
new PropertyChangeEvent(this, "Object", oldVal, newVal));
}
@Override
public void addPropertyChangeListener(PropertyChangeListener aListener) {
propertyListenerSupport.add(aListener);
}
public static void main (String[] args) {
AnObservableObjectHolder<String> objectHolder = new AnObservableObjectHolder<String>();
objectHolder.setObject( "Hello World");
ObservableObjectHolder<Point> objectHolder2 = new AnObservableObjectHolder<Point>();
objectHolder2.setObject(new ACartesianPoint(50, 50));
ObjectEditor.editWithPromotedChild(objectHolder2);
}
}