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