[ 
https://issues.apache.org/jira/browse/TOMAHAWK-1610?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13200684#comment-13200684
 ] 

milan durovic commented on TOMAHAWK-1610:
-----------------------------------------

me again. I managed to get mouse clicks handled, but the bug is still there and 
needs addressing. I'll provide the details of what I did with a hope it may 
give a hint to the maintainer where to fix the problem.

First of all, documentation needs to be updated to reflect the fact that no 
mouse events will be handled UNLESS schedule is editable ("readonly" set to 
"false" AND "submitOnClick" is set to "true"). I don't quite understand what 
the meaning of "readonly" is, ie. how its setting affects component behaviour.

Anyway, in addition to setting those flags, I decided to set 
mouseListenerExpression in HtmlSchedule myself. So, I defined "binding" 
attribute on schedule component like:

<t:schedule value="#{allEvents.model}" id="myEvents"
  binding="#{allEvents.component}"
  rendered="true" readonly="false"
...

and then in the backing bean code:

public void setComponent( HtmlSchedule c )
{
        Class<?>[] params = { ScheduleMouseEvent.class };
        component = c;
        // try to hook mouse listener here
        c.setMouseListenerExpression( 
ExpressionFactory.newInstance().createMethodExpression( 
FacesContext.getCurrentInstance().getELContext(), "#{allEvents.clicked}", null, 
params ) );
}

after that, it mouse clicks handling worked like a charm. I suppose proper 
setting of mouseListenerExpression somewhere in tag handler for schedule 
component has not been done properly. I don't know the details of MyFaces 
architecture, but by looking at the code I have impression that the maintainer 
tried to keep backward compatibility with the old schedule component's 
attribute "mouseListener", but somewhere it failed to create the correct 
setting.

Please let me know when this is fixed so that I can remove this temporary fix.

By the way, I think that handling of mouse events should be allowed regardless 
of "readonly" setting. What if I don't want to edit the schedule, but I do want 
to redirect the user to a page with more details that is related to a 
particular entry clicked? It would be very useful.

Thanks,
Milan Durovic
                
> schedule not reacting to mouseListener setting
> ----------------------------------------------
>
>                 Key: TOMAHAWK-1610
>                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1610
>             Project: MyFaces Tomahawk
>          Issue Type: Bug
>          Components: Schedule
>    Affects Versions: 1.1.11
>         Environment: myfaces 2.0, myfaces 2.1, tomcat 7.x, facelets, any OS
>            Reporter: milan durovic
>
> I'm trying to handle mouse click events over schedule entries in t:schedule
> Tomahawk component. In the page definition I have:
> <t:schedule value="#{allEvents.model}" id="myEvents" rendered="true" 
> readonly="false" theme="#{allEvents.theme}" tooltip="true" 
> mouseListener="#{allEvents.clicked}" entryRenderer="#{allEvents.renderer}" 
> headerDateFormat="#{allEvents.headerDateFormat}" expandToFitEntries="true" 
> splitWeekend="false" />
> and the method is defined as:
> public String clicked( ScheduleMouseEvent event ) { switch( 
> event.getEventType() ) ...
> Originally, method "clicked" was void, but I changed this to returning String,
> after looking at the source code of the ScheduleTagHandler class,
> "createMetaRuleset" method.
> However, in either case, it doesn't work. "clicked" method never gets invoked,
> and in logs I can't find anything that would indicate if something was wrong.
> I was using MyFaces JSF 2.0, then upgraded to JSF 2.1 - no change. t:schedule
> component works in every aspect (i.e. displaying entries, asking for new 
> entries
> when the model changes selectedDate etc etc) EXCEPT for capturing mouse 
> clicks.
> This problem is present regardless of whether the component is used in 
> facelets environment or not.
> I started a thread with this question on myfaces users mailing list. It seems 
> that org.apache.myfaces.custom.schedule.ScheduleTagHandler defines 
> "mouseListener" attribute handling, but it seems that in component definition 
> for org.apache.myfaces.UISchedule class "mouseListener" is replaced with 
> "mouseListenerExpression"
> I'm not an expert in low level component wiring, but there seems to be some 
> discrepancy there.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to