I needed support for the HasValue interface on the HtmlEditor. I therefore created this class which extends the functionality of the HtmlEditor. Hope this helps others in the same situation.
Code:
public class HasValueHtmlEditor extends HtmlEditor implements HasValue<String> {
private String focusValue;
public HasValueHtmlEditor() {
this.textArea.addFocusHandler(new FocusHandler() {
@Override
public void onFocus(final FocusEvent event) {
HasValueHtmlEditor.this.focusValue =
HasValueHtmlEditor.this.getValue();
}
});
this.textArea.addBlurHandler(new BlurHandler() {
@Override
public void onBlur(final BlurEvent event) {
ValueChangeEvent.fireIfNotEqual(
HasValueHtmlEditor.this,
HasValueHtmlEditor.this.focusValue,
HasValueHtmlEditor.this.getValue());
}
});
}
@Override
public final HandlerRegistration addValueChangeHandler(
final ValueChangeHandler<String> handler) {
return this.addHandler(handler, ValueChangeEvent.getType());
}
@Override
public final void setValue(final String value) {
this.setValue(value, true);
}
@Override
public final void setValue(final String value, final boolean fireEvents) {
final String oldValue = this.getValue();
super.setValue(value);
if (fireEvents) {
ValueChangeEvent.fireIfNotEqual(this, oldValue, value);
}
}
}