/*
* Author: tdanford
* Date: Sep 16, 2008
*/
package org.seqcode.viz.eye;
import java.util.*;
public abstract class ModelPaintableProperty<X> {
private String key;
private LinkedList<ModelPaintablePropertyListener> listeners;
public ModelPaintableProperty(String k) {
key = k;
listeners = new LinkedList<ModelPaintablePropertyListener>();
}
public String getKey() { return key; }
public abstract X getValue();
public void addListener(ModelPaintablePropertyListener l) {
listeners.add(l);
}
public void removeListener(ModelPaintablePropertyListener l) {
listeners.remove(l);
}
protected void dispatchChangedEvent() {
for(ModelPaintablePropertyListener list : listeners) {
list.propertyChanged(this);
}
}
public int hashCode() { return key.hashCode(); }
public boolean equals(Object o) {
if(!(o instanceof ModelPaintableProperty)) { return false; }
ModelPaintableProperty p = (ModelPaintableProperty)o;
return p.key.equals(key);
}
public String toString() { return key; }
}