示例#1
0
  /**
   * Return <code>true</code> if the current {@link ProjectStage} as returned by the {@link
   * Application} instance is equal to <code>stage</code>, otherwise return <code>false</code>
   *
   * @param stage the {@link ProjectStage} to check
   * @throws IllegalStateException if this method is called after this instance has been released
   * @throws NullPointerException if <code>stage</code> is <code>null</code>
   */
  public boolean isProjectStage(ProjectStage stage) {

    if (stage == null) {
      throw new NullPointerException();
    }
    return (stage.equals(getApplication().getProjectStage()));
  }
  @Override
  public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
    ResponseWriter writer = context.getResponseWriter();
    ConfigContainer cc = RequestContext.getCurrentInstance().getApplicationContext().getConfig();
    ProjectStage projectStage = context.getApplication().getProjectStage();
    writer.startElement("head", component);

    // First facet
    UIComponent first = component.getFacet("first");
    if (first != null) {
      first.encodeAll(context);
    }

    writer.write("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>");

    String theme = resolveTheme(context);
    if (theme == null) {
      renderCSS(context, "mobile/jquery-mobile.css", "primefaces");
    } else {
      renderCSS(context, "theme.css", "primefaces-" + theme);
      renderCSS(context, "mobile/jquery-mobile-icons.css", "primefaces");
      renderCSS(context, "mobile/jquery-mobile-structure.css", "primefaces");
    }

    renderCSS(context, "mobile/primefaces-mobile.css", "primefaces");

    if (cc.isFontAwesomeEnabled()) {
      renderCSS(context, "fa/font-awesome.css", "primefaces");
    }

    renderJS(context, "jquery/jquery.js", "primefaces");

    writer.startElement("script", null);
    writer.writeAttribute("type", "text/javascript", null);
    writer.write("$(document).on('mobileinit', function(){");
    writer.write("$.mobile.ajaxEnabled = false;");
    writer.write("$.mobile.pushStateEnabled = false;");
    writer.write("$.mobile.page.prototype.options.domCache = true;");

    UIComponent init = component.getFacet("init");
    if (init != null) {
      init.encodeAll(context);
    }

    writer.write("});");
    writer.endElement("script");

    renderJS(context, "mobile/jquery-mobile.js", "primefaces");
    renderJS(context, "primefaces-mobile.js", "primefaces");

    // Registered Resources
    UIViewRoot viewRoot = context.getViewRoot();
    for (UIComponent resource : viewRoot.getComponentResources(context, "head")) {
      boolean shouldRender = true;
      Map<String, Object> attrs = resource.getAttributes();
      String library = (String) attrs.get("library");

      if (library != null && library.equals("primefaces")) {
        String resourceName = (String) attrs.get("name");
        if (resourceName.startsWith("jquery") || resourceName.startsWith("primefaces")) {
          shouldRender = false;
        }
      }

      if (shouldRender) {
        resource.encodeAll(context);
      }
    }

    if (cc.isLegacyWidgetNamespace()) {
      writer.startElement("script", null);
      writer.writeAttribute("type", "text/javascript", null);
      writer.write("PrimeFaces.settings.legacyWidgetNamespace = true;");
      writer.endElement("script");
    }

    if (!projectStage.equals(ProjectStage.Production)) {
      writer.write("PrimeFaces.settings.projectStage='" + projectStage.toString() + "';");
    }
  }