Author: norman
Date: Thu Jul 16 11:59:15 2009
New Revision: 794643

URL: http://svn.apache.org/viewvc?rev=794643&view=rev
Log:
Make use of gwt-presenter which is a slim framework which simplify the usage of 
MVP

Added:
    labs/hupa/src/main/java/org/apache/hupa/client/gin/HupaClientModule.java
      - copied, changed from r794142, 
labs/hupa/src/main/java/org/apache/hupa/client/gin/MyClientModule.java
    labs/hupa/src/main/java/org/apache/hupa/client/gin/HupaGinjector.java
      - copied, changed from r794142, 
labs/hupa/src/main/java/org/apache/hupa/client/gin/MyGinjector.java
Removed:
    labs/hupa/src/main/java/org/apache/hupa/client/gin/MyClientModule.java
    labs/hupa/src/main/java/org/apache/hupa/client/gin/MyGinjector.java
    labs/hupa/src/main/java/org/apache/hupa/client/rpc/EventBus.java
Modified:
    labs/hupa/pom.xml
    labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml
    labs/hupa/src/main/java/org/apache/hupa/client/Hupa.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/AppPresenter.java
    
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/LoginView.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainView.java

Modified: labs/hupa/pom.xml
URL: 
http://svn.apache.org/viewvc/labs/hupa/pom.xml?rev=794643&r1=794642&r2=794643&view=diff
==============================================================================
--- labs/hupa/pom.xml (original)
+++ labs/hupa/pom.xml Thu Jul 16 11:59:15 2009
@@ -53,6 +53,11 @@
                        <url>http://gwt-dispatch.googlecode.com/svn/maven2</url>
                </repository>
                <repository>
+                       <id>gwt-presenter</id>
+                       <name>GWT Presenter repository at googlecode</name>
+                       
<url>http://gwt-presenter.googlecode.com/svn/maven2</url>
+               </repository>
+               <repository>
                        <id>cobogw</id>
                        <name>Cobogw repository at googlecode</name>
                        <url>http://cobogw.googlecode.com/svn/maven2</url>
@@ -265,6 +270,11 @@
                        <version>1.0.0-SNAPSHOT</version>
                </dependency>
                <dependency>
+                       <groupId>net.customware.gwt.presenter</groupId>
+                       <artifactId>gwt-presenter</artifactId>
+                       <version>1.0.0-SNAPSHOT</version>
+               </dependency>
+               <dependency>
                        <groupId>com.google.gwt</groupId>
                        <artifactId>gwt-incubator</artifactId>
                        <version>march-02-2009</version>

Modified: labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml?rev=794643&r1=794642&r2=794643&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml (original)
+++ labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml Thu Jul 16 11:59:15 
2009
@@ -18,6 +18,8 @@
   <inherits name='com.google.gwt.gen2.table.override.Override'/>
   <inherits name='com.google.gwt.gen2.table.ScrollTable'/>
   <inherits name='net.customware.gwt.dispatch.Dispatch' />
+  <inherits name='net.customware.gwt.presenter.Presenter' />
+  
   <inherits name="com.google.gwt.inject.Inject"/>
   
   <source path="shared"/>

Modified: labs/hupa/src/main/java/org/apache/hupa/client/Hupa.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/Hupa.java?rev=794643&r1=794642&r2=794643&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/Hupa.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/Hupa.java Thu Jul 16 
11:59:15 2009
@@ -19,7 +19,7 @@
 
 package org.apache.hupa.client;
 
-import org.apache.hupa.client.gin.MyGinjector;
+import org.apache.hupa.client.gin.HupaGinjector;
 import org.apache.hupa.client.mvp.AppPresenter;
 
 import com.google.gwt.core.client.EntryPoint;
@@ -27,7 +27,7 @@
 import com.google.gwt.user.client.ui.RootPanel;
 
 public class Hupa implements EntryPoint{
-       private final MyGinjector injector = GWT.create(MyGinjector.class);
+       private final HupaGinjector injector = GWT.create(HupaGinjector.class);
        
        public void onModuleLoad() {
                

Copied: 
labs/hupa/src/main/java/org/apache/hupa/client/gin/HupaClientModule.java (from 
r794142, labs/hupa/src/main/java/org/apache/hupa/client/gin/MyClientModule.java)
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/gin/HupaClientModule.java?p2=labs/hupa/src/main/java/org/apache/hupa/client/gin/HupaClientModule.java&p1=labs/hupa/src/main/java/org/apache/hupa/client/gin/MyClientModule.java&r1=794142&r2=794643&rev=794643&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/gin/MyClientModule.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/gin/HupaClientModule.java 
Thu Jul 16 11:59:15 2009
@@ -19,6 +19,11 @@
 
 package org.apache.hupa.client.gin;
 
+import net.customware.gwt.presenter.client.DefaultEventBus;
+import net.customware.gwt.presenter.client.EventBus;
+import net.customware.gwt.presenter.client.gin.AbstractPresenterModule;
+import net.customware.gwt.presenter.client.place.PlaceManager;
+
 import org.apache.hupa.client.mvp.AppPresenter;
 import org.apache.hupa.client.mvp.IMAPMessageListPresenter;
 import org.apache.hupa.client.mvp.IMAPMessageListView;
@@ -28,30 +33,22 @@
 import org.apache.hupa.client.mvp.LoginView;
 import org.apache.hupa.client.mvp.MainPresenter;
 import org.apache.hupa.client.mvp.MainView;
-import org.apache.hupa.client.rpc.EventBus;
 
-import com.google.gwt.inject.client.AbstractGinModule;
 import com.google.inject.Singleton;
 
-public class MyClientModule extends AbstractGinModule{
+public class HupaClientModule extends AbstractPresenterModule {
 
        @Override
-       protected void configure() {
-               bind(EventBus.class).in(Singleton.class);
-               
-               
bind(LoginPresenter.Display.class).to(LoginView.class).in(Singleton.class);
-               bind(LoginPresenter.class).in(Singleton.class);
+       protected void configure() {            
+               
bind(EventBus.class).to(DefaultEventBus.class).in(Singleton.class);
+               bind(PlaceManager.class).in(Singleton.class);
+               
bindPresenter(LoginPresenter.class,LoginPresenter.Display.class, 
LoginView.class);
+               
bindPresenter(IMAPMessageListPresenter.class,IMAPMessageListPresenter.Display.class,IMAPMessageListView.class);
+               
bindPresenter(IMAPMessagePresenter.class,IMAPMessagePresenter.Display.class,IMAPMessageView.class);
+               
bindPresenter(MainPresenter.class,MainPresenter.Display.class,MainView.class);
                
                bind(AppPresenter.class).in(Singleton.class);
-               
-               
bind(MainPresenter.Display.class).to(MainView.class).in(Singleton.class);
-               bind(MainPresenter.class).in(Singleton.class);
-               
-               
bind(IMAPMessageListPresenter.Display.class).to(IMAPMessageListView.class).in(Singleton.class);
-               bind(IMAPMessageListPresenter.class).in(Singleton.class);
-               
-               
bind(IMAPMessagePresenter.Display.class).to(IMAPMessageView.class).in(Singleton.class);
-               bind(IMAPMessagePresenter.class).in(Singleton.class);
+
        }
 
 }

Copied: labs/hupa/src/main/java/org/apache/hupa/client/gin/HupaGinjector.java 
(from r794142, 
labs/hupa/src/main/java/org/apache/hupa/client/gin/MyGinjector.java)
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/gin/HupaGinjector.java?p2=labs/hupa/src/main/java/org/apache/hupa/client/gin/HupaGinjector.java&p1=labs/hupa/src/main/java/org/apache/hupa/client/gin/MyGinjector.java&r1=794142&r2=794643&rev=794643&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/gin/MyGinjector.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/gin/HupaGinjector.java Thu 
Jul 16 11:59:15 2009
@@ -25,7 +25,7 @@
 import com.google.gwt.inject.client.GinModules;
 import com.google.gwt.inject.client.Ginjector;
 
-...@ginmodules({ClientDispatchModule.class,MyClientModule.class})
-public interface MyGinjector extends Ginjector {
+...@ginmodules({ClientDispatchModule.class,HupaClientModule.class})
+public interface HupaGinjector extends Ginjector {
        public AppPresenter getAppPresenter();
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/client/mvp/AppPresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/AppPresenter.java?rev=794643&r1=794642&r2=794643&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/AppPresenter.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/AppPresenter.java Thu 
Jul 16 11:59:15 2009
@@ -21,8 +21,8 @@
 package org.apache.hupa.client.mvp;
 
 import net.customware.gwt.dispatch.client.DispatchAsync;
+import net.customware.gwt.presenter.client.EventBus;
 
-import org.apache.hupa.client.rpc.EventBus;
 import org.apache.hupa.shared.data.IMAPUser;
 import org.apache.hupa.shared.events.LoginEvent;
 import org.apache.hupa.shared.events.LoginEventHandler;
@@ -81,16 +81,13 @@
                                        
                                };
                                noopTimer.scheduleRepeating(30000);
-                               container.clear();
-                               mainPresenter.go(container);
+                               showMain();
                        }
-                       
                });
                bus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
 
                        public void onLogout(LogoutEvent event) {
-                               container.clear();
-                               loginPresenter.go(container);
+                               showLogin();
                                if (noopTimer != null) {
                                        noopTimer.cancel();
                                }
@@ -99,8 +96,20 @@
                });
        }
        
+
+       private void showMain() {
+               container.clear();
+               container.add(mainPresenter.getDisplay().asWidget());
+       }
+       
+       
+       private void showLogin() {
+               container.clear();
+               container.add(loginPresenter.getDisplay().asWidget());
+       }
+       
        public void go(HasWidgets container) {
                this.container = container;
-               loginPresenter.go(container);
+               showLogin();
        }
 }

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java?rev=794643&r1=794642&r2=794643&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
 (original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
 Thu Jul 16 11:59:15 2009
@@ -19,10 +19,15 @@
 
 package org.apache.hupa.client.mvp;
 
+import net.customware.gwt.presenter.client.EventBus;
+import net.customware.gwt.presenter.client.place.Place;
+import net.customware.gwt.presenter.client.place.PlaceRequest;
+import net.customware.gwt.presenter.client.widget.WidgetDisplay;
+import net.customware.gwt.presenter.client.widget.WidgetPresenter;
+
 import org.apache.hupa.client.events.ClickEvent;
 import org.apache.hupa.client.events.ClickHandler;
 import org.apache.hupa.client.events.HasClickHandlers;
-import org.apache.hupa.client.rpc.EventBus;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.IMAPMessage;
 import org.apache.hupa.shared.data.IMAPUser;
@@ -34,36 +39,36 @@
 
 import com.google.gwt.gen2.table.event.client.HasPageLoadHandlers;
 import com.google.gwt.gen2.table.event.client.HasRowSelectionHandlers;
-import com.google.gwt.user.client.ui.HasWidgets;
-import com.google.gwt.user.client.ui.Widget;
 import com.google.inject.Inject;
 
-public class IMAPMessageListPresenter {
+public class IMAPMessageListPresenter extends 
WidgetPresenter<IMAPMessageListPresenter.Display>{
        
-       public interface Display {
+       public interface Display extends WidgetDisplay{
                public HasRowSelectionHandlers getDataTableSelection();
                public HasPageLoadHandlers getDataTableLoad();
                public HasClickHandlers getDataTableClick();
                public void reloadData(IMAPUser user, IMAPFolder folder,String 
searchValue);
        }
 
-       
-       private Display display;        
-       private EventBus bus;
        protected IMAPUser user;
        protected IMAPFolder folder;
        protected String searchValue;
        
        @Inject
-       public IMAPMessageListPresenter(EventBus 
bus,IMAPMessageListPresenter.Display display) {
-               this.bus = bus;
-               this.display = display;
-               bindHandlers();
-               bind(display);
+       public IMAPMessageListPresenter(IMAPMessageListPresenter.Display 
display,EventBus bus) {
+               super(display,bus);
+               bind();
        }
        
-       private void bindHandlers() {
-               bus.addHandler(LoadMessagesEvent.TYPE, new 
LoadMessagesEventHandler() {
+       @Override
+       public Place getPlace() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       protected void onBind() {
+               eventBus.addHandler(LoadMessagesEvent.TYPE, new 
LoadMessagesEventHandler() {
 
                        public void onLoadMessagesEvent(LoadMessagesEvent 
loadMessagesEvent) {
                                user = loadMessagesEvent.getUser();
@@ -73,7 +78,7 @@
                        }
                        
                });
-               bus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
+               eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
 
                        public void onLogin(LoginEvent event) {
                                user = event.getUser();
@@ -83,25 +88,37 @@
 
                        
                });
-       }
-       
-       public void bind(final Display display) {
-               this.display = display;
                
                display.getDataTableClick().addClickHandler(new 
ClickHandler<IMAPMessage>() {
 
                        public void onClick(ClickEvent<IMAPMessage> event) {
                                if (event.getCell() >=1) {
-                                       bus.fireEvent(new 
ExpandMessageEvent(user,folder,event.getRowValue()));
+                                       eventBus.fireEvent(new 
ExpandMessageEvent(user,folder,event.getRowValue()));
                                }
                        }
                        
                });
        }
-       
-       
-       public void go(HasWidgets w) {
-               w.add((Widget)display);
+
+       @Override
+       protected void onPlaceRequest(PlaceRequest request) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       protected void onUnbind() {
+               
+       }
+
+       public void refreshDisplay() {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void revealDisplay() {
+               // TODO Auto-generated method stub
+               
        }
        
 

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java?rev=794643&r1=794642&r2=794643&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java 
Thu Jul 16 11:59:15 2009
@@ -25,11 +25,11 @@
 import java.util.List;
 
 import net.customware.gwt.dispatch.client.DispatchAsync;
+import net.customware.gwt.presenter.client.EventBus;
 
 import org.apache.hupa.client.HupaConstants;
 import org.apache.hupa.client.bundles.MyPagingOptionImages;
 import org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display;
-import org.apache.hupa.client.rpc.EventBus;
 import org.apache.hupa.client.widgets.MyFixedWithGrid;
 import org.apache.hupa.client.widgets.PagingScrollToolTipTable;
 import org.apache.hupa.client.widgets.ToolTipProvider;
@@ -428,5 +428,19 @@
        public org.apache.hupa.client.events.HasClickHandlers 
getDataTableClick() {
                return dataTable;
        }
+
+       public Widget asWidget() {
+               return this;
+       }
+
+       public void startProcessing() {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void stopProcessing() {
+               // TODO Auto-generated method stub
+               
+       }
        
 }

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java?rev=794643&r1=794642&r2=794643&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java 
(original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java 
Thu Jul 16 11:59:15 2009
@@ -20,19 +20,21 @@
 package org.apache.hupa.client.mvp;
 
 import net.customware.gwt.dispatch.client.DispatchAsync;
+import net.customware.gwt.presenter.client.EventBus;
+import net.customware.gwt.presenter.client.place.Place;
+import net.customware.gwt.presenter.client.place.PlaceRequest;
+import net.customware.gwt.presenter.client.widget.WidgetDisplay;
+import net.customware.gwt.presenter.client.widget.WidgetPresenter;
 
-import org.apache.hupa.client.rpc.EventBus;
 import org.apache.hupa.shared.data.IMAPMessage;
 
 import com.google.gwt.user.client.ui.HasHTML;
 import com.google.gwt.user.client.ui.HasText;
-import com.google.gwt.user.client.ui.HasWidgets;
-import com.google.gwt.user.client.ui.Widget;
 import com.google.inject.Inject;
 
-public class IMAPMessagePresenter {
+public class IMAPMessagePresenter extends 
WidgetPresenter<IMAPMessagePresenter.Display>{
 
-       public interface Display {
+       public interface Display extends WidgetDisplay{
                public HasText getFrom();
 
                public HasText getTo();
@@ -44,23 +46,17 @@
                public HasHTML getContent();
        }
 
-
+       public static final Place PLACE = new Place("IMAPMessage");
        private IMAPMessage message;
-       private EventBus bus;
        private DispatchAsync dispatcher;
 
        @Inject
-       private IMAPMessagePresenter(DispatchAsync dispatcher, EventBus 
bus,IMAPMessagePresenter.Display display) {
+       private IMAPMessagePresenter(IMAPMessagePresenter.Display 
display,EventBus bus, DispatchAsync dispatcher) {
+               super(display,bus);
                this.dispatcher = dispatcher;
-               this.bus = bus;
-               bind(display);
+               bind();
        }
 
-       private Display display;
-
-       public void bind(Display display) {
-               this.display = display;
-       }
        
        public void bind(IMAPMessage message) {
                this.message = message;
@@ -74,7 +70,32 @@
                
display.getContent().setHTML(message.getIMAPMessageContent().getText());
        }
 
-       public void go(HasWidgets w) {
-               w.add((Widget) display);
+       @Override
+       public Place getPlace() {
+               return PLACE;
+       }
+
+       @Override
+       protected void onBind() {
+       }
+
+       @Override
+       protected void onPlaceRequest(PlaceRequest request) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       protected void onUnbind() {
+               
+       }
+
+       public void refreshDisplay() {
+               updateDisplay();
+       }
+
+       public void revealDisplay() {
+               // TODO Auto-generated method stub
+               
        }
 }

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java?rev=794643&r1=794642&r2=794643&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java Thu 
Jul 16 11:59:15 2009
@@ -33,6 +33,7 @@
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.ScrollPanel;
 import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
 
 public class IMAPMessageView extends Composite implements Display{
        private Grid detailGrid = new Grid(4, 2);
@@ -123,4 +124,16 @@
                return to;
        }
 
+       public Widget asWidget() {
+               return this;
+       }
+
+       public void startProcessing() {
+               
+       }
+
+       public void stopProcessing() {
+               
+       }
+
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java?rev=794643&r1=794642&r2=794643&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/LoginPresenter.java Thu 
Jul 16 11:59:15 2009
@@ -20,9 +20,13 @@
 package org.apache.hupa.client.mvp;
 
 import net.customware.gwt.dispatch.client.DispatchAsync;
+import net.customware.gwt.presenter.client.EventBus;
+import net.customware.gwt.presenter.client.place.Place;
+import net.customware.gwt.presenter.client.place.PlaceRequest;
+import net.customware.gwt.presenter.client.widget.WidgetDisplay;
+import net.customware.gwt.presenter.client.widget.WidgetPresenter;
 
 import org.apache.hupa.client.HupaConstants;
-import org.apache.hupa.client.rpc.EventBus;
 import org.apache.hupa.shared.events.LoginEvent;
 import org.apache.hupa.shared.rpc.LoginUser;
 import org.apache.hupa.shared.rpc.LoginUserResult;
@@ -35,14 +39,12 @@
 import com.google.gwt.user.client.ui.Focusable;
 import com.google.gwt.user.client.ui.HasText;
 import com.google.gwt.user.client.ui.HasValue;
-import com.google.gwt.user.client.ui.HasWidgets;
-import com.google.gwt.user.client.ui.Widget;
 import com.google.inject.Inject;
 
-public class LoginPresenter {
+public class LoginPresenter extends WidgetPresenter<LoginPresenter.Display>{
     private HupaConstants constants = GWT.create(HupaConstants.class);
 
-       public interface Display {
+       public interface Display extends WidgetDisplay{
                public HasClickHandlers getLoginClick();
                public HasClickHandlers getResetClick();
                public HasValue<String> getUserNameValue();
@@ -52,40 +54,15 @@
        }
        
        private DispatchAsync dispatcher;
-       private LoginPresenter.Display display;
-       private EventBus bus;
-       
+       public static final Place PLACE = new Place("Login");
+
        @Inject
-       public LoginPresenter(DispatchAsync dispatcher,EventBus 
bus,LoginPresenter.Display display) {
+       public LoginPresenter(LoginPresenter.Display display,EventBus 
bus,DispatchAsync dispatcher) {
+               super(display,bus);
                this.dispatcher = dispatcher;
-               this.bus = bus;
-               this.display = display;
-               
-               bind(display);
+               bind();
        }
-       
-       /**
-        * Bind Display to this Presenter
-        * 
-        * @param display
-        */
-       public void bind(Display display) {
-               this.display = display;
-               display.getLoginClick().addClickHandler(new ClickHandler() {
-
-                       public void onClick(ClickEvent event) {
-                               doLogin();
-                       }
-                       
-               });
-               display.getResetClick().addClickHandler(new ClickHandler() {
 
-                       public void onClick(ClickEvent event) {
-                               doReset();
-                       }
-                       
-               });
-       }
        
        /**
         * Try to login the user
@@ -99,7 +76,7 @@
                        }
 
                        public void onSuccess(LoginUserResult result) {
-                               bus.fireEvent(new LoginEvent(result.getUser()));
+                               eventBus.fireEvent(new 
LoginEvent(result.getUser()));
                                doReset();
                        }
                        
@@ -114,10 +91,53 @@
                display.getPasswordValue().setValue("");
                display.getErrorText().setText("");
                display.getUserNameFocus().setFocus(true);
+       }
+
+       @Override
+       public Place getPlace() {
+               return PLACE;
+       }
+
+       @Override
+       protected void onBind() {
+               display.getLoginClick().addClickHandler(new ClickHandler() {
+
+                       public void onClick(ClickEvent event) {
+                               GWT.log("HERE", null);
+                               doLogin();
+                       }
+                       
+               });
+               display.getResetClick().addClickHandler(new ClickHandler() {
+
+                       public void onClick(ClickEvent event) {
+                               GWT.log("RESET", null);
+
+                               doReset();
+                       }
+                       
+               });
+       }
+
+       @Override
+       protected void onPlaceRequest(PlaceRequest request) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       protected void onUnbind() {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void refreshDisplay() {
+               // TODO Auto-generated method stub
                
        }
 
-       public void go(HasWidgets container) {
-               container.add((Widget)display);
+       public void revealDisplay() {
+               // TODO Auto-generated method stub
+               
        }
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/client/mvp/LoginView.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/LoginView.java?rev=794643&r1=794642&r2=794643&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/LoginView.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/LoginView.java Thu Jul 
16 11:59:15 2009
@@ -39,6 +39,7 @@
 import com.google.gwt.user.client.ui.PasswordTextBox;
 import com.google.gwt.user.client.ui.TextBox;
 import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
 
 public class LoginView extends Composite implements 
KeyUpHandler,LoginPresenter.Display{
     
@@ -194,4 +195,25 @@
        public Focusable getUserNameFocus() {
                return usernameTextBox;
        }
+
+
+       /*
+        * (non-Javadoc)
+        * @see 
net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()
+        */
+       public Widget asWidget() {
+               return this;
+       }
+
+
+       public void startProcessing() {
+               // TODO Auto-generated method stub
+               
+       }
+
+
+       public void stopProcessing() {
+               // TODO Auto-generated method stub
+               
+       }
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java?rev=794643&r1=794642&r2=794643&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java Thu 
Jul 16 11:59:15 2009
@@ -25,8 +25,12 @@
 import java.util.List;
 
 import net.customware.gwt.dispatch.client.DispatchAsync;
+import net.customware.gwt.presenter.client.EventBus;
+import net.customware.gwt.presenter.client.place.Place;
+import net.customware.gwt.presenter.client.place.PlaceRequest;
+import net.customware.gwt.presenter.client.widget.WidgetDisplay;
+import net.customware.gwt.presenter.client.widget.WidgetPresenter;
 
-import org.apache.hupa.client.rpc.EventBus;
 import org.apache.hupa.client.widgets.IMAPTreeItem;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.IMAPMessage;
@@ -59,29 +63,26 @@
 import com.google.gwt.user.client.Window.ClosingHandler;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.google.gwt.user.client.ui.HasValue;
-import com.google.gwt.user.client.ui.HasWidgets;
 import com.google.gwt.user.client.ui.TreeItem;
 import com.google.gwt.user.client.ui.Widget;
 import com.google.gwt.user.client.ui.HTMLTable.Cell;
 import com.google.inject.Inject;
 
-public class MainPresenter {
+public class MainPresenter extends WidgetPresenter<MainPresenter.Display>{
 
        
-       public interface Display {
+       public interface Display extends WidgetDisplay{
                public HasClickHandlers getLogoutClick();
                public HasSelectionHandlers<TreeItem> getTree();
                //public HasRowSelectionHandlers getTableClick();
                public void bindTreeItems(List<IMAPTreeItem> treeList);
                public HasClickHandlers getSearchClick();
                public HasValue<String> getSearchValue();
-               public HasWidgets getCenterContainer();
                public void fillOracle(ArrayList<IMAPMessage> messages);
+               public void setCenter(Widget widget);
        }
        
        private DispatchAsync dispatcher;
-       private EventBus bus;
-       private Display display;
        private IMAPUser user;
        private IMAPFolder folder;
        
@@ -91,69 +92,15 @@
        
        
        @Inject
-       public MainPresenter(DispatchAsync dispatcher, EventBus 
bus,MainPresenter.Display display,IMAPMessageListPresenter 
messageListPresenter, IMAPMessagePresenter messagePresenter) {
-               this.bus = bus;
+       public MainPresenter(MainPresenter.Display display, EventBus bus, 
DispatchAsync dispatcher,IMAPMessageListPresenter messageListPresenter, 
IMAPMessagePresenter messagePresenter) {
+               super(display,bus);
                this.dispatcher = dispatcher;
                this.messageListPresenter = messageListPresenter;
                this.messagePresenter = messagePresenter;
-               this.display = display;
-               
-               bindHandler();
-               bind(display);
+               showMessageTable();
+               bind();
        }
        
-       private void bindHandler() {
-               bus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
-
-                       public void onLogin(LoginEvent event) {
-                               user = event.getUser();
-                               loadTreeItems();
-                       }
-                       
-               });
-               bus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
-
-                       public void onLogout(LogoutEvent logoutEvent) {
-                               reset();
-                       }
-                       
-               });
-               
-               bus.addHandler(MessagesReceivedEvent.TYPE, new 
MessagesReceivedEventHandler() {
-
-                       public void onMessagesReceived(MessagesReceivedEvent 
event) {
-                               display.fillOracle(event.getMessages());
-                       }
-                       
-               });
-               
-               bus.addHandler(ExpandMessageEvent.TYPE, new 
ExpandMessageEventHandler() {
-
-                       public void onExpandMessage(ExpandMessageEvent event) {
-                               dispatcher.execute(new 
ExposeMessage(event.getUser(),event.getFolder(),event.getMessage()), new 
AsyncCallback<ExposeMessageResult>() {
-
-                                       public void onFailure(Throwable caught) 
{
-                                               GWT.log("ERROR=", caught);
-                                       }
-
-                                       public void 
onSuccess(ExposeMessageResult result) {
-                                               
showMessage(result.getMessage());
-                                       }
-                                       
-                               });
-                       }
-                       
-               });
-               
-               Window.addWindowClosingHandler(new ClosingHandler() {
-
-                       public void onWindowClosing(ClosingEvent event) {
-                               doLogout();
-                       }
-                       
-               });
-               
-       }
        
        protected void loadTreeItems() {
                dispatcher.execute(new FetchFolders(user), new 
AsyncCallback<FetchFoldersResult>() {
@@ -206,8 +153,97 @@
                });
                return tList;
        }
-       public void bind(final Display display) {
-               this.display = display;
+
+       private void doLogout() {
+               if (user != null) {
+                       dispatcher.execute(new LogoutUser(user), new 
AsyncCallback<LogoutUserResult>() {
+
+                               public void onFailure(Throwable caught) {
+                                       GWT.log("ERROR",caught);
+                               }
+
+                               public void onSuccess(LogoutUserResult result) {
+                                       eventBus.fireEvent(new 
LogoutEvent(result.getUser()));
+                               }
+                       
+                       });
+               }
+       }
+
+       private void showMessageTable() {
+               display.setCenter(messageListPresenter.getDisplay().asWidget());
+       }
+       
+       private void showMessage(IMAPMessage message) {
+               messagePresenter.bind(message);
+               display.setCenter(messagePresenter.getDisplay().asWidget());
+       }
+       
+       
+       private void reset() {
+               display.getSearchValue().setValue("");
+               display.bindTreeItems(new ArrayList<IMAPTreeItem>());
+       }
+       
+
+       @Override
+       public Place getPlace() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       protected void onBind() {
+               eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
+
+                       public void onLogin(LoginEvent event) {
+                               user = event.getUser();
+                               loadTreeItems();
+                       }
+                       
+               });
+               eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
+
+                       public void onLogout(LogoutEvent logoutEvent) {
+                               reset();
+                       }
+                       
+               });
+               
+               eventBus.addHandler(MessagesReceivedEvent.TYPE, new 
MessagesReceivedEventHandler() {
+
+                       public void onMessagesReceived(MessagesReceivedEvent 
event) {
+                               display.fillOracle(event.getMessages());
+                       }
+                       
+               });
+               
+               eventBus.addHandler(ExpandMessageEvent.TYPE, new 
ExpandMessageEventHandler() {
+
+                       public void onExpandMessage(ExpandMessageEvent event) {
+                               dispatcher.execute(new 
ExposeMessage(event.getUser(),event.getFolder(),event.getMessage()), new 
AsyncCallback<ExposeMessageResult>() {
+
+                                       public void onFailure(Throwable caught) 
{
+                                               GWT.log("ERROR=", caught);
+                                       }
+
+                                       public void 
onSuccess(ExposeMessageResult result) {
+                                               
showMessage(result.getMessage());
+                                       }
+                                       
+                               });
+                       }
+                       
+               });
+               
+               Window.addWindowClosingHandler(new ClosingHandler() {
+
+                       public void onWindowClosing(ClosingEvent event) {
+                               doLogout();
+                       }
+                       
+               });
+               
                reset();
                display.getLogoutClick().addClickHandler(new ClickHandler() {
 
@@ -223,7 +259,7 @@
                                TreeItem item = event.getSelectedItem();
                                folder = (IMAPFolder) item.getUserObject();
                                showMessageTable();
-                               bus.fireEvent(new 
LoadMessagesEvent(user,folder));
+                               eventBus.fireEvent(new 
LoadMessagesEvent(user,folder));
                        }
                        
                });
@@ -235,48 +271,31 @@
                                if 
(display.getSearchValue().getValue().trim().length() >0) {
                                        searchValue = 
display.getSearchValue().getValue().trim();
                                }
-                               bus.fireEvent(new 
LoadMessagesEvent(user,folder,searchValue));
+                               eventBus.fireEvent(new 
LoadMessagesEvent(user,folder,searchValue));
                        }
                        
                });
-                       
        }
 
-       private void doLogout() {
-               if (user != null) {
-                       dispatcher.execute(new LogoutUser(user), new 
AsyncCallback<LogoutUserResult>() {
-
-                               public void onFailure(Throwable caught) {
-                                       GWT.log("ERROR",caught);
-                               }
-
-                               public void onSuccess(LogoutUserResult result) {
-                                       bus.fireEvent(new 
LogoutEvent(result.getUser()));
-                               }
-                       
-                       });
-               }
+       @Override
+       protected void onPlaceRequest(PlaceRequest request) {
+               // TODO Auto-generated method stub
+               
        }
 
-       private void showMessageTable() {
-               display.getCenterContainer().clear();
-               messageListPresenter.go(display.getCenterContainer());
-       }
-       
-       private void showMessage(IMAPMessage message) {
-               display.getCenterContainer().clear();
-               messagePresenter.bind(message);
-               messagePresenter.go(display.getCenterContainer());
+       @Override
+       protected void onUnbind() {
+               // TODO Auto-generated method stub
+               
        }
-       
-       
-       private void reset() {
-               display.getSearchValue().setValue("");
-               display.bindTreeItems(new ArrayList<IMAPTreeItem>());
+
+       public void refreshDisplay() {
+               // TODO Auto-generated method stub
+               
        }
-       
-       public void go(HasWidgets w) {
-               w.add((Widget)display);
-               showMessageTable();
+
+       public void revealDisplay() {
+               // TODO Auto-generated method stub
+               
        }
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainView.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainView.java?rev=794643&r1=794642&r2=794643&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainView.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainView.java Thu Jul 16 
11:59:15 2009
@@ -39,7 +39,6 @@
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.DockPanel;
 import com.google.gwt.user.client.ui.HasValue;
-import com.google.gwt.user.client.ui.HasWidgets;
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
@@ -47,6 +46,7 @@
 import com.google.gwt.user.client.ui.Tree;
 import com.google.gwt.user.client.ui.TreeItem;
 import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
 import com.google.inject.Inject;
 
 public class MainView extends Composite implements MainPresenter.Display{
@@ -183,7 +183,22 @@
                searchBox.setText("");
        }
 
-       public HasWidgets getCenterContainer() {
-               return center;
+       public void setCenter(Widget widget) {
+               center.clear();
+               center.setWidget(widget);
+       }
+
+       public Widget asWidget() {
+               return this;
+       }
+
+       public void startProcessing() {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void stopProcessing() {
+               // TODO Auto-generated method stub
+               
        }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to