Thanks jason,

I just implement HasSelectionHandlers to handle a list of dynamic
hasclickhandler.
It work fine and nice.


On Sep 11, 7:59 am, "Jason A. Beranek" <[email protected]>
wrote:
> I take a little different approach, but you have most of the
> fundamentals. The characteristic interface (i.e., Listener in your
> example) shouldn't be defined as part of a particular instance of
> MyPresenter.View, as that ties the Presenter directly to a specific
> view implementation. Also, I would recommend following the Handler
> pattern in GWT, as it allows you to utilize some of the Handler
> management functions.
>
> Taking your example, here's a possible approach using
> SelectionHandler<String> instead of MyView.Listener:
>
> public class MyView extend Composite implements MyPresenter.View,
> HasSelectionHandlers<String> {
>
>   HasSelectionHandlers<String> getSelectionSource() {
>     return this;
>   }
>
>   ...
>
>   //Do something with a click event (called by the ClickHandler)
>   void doClick( CLickEvent event ) {
>     //Retrieve the selection (i.e., item to edit) by processing the
> ClickEvent
>     String selection = getSelectionFromClickEvent( event );
>     SelectionEvent.fire(this, selection);
>   }
>
> }
>
> public class MyPresenter implement MyView.Listener {
>
>   public interface View {
>     HasSelectionHandlers<String> getSelectionSource();
>   }
>
>   ...
>
>   public void bind(View display){
>     display.getSelectionSource().addSelectionHandler(new
> SelectionHandler<String>(){
>
>       public void onSelection(SelectionEvent<String> event) {
>         //Do Something in response to Selection
>       }
>
>     });
>   };
>
> }
>
> Note that in the example, even though MyView implements the
> HasSelectionHandler<String> interface directly, the Presenter only
> accesses an instance that HasSelectionHandlers<String> through
> View.getSelectionSource(). This allows different View implementations
> to implement different sources for the SelectionEvent, reducing
> potential coupling between the view and presenter. Hope that helps.
>
> -Jason
>
> On Sep 10, 10:47 am, fonghuangyee <[email protected]> wrote:
>
>
>
> > Thanks for ur advise.
> > How about if i define a interface ( View Listener ), then my presenter
> > implement the View Listener?
>
> > Example :
>
> > public class MyView extend Composite implement MyPresenter.View {
>
> >       public interface Listerner {
>
> >              public void onEdit(String id);
> >       }
>
> >       .....
> >       .....
>
> >       Listener listener;
>
> >       // a List of Button here
> >       button.addClickHandler(new ClickHandler(){
>
> >              public void onClick(ClickEvent event){
> >                      listener.onEdit(id);
> >              }
> >       );
>
> > }
>
> > public class MyPresenter implement MyView.Listener {
>
> >       public interface View {
>
> >       }
>
> >       public void onEdit(String id){
> >            // Do something here.
> >       };
>
> > }
>
> > Please correct me if i am following the wrong way.
> > Thanks.
>
> > On Sep 7, 8:32 am, "Jason A. Beranek" <[email protected]> wrote:
>
> > > One approach I've used is to put some logic in the View to forward a
> > > different event than the purely GUI events to the Presenter. For
> > > example, if you have a table or list of items which can be clicked,
> > > and a click signifies selection of an item, use HasSelectionHandlers()
> > > in the View, and translate in the View which item is selected by the
> > > click. This seems to work for selection use cases, but it makes your
> > > View in theMVPmore Supervising Controller (http://martinfowler.com/
> > > eaaDev/SupervisingPresenter.html) than Passive View (http://
> > > martinfowler.com/eaaDev/PassiveScreen.html).
>
> > > If you were to need separate handling for each list item being
> > > clicked, then you are likely looking at a Presenter per list item or
> > > at having the View include a factory to add list items and return
> > > handlers (i.e., HasClickHandlers addListItem() ). Any of these
> > > approaches will work, it just depends on what you are looking to do
> > > with each click handler.
>
> > > V/r,
>
> > > Jason
>
> > > On Sep 6, 3:19 am, fonghuangyee <[email protected]> wrote:
>
> > > > Hihi ,
> > > > After i go through so manyMVPexample, i found that we always use
> > > > presenter to get thoseHasClickHandlerfrom Display( Or View) to do
> > > > some action. This way works nice for static clickable action, but if
> > > > we have some dynamic button ( example a table listing with a list of
> > > > clickable  action ), then i have to get a list ofHasClickHandler
> > > > from
> > > > display? and every time i add new row to the table listing, i have to
> > > > take care of the handler action, quite troublesome.
> > > > any advice?
>
> > > > Thanks.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to