Tightened up datanucleus paths to include only **/domain/*.class Merged over a few remaining changes from bikeshed Review at http://gwt-code-reviews.appspot.com/776802 git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8615 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/samples/common.ant.xml b/samples/common.ant.xml index cfd0a47..d0342c7 100755 --- a/samples/common.ant.xml +++ b/samples/common.ant.xml
@@ -43,6 +43,12 @@ <copy tofile="${sample.build}/pom.xml" file="pom.xml"/> </then> </if> + <if> + <available file="README-MAVEN.txt"/> + <then> + <copy tofile="${sample.build}/README-MAVEN.txt" file="README-MAVEN.txt"/> + </then> + </if> </target> <target name="compile" description="Compile all java files">
diff --git a/samples/expenses/README-MAVEN.txt b/samples/expenses/README-MAVEN.txt new file mode 100644 index 0000000..2ef692d --- /dev/null +++ b/samples/expenses/README-MAVEN.txt
@@ -0,0 +1,69 @@ +--- Generated by GWT WebAppCreator --- + +Congratulations, you've successfully generated a starter project! What next? + +-- Option A: Import your project into Eclipse (recommended) -- + +If you use Eclipse, you can simply import the generated project into Eclipse. +We've tested against Eclipse 3.4 and 3.5. Later versions will likely also +work, earlier versions may not. + +If the directory containing this file does not have a .classpath or .project +file, generate them by running 'ant eclipse.generate' + +Eclipse users will need to have the m2eclipse, or equivalent, pluigin installed. +Instructions for how to install the m2eclipse plugin can be found here: +http://m2eclipse.sonatype.org/installing-m2eclipse.html + +Eclipse users will also want to run "mvn package" before importing into Eclipse. +This will unpack the App Engine SDK to the local repository. + +In Eclipse, go to the File menu and choose: + + File -> Import... -> Existing Maven Projects into Workspace + + Browse to the directory containing this file, + select "Expenses". + + Click Finish. + +You can now browse the project in Eclipse. + +To launch your web app in GWT development mode, go to the Project -> Properties +and expand the Google menu item. From there: + + Navigate to App Engine item, select "Use App Engine", and specify which App Engine + SDK to use. + + Navigate to the Web Appliation item, select "This project has a WAR directory", + speicigy src/main/webapp, and uncheck "Launch and deploy...". + + Navigate to Web Toolkit, select "use Google Web Toolkit", and specify which + GWT SDK you want to use. + + Go to the Run menu item and select Run -> Debug as -> Web Application. + + When prompted for which directory to run from, simply select the directory + that Eclipse defaults to. + + You can now use the built-in debugger to debug your web app in development mode. + +If you supplied the junit path when invoking webAppCreator, you should see +launch configurations for running your tests in development and production +mode. + +-- Option B: Build from the command line with Maven -- + +If you prefer to work from the command line, you can use Maven to build your +project. (http://maven.apache.org/) Maven uses the supplied 'pom.xml' file +which describes exactly how to build your project. This file has been tested +to work against Ant 2.2.1. The following assumes 'mvn' is on your command +line path. + +To run development mode, just type 'mvn gae:run'. + +To compile your project for deployment, just type 'mvn package'. + +For a full listing of other goals, visit: +http://mojo.codehaus.org/gwt-maven-plugin/plugin-info.html +
diff --git a/samples/expenses/pom.xml b/samples/expenses/pom.xml index 9eac05b..39eca1a 100644 --- a/samples/expenses/pom.xml +++ b/samples/expenses/pom.xml
@@ -49,7 +49,7 @@ </repository> <repository> <id>gwt-repo</id> - <url>http://google-web-toolkit.googlecode.com/svn/2.1.0.M2/gwt/maven</url> + <url>http://google-web-toolkit.googlecode.com/svn/2.1.0.M3/gwt/maven</url> <name>Google Web Toolkit Repository</name> </repository> </repositories> @@ -65,7 +65,7 @@ </pluginRepository> <pluginRepository> <id>gwt-plugin-repo</id> - <url>http://google-web-toolkit.googlecode.com/svn/2.1.0.M2/gwt/maven</url> + <url>http://google-web-toolkit.googlecode.com/svn/2.1.0.M3/gwt/maven</url> <name>Google Web Toolkit Plugin Repository</name> </pluginRepository> </pluginRepositories> @@ -601,7 +601,7 @@ <configuration> <fork>false</fork> <log4jConfiguration>${basedir}/src/main/resources/log4j.properties</log4jConfiguration> - <mappingIncludes>**/*.class</mappingIncludes> + <mappingIncludes>**/domain/*.class</mappingIncludes> <verbose>true</verbose> <enhancerName>ASM</enhancerName> <api>JPA</api> @@ -650,9 +650,9 @@ <runTarget>/Expenses.html</runTarget> <hostedWebapp>${project.build.directory}/${project.build.finalName}</hostedWebapp> <modules> - <module>${project.groupId}.gwt.Expenses</module> - <module>${project.groupId}.gwt.ExpensesMobile</module> - <module>${project.groupId}.gwt.LoadExpensesDB</module> + <module>${project.groupId}.Expenses</module> + <module>${project.groupId}.ExpensesMobile</module> + <module>${project.groupId}.LoadExpensesDB</module> </modules> <server>com.google.appengine.tools.development.gwt.AppEngineLauncher</server> <extraJvmArgs>-javaagent:${gae.home}/lib/agent/appengine-agent.jar -Xmx1024m</extraJvmArgs>
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpenseDetails.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpenseDetails.java index 059e17a..dd05e26 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpenseDetails.java +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpenseDetails.java
@@ -71,7 +71,7 @@ import com.google.gwt.valuestore.shared.Property; import com.google.gwt.valuestore.shared.Record; import com.google.gwt.valuestore.shared.SyncResult; -import com.google.gwt.view.client.ListViewAdapter; +import com.google.gwt.view.client.ListDataProvider; import java.util.ArrayList; import java.util.Collection; @@ -409,9 +409,9 @@ private final Label errorPopupMessage = new Label(); /** - * The adapter that provides expense items. + * The data provider that provides expense items. */ - private final ListViewAdapter<ExpenseRecord> items; + private final ListDataProvider<ExpenseRecord> items; /** * The set of Expense keys that we have seen. When a new key is added, we @@ -449,10 +449,10 @@ public ExpenseDetails() { createErrorPopup(); initWidget(uiBinder.createAndBindUi(this)); - items = new ListViewAdapter<ExpenseRecord>(); + items = new ListDataProvider<ExpenseRecord>(); items.setKeyProvider(Expenses.EXPENSE_RECORD_KEY_PROVIDER); table.setKeyProvider(items); - items.addView(table); + items.addDataDisplay(table); // Switch to edit notes. notesEditLink.addClickHandler(new ClickHandler() { @@ -899,7 +899,8 @@ // Cancel the timer since we are about to send a request. refreshTimer.cancel(); lastReceiver = new Receiver<List<ExpenseRecord>>() { - public void onSuccess(List<ExpenseRecord> newValues, Set<SyncResult> syncResults) { + public void onSuccess( + List<ExpenseRecord> newValues, Set<SyncResult> syncResults) { if (this == lastReceiver) { List<ExpenseRecord> list = new ArrayList<ExpenseRecord>(newValues); sortExpenses(list, lastComparator); @@ -932,7 +933,8 @@ } }; expensesRequestFactory.expenseRequest().findExpensesByReport( - report.getRef(Record.id)).forProperties(getExpenseColumns()).fire(lastReceiver); + report.getRef(Record.id)).forProperties(getExpenseColumns()).fire( + lastReceiver); } /** @@ -954,15 +956,15 @@ ReportRecord editableReport = editRequest.edit(report); editableReport.setNotes(pendingNotes); editRequest.fire(new Receiver<Void>() { - public void onSuccess(Void ignore, Set<SyncResult> response) { - // We expect onReportChanged to be called if there are no errors. - String errorMessage = getErrorMessageFromSync(response); - if (errorMessage.length() > 0) { - showErrorPopup(errorMessage); - setNotesEditState(false, false, report.getNotes()); - } - } - }); + public void onSuccess(Void ignore, Set<SyncResult> response) { + // We expect onReportChanged to be called if there are no errors. + String errorMessage = getErrorMessageFromSync(response); + if (errorMessage.length() > 0) { + showErrorPopup(errorMessage); + setNotesEditState(false, false, report.getNotes()); + } + } + }); } /** @@ -1039,13 +1041,12 @@ editableRecord.setApproval(approval); editableRecord.setReasonDenied(reasonDenied); editRequest.fire(new Receiver<Void>() { - public void onSuccess(Void ignore, Set<SyncResult> response) { - String errorMessage = getErrorMessageFromSync(response); - if (errorMessage.length() > 0) { - syncCommit( - record, errorMessage.length() > 0 ? errorMessage : null); - } - } - }); + public void onSuccess(Void ignore, Set<SyncResult> response) { + String errorMessage = getErrorMessageFromSync(response); + if (errorMessage.length() > 0) { + syncCommit(record, errorMessage.length() > 0 ? errorMessage : null); + } + } + }); } }
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpenseList.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpenseList.java index aa5e1d2..157b273 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpenseList.java +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpenseList.java
@@ -34,11 +34,11 @@ import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.regexp.shared.RegExp; import com.google.gwt.requestfactory.shared.Receiver; +import com.google.gwt.sample.expenses.client.style.Styles; import com.google.gwt.sample.expenses.client.request.EmployeeRecord; import com.google.gwt.sample.expenses.client.request.ExpensesRequestFactory; import com.google.gwt.sample.expenses.client.request.ReportRecord; import com.google.gwt.sample.expenses.client.request.ReportRecordChanged; -import com.google.gwt.sample.expenses.client.style.Styles; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiFactory; import com.google.gwt.uibinder.client.UiField; @@ -53,7 +53,7 @@ import com.google.gwt.user.client.ui.Widget; import com.google.gwt.valuestore.shared.Property; import com.google.gwt.valuestore.shared.SyncResult; -import com.google.gwt.view.client.AsyncListViewAdapter; +import com.google.gwt.view.client.AsyncDataProvider; import com.google.gwt.view.client.HasData; import com.google.gwt.view.client.NoSelectionModel; import com.google.gwt.view.client.Range; @@ -201,11 +201,11 @@ } /** - * The adapter used to retrieve reports. + * The data provider used to retrieve reports. */ - private class ReportAdapter extends AsyncListViewAdapter<ReportRecord> { + private class ReportDataProvider extends AsyncDataProvider<ReportRecord> { @Override - protected void onRangeChanged(HasData<ReportRecord> view) { + protected void onRangeChanged(HasData<ReportRecord> display) { requestReports(false); } } @@ -283,9 +283,9 @@ private final List<Property<?>> reportColumns; /** - * The adapter that provides reports. + * The data provider that provides reports. */ - private final ReportAdapter reports = new ReportAdapter(); + private final ReportDataProvider reports = new ReportDataProvider(); /** * The factory used to send requests. @@ -314,8 +314,8 @@ searchBox = new DefaultTextBox("search"); initWidget(uiBinder.createAndBindUi(this)); - // Add the view to the adapter. - reports.addView(table); + // Add the view to the data provider. + reports.addDataDisplay(table); // Listen for key events from the text boxes. searchBox.addKeyUpHandler(new KeyUpHandler() { @@ -352,7 +352,7 @@ if (record != null && changedId.equals(record.getId())) { List<ReportRecord> changedList = new ArrayList<ReportRecord>(); changedList.add(changed); - reports.updateViewData(i + table.getPageStart(), 1, changedList); + reports.updateRowData(i + table.getPageStart(), changedList); } i++; } @@ -390,7 +390,7 @@ @UiFactory SimplePager createPager() { SimplePager p = new SimplePager(TextLocation.RIGHT); - p.setView(table); + p.setDisplay(table); p.setRangeLimited(true); return p; } @@ -471,14 +471,15 @@ final NoSelectionModel<ReportRecord> selectionModel = new NoSelectionModel< ReportRecord>(); table.setSelectionModel(selectionModel); - selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { - public void onSelectionChange(SelectionChangeEvent event) { - Object selected = selectionModel.getLastSelectedObject(); - if (selected != null && listener != null) { - listener.onReportSelected((ReportRecord) selected); - } - } - }); + selectionModel.addSelectionChangeHandler( + new SelectionChangeEvent.Handler() { + public void onSelectionChange(SelectionChangeEvent event) { + Object selected = selectionModel.getLastSelectedObject(); + if (selected != null && listener != null) { + listener.onReportSelected((ReportRecord) selected); + } + } + }); // Spacer column. table.addColumn(new Column<ReportRecord, String>(new TextCell()) { @@ -577,7 +578,7 @@ if (this == lastDataSizeReceiver) { int count = response.intValue(); // Treat count == 1000 as inexact due to AppEngine limitation - reports.updateDataSize(count, count != 1000); + reports.updateRowCount(count, count != 1000); } } }; @@ -593,10 +594,10 @@ int size = newValues.size(); if (size < table.getPageSize()) { // Now we know the exact data size - reports.updateDataSize(table.getPageStart() + size, true); + reports.updateRowCount(table.getPageStart() + size, true); } if (size > 0) { - reports.updateViewData(table.getPageStart(), size, newValues); + reports.updateRowData(table.getPageStart(), newValues); } // Add the new keys to the known keys.
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpensesShell.ui.xml b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpensesShell.ui.xml index 5a6954d..aea7ece 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpensesShell.ui.xml +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpensesShell.ui.xml
@@ -20,7 +20,8 @@ left: 75%; right: 0%; text-align: center; - background-color: yellow; + background-color: white; + color: #7b8fae; } .title {
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileExpenseList.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileExpenseList.java index ca70c27..447b382 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileExpenseList.java +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileExpenseList.java
@@ -1,12 +1,12 @@ /* * Copyright 2010 Google Inc. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -26,7 +26,7 @@ import com.google.gwt.user.client.ui.Widget; import com.google.gwt.valuestore.shared.Property; import com.google.gwt.valuestore.shared.SyncResult; -import com.google.gwt.view.client.AsyncListViewAdapter; +import com.google.gwt.view.client.AsyncDataProvider; import com.google.gwt.view.client.HasData; import com.google.gwt.view.client.NoSelectionModel; import com.google.gwt.view.client.SelectionChangeEvent; @@ -95,7 +95,7 @@ private final ExpensesRequestFactory requestFactory; private final CellList<ExpenseRecord> expenseList; - private final AsyncListViewAdapter<ExpenseRecord> expenseAdapter; + private final AsyncDataProvider<ExpenseRecord> expenseDataProvider; private final NoSelectionModel<ExpenseRecord> expenseSelection; /** @@ -122,29 +122,31 @@ } }; - public MobileExpenseList(final Listener listener, - final ExpensesRequestFactory requestFactory) { + public MobileExpenseList( + final Listener listener, final ExpensesRequestFactory requestFactory) { this.listener = listener; this.requestFactory = requestFactory; - expenseAdapter = new AsyncListViewAdapter<ExpenseRecord>() { + expenseDataProvider = new AsyncDataProvider<ExpenseRecord>() { @Override protected void onRangeChanged(HasData<ExpenseRecord> view) { requestExpenses(); } }; - expenseAdapter.setKeyProvider(Expenses.EXPENSE_RECORD_KEY_PROVIDER); + expenseDataProvider.setKeyProvider(Expenses.EXPENSE_RECORD_KEY_PROVIDER); expenseList = new CellList<ExpenseRecord>(new ExpenseCell()); expenseSelection = new NoSelectionModel<ExpenseRecord>(); expenseList.setSelectionModel(expenseSelection); - expenseSelection.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { - public void onSelectionChange(SelectionChangeEvent event) { - listener.onExpenseSelected(expenseSelection.getLastSelectedObject()); - } - }); + expenseSelection.addSelectionChangeHandler( + new SelectionChangeEvent.Handler() { + public void onSelectionChange(SelectionChangeEvent event) { + listener.onExpenseSelected( + expenseSelection.getLastSelectedObject()); + } + }); - expenseAdapter.addView(expenseList); + expenseDataProvider.addDataDisplay(expenseList); initWidget(expenseList); } @@ -178,7 +180,7 @@ public void onRefresh(boolean clear) { if (clear) { - expenseAdapter.updateDataSize(0, true); + expenseDataProvider.updateRowCount(0, true); } requestExpenses(); } @@ -206,11 +208,12 @@ return; } lastReceiver = new Receiver<List<ExpenseRecord>>() { - public void onSuccess(List<ExpenseRecord> newValues, Set<SyncResult> syncResults) { + public void onSuccess( + List<ExpenseRecord> newValues, Set<SyncResult> syncResults) { if (this == lastReceiver) { int size = newValues.size(); - expenseAdapter.updateDataSize(size, true); - expenseAdapter.updateViewData(0, size, newValues); + expenseDataProvider.updateRowCount(size, true); + expenseDataProvider.updateRowData(0, newValues); // Add the new keys to the known keys. boolean isInitialData = knownDeniedKeys == null; @@ -218,12 +221,12 @@ knownDeniedKeys = new HashSet<Object>(); } for (ExpenseRecord value : newValues) { - Object key = expenseAdapter.getKey(value); + Object key = expenseDataProvider.getKey(value); String approval = value.getApproval(); if (Expenses.Approval.DENIED.getText().equals(approval)) { if (!isInitialData && !knownDeniedKeys.contains(key)) { (new PhaseAnimation.CellListPhaseAnimation<ExpenseRecord>( - expenseList, value, expenseAdapter)).run(); + expenseList, value, expenseDataProvider)).run(); } knownDeniedKeys.add(key); } else {
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileReportList.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileReportList.java index c27e1ec..ee59638 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileReportList.java +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileReportList.java
@@ -1,12 +1,12 @@ /* * Copyright 2010 Google Inc. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -25,7 +25,7 @@ import com.google.gwt.user.client.ui.Widget; import com.google.gwt.valuestore.shared.Property; import com.google.gwt.valuestore.shared.SyncResult; -import com.google.gwt.view.client.AsyncListViewAdapter; +import com.google.gwt.view.client.AsyncDataProvider; import com.google.gwt.view.client.HasData; import com.google.gwt.view.client.NoSelectionModel; import com.google.gwt.view.client.SelectionChangeEvent; @@ -57,7 +57,7 @@ private final EmployeeRecord employee; private final Listener listener; private final CellList<ReportRecord> reportList; - private final AsyncListViewAdapter<ReportRecord> reportAdapter; + private final AsyncDataProvider<ReportRecord> reportDataProvider; private final NoSelectionModel<ReportRecord> reportSelection; private final ExpensesRequestFactory requestFactory; @@ -66,31 +66,34 @@ this.listener = listener; this.requestFactory = requestFactory; this.employee = employee; - reportAdapter = new AsyncListViewAdapter<ReportRecord>() { + + reportDataProvider = new AsyncDataProvider<ReportRecord>() { @Override protected void onRangeChanged(HasData<ReportRecord> view) { requestReports(); } }; - reportAdapter.setKeyProvider(Expenses.REPORT_RECORD_KEY_PROVIDER); + reportDataProvider.setKeyProvider(Expenses.REPORT_RECORD_KEY_PROVIDER); reportList = new CellList<ReportRecord>(new AbstractCell<ReportRecord>() { @Override - public void render(ReportRecord value, Object viewData, StringBuilder sb) { + public void render( + ReportRecord value, Object viewData, StringBuilder sb) { sb.append("<div class='item'>" + value.getPurpose() + "</div>"); } }); reportSelection = new NoSelectionModel<ReportRecord>(); reportSelection.setKeyProvider(Expenses.REPORT_RECORD_KEY_PROVIDER); - reportSelection.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { - public void onSelectionChange(SelectionChangeEvent event) { - listener.onReportSelected(reportSelection.getLastSelectedObject()); - } - }); + reportSelection.addSelectionChangeHandler( + new SelectionChangeEvent.Handler() { + public void onSelectionChange(SelectionChangeEvent event) { + listener.onReportSelected(reportSelection.getLastSelectedObject()); + } + }); reportList.setSelectionModel(reportSelection); - reportAdapter.addView(reportList); + reportDataProvider.addDataDisplay(reportList); initWidget(reportList); onRefresh(false); @@ -125,7 +128,7 @@ public void onRefresh(boolean clear) { if (clear) { - reportAdapter.updateDataSize(0, true); + reportDataProvider.updateRowCount(0, true); } requestReports(); } @@ -142,10 +145,11 @@ return; } lastReceiver = new Receiver<List<ReportRecord>>() { - public void onSuccess(List<ReportRecord> newValues, Set<SyncResult> syncResults) { + public void onSuccess( + List<ReportRecord> newValues, Set<SyncResult> syncResults) { int size = newValues.size(); - reportAdapter.updateDataSize(size, true); - reportAdapter.updateViewData(0, size, newValues); + reportDataProvider.updateRowCount(size, true); + reportDataProvider.updateRowData(0, newValues); } }; requestFactory.reportRequest().findReportEntriesBySearch(employee.getId(), "",
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeDetailsView.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeDetailsView.java index b8fea04..e73dda5 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeDetailsView.java +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeDetailsView.java
@@ -95,7 +95,7 @@ displayName.setInnerText(record.getDisplayName()); userName.setInnerText(record.getUserName()); password.setInnerText(record.getPassword()); - supervisor.setInnerText(String.valueOf(record.getSupervisor() == null ? null : record.getSupervisor().getId())); + supervisor.setInnerText(EmployeeRenderer.instance().render(record.getSupervisor())); idSpan.setInnerText(record.getId().toString()); versionSpan.setInnerText(record.getVersion().toString()); }
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeDetailsView.ui.xml b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeDetailsView.ui.xml index bc70a28..2f473d9 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeDetailsView.ui.xml +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeDetailsView.ui.xml
@@ -35,7 +35,7 @@ <table class='{style.fields}'> <tr><td><div class='{style.label}'>Display Name:</div></td><td><span ui:field='displayName'></span></td></tr> <tr><td><div class='{style.label}'>User Name:</div></td><td><span ui:field='userName'></span></td></tr> - <tr><td><div class='{style.label}'>Supervisor Key:</div></td><td><span ui:field='supervisorKey'></span></td></tr> + <tr><td><div class='{style.label}'>Supervisor:</div></td><td><span ui:field='supervisor'></span></td></tr> <tr><td><div class='{style.label}'>Password:</div></td><td><span ui:field='password'></span></td></tr> </table>
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeEditView.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeEditView.java index 5b130c3..16a2688 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeEditView.java +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeEditView.java
@@ -16,7 +16,6 @@ package com.google.gwt.sample.expenses.client.ui.employee; import com.google.gwt.app.client.EditorSupport; -import com.google.gwt.app.client.LongBox; import com.google.gwt.app.place.RecordEditView; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; @@ -32,10 +31,10 @@ import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.InlineLabel; import com.google.gwt.user.client.ui.TextBox; -import com.google.gwt.valuestore.shared.Property; +import com.google.gwt.user.client.ui.ValueListBox; +import java.util.Collection; import java.util.Map; -import java.util.Set; /** * Edit view for employee records. @@ -51,18 +50,31 @@ private static final Binder BINDER = GWT.create(Binder.class); private static final DataBinder DATA_BINDER = GWT.create(DataBinder.class); - @UiField TextBox displayName; - @UiField TextBox password; - @UiField LongBox supervisorKey; - @UiField TextBox userName; - @UiField Button cancel; - @UiField Button save; - @UiField InlineLabel id; - @UiField InlineLabel version; - @UiField DivElement errors; - - @UiField Element editTitle; - @UiField Element createTitle; + @UiField + TextBox displayName; + @UiField + TextBox password; + @UiField(provided = true) + ValueListBox<EmployeeRecord> supervisor = new ValueListBox<EmployeeRecord>( + EmployeeRenderer.instance()); + + @UiField + TextBox userName; + @UiField + Button cancel; + @UiField + Button save; + @UiField + InlineLabel id; + @UiField + InlineLabel version; + @UiField + DivElement errors; + + @UiField + Element editTitle; + @UiField + Element createTitle; private Delegate delegate; private EmployeeRecord record; @@ -76,8 +88,8 @@ return this; } - public Set<Property<?>> getProperties() { - return DATA_BINDER.getProperties(); + public String[] getPaths() { + return DATA_BINDER.getPaths(); } public EmployeeRecord getValue() { @@ -102,6 +114,10 @@ this.delegate = delegate; } + public void setEmployeePickerValues(Collection<EmployeeRecord> values) { + supervisor.setAcceptableValues(values); + } + public void setEnabled(boolean enabled) { DATA_BINDER.setEnabled(this, enabled); save.setEnabled(enabled);
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeEditView.ui.xml b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeEditView.ui.xml index ccfba3e..1f836af 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeEditView.ui.xml +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeEditView.ui.xml
@@ -40,7 +40,7 @@ <table class='{style.fields}'> <tr><td><div class='{style.label}'>Display Name:</div></td><td><g:TextBox ui:field='displayName'></g:TextBox></td></tr> <tr><td><div class='{style.label}'>User Name:</div></td><td><g:TextBox ui:field='userName'></g:TextBox></td></tr> - <tr><td><div class='{style.label}'>Supervisor Key:</div></td><td><a:LongBox ui:field='supervisorKey'></a:LongBox></td></tr> + <tr><td><div class='{style.label}'>Supervisor:</div></td><td><g:ValueListBox ui:field='supervisor'></g:ValueListBox></td></tr> <tr><td><div class='{style.label}'>Password:</div></td><td><g:PasswordTextBox ui:field='password'></g:PasswordTextBox></td></tr> </table>
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeListView.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeListView.java index 5e545f5..b94784b 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeListView.java +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeListView.java
@@ -15,7 +15,6 @@ */ package com.google.gwt.sample.expenses.client.ui.employee; -import com.google.gwt.app.client.ProxyIdRenderer; import com.google.gwt.app.place.AbstractRecordListView; import com.google.gwt.app.place.PropertyColumn; import com.google.gwt.core.client.GWT; @@ -51,10 +50,14 @@ List<PropertyColumn<EmployeeRecord, ?>> columns = new ArrayList<PropertyColumn<EmployeeRecord, ?>>(); columns.add(PropertyColumn.<EmployeeRecord> getStringPropertyColumn(EmployeeRecord.userName)); + columns.add(PropertyColumn.<EmployeeRecord> getStringPropertyColumn(EmployeeRecord.displayName)); + columns.add(PropertyColumn.<EmployeeRecord> getStringPropertyColumn(EmployeeRecord.password)); + columns.add(new PropertyColumn<EmployeeRecord, EmployeeRecord>( - EmployeeRecord.supervisor, ProxyIdRenderer.<EmployeeRecord>instance())); + EmployeeRecord.supervisor, EmployeeRenderer.instance())); + return columns; } }
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeListView.ui.xml b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeListView.ui.xml index 50d9d31..f99a54b 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeListView.ui.xml +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeListView.ui.xml
@@ -50,7 +50,7 @@ <c:CellTable width='100%' ui:field='table' pageSize='8'/> <div class='{style.controls}'> <g:Button styleName='{style.createButton}' ui:field='newButton'>Create Employee</g:Button> - <c:SimplePager view='{table}' location='RIGHT'/> + <c:SimplePager display='{table}' location='RIGHT'/> </div> </g:HTMLPanel> </ui:UiBinder>
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeRenderer.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeRenderer.java new file mode 100644 index 0000000..be6c5eb --- /dev/null +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/employee/EmployeeRenderer.java
@@ -0,0 +1,46 @@ +/* + * Copyright 2010 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.google.gwt.sample.expenses.client.ui.employee; + +import com.google.gwt.app.place.ProxyRenderer; +import com.google.gwt.sample.expenses.client.request.EmployeeRecord; + +/** + * Renders {@link EmployeeRecord}s for display to the user. Requires the + * displayName property to have been fetched. + */ +public class EmployeeRenderer extends ProxyRenderer<EmployeeRecord> { + private static EmployeeRenderer INSTANCE; + + public static EmployeeRenderer instance() { + if (INSTANCE == null) { + INSTANCE = new EmployeeRenderer(); + } + + return INSTANCE; + } + + protected EmployeeRenderer() { + super(new String[] { "displayName"} ); + } + + public String render(EmployeeRecord object) { + if (object == null) { + return ""; + } + return object.getDisplayName() + " (" + object.getId() + ")"; + } +}
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportDetailsView.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportDetailsView.java index 7740ffc..ec362aa 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportDetailsView.java +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportDetailsView.java
@@ -22,6 +22,7 @@ import com.google.gwt.event.dom.client.HasClickHandlers; import com.google.gwt.i18n.client.DateTimeFormatRenderer; import com.google.gwt.sample.expenses.client.request.ReportRecord; +import com.google.gwt.sample.expenses.client.ui.employee.EmployeeRenderer; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; @@ -99,7 +100,7 @@ created.setInnerText(new DateTimeFormatRenderer().render(record.getCreated())); idSpan.setInnerText(record.getId().toString()); versionSpan.setInnerText(record.getVersion().toString()); - reporterKey.setInnerText(String.valueOf(record.getReporter())); - approvedSupervisorKey.setInnerText(String.valueOf(record.getApprovedSupervisor())); + reporterKey.setInnerText(EmployeeRenderer.instance().render(record.getReporter())); + approvedSupervisorKey.setInnerText(EmployeeRenderer.instance().render(record.getApprovedSupervisor())); } }
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportEditView.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportEditView.java index a41f57e..0996f6f 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportEditView.java +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportEditView.java
@@ -16,14 +16,15 @@ package com.google.gwt.sample.expenses.client.ui.report; import com.google.gwt.app.client.EditorSupport; -import com.google.gwt.app.client.LongBox; import com.google.gwt.app.place.RecordEditView; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style.Display; import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.sample.expenses.client.request.EmployeeRecord; import com.google.gwt.sample.expenses.client.request.ReportRecord; +import com.google.gwt.sample.expenses.client.ui.employee.EmployeeRenderer; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; @@ -32,11 +33,11 @@ import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.InlineLabel; import com.google.gwt.user.client.ui.TextBox; +import com.google.gwt.user.client.ui.ValueListBox; import com.google.gwt.user.datepicker.client.DateBox; -import com.google.gwt.valuestore.shared.Property; +import java.util.Collection; import java.util.Map; -import java.util.Set; /** * Edit view for employee records. @@ -54,8 +55,10 @@ @UiField TextBox notes; @UiField TextBox purpose; - @UiField LongBox reporterKey; - @UiField LongBox approvedSupervisorKey; + @UiField(provided = true) ValueListBox<EmployeeRecord> reporter = + new ValueListBox<EmployeeRecord>(EmployeeRenderer.instance()); + @UiField(provided = true) ValueListBox<EmployeeRecord> approvedSupervisor = + new ValueListBox<EmployeeRecord>(EmployeeRenderer.instance()); @UiField DateBox created; @UiField Button cancel; @UiField Button save; @@ -68,18 +71,18 @@ private Delegate delegate; private ReportRecord record; - + public ReportEditView() { initWidget(BINDER.createAndBindUi(this)); DATA_BINDER.init(this); } - + public ReportEditView asWidget() { return this; } - public Set<Property<?>> getProperties() { - return DATA_BINDER.getProperties(); + public String[] getPaths() { + return DATA_BINDER.getPaths(); } public ReportRecord getValue() { @@ -104,6 +107,11 @@ this.delegate = delegate; } + public void setEmployeePickerValues(Collection<EmployeeRecord> values) { + approvedSupervisor.setAcceptableValues(values); + reporter.setAcceptableValues(values); + } + public void setEnabled(boolean enabled) { DATA_BINDER.setEnabled(this, enabled); save.setEnabled(enabled);
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportEditView.ui.xml b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportEditView.ui.xml index 2120839..98c8743 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportEditView.ui.xml +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportEditView.ui.xml
@@ -42,8 +42,8 @@ <tr><td><div class='{style.label}'>Purpose:</div></td><td><g:TextBox ui:field='purpose'></g:TextBox></td></tr> <tr><td><div class='{style.label}'>Notes:</div></td><td><g:TextBox ui:field='notes'></g:TextBox></td></tr> <tr><td><div class='{style.label}'>Created:</div></td><td><d:DateBox ui:field='created'></d:DateBox></td></tr> - <tr><td><div class='{style.label}'>Reporter Key:</div></td><td><a:LongBox ui:field='reporterKey'></a:LongBox></td></tr> - <tr><td><div class='{style.label}'>Approved Supervisor Key:</div></td><td><a:LongBox ui:field='approvedSupervisorKey'></a:LongBox></td></tr> + <tr><td><div class='{style.label}'>Reporter:</div></td><td><g:ValueListBox ui:field='reporter'></g:ValueListBox></td></tr> + <tr><td><div class='{style.label}'>Approved Supervisor:</div></td><td><g:ValueListBox ui:field='approvedSupervisor'></g:ValueListBox></td></tr> </table> <div class='{style.bar}'>
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportListView.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportListView.java index 8713269..ba66572 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportListView.java +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportListView.java
@@ -15,7 +15,6 @@ */ package com.google.gwt.sample.expenses.client.ui.report; -import com.google.gwt.app.client.ProxyIdRenderer; import com.google.gwt.app.place.AbstractRecordListView; import com.google.gwt.app.place.PropertyColumn; import com.google.gwt.core.client.GWT; @@ -23,6 +22,7 @@ import com.google.gwt.i18n.client.DateTimeFormatRenderer; import com.google.gwt.sample.expenses.client.request.EmployeeRecord; import com.google.gwt.sample.expenses.client.request.ReportRecord; +import com.google.gwt.sample.expenses.client.ui.employee.EmployeeRenderer; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.cellview.client.CellTable; @@ -58,11 +58,15 @@ columns.add(new PropertyColumn<ReportRecord, Date>(ReportRecord.created, new DateTimeFormatRenderer(DateTimeFormat.getShortDateFormat()))); + columns.add(PropertyColumn.<ReportRecord> getStringPropertyColumn(ReportRecord.purpose)); + columns.add(new PropertyColumn<ReportRecord, EmployeeRecord>( - ReportRecord.reporter, ProxyIdRenderer.<EmployeeRecord>instance())); + ReportRecord.reporter, EmployeeRenderer.instance())); + columns.add(new PropertyColumn<ReportRecord, EmployeeRecord>( - ReportRecord.approvedSupervisor, ProxyIdRenderer.<EmployeeRecord>instance())); + ReportRecord.approvedSupervisor, EmployeeRenderer.instance())); + return columns; } }
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportListView.ui.xml b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportListView.ui.xml index 2e3bf9c..34d5bd1 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportListView.ui.xml +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ui/report/ReportListView.ui.xml
@@ -49,7 +49,7 @@ <c:CellTable width='100%' ui:field='table' pageSize='8'/> <div class='{style.controls}'> <g:Button styleName='{style.createButton}' ui:field='newButton'>Create Report</g:Button> - <c:SimplePager view='{table}' location='RIGHT'/> + <c:SimplePager display='{table}' location='RIGHT'/> </div> </g:HTMLPanel> </ui:UiBinder>
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Report.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Report.java index ac574e1..5f28680 100644 --- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Report.java +++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Report.java
@@ -437,6 +437,10 @@ } } + public void setApprovedSupervisor(Employee reporter) { + approvedSupervisorKey = reporter == null ? null : reporter.getId(); + } + public void setApprovedSupervisorKey(Long approvedSupervisorKey) { this.approvedSupervisorKey = approvedSupervisorKey; }