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);
        }
    }
}