Exemple #1
0
  /**
   * Sets a value which indicates whether or not the document can be edited.
   *
   * @param mode a value which indicates whether or not the document can be edited
   */
  @JsxSetter
  public void setDesignMode(final String mode) {
    final boolean inherit = getBrowserVersion().hasFeature(JS_DOCUMENT_DESIGN_MODE_INHERIT);
    if (inherit) {
      if (!"on".equalsIgnoreCase(mode)
          && !"off".equalsIgnoreCase(mode)
          && !"inherit".equalsIgnoreCase(mode)) {
        throw Context.reportRuntimeError("Invalid document.designMode value '" + mode + "'.");
      }
      if (!(getWindow().getWebWindow() instanceof FrameWindow)
          && getBrowserVersion().hasFeature(JS_DOCUMENT_DESIGN_MODE_ONLY_FOR_FRAMES)) {
        // IE evaluates all designMode changes for documents that aren't in frames as Off
        designMode_ = "off";
      } else if ("on".equalsIgnoreCase(mode)) {
        designMode_ = "on";
      } else if ("off".equalsIgnoreCase(mode)) {
        designMode_ = "off";
      } else if ("inherit".equalsIgnoreCase(mode)) {
        designMode_ = "inherit";
      }

      if (getBrowserVersion().hasFeature(JS_DOCUMENT_DESIGN_MODE_CAPITAL_FIRST)) {
        designMode_ = StringUtils.capitalize(designMode_);
      }
    } else {
      if ("on".equalsIgnoreCase(mode)) {
        designMode_ = "on";
        final SgmlPage page = getPage();
        if (page != null && page.isHtmlPage()) {
          final HtmlPage htmlPage = (HtmlPage) page;
          final DomNode child = htmlPage.getBody().getFirstChild();
          final DomNode rangeNode = child == null ? htmlPage.getBody() : child;
          htmlPage.setSelectionRange(new SimpleRange(rangeNode, 0));
        }
      } else if ("off".equalsIgnoreCase(mode)) {
        designMode_ = "off";
      }
    }
  }