package org.marketcetera.photon.views;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
public class CustomField {
private boolean isEnabled;
private final PropertyChangeSupport propertyChangeSupport;
private static final String UTF_8 = "UTF-8"; //$NON-NLS-1$
private final String keyString;
private final String valueString;
public CustomField(String keyString, String valueString) {
this.keyString = keyString;
this.valueString = valueString;
propertyChangeSupport = new PropertyChangeSupport(this);
}
public boolean isEnabled() {
return isEnabled;
}
public void setEnabled(boolean isEnabled) {
boolean oldValue = this.isEnabled;
this.isEnabled = isEnabled;
propertyChangeSupport.firePropertyChange("enabled", oldValue, isEnabled); //$NON-NLS-1$
}
public String getKeyString() {
return keyString;
}
public String getValueString() {
return valueString;
}
public static CustomField fromString(String aString){
String[] keyValueArray = aString.split("="); //$NON-NLS-1$
CustomField outField;
try {
outField = new CustomField(URLDecoder.decode(keyValueArray[0], UTF_8)
, URLDecoder.decode(keyValueArray[1], UTF_8));
} catch (UnsupportedEncodingException e) {
outField = new CustomField(keyValueArray[0]
, keyValueArray[1]);
}
return outField;
}
@Override
public String toString() {
StringBuffer buf = new StringBuffer();
try {
buf.append(URLEncoder.encode(keyString, UTF_8));
buf.append("="); //$NON-NLS-1$
buf.append(URLEncoder.encode(valueString, UTF_8));
} catch (UnsupportedEncodingException e) {
buf.append(keyString);
buf.append("="); //$NON-NLS-1$
buf.append(valueString);
}
return buf.toString();
}
public void addPropertyChangeListener(PropertyChangeListener arg0) {
propertyChangeSupport.addPropertyChangeListener(arg0);
}
public void addPropertyChangeListener(String arg0,
PropertyChangeListener arg1) {
propertyChangeSupport.addPropertyChangeListener(arg0, arg1);
}
public PropertyChangeListener[] getPropertyChangeListeners() {
return propertyChangeSupport.getPropertyChangeListeners();
}
public PropertyChangeListener[] getPropertyChangeListeners(String arg0) {
return propertyChangeSupport.getPropertyChangeListeners(arg0);
}
public boolean hasListeners(String arg0) {
return propertyChangeSupport.hasListeners(arg0);
}
public void removePropertyChangeListener(PropertyChangeListener arg0) {
propertyChangeSupport.removePropertyChangeListener(arg0);
}
public void removePropertyChangeListener(String arg0,
PropertyChangeListener arg1) {
propertyChangeSupport.removePropertyChangeListener(arg0, arg1);
}
}