ICEfaces
  1. ICEfaces
  2. ICE-10638

New ace:panelStack with custom tag-handler rendering optimization and client capabilities

    Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: EE-3.3.0.GA_P02, EE-4.0.0.GA
    • Fix Version/s: 4.1, EE-3.3.0.GA_P04
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      ace tagHandler

      Description

      create a custom component to incorporate old features of ice:panelStack but to also include performance optimizations with ability of children to not be included in the server-side component tree and to not continually update a child if content is static. Each panelStack would only show the selected panel, but each child would determine whether it would be included in the server-side tree (facelet="false" would be default so same as regular jsf managed content) for example:-
      <ace:panelStack selectedId="pane2">
          <ace:stackPane id="pane1" client="true">
               <!-- some content here-->
          </ace:stackPane>
          <ace:stackPane id="pane2" >
              <!-- some content here but this content would be regular
                      jsf handled content and managed by domdiff algorithm
                      and rendered flag to either show the content or not-->
          </ace:stackPane>
          <ace:stackPane id="pane3" facelet="true">
               <!-- some content here but this would NOT be part of the server side
                    component tree unless it were the selectedId of the parent-->
          </ace:stackPane>
      </ace:panelStack>
      ........
      The panelStack would require a proxy so that each child could contain it's own form and the panelStack would always be updated as to which child is selected.
      facelet="true" would act same as ui:include, but these components can be nested without worrying about the issues regarding ui:include and jstl tags since the div is always rendered, it's just the content of the divs which would be either included in the component tree (or not if facelet="true").

      if you want other content to be rendered, you would nest your panelStacks:-
      Modification to this could be having a list of selectedId's instead of a single selectedId, but easiest to implement a singleId to be included than a list of them. (take longer to implement).
      for example:-
      <ace:panelStack id="stack1" selectedId="pane1">
         <ace:stackPane id="pane1" client="true">
               <!-- some content here-->
          </ace:stackPane>
          <ace:stackPane id="pane2" >
              <!-- some content here but this content would be regular
                      jsf handled content and managed by domdiff algorithm
                      and rendered flag to either show the content or not-->
          </ace:stackPane>
          <ace:stackPane id="pane3" facelet="true">
                <ace:panelStack id="stack2" seletedId="pane5">
                      <ace:stackPane id="pane4" facelet="true">
                             <!-- note this panes content is not in the tree unless pane 3 and
                                      pane4 are both selected -->
                      </ace:stackPane>
                      <ace:stackPane id="pane5" facelet="true">
                             <!-- note this panes content is not in the tree unless pane 3 and
                                      pane5 are both selected -->
                      </ace:stackPane>
                     <ace:stackPane id="pane6">
                           <!-- note this panes content is not in the tree unless pane 3 and
                                      is selected even if pane6 is not selected-->
                      </ace:stackPane>
               </ace:panelStack>
          </ace:stackPane>
      </ace:panelStack>

      The client="true" does not have to immediately be part of this component, but might be something to consider down the road....(?). Main difference between this component and ice:panelStack is that child pane's content can be removed from component tree unless it is "selected".
      1. ist3.png
        1023 kB
      2. list1.png
        1009 kB
      3. list2.png
        1008 kB

        Issue Links

          Activity

          Repository Revision Date User Message
          ICEsoft Public SVN Repository #45263 Thu Jul 02 17:35:26 MDT 2015 mircea.toma ICE-10638 Modified StackPane.visitTree method to visit only the children of the selected stack pane BUT avoid to shortcut the tree visiting by returning 'true' for non-selected stack panes.
          Files Changed
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPane.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #45260 Tue Jun 30 13:10:53 MDT 2015 judy.guglielmin ICE-10638 fix example for checkbox
          Files Changed
          Commit graph MODIFY /icefaces4/trunk/icefaces/samples/showcase/showcase/src/main/webapp/resources/examples/ace/panelStack/panelStackDataTable.xhtml
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #45255 Tue Jun 30 06:16:18 MDT 2015 mircea.toma ICE-10638 Visit only the children of the selected stack pane.
          Files Changed
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPane.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #45101 Wed Jun 24 17:40:25 MDT 2015 mircea.toma ICE-10638 Allow children creation to occur multiple times for the same stack pane instance since the UISeries type containers reuse the same instance while iterating.
          Files Changed
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPane.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #45060 Wed Jun 17 15:55:02 MDT 2015 art.zambrano ICE-10638 added parent demo class to sub-demos
          Files Changed
          Commit graph MODIFY /icefaces4/trunk/icefaces/samples/showcase/showcase/src/main/java/org/icefaces/samples/showcase/example/ace/panelStack/PanelStackDataTable.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #45051 Wed Jun 17 11:48:29 MDT 2015 judy.guglielmin ICE-10638 forgot to remove ProxyForm from IF4
          Files Changed
          Commit graph DEL /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxy.java
          Commit graph DEL /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxyMeta.java
          Commit graph DEL /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxyRenderer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #44774 Tue May 26 12:42:07 MDT 2015 judy.guglielmin ICE-10638 remove reference to ClientDescriptor as it is unused.
          Files Changed
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPane.java
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackRenderer.java
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPaneRenderer.java
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStack.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #44752 Thu May 21 14:42:01 MDT 2015 judy.guglielmin ICE-10638 initial checkin. Still working on test app for QA, but initial features are present and key features tested
          Files Changed
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/resources/icefaces.ace/stackPane/stackpane.css
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackMeta.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPaneHandler.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/resources/icefaces.ace/stackPane
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackRenderer.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPane.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPaneRenderer.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/api/StackPaneController.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxy.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxyMeta.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxyRenderer.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStack.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPaneMeta.java

            People

            • Assignee:
              Mircea Toma
              Reporter:
              Judy Guglielmin
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: