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".
-
Hide
- iceMock2.zip
- 284 kB
- Judy Guglielmin
-
- iceMock2/.classpath 1 kB
- iceMock2/.DS_Store 6 kB
- __MACOSX/iceMock2/._.DS_Store 0.1 kB
- __MACOSX/iceMock2/.git/._branches 0.2 kB
- iceMock2/.git/COMMIT_EDITMSG 0.0 kB
- __MACOSX/iceMock2/.git/._COMMIT_EDITMSG 0.2 kB
- iceMock2/.git/config 0.3 kB
- __MACOSX/iceMock2/.git/._config 0.2 kB
- iceMock2/.git/description 0.1 kB
- __MACOSX/iceMock2/.git/._description 0.2 kB
- iceMock2/.git/FETCH_HEAD 0.1 kB
- __MACOSX/iceMock2/.git/._FETCH_HEAD 0.2 kB
- iceMock2/.git/HEAD 0.0 kB
- __MACOSX/iceMock2/.git/._HEAD 0.2 kB
- iceMock2/.git/.../applypatch-msg.sample 0.4 kB
- __MACOSX/.../._applypatch-msg.sample 0.2 kB
- iceMock2/.git/hooks/commit-msg.sample 0.9 kB
- __MACOSX/iceMock2/.../._commit-msg.sample 0.2 kB
- iceMock2/.git/hooks/post-update.sample 0.2 kB
- __MACOSX/iceMock2/.../._post-update.sample 0.2 kB
- iceMock2/.git/.../pre-applypatch.sample 0.4 kB
- __MACOSX/.../._pre-applypatch.sample 0.2 kB
- iceMock2/.git/hooks/pre-commit.sample 2 kB
- __MACOSX/iceMock2/.../._pre-commit.sample 0.2 kB
- iceMock2/.git/hooks/pre-push.sample 1 kB
- __MACOSX/iceMock2/.../._pre-push.sample 0.2 kB
- iceMock2/.git/hooks/pre-rebase.sample 5 kB
- __MACOSX/iceMock2/.../._pre-rebase.sample 0.2 kB
- iceMock2/.git/.../prepare-commit-msg.sample 1 kB
- __MACOSX/.../._prepare-commit-msg.sample 0.2 kB
-
Hide
- panelStack3.zip
- 26 kB
- Judy Guglielmin
-
- panelStack3/.classpath 4 kB
- panelStack3/.DS_Store 6 kB
- __MACOSX/panelStack3/._.DS_Store 0.1 kB
- panelStack3/.project 1.0 kB
- panelStack3/.settings/.jsdtscope 0.5 kB
- panelStack3/.../oracle.eclipse.tools.webtier.ui.prefs 0.6 kB
- panelStack3/.../org.eclipse.jdt.core.prefs 0.3 kB
- panelStack3/.../org.eclipse.wst.common.component 0.5 kB
- panelStack3/.../org.eclipse.wst.common.project.facet.core.prefs.xml 0.3 kB
- panelStack3/.../org.eclipse.wst.common.project.facet.core.xml 0.4 kB
- panelStack3/.../org.eclipse.wst.jsdt.ui.superType.container 0.0 kB
- panelStack3/.../org.eclipse.wst.jsdt.ui.superType.name 0.0 kB
- panelStack3/src/InputDefinitions.java 0.7 kB
- panelStack3/src/.../CompTreeMonitor.java 2 kB
- panelStack3/src/.../VisitTreeMonitor.java 5 kB
- panelStack3/src/SinglePane.java 1 kB
- panelStack3/src/TestBean.java 5 kB
- panelStack3/WebContent/cForEach.xhtml 2 kB
- __MACOSX/panelStack3/.../._cForEach.xhtml 0.2 kB
- panelStack3/WebContent/dataTable.xhtml 3 kB
- __MACOSX/panelStack3/.../._dataTable.xhtml 0.2 kB
- panelStack3/WebContent/.../stackSize.xhtml 2 kB
- __MACOSX/panelStack3/.../._stackSize.xhtml 0.2 kB
- panelStack3/WebContent/index.jsp 0.1 kB
- panelStack3/WebContent/index.xhtml 1 kB
- panelStack3/WebContent/.../MANIFEST.MF 0.0 kB
- panelStack3/WebContent/panelSeries.xhtml 4 kB
- panelStack3/WebContent/simple.xhtml 4 kB
- panelStack3/WebContent/simpleProxy.xhtml 5 kB
- panelStack3/WebContent/uiRepeat.xhtml 3 kB
Issue Links
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion