package org.droiddraw.property;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Vector;
public abstract class Property {
protected String englishName;
protected String attName;
protected boolean editable;
protected boolean def;
protected Vector<PropertyChangeListener> listeners;
public Property(String englishName, String attName, boolean editable) {
this(englishName, attName, editable, true);
}
public Property(String englishName, String attName, boolean editable, boolean def) {
super();
this.englishName = englishName;
this.attName = attName;
this.editable = editable;
this.def = def;
this.listeners = new Vector<PropertyChangeListener>();
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
listeners.add(listener);
}
public void firePropertyChangedEvent(PropertyChangeEvent evt) {
for (PropertyChangeListener l : listeners) {
l.propertyChange(evt);
}
}
public boolean getEditable() {
return editable;
}
public void setDefaulted(boolean def) {
this.def = def;
}
public void setEditable(boolean editable) {
this.editable = editable;
}
public String getEnglishName() {
return englishName;
}
public String getAtttributeName() {
return attName;
}
public abstract Object getValue();
public abstract void setValue(String value);
public boolean isDefault() {
if (editable && def)
return isDefaultInternal();
else
return false;
}
protected abstract boolean isDefaultInternal();
@Override
public boolean equals(Object o) {
if (o instanceof Property) {
Property prop = (Property)o;
return prop.getAtttributeName().equals(this.getAtttributeName());
}
return false;
}
}