Details
-
Type: Improvement
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: EE-3.3.0.GA, 4.0.BETA, 4.0
-
Component/s: ACE-Components
-
Labels:None
-
Environment:ICEfaces 3.x, ace:message and ace:messages components.
-
Assignee Priority:P2
Description
It would be nice if the ace:message(s) components supported optional use of effects to draw the users attention when their state changes.
For example, we could add the "effect" and "effectDuration" attributes to support typical show/hide effects, so these could fade in, etc. when initially displayed.
Also, shake, slide, or highlight effects could be used when an already displayed message component has it's contents changed, etc.
For example, we could add the "effect" and "effectDuration" attributes to support typical show/hide effects, so these could fade in, etc. when initially displayed.
Also, shake, slide, or highlight effects could be used when an already displayed message component has it's contents changed, etc.
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
First attempts working. But some effects just mangle the icon/message while in animation (see video), probably due to the tricky spacing/positioning CSS underlying the icon/message.
Other issues to work out:
- How to determine if it is an initial display on server side? (From nothing to something.)
- How to detect content change on server side? (From something to something else.)
- What about change from something to nothing?
- What about change in severity? icon? (Fatal and Error: different severity but same icon.)
- Do these on client side? No such event as content change event?
- What about just change in effect? effectDuration?
- ......
Show
yip.ng
added a comment - - edited First attempts working. But some effects just mangle the icon/message while in animation (see video ), probably due to the tricky spacing/positioning CSS underlying the icon/message.
Other issues to work out:
How to determine if it is an initial display on server side? (From nothing to something.)
How to detect content change on server side? (From something to something else.)
What about change from something to nothing?
What about change in severity? icon? (Fatal and Error: different severity but same icon.)
Do these on client side? No such event as content change event?
What about just change in effect? effectDuration?
......
SEVERE: java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.remove(ArrayList.java:387)
at org.icefaces.ace.component.messages.MessagesRenderer.encodeEnd(MessagesRenderer.java:94)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:877)
at org.icefaces.ace.renderkit.CoreRenderer.renderChild(CoreRenderer.java:80)
at org.icefaces.ace.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:64)
at org.icefaces.ace.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:238)
at org.icefaces.ace.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:135)
at org.icefaces.ace.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:73)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:877)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1826)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at org.icefaces.impl.renderkit.RendererWrapper.encodeChildren(RendererWrapper.java:49)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
at org.icefaces.ace.renderkit.CoreRenderer.renderChild(CoreRenderer.java:76)
at org.icefaces.ace.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:64)
at org.icefaces.ace.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:238)
at org.icefaces.ace.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:135)
at org.icefaces.ace.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:73)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:877)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1819)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1822)
at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:150)
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:973)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1819)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:421)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
When the first lifecycle created two FacesMessages A and B, and then the next lifecycle created the exact same two FacesMessages A, B, then the new/changed detection code was removing the FacesMessages from a list in the wrong sequence, so the indexes would shift and then be trying to access past the end of the list. Reversing the sequence of removal fixed it.
We should add regression tests that deal with the various scenarios of adding, removing and changing FacesMessages.
icefaces3 trunk
Subversion 37480