예제 #1
0
 /**
  * Consctructor for a media widget.
  *
  * <p>A freshly constructed media widget has no options set, no media sources, and has preload
  * mode set to PreloadAuto.
  */
 public WAbstractMedia(WContainerWidget parent) {
   super(parent);
   this.sources_ = new ArrayList<WAbstractMedia.Source>();
   this.sourcesRendered_ = 0;
   this.mediaId_ = "";
   this.flags_ = EnumSet.noneOf(WAbstractMedia.Options.class);
   this.preloadMode_ = WAbstractMedia.PreloadMode.PreloadAuto;
   this.alternative_ = null;
   this.flagsChanged_ = false;
   this.preloadChanged_ = false;
   this.sourcesChanged_ = false;
   this.playing_ = false;
   this.volume_ = -1;
   this.current_ = -1;
   this.duration_ = -1;
   this.ended_ = false;
   this.readyState_ = WAbstractMedia.ReadyState.HaveNothing;
   this.setInline(false);
   this.setFormObject(true);
   WApplication app = WApplication.getInstance();
   app.loadJavaScript("js/WAbstractMedia.js", wtjs1());
   this.setJavaScriptMember(
       " WAbstractMedia",
       "new Wt3_2_3.WAbstractMedia(" + app.getJavaScriptClass() + "," + this.getJsRef() + ");");
 }
예제 #2
0
 /**
  * Adds a widget to the grid.
  *
  * <p>Calls {@link #addWidget(WWidget widget, int row, int column, int rowSpan, int columnSpan,
  * EnumSet alignment) addWidget(widget, row, column, rowSpan, columnSpan,
  * EnumSet.noneOf(AlignmentFlag.class))}
  */
 public final void addWidget(WWidget widget, int row, int column, int rowSpan, int columnSpan) {
   addWidget(widget, row, column, rowSpan, columnSpan, EnumSet.noneOf(AlignmentFlag.class));
 }
예제 #3
0
 /**
  * Adds a layout item to the grid.
  *
  * <p>Calls {@link #addItem(WLayoutItem item, int row, int column, int rowSpan, int columnSpan,
  * EnumSet alignment) addItem(item, row, column, rowSpan, columnSpan,
  * EnumSet.noneOf(AlignmentFlag.class))}
  */
 public final void addItem(WLayoutItem item, int row, int column, int rowSpan, int columnSpan) {
   addItem(item, row, column, rowSpan, columnSpan, EnumSet.noneOf(AlignmentFlag.class));
 }
예제 #4
0
 /**
  * Adds a nested layout item to the grid.
  *
  * <p>Calls {@link #addLayout(WLayout layout, int row, int column, int rowSpan, int columnSpan,
  * EnumSet alignment) addLayout(layout, row, column, rowSpan, columnSpan,
  * EnumSet.noneOf(AlignmentFlag.class))}
  */
 public final void addLayout(WLayout layout, int row, int column, int rowSpan, int columnSpan) {
   addLayout(layout, row, column, rowSpan, columnSpan, EnumSet.noneOf(AlignmentFlag.class));
 }
예제 #5
0
  /**
   * Checks a function for RESTFful annotations.
   *
   * @return {@code true} if module contains relevant annotations
   * @throws QueryException query exception
   */
  boolean analyze() throws QueryException {
    // parse all annotations
    final EnumSet<HTTPMethod> mth = EnumSet.noneOf(HTTPMethod.class);
    final boolean[] declared = new boolean[function.args.length];
    boolean found = false;
    final int as = function.ann.size();
    for (int a = 0; a < as; a++) {
      final QNm name = function.ann.names[a];
      final Value value = function.ann.values[a];
      final byte[] local = name.local();
      final byte[] uri = name.uri();
      final boolean rexq = eq(uri, QueryText.RESTXQURI);
      if (rexq) {
        if (eq(PATH, local)) {
          // annotation "path"
          if (path != null) error(ANN_TWICE, "%", name.string());
          path = new RestXqPath(toString(value, name));
          for (final String s : path) {
            if (s.trim().startsWith("{")) checkVariable(s, AtomType.AAT, declared);
          }
        } else if (eq(CONSUMES, local)) {
          // annotation "consumes"
          strings(value, name, consumes);
        } else if (eq(PRODUCES, local)) {
          // annotation "produces"
          strings(value, name, produces);
        } else if (eq(QUERY_PARAM, local)) {
          // annotation "query-param"
          queryParams.add(param(value, name, declared));
        } else if (eq(FORM_PARAM, local)) {
          // annotation "form-param"
          formParams.add(param(value, name, declared));
        } else if (eq(HEADER_PARAM, local)) {
          // annotation "header-param"
          headerParams.add(param(value, name, declared));
        } else if (eq(COOKIE_PARAM, local)) {
          // annotation "cookie-param"
          cookieParams.add(param(value, name, declared));
        } else {
          // method annotations
          final HTTPMethod m = HTTPMethod.get(string(local));
          if (m == null) error(ANN_UNKNOWN, "%", name.string());
          if (!value.isEmpty()) {
            // remember post/put variable
            if (requestBody != null) error(ANN_TWICE, "%", name.string());
            if (m != POST && m != PUT) error(METHOD_VALUE, m);
            requestBody = checkVariable(toString(value, name), declared);
          }
          if (mth.contains(m)) error(ANN_TWICE, "%", name.string());
          mth.add(m);
        }
      } else if (eq(uri, QueryText.OUTPUTURI)) {
        // serialization parameters
        final String key = string(local);
        final String val = toString(value, name);
        if (output.get(key) == null) error(UNKNOWN_SER, key);
        output.set(key, val);
      }
      found |= rexq;
    }
    if (!mth.isEmpty()) methods = mth;

    if (found) {
      if (path == null) error(ANN_MISSING, PATH);
      for (int i = 0; i < declared.length; i++)
        if (!declared[i]) error(VAR_UNDEFINED, function.args[i].name.string());
    }
    return found;
  }