Package freenet.clients.http.wizardsteps

Source Code of freenet.clients.http.wizardsteps.PageHelper

package freenet.clients.http.wizardsteps;

import freenet.clients.http.FirstTimeWizardToadlet;
import freenet.clients.http.PageMaker.RenderParameters;
import freenet.clients.http.PageNode;
import freenet.clients.http.ToadletContext;
import freenet.support.HTMLNode;

/**
* Provides a page content node, forms, and InfoBoxes. Used to wrap ToadletContext access away from Wizard Steps.
* A new one should be constructed each time a step is run.
*/
public class PageHelper {

  private final ToadletContext toadletContext;
  private final PersistFields persistFields;
  private final FirstTimeWizardToadlet.WIZARD_STEP step;
  private PageNode pageNode;

  public PageHelper(ToadletContext ctx, PersistFields persistFields, FirstTimeWizardToadlet.WIZARD_STEP step) {
    this.toadletContext = ctx;
    this.persistFields = persistFields;
    this.step = step;
  }

  /**
   * Generates a PageMaker with the appropriate arguments for the wizard. (Ex hiding status and nav bars)
   * This is so that steps can determine their page title at runtime instead of being limited to one. This is
   * needed for the physical security page.
   * @param title desired page title
   * @return Content HTMLNode to add content to
   */
  public HTMLNode getPageContent(String title) {
    pageNode = toadletContext.getPageMaker().getPageNode(title, toadletContext, new RenderParameters().renderNavigationLinks(false).renderStatus(false));
    return pageNode.content;
  }

  /**
   * After getPageContent has been called, returns page outer HTMLNode.
   * @return page outer node used to render entire page.
   */
  public HTMLNode getPageOuter() {
    if (pageNode == null) {
      throw new NullPointerException("pageNode was not initialized. getPageContent must be called first.");
    }
    return pageNode.outer;
  }

  public HTMLNode getInfobox(String category, String header, HTMLNode parent, String title, boolean isUnique) {
    return toadletContext.getPageMaker().getInfobox(category, header, parent, title, isUnique);
  }

  public HTMLNode addFormChild(HTMLNode parentNode, String target, String id) {
    return addFormChild(parentNode, target, id, true);
  }

  /**
   * Generates a form that includes persistence for inter-step fields. This is currently opennet, preset, and step.
   * Opennet is whether the user enabled opennet, preset is what preset they're using, and step is what POST step
   * will be used to process the form.
   * @param parentNode node to add form to
   * @param target where form should POST to
   * @param id ID attribute (in HTML) of form
   * @param includeOpennet whether the opennet field should be persisted. False on the OPENNET step.
   * @return form node to add buttons, inputs, and whatnot to.
   */
  public HTMLNode addFormChild(HTMLNode parentNode, String target, String id, boolean includeOpennet) {
    HTMLNode form = toadletContext.addFormChild(parentNode, target, id);
    if (persistFields.isUsingPreset()) {
      form.addChild("input",
              new String[] { "type", "name", "value" },
              new String[] { "hidden", "preset", persistFields.preset.name() });
    }
    if (includeOpennet) {
      form.addChild("input",
              new String[] { "type", "name", "value" },
              new String[] { "hidden", "opennet", String.valueOf(persistFields.opennet) });
    }
    form.addChild("input",
            new String[] { "type", "name", "value" },
            new String[] { "hidden", "step", step.name() });
    return form;
  }
}
TOP

Related Classes of freenet.clients.http.wizardsteps.PageHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.