public RichTextWithToolbar(RichTextArea a, final TextAreaElement e) {
      area = a != null ? a : new RichTextArea();

      area.ensureDebugId("editorArea");
      area.setSize("100%", "100%");

      Toolbar toolbar = new Toolbar(area);
      toolbar.ensureDebugId("editorToolbar");

      setStyleName("gq-richtext");
      add(toolbar);
      add(area);
      setWidth("100%");

      // Inject styles from parent document
      area.addInitializeHandler(
          new InitializeHandler() {
            public void onInitialize(InitializeEvent event) {
              $(area).contents().find("head").append($("style, link[rel='stylesheet']").clone());
              $(area).contents().find("body").css("fontFamily", "arial").css("fontSize", "80%");
            }
          });

      if (e != null) {
        area.addBlurHandler(
            new BlurHandler() {
              public void onBlur(BlurEvent event) {
                e.setValue(area.getHTML().trim());
              }
            });
      }
    }