@PostConstruct
  protected void initialize() {
    // 1. set options for first layout
    layoutOptionsOne = new LayoutOptions();

    // options for all panes (center and west)
    LayoutOptions panes = new LayoutOptions();
    panes.addOption("slidable", false);
    panes.addOption("spacing", 6);
    panes.addOption("resizeWhileDragging", true);
    layoutOptionsOne.setPanesOptions(panes);

    // options for west pane
    LayoutOptions west = new LayoutOptions();
    west.addOption("size", 150);
    west.addOption("minSize", 40);
    west.addOption("maxSize", 300);
    layoutOptionsOne.setWestOptions(west);

    // 2. set options for second layout
    layoutOptionsTwo = new LayoutOptions();

    // options for all panes
    panes = new LayoutOptions();
    panes.addOption("slidable", false);
    panes.addOption("spacing", 6);
    panes.addOption("resizeWhileDragging", true);
    layoutOptionsTwo.setPanesOptions(panes);

    // options for east pane
    LayoutOptions east = new LayoutOptions();
    panes.addOption("resizable", false);
    panes.addOption("closable", false);
    east.addOption("size", "50%");
    layoutOptionsTwo.setEastOptions(east);

    // options for nested east layout
    LayoutOptions childEastOptions = new LayoutOptions();
    east.setChildOptions(childEastOptions);

    // options for east-south pane
    LayoutOptions eastSouth = new LayoutOptions();
    eastSouth.addOption("size", "50%");
    childEastOptions.setSouthOptions(eastSouth);
  }
예제 #2
0
  private void setOptions(UIComponent parent) {
    // create layout options for this pane via attributes defined in pe:layoutPane
    String position = getPosition();
    LayoutOptions thisLayoutOptions = getOptions();
    LayoutOptions options;

    if (parent instanceof LayoutPane) {
      LayoutOptions parentLayoutOptions = ((LayoutPane) parent).getOptions();
      options = parentLayoutOptions.getChildOptions();
      if (options == null) {
        options = new LayoutOptions();
        parentLayoutOptions.setChildOptions(options);
      }
    } else if (parent instanceof Layout) {
      options = (LayoutOptions) ((Layout) parent).getOptions();
      if (options == null) {
        Layout layout = ((Layout) parent);
        options = new LayoutOptions();
        layout.setOptions(options);

        // options for all panes
        LayoutOptions panes = null;
        String resizerTip = layout.getResizerTip();
        if (resizerTip != null) {
          panes = new LayoutOptions();
          panes.addOption(Layout.PropertyKeys.resizerTip.toString(), resizerTip);
        }

        String togglerTipOpen = layout.getTogglerTipOpen();
        if (togglerTipOpen != null) {
          if (panes == null) {
            panes = new LayoutOptions();
          }

          panes.addOption(Layout.PropertyKeys.togglerTip_open.toString(), togglerTipOpen);
        }

        String togglerTipClosed = layout.getTogglerTipClosed();
        if (togglerTipClosed != null) {
          if (panes == null) {
            panes = new LayoutOptions();
          }

          panes.addOption(Layout.PropertyKeys.togglerTip_closed.toString(), togglerTipClosed);
        }

        if (panes != null) {
          options.setPanesOptions(panes);
        }
      }
    } else if (parent instanceof UIForm) {
      // layout pane can be within a h:form
      setOptions(parent.getParent());

      return;
    } else if (parent instanceof HtmlPanelGroup
        && Layout.STYLE_CLASS_LAYOUT_CONTENT.equals(((HtmlPanelGroup) parent).getStyleClass())
        && "block".equals(((HtmlPanelGroup) parent).getLayout())) {
      // layout pane can be within h:panelGroup representing a HTML div
      setOptions(parent.getParent());

      return;
    } else if (parent instanceof OutputPanel
        && Layout.STYLE_CLASS_LAYOUT_CONTENT.equals(((OutputPanel) parent).getStyleClass())
        && "block".equals(((OutputPanel) parent).getLayout())) {
      // layout pane can be within p:outputPanel representing a HTML div
      setOptions(parent.getParent());

      return;
    } else if (parent != null && parent.toString().contains(Layout.STYLE_CLASS_LAYOUT_CONTENT)) {
      // plain div (UIInstructions) with class "ui-layout-content"
      setOptions(parent.getParent());

      return;
    } else {
      throw new FacesException(
          "LayoutPane can be only placed within another LayoutPane, Layout, UIForm or DIV with class 'ui-layout-content'");
    }

    if (Layout.PANE_POSITION_CENTER.equals(position)) {
      options.setCenterOptions(thisLayoutOptions);
    } else if (Layout.PANE_POSITION_NORTH.equals(position)) {
      options.setNorthOptions(thisLayoutOptions);
    } else if (Layout.PANE_POSITION_SOUTH.equals(position)) {
      options.setSouthOptions(thisLayoutOptions);
    } else if (Layout.PANE_POSITION_WEST.equals(position)) {
      options.setWestOptions(thisLayoutOptions);
    } else if (Layout.PANE_POSITION_EAST.equals(position)) {
      options.setEastOptions(thisLayoutOptions);
    } else {
      throw new FacesException(
          "Pane position "
              + position
              + " is invalid. Valid positions are 'center', 'north' 'south', 'west', 'east'");
    }
  }