Revision: 8483
Author: [email protected]
Date: Wed Aug  4 17:46:23 2010
Log: Add login widgets to Expenses and the Mobile versions

Review at http://gwt-code-reviews.appspot.com/713802

Review by: [email protected]
http://code.google.com/p/google-web-toolkit/source/detail?r=8483

Modified:
 /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/Expenses.java
/trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesMobile.java /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesMobileShell.java /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesMobileShell.ui.xml /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesShell.java /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesShell.ui.xml /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ScaffoldMobile.java /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ScaffoldMobileShell.java /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ScaffoldMobileShell.ui.xml
 /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/mobile.css

=======================================
--- /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/Expenses.java Mon Jun 7 12:20:31 2010 +++ /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/Expenses.java Wed Aug 4 17:46:23 2010
@@ -18,6 +18,11 @@
 import com.google.gwt.core.client.EntryPoint;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.shared.HandlerManager;
+import com.google.gwt.requestfactory.client.AuthenticationFailureHandler;
+import com.google.gwt.requestfactory.client.LoginWidget;
+import com.google.gwt.requestfactory.shared.Receiver;
+import com.google.gwt.requestfactory.shared.RequestEvent;
+import com.google.gwt.requestfactory.shared.UserInformationRecord;
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.sample.bikeshed.style.client.Styles;
 import com.google.gwt.sample.expenses.gwt.request.EmployeeRecord;
@@ -26,10 +31,14 @@
 import com.google.gwt.sample.expenses.gwt.request.ExpensesRequestFactory;
 import com.google.gwt.sample.expenses.gwt.request.ReportRecord;
 import com.google.gwt.sample.expenses.gwt.request.ReportRecordChanged;
+import com.google.gwt.user.client.Window.Location;
 import com.google.gwt.user.client.ui.AbstractImagePrototype;
 import com.google.gwt.user.client.ui.RootLayoutPanel;
+import com.google.gwt.valuestore.shared.SyncResult;
 import com.google.gwt.view.client.ProvidesKey;

+import java.util.Set;
+
 /**
  * Entry point for the Expenses app.
  */
@@ -133,6 +142,19 @@
     final ExpenseDetails expenseDetails = shell.getExpenseDetails();

     root.add(shell);
+
+    // Check for Authentication failures or mismatches
+ eventBus.addHandler(RequestEvent.TYPE, new AuthenticationFailureHandler());
+
+    // Add a login widget to the page
+    final LoginWidget login = shell.getLoginWidget();
+ Receiver<UserInformationRecord> receiver = new Receiver<UserInformationRecord>() { + public void onSuccess(UserInformationRecord userInformationRecord, Set<SyncResult> syncResults) {
+        login.setUserInformation(userInformationRecord);
+      }
+     };
+     requestFactory.userInformationRequest().getCurrentUserInformation(
+         Location.getHref()).fire(receiver);

     // Listen for requests from ExpenseTree.
     expenseTree.setListener(new ExpenseTree.Listener() {
=======================================
--- /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesMobile.java Mon Jun 7 12:20:31 2010 +++ /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesMobile.java Wed Aug 4 17:46:23 2010
@@ -18,10 +18,19 @@
 import com.google.gwt.core.client.EntryPoint;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.shared.HandlerManager;
+import com.google.gwt.requestfactory.client.AuthenticationFailureHandler;
+import com.google.gwt.requestfactory.client.LoginWidget;
+import com.google.gwt.requestfactory.shared.Receiver;
+import com.google.gwt.requestfactory.shared.RequestEvent;
+import com.google.gwt.requestfactory.shared.UserInformationRecord;
 import com.google.gwt.sample.expenses.gwt.request.ExpensesRequestFactory;
 import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.Window.Location;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwt.valuestore.shared.SyncResult;
+
+import java.util.Set;

 /**
  * Entry point for the mobile version of the Expenses app.
@@ -86,5 +95,18 @@
     final ExpensesMobileShell shell = new ExpensesMobileShell(eventBus,
         requestFactory, employeeId);
     RootPanel.get().add(shell);
+
+    // Check for Authentication failures or mismatches
+ eventBus.addHandler(RequestEvent.TYPE, new AuthenticationFailureHandler());
+
+    // Add a login widget to the page
+    final LoginWidget login = shell.getLoginWidget();
+ Receiver<UserInformationRecord> receiver = new Receiver<UserInformationRecord>() { + public void onSuccess(UserInformationRecord userInformationRecord, Set<SyncResult> syncResults) {
+        login.setUserInformation(userInformationRecord);
+      }
+     };
+     requestFactory.userInformationRequest().getCurrentUserInformation(
+         Location.getHref()).fire(receiver);
   }
 }
=======================================
--- /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesMobileShell.java Fri Jul 30 17:29:09 2010 +++ /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesMobileShell.java Wed Aug 4 17:46:23 2010
@@ -19,6 +19,7 @@
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.shared.HandlerManager;
+import com.google.gwt.requestfactory.client.LoginWidget;
 import com.google.gwt.sample.expenses.gwt.request.ExpenseRecord;
 import com.google.gwt.sample.expenses.gwt.request.ExpensesRequestFactory;
 import com.google.gwt.sample.expenses.gwt.request.ReportRecord;
@@ -42,6 +43,7 @@

   @UiField SimplePanel container;
   @UiField HTML backButton, addButton, refreshButton, customButton;
+  @UiField LoginWidget loginWidget;
   @UiField Element titleSpan;

   private MobileReportList reportList;
@@ -65,6 +67,13 @@
     showReportList();
   }

+  /**
+   * @return the login widget
+   */
+  public LoginWidget getLoginWidget() {
+    return loginWidget;
+  }
+
   @UiHandler("addButton")
   @SuppressWarnings("unused")
   void onAdd(ClickEvent evt) {
=======================================
--- /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesMobileShell.ui.xml Mon Jun 7 12:20:31 2010 +++ /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesMobileShell.ui.xml Wed Aug 4 17:46:23 2010
@@ -2,11 +2,13 @@
 <ui:UiBinder
   xmlns:ui='urn:ui:com.google.gwt.uibinder'
   xmlns:m='urn:import:com.google.gwt.mobile.client'
+  xmlns:r='urn:import:com.google.gwt.requestfactory.client'
   xmlns:g='urn:import:com.google.gwt.user.client.ui'>

   <ui:style field='mobile' src='mobile.css'/>

   <g:HTMLPanel>
+    <r:LoginWidget styleName='{mobile.login}' ui:field="loginWidget"/>
     <div class='{mobile.bar}'>
<g:HTML ui:field='backButton' styleName='{mobile.backButton}'><div>Back</div></g:HTML> <g:HTML ui:field='addButton' styleName='{mobile.button}'><img src='images/add.png'/></g:HTML>
=======================================
--- /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesShell.java Mon Jun 7 12:20:31 2010 +++ /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesShell.java Wed Aug 4 17:46:23 2010
@@ -21,6 +21,7 @@
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.layout.client.Layout;
 import com.google.gwt.layout.client.Layout.Layer;
+import com.google.gwt.requestfactory.client.LoginWidget;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.client.ui.Composite;
@@ -45,6 +46,8 @@
   @UiField
   LayoutPanel layoutPanel;
   @UiField
+  LoginWidget loginWidget;
+  @UiField
   DockLayoutPanel dockLayout;

   private final ExpenseDetails expenseDetails = new ExpenseDetails();
@@ -72,6 +75,13 @@
     return expenseTree;
   }

+  /**
+   * @return the login widget
+   */
+  public LoginWidget getLoginWidget() {
+    return loginWidget;
+  }
+
   /**
* Show or hide the expense details. When showing, the expense list is hidden.
    *
=======================================
--- /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesShell.ui.xml Mon Jun 7 12:20:31 2010 +++ /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ExpensesShell.ui.xml Wed Aug 4 17:46:23 2010
@@ -3,6 +3,7 @@
   xmlns:ui='urn:ui:com.google.gwt.uibinder'
   xmlns:g='urn:import:com.google.gwt.user.client.ui'
   xmlns:m='urn:import:com.google.gwt.mobile.client'
+  xmlns:r='urn:import:com.google.gwt.requestfactory.client'
   xmlns:e='urn:import:com.google.gwt.sample.expenses.gwt.client'>

<ui:with field='styles' type='com.google.gwt.sample.bikeshed.style.client.Styles' />
@@ -13,6 +14,14 @@
     @sprite .logo {
       gwt-image: 'logo';
     }
+
+    .login {
+      position: absolute;
+      left: 75%;
+      right: 0%;
+      text-align: center;
+      background-color: yellow;
+    }

     .title {
       border-bottom: 1px solid #c3c3c3;
@@ -34,6 +43,7 @@
   <g:DockLayoutPanel unit='PX'>
     <g:north size='96'>
       <g:HTMLPanel styleName='{style.title}'>
+        <r:LoginWidget styleName='{style.login}' ui:field="loginWidget"/>
         <table height='100%' cellpadding='8' cellspacing='0'>
           <tr>
             <td>
=======================================
--- /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ScaffoldMobile.java Fri Jun 18 20:16:34 2010 +++ /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ScaffoldMobile.java Wed Aug 4 17:46:23 2010
@@ -26,18 +26,26 @@
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.shared.HandlerManager;
+import com.google.gwt.requestfactory.client.AuthenticationFailureHandler;
+import com.google.gwt.requestfactory.client.LoginWidget;
+import com.google.gwt.requestfactory.shared.Receiver;
+import com.google.gwt.requestfactory.shared.RequestEvent;
+import com.google.gwt.requestfactory.shared.UserInformationRecord;
 import com.google.gwt.sample.expenses.gwt.client.place.ListScaffoldPlace;
 import com.google.gwt.sample.expenses.gwt.client.place.ScaffoldPlace;
import com.google.gwt.sample.expenses.gwt.request.ExpensesEntityTypesProcessor;
 import com.google.gwt.sample.expenses.gwt.request.ExpensesRequestFactory;
 import com.google.gwt.sample.expenses.gwt.ui.ListActivitiesMapper;
 import com.google.gwt.sample.expenses.gwt.ui.ScaffoldListPlaceRenderer;
+import com.google.gwt.user.client.Window.Location;
 import com.google.gwt.user.client.ui.RootLayoutPanel;
 import com.google.gwt.valuestore.shared.Record;
+import com.google.gwt.valuestore.shared.SyncResult;

 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Set;

 /**
  * Mobile application for browsing the entities of the Expenses app.
@@ -59,6 +67,21 @@
     /* Top level UI */

     final ScaffoldMobileShell shell = new ScaffoldMobileShell();
+
+    /* Check for Authentication failures or mismatches */
+
+ eventBus.addHandler(RequestEvent.TYPE, new AuthenticationFailureHandler());
+
+    /* Add a login widget to the page */
+
+    final LoginWidget login = shell.getLoginWidget();
+ Receiver<UserInformationRecord> receiver = new Receiver<UserInformationRecord>() { + public void onSuccess(UserInformationRecord userInformationRecord, Set<SyncResult> syncResults) {
+        login.setUserInformation(userInformationRecord);
+      }
+     };
+     requestFactory.userInformationRequest().getCurrentUserInformation(
+         Location.getHref()).fire(receiver);

     /* Left side lets us pick from all the types of entities */

=======================================
--- /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ScaffoldMobileShell.java Mon Jun 7 12:20:31 2010 +++ /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ScaffoldMobileShell.java Wed Aug 4 17:46:23 2010
@@ -18,6 +18,7 @@
 import com.google.gwt.app.place.PlacePickerView;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.DivElement;
+import com.google.gwt.requestfactory.client.LoginWidget;
 import com.google.gwt.sample.expenses.gwt.client.place.ListScaffoldPlace;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
@@ -35,6 +36,7 @@

   @UiField SimplePanel body;
   @UiField DivElement error;
+  @UiField LoginWidget loginWidget;
   @UiField PlacePickerView<ListScaffoldPlace> placesBox;

   public ScaffoldMobileShell() {
@@ -48,6 +50,13 @@
     return body;
   }

+  /**
+   * @return the login widget
+   */
+  public LoginWidget getLoginWidget() {
+    return loginWidget;
+  }
+
   public PlacePickerView<ListScaffoldPlace> getPlacesBox() {
     return placesBox;
   }
=======================================
--- /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ScaffoldMobileShell.ui.xml Mon Jun 7 12:20:31 2010 +++ /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ScaffoldMobileShell.ui.xml Wed Aug 4 17:46:23 2010
@@ -1,6 +1,7 @@
 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
 <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
   xmlns:g='urn:import:com.google.gwt.user.client.ui'
+  xmlns:r='urn:import:com.google.gwt.requestfactory.client'
   xmlns:a='urn:import:com.google.gwt.app.client'>

   <ui:style field='mobile' src='mobile.css'/>
@@ -11,9 +12,11 @@
     </div>

     <div class='{mobile.error}' ui:field='error'/>
+    <r:LoginWidget styleName='{mobile.login}' ui:field="loginWidget"/>

<a:CellListPlacePickerView width='100%' pageSize='100' ui:field='placesBox'/>

     <g:SimplePanel width='100%' ui:field='body'/>
+
   </g:HTMLPanel>
 </ui:UiBinder>
=======================================
--- /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/mobile.css Mon Jun 7 12:20:31 2010 +++ /trunk/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/mobile.css Wed Aug 4 17:46:23 2010
@@ -59,3 +59,8 @@
 .error {
   color: red;
 }
+
+.login {
+  text-align: center;
+  background-color: yellow;
+}

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to