Details
-
Type: New Feature
-
Status: Closed
-
Priority: 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
-
Assignee Priority:P1
-
Support Case References:Support Case #13374 - https://icesoft.my.salesforce.com/50070000016KZZU
-
Affects:Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial
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".
<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".
Issue Links
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #45263 | Thu Jul 02 17:35:26 MDT 2015 | mircea.toma | |
Files Changed | ||||
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 | |
Files Changed | ||||
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 | |
Files Changed | ||||
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 | |
Files Changed | ||||
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 | |
Files Changed | ||||
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 | |
Files Changed | ||||
DEL
/icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxy.java
DEL /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxyMeta.java 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 | |
Files Changed | ||||
MODIFY
/icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPane.java
MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackRenderer.java MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPaneRenderer.java MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStack.java |