Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0-Alpha3
    • Fix Version/s: 2.0-Beta2, 2.0.0
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      ICEFaces 2.0 ACE Components
    • Affects:
      Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial

      Description

      Add a linkButton component to the ACE component suite.

        Activity

        Greg Dick created issue -
        Ken Fyten made changes -
        Field Original Value New Value
        Salesforce Case []
        Fix Version/s 2.0-Beta [ 10231 ]
        Affects [Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial]
        Assignee Priority P1
        Description Add a commandLink component to the sparkle component suite Add a commandLink component to the sparkle component suite.
        Security Private [ 10001 ]
        Assignee Greg Dick [ greg.dick ]
        Hide
        Greg Dick added a comment -

        I did an experiment with adding an href to a link that has been defined with an ajax actionListener. The intent was to create a link with both an actionListener but with the ability to open the link in a different page. This works, to an extent. You CAN open the link in a new tab, and clicking on the link does cause the actionListener to be called, but an NPE is thrown in the event handling afterwards.

        java.lang.NullPointerException
        at org.icefaces.event.BridgeSetup.processEvent(BridgeSetup.java:98)
        at javax.faces.event.SystemEvent.processListener(SystemEvent.java:102)
        at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2040)
        at com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2016)
        at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:298)
        at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:242)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:104)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)
        java.lang.NullPointerException
        at org.icefaces.event.WindowAndViewIDSetup$1.encode(WindowAndViewIDSetup.java:52)
        at org.icefaces.event.UIOutputWriter.encodeBegin(UIOutputWriter.java:32)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1607)
        at javax.faces.render.Renderer.encodeChildren(Renderer.java:164)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:300)
        at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:101)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1609)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1612)
        at org.icefaces.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:147)
        at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:985)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1609)
        at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:378)
        at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)

        Show
        Greg Dick added a comment - I did an experiment with adding an href to a link that has been defined with an ajax actionListener. The intent was to create a link with both an actionListener but with the ability to open the link in a different page. This works, to an extent. You CAN open the link in a new tab, and clicking on the link does cause the actionListener to be called, but an NPE is thrown in the event handling afterwards. java.lang.NullPointerException at org.icefaces.event.BridgeSetup.processEvent(BridgeSetup.java:98) at javax.faces.event.SystemEvent.processListener(SystemEvent.java:102) at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2040) at com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2016) at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:298) at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:242) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:104) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619) java.lang.NullPointerException at org.icefaces.event.WindowAndViewIDSetup$1.encode(WindowAndViewIDSetup.java:52) at org.icefaces.event.UIOutputWriter.encodeBegin(UIOutputWriter.java:32) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1607) at javax.faces.render.Renderer.encodeChildren(Renderer.java:164) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:300) at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:101) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:849) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1609) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1612) at org.icefaces.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:147) at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:985) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1609) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:378) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:127) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:309) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #21764 Fri Jun 18 22:50:26 MDT 2010 greg.dick ICE-5814 latest commandlink.js file
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/sparkle/component/resources/org.icefaces.component.commandlink/commandlink.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #21765 Fri Jun 18 22:51:08 MDT 2010 greg.dick ICE-5814 latest commandlink renderer
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/sparkle/component/src/org/icefaces/component/commandlink/CommandLinkRenderer.java
        Hide
        Greg Dick added a comment -

        The above is the 2.0 version of the race condition when the view is disposed (via dispose-views when leaving a view) while the server is processing a request for the same view.

        I have the link with an actionListener and href working in practice for FF, Chrome, and Opera. So far, I haven't been able to get IE to play along nicely. The onclick handler I have come across is essentially:

        theInsideClick:function (e)

        { e.returnValue=false; ice.s(e, e.target); //YAHOO.util.stopEvent(e); //e.preventDefault(); return false; }

        Order is important. This does not work in IE.

        theInsideClick:function (e)

        { ice.s(e, e.target); e.returnValue=false; ... }

        None of the YUI methods for stopping the defaultAction work. The only method that works reliably in any browser is to return false from the onclick handler however this is breaking the normal commandLink case with just an actionListener in IE. Clicking on the actionListener only case in my test program causes the page to navigate back to the main page of the test application.

        Also, using ice.s causes the actionListener for every commandLink in the form to be called, which is expected, I think. But using ice.se causes no actionListener methods to ever be called and I don't think that is expected.

        Show
        Greg Dick added a comment - The above is the 2.0 version of the race condition when the view is disposed (via dispose-views when leaving a view) while the server is processing a request for the same view. I have the link with an actionListener and href working in practice for FF, Chrome, and Opera. So far, I haven't been able to get IE to play along nicely. The onclick handler I have come across is essentially: theInsideClick:function (e) { e.returnValue=false; ice.s(e, e.target); //YAHOO.util.stopEvent(e); //e.preventDefault(); return false; } Order is important. This does not work in IE. theInsideClick:function (e) { ice.s(e, e.target); e.returnValue=false; ... } None of the YUI methods for stopping the defaultAction work. The only method that works reliably in any browser is to return false from the onclick handler however this is breaking the normal commandLink case with just an actionListener in IE. Clicking on the actionListener only case in my test program causes the page to navigate back to the main page of the test application. Also, using ice.s causes the actionListener for every commandLink in the form to be called, which is expected, I think. But using ice.se causes no actionListener methods to ever be called and I don't think that is expected.
        Hide
        Greg Dick added a comment -

        I've got the commandLink comfortably encased in a div according to the desired structure:

        <div id="componentId" >
        <span>
        <span id="first-child">
        <a ... >
        </span>
        </span>
        <span id="componentId"+"_js"
        <script>
        </span>
        </div>

        still outstanding is the issue of proper event stopping in IE. I have it working in Opera, FF, and Chrome, but not my version of IE7. I've tried the cases shown in these three blogs without luck:

        http://ryancannon.com/design/css_plus_js/cancelling-events-with-javascript
        http://www.quirksmode.org/js/events_early.html
        http://www.ontola.com/en/javascript-onclick-return-false-does-not-work-in-ie

        Show
        Greg Dick added a comment - I've got the commandLink comfortably encased in a div according to the desired structure: <div id="componentId" > <span> <span id="first-child"> <a ... > </span> </span> <span id="componentId"+"_js" <script> </span> </div> still outstanding is the issue of proper event stopping in IE. I have it working in Opera, FF, and Chrome, but not my version of IE7. I've tried the cases shown in these three blogs without luck: http://ryancannon.com/design/css_plus_js/cancelling-events-with-javascript http://www.quirksmode.org/js/events_early.html http://www.ontola.com/en/javascript-onclick-return-false-does-not-work-in-ie
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #21842 Mon Jul 05 15:35:49 MDT 2010 greg.dick ICE-5814 added surrounding div as required
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/sparkle/component/src/org/icefaces/component/commandlink/CommandLinkRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #21843 Mon Jul 05 15:37:11 MDT 2010 greg.dick ICE-5814 checking in current attempts at getting onclick to avoid default Behaviour in IE
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/sparkle/component/resources/org.icefaces.component.commandlink/commandlink.js
        Hide
        Greg Dick added a comment -

        I've checked in a few changes that have a bunch of snippets of the things I was trying. The above links define several categories of onclick event handler registration and specific ways to handle disabling the 'default action' of clicking on a commandLink.

        The sparkle component test page is located in sparkle/showcase/test and there's a link to the commandLink test page. There are four links there, one a pure anchor tag with a link to google, the second with only an actionListener, the third is a singleSubmit component with an actionListener, and the fourth contains an actionListener with an Href defined. The idea of the fourth example is to demonstrate having a link that one can open in a new tab, but also with an actionListener callback that does not navigate to the anchor URL.

        This fourth link works with many different onclick handler registration methods in all browsers but IE. with IE, if I return false from the onclick handler, it seems the view is always disposed. If there is an HREF defined, IE will navigate to it and I haven't been able to stop this in IE7.

        Show
        Greg Dick added a comment - I've checked in a few changes that have a bunch of snippets of the things I was trying. The above links define several categories of onclick event handler registration and specific ways to handle disabling the 'default action' of clicking on a commandLink. The sparkle component test page is located in sparkle/showcase/test and there's a link to the commandLink test page. There are four links there, one a pure anchor tag with a link to google, the second with only an actionListener, the third is a singleSubmit component with an actionListener, and the fourth contains an actionListener with an Href defined. The idea of the fourth example is to demonstrate having a link that one can open in a new tab, but also with an actionListener callback that does not navigate to the anchor URL. This fourth link works with many different onclick handler registration methods in all browsers but IE. with IE, if I return false from the onclick handler, it seems the view is always disposed. If there is an HREF defined, IE will navigate to it and I haven't been able to stop this in IE7.
        Hide
        Ken Fyten added a comment -

        Assign to Mircea to investigate a solution for cancelling the default browser event on all browsers, including IEs.

        Show
        Ken Fyten added a comment - Assign to Mircea to investigate a solution for cancelling the default browser event on all browsers, including IEs.
        Ken Fyten made changes -
        Salesforce Case []
        Assignee Greg Dick [ greg.dick ] Mircea Toma [ mircea.toma ]
        Hide
        Mircea Toma added a comment -

        IE fires document.onbeforeunload when an achor refering to another page is clicked (see http://msdn2.microsoft.com/en-us/library/ms536907.aspx ). ICEfaces relies on this event to dispose the server-side views, thus the view backing up the first page will be disposed when the link is clicked.

        A fix is not really possible since the 'onbeforeunload' event handler cannot differentiate between a real page unload and a click on an anchor reffering to another page.

        The workaround is to change the rendered link slightly to:

        <a href="javascript:;" onclick="window.open('......page.jsf', '2ndWindow');">2nd window</a>

        See also ICE-3046 why the need for the pseudo URL.

        Show
        Mircea Toma added a comment - IE fires document.onbeforeunload when an achor refering to another page is clicked (see http://msdn2.microsoft.com/en-us/library/ms536907.aspx ). ICEfaces relies on this event to dispose the server-side views, thus the view backing up the first page will be disposed when the link is clicked. A fix is not really possible since the 'onbeforeunload' event handler cannot differentiate between a real page unload and a click on an anchor reffering to another page. The workaround is to change the rendered link slightly to: <a href="javascript:;" onclick="window.open('......page.jsf', '2ndWindow');">2nd window</a> See also ICE-3046 why the need for the pseudo URL.
        Mircea Toma made changes -
        Assignee Mircea Toma [ mircea.toma ] Greg Dick [ greg.dick ]
        Hide
        Ted Goddard added a comment -

        The following link seems to behave as desired on IE and other browsers:

        <a href="http://www.icefaces.org" onclick="alert('you clicked');return false;" >Link ID Test for IE</a>

        Show
        Ted Goddard added a comment - The following link seems to behave as desired on IE and other browsers: <a href="http://www.icefaces.org" onclick="alert('you clicked');return false;" >Link ID Test for IE</a>
        Hide
        Ken Fyten added a comment -

        What if we set a flag in the bridge during the onclick event handling JS that the bridge would use to ignore the view disposal call during the next onbeforeunload event call (and then clears the flag)?

        Does the onclick event handler get called before the onbeforeunload one?

        Show
        Ken Fyten added a comment - What if we set a flag in the bridge during the onclick event handling JS that the bridge would use to ignore the view disposal call during the next onbeforeunload event call (and then clears the flag)? Does the onclick event handler get called before the onbeforeunload one?
        Ken Fyten made changes -
        Assignee Greg Dick [ greg.dick ] Mircea Toma [ mircea.toma ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #21900 Wed Jul 14 10:44:29 MDT 2010 greg.dick ICE-5814 Use JSContext to fetch PSFProps in onclick handler.
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/sparkle/component/resources/org.icefaces.component.commandlink/commandlink.js
        Ken Fyten made changes -
        Fix Version/s 2.0-Beta2 [ 10242 ]
        Fix Version/s 2.0-Beta1 [ 10231 ]
        Hide
        Mircea Toma added a comment -

        The fourth link renders this markup:

        <a onclick="ice.component.commandlink.theInsideClick(event); return false;" id="success" href="http://www.icefaces.org">Link ID Test for IE</a>

        The reason why the default action is not canceled is caused by an exception that occurs in the onclick handler. The 'ice.component.commandlink.theInsideClick' function does not exist which causes the exception to be thrown, and consequently 'false' is not return by the handler so that default action is blocked.

        Just replacing the onclick handler with 'return false;' code proves to be working fine, meaning canceling the navigation to the href-ed page, does not occur. This is true for IE6 and IE7 and of course, the rest of the browsers.

        Show
        Mircea Toma added a comment - The fourth link renders this markup: <a onclick="ice.component.commandlink.theInsideClick(event); return false;" id="success" href="http://www.icefaces.org">Link ID Test for IE</a> The reason why the default action is not canceled is caused by an exception that occurs in the onclick handler. The 'ice.component.commandlink.theInsideClick' function does not exist which causes the exception to be thrown, and consequently 'false' is not return by the handler so that default action is blocked. Just replacing the onclick handler with 'return false;' code proves to be working fine, meaning canceling the navigation to the href-ed page, does not occur. This is true for IE6 and IE7 and of course, the rest of the browsers.
        Mircea Toma made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Invalid [ 6 ]
        Hide
        Ken Fyten added a comment -

        Re-opened. Back to Greg.

        Show
        Ken Fyten added a comment - Re-opened. Back to Greg.
        Ken Fyten made changes -
        Resolution Invalid [ 6 ]
        Status Resolved [ 5 ] Reopened [ 4 ]
        Assignee Priority P1 P2
        Assignee Mircea Toma [ mircea.toma ] Greg Dick [ greg.dick ]
        Ken Fyten made changes -
        Security Private [ 10001 ]
        Hide
        Ken Fyten added a comment -

        Reminder that we wil need a rime and sam skin resources created for this component. The rime skin should be based on the current styling in the rime.css file for 1.8, for the ice:outputLink component.

        Show
        Ken Fyten added a comment - Reminder that we wil need a rime and sam skin resources created for this component. The rime skin should be based on the current styling in the rime.css file for 1.8, for the ice:outputLink component.
        Hide
        Ken Fyten added a comment -

        linkButton component has the following noted outstanding tasks/issues:

        Component Name:

        • Rename/repackage component to "LinkButton", incl. comp. name, tag name ("linkButton"), all classnames, componentFamily, etc.
        • Change componentFamily to "org.icefaces.component.LinkButton"

        Attributes:

        • Following attributes need description in tag doc and review as to whether they should be kept, renamed, etc.:
        • rev
        • image (should be in CSS as per changes Judy has made recently to checkboxButton)
        • shape
        • name (don't think we need this, it's for grouping buttons)
        • value (what is the value for?)
        • rel

        Documentation:

        • Component level descriptive doc missing from TLD/taglib doc. This can be brief summation with link to the Wiki doc page.
        • The following attributes have insufficient doc:
        • singleSubmit (use std. description)
        • hreg
        • hreflang
        • action
        • others with no descriptions...

        linkButton Renderer Impl Notes:
        Check for these issues that were found in checkboxButton:

        • decode: if (requestParameterMap.containsKey("ice.event.captured")) { but doesn't use it (remove?)
        • encodeBegin: writer.write(checkbox.getLabel()); Should this use writeText to escape the label?
        • Reduce component property evaluations. Eg: findCheckboxLabel(Checkbox) by cacheing property values with local var.
        Show
        Ken Fyten added a comment - linkButton component has the following noted outstanding tasks/issues: Component Name: Rename/repackage component to "LinkButton", incl. comp. name, tag name ("linkButton"), all classnames, componentFamily, etc. Change componentFamily to "org.icefaces.component.LinkButton" Attributes: Following attributes need description in tag doc and review as to whether they should be kept, renamed, etc.: rev image (should be in CSS as per changes Judy has made recently to checkboxButton) shape name (don't think we need this, it's for grouping buttons) value (what is the value for?) rel Documentation: Component level descriptive doc missing from TLD/taglib doc. This can be brief summation with link to the Wiki doc page. The following attributes have insufficient doc: singleSubmit (use std. description) hreg hreflang action others with no descriptions... Wiki user doc: Missing user documentation page altogether. Should mimic the general contents and completeness from http://developer.yahoo.com/yui/autocomplete/ , for example. See also http://wiki.icefaces.org/display/facesDev/DateTime+Entry . General config and usage should be covered, typical use-cases illustrated and described. linkButton Renderer Impl Notes: Check for these issues that were found in checkboxButton: decode: if (requestParameterMap.containsKey("ice.event.captured")) { but doesn't use it (remove?) encodeBegin: writer.write(checkbox.getLabel()); Should this use writeText to escape the label? Reduce component property evaluations. Eg: findCheckboxLabel(Checkbox) by cacheing property values with local var.
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #22614 Wed Oct 13 14:10:07 MDT 2010 greg.dick ICE-5814 fix styleClass and style implementation by writing them to the surrounding tags and not the anchor itself.
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/sparkle/component/src/org/icefaces/component/linkButton/LinkButtonRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #22648 Fri Oct 15 16:15:31 MDT 2010 greg.dick ICE-5814 restored value attribute on link for Aria labelledby field
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/sparkle/component/src/org/icefaces/component/linkbutton/LinkButtonMeta.java
        Commit graph MODIFY /icefaces/scratchpads/sparkle/component/resources/org.icefaces.component.linkbutton/linkbutton.js
        Commit graph MODIFY /icefaces/scratchpads/sparkle/component/src/org/icefaces/component/linkbutton/LinkButtonRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #22687 Tue Oct 19 10:31:08 MDT 2010 greg.dick ICE-5814 Needed to rename javascript block as Idea missed it during refactoring.
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/sparkle/component/resources/org.icefaces.component.linkbutton/linkbutton.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #22708 Wed Oct 20 16:16:25 MDT 2010 greg.dick ICE-5814 Added single submit tlddoc
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/sparkle/component/src/org/icefaces/component/linkbutton/LinkButtonMeta.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #22709 Wed Oct 20 16:16:53 MDT 2010 greg.dick ICE-5814 Added support for value property from test page
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/sparkle/showcase/test/src/org/icefaces/commandLink/LinkButtonBean.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #22710 Wed Oct 20 16:17:33 MDT 2010 greg.dick ICE-5814 Added support for value property into Aria property
        Files Changed
        Commit graph MODIFY /icefaces/scratchpads/sparkle/component/src/org/icefaces/component/linkbutton/LinkButtonRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #22927 Wed Oct 27 10:12:47 MDT 2010 greg.dick ICE-5814 Write the styleClass property to the class attribute rather that styleClass
        Files Changed
        Commit graph MODIFY /icefaces2/trunk/icefaces/ace/component/src/org/icefaces/component/linkbutton/LinkButtonRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #22929 Wed Oct 27 11:05:05 MDT 2010 greg.dick ICE-5814 Write the style class to the inner first child as well.
        Files Changed
        Commit graph MODIFY /icefaces2/trunk/icefaces/ace/component/src/org/icefaces/component/linkbutton/LinkButtonRenderer.java
        Ken Fyten made changes -
        Summary Add commandLink Sparkle component New LinkButton ACE component
        Environment ICEFaces 2.0 ICEFaces 2.0 ACE Components
        Salesforce Case []
        Component/s ACE-Components [ 10050 ]
        Component/s Components [ 10012 ]
        Assignee Priority P2
        Description Add a commandLink component to the sparkle component suite. Add a linkButton component to the ACE component suite.
        Ken Fyten made changes -
        Status Reopened [ 4 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Ken Fyten made changes -
        Fix Version/s 2.0.0 [ 10230 ]
        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

          • Assignee:
            Greg Dick
            Reporter:
            Greg Dick
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: