Upgrading DynaTableRf and MobileWebApp to use DataGrid. The apps look identical, except that scrolling the table no longer scrolls the column headers out of view.
Review at http://gwt-code-reviews.appspot.com/1452803
Review by: rjrjr@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10264 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/DataGridPatch.css b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/DataGridPatch.css
new file mode 100644
index 0000000..1f40459
--- /dev/null
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/DataGridPatch.css
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2011 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.
+ */
+/*
+ * This file is used by SummaryWidget to patch the CSS styles used in DataGrid.
+ * The style rules defined in this file are appended to the default styles in
+ * DataGrid's CssResource. If there are conflicts, the styles defined in this
+ * file take precedence over the defaults because these styles appear after the
+ * default styles.
+ */
+.dataGridCell {
+ cursor: pointer;
+}
\ No newline at end of file
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.java b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.java
index 889594c..b66331c 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.java
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.java
@@ -35,8 +35,8 @@
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
-import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
+import com.google.gwt.user.cellview.client.DataGrid;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.cellview.client.SimplePager;
import com.google.gwt.user.client.ui.Composite;
@@ -66,9 +66,10 @@
interface Style extends CssResource {
}
- interface TableResources extends CellTable.Resources {
- @Source(value = {CellTable.Style.DEFAULT_CSS, "CellTablePatch.css"})
- CellTable.Style cellTableStyle();
+ interface TableResources extends DataGrid.Resources {
+ @Override
+ @Source(value = {DataGrid.Style.DEFAULT_CSS, "DataGridPatch.css"})
+ DataGrid.Style dataGridStyle();
}
private class DescriptionColumn extends Column<PersonProxy, String> {
@@ -111,7 +112,7 @@
SimplePager pager = new SimplePager();
@UiField(provided = true)
- CellTable<PersonProxy> table;
+ DataGrid<PersonProxy> table;
private final EventBus eventBus;
private List<Boolean> filter = new ArrayList<Boolean>(ALL_DAYS);
@@ -127,11 +128,9 @@
this.requestFactory = requestFactory;
this.numRows = numRows;
- table = new CellTable<PersonProxy>(numRows,
+ table = new DataGrid<PersonProxy>(numRows,
GWT.<TableResources> create(TableResources.class));
initWidget(GWT.<Binder> create(Binder.class).createAndBindUi(this));
- dock.getWidgetContainerElement(table).getStyle().setProperty("overflowY",
- "visible");
Column<PersonProxy, String> nameColumn = new NameColumn();
table.addColumn(nameColumn, "Name");
@@ -146,17 +145,20 @@
EntityProxyChange.registerForProxyType(eventBus, PersonProxy.class,
new EntityProxyChange.Handler<PersonProxy>() {
+ @Override
public void onProxyChange(EntityProxyChange<PersonProxy> event) {
SummaryWidget.this.onPersonChanged(event);
}
});
FilterChangeEvent.register(eventBus, new FilterChangeEvent.Handler() {
+ @Override
public void onFilterChanged(FilterChangeEvent e) {
filter.set(e.getDay(), e.isSelected());
if (!pending) {
pending = true;
Scheduler.get().scheduleFinally(new ScheduledCommand() {
+ @Override
public void execute() {
pending = false;
fetch(0);
@@ -167,6 +169,7 @@
});
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
+ @Override
public void onSelectionChange(SelectionChangeEvent event) {
SummaryWidget.this.refreshSelection();
}
@@ -255,7 +258,7 @@
}
private int offsetOf(EntityProxyId<PersonProxy> personId) {
- List<PersonProxy> displayedItems = table.getDisplayedItems();
+ List<PersonProxy> displayedItems = table.getVisibleItems();
for (int offset = 0, j = displayedItems.size(); offset < j; offset++) {
if (personId.equals(displayedItems.get(offset).stableId())) {
return offset;
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.ui.xml b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.ui.xml
index 1017417..8376f7e 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.ui.xml
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.ui.xml
@@ -30,7 +30,7 @@
</g:DockLayoutPanel>
</g:north>
<g:center>
- <cv:CellTable ui:field="table" stylePrimaryName="{style.table}" />
+ <cv:DataGrid ui:field="table" stylePrimaryName="{style.table}" />
</g:center>
</g:DockLayoutPanel>
</ui:UiBinder>
\ No newline at end of file
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/TimeSlotListWidget.java b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/TimeSlotListWidget.java
index 41960ce..67fe878 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/TimeSlotListWidget.java
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/TimeSlotListWidget.java
@@ -20,7 +20,6 @@
import com.google.gwt.core.client.GWT;
import com.google.gwt.editor.client.EditorDelegate;
import com.google.gwt.editor.client.ValueAwareEditor;
-import com.google.gwt.sample.dynatablerf.client.widgets.SummaryWidget.TableResources;
import com.google.gwt.sample.dynatablerf.shared.DynaTableRequestFactory;
import com.google.gwt.sample.dynatablerf.shared.DynaTableRequestFactory.ScheduleRequest;
import com.google.gwt.sample.dynatablerf.shared.TimeSlotProxy;
@@ -44,6 +43,12 @@
*/
public class TimeSlotListWidget extends Composite implements ValueAwareEditor<List<TimeSlotProxy>> {
+ interface TableResources extends CellTable.Resources {
+ @Override
+ @Source(value = {CellTable.Style.DEFAULT_CSS, "CellTablePatch.css"})
+ CellTable.Style cellTableStyle();
+ }
+
interface TimeSlotListWidgetUiBinder extends UiBinder<Widget, TimeSlotListWidget> {
}
@@ -202,6 +207,7 @@
columnDay = day;
}
+ @Override
public void update(int index, ScheduleRow row, String value) {
if (acceptClicks) {
row.toggleInUse(columnDay);
@@ -219,6 +225,7 @@
initWidget(uiBinder.createAndBindUi(this));
}
+ @Override
public void flush() {
HashMap<TimeSlotProxy, TimeSlotKey> index = new HashMap<TimeSlotProxy, TimeSlotKey>();
@@ -238,12 +245,15 @@
}
}
+ @Override
public void onPropertyChange(String... paths) {
}
+ @Override
public void setDelegate(EditorDelegate<List<TimeSlotProxy>> delegate) {
}
+ @Override
public void setValue(List<TimeSlotProxy> value) {
backing = value;
currentSchedule = new HashSet<TimeSlotKey>();
diff --git a/samples/mobilewebapp/src/main/java/com/google/gwt/sample/mobilewebapp/client/desktop/DesktopTaskListView.java b/samples/mobilewebapp/src/main/java/com/google/gwt/sample/mobilewebapp/client/desktop/DesktopTaskListView.java
index 4d67f48..69fac21 100644
--- a/samples/mobilewebapp/src/main/java/com/google/gwt/sample/mobilewebapp/client/desktop/DesktopTaskListView.java
+++ b/samples/mobilewebapp/src/main/java/com/google/gwt/sample/mobilewebapp/client/desktop/DesktopTaskListView.java
@@ -16,17 +16,13 @@
package com.google.gwt.sample.mobilewebapp.client.desktop;
import com.google.gwt.cell.client.DateCell;
-import com.google.gwt.core.client.GWT;
import com.google.gwt.sample.mobilewebapp.client.activity.TaskListView;
import com.google.gwt.sample.mobilewebapp.shared.TaskProxy;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
+import com.google.gwt.user.cellview.client.DataGrid;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.cellview.client.TextColumn;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.ResizeComposite;
import com.google.gwt.view.client.NoSelectionModel;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionModel;
@@ -37,25 +33,12 @@
/**
* View used to display the list of Tasks.
*/
-public class DesktopTaskListView extends Composite implements TaskListView {
-
- /**
- * The UiBinder interface.
- */
- interface DesktopTaskListViewUiBinder extends UiBinder<Widget, DesktopTaskListView> {
- }
-
- /**
- * The UiBinder used to generate the view.
- */
- private static DesktopTaskListViewUiBinder uiBinder =
- GWT.create(DesktopTaskListViewUiBinder.class);
+public class DesktopTaskListView extends ResizeComposite implements TaskListView {
/**
* Displays the list of tasks.
*/
- @UiField(provided = true)
- CellTable<TaskProxy> taskList;
+ DataGrid<TaskProxy> taskList;
/**
* The presenter for this view.
@@ -68,7 +51,7 @@
public DesktopTaskListView() {
// Create the CellTable.
- taskList = new CellTable<TaskProxy>();
+ taskList = new DataGrid<TaskProxy>();
taskList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);
taskList.setWidth("100%");
@@ -105,6 +88,7 @@
final NoSelectionModel<TaskProxy> selectionModel = new NoSelectionModel<TaskProxy>();
taskList.setSelectionModel(selectionModel);
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
+ @Override
public void onSelectionChange(SelectionChangeEvent event) {
// Edit the task.
if (presenter != null) {
@@ -114,13 +98,15 @@
});
// Initialize the widget.
- initWidget(uiBinder.createAndBindUi(this));
+ initWidget(taskList);
}
+ @Override
public void clearList() {
taskList.setVisibleRangeAndClearData(taskList.getVisibleRange(), true);
}
+ @Override
public void setPresenter(Presenter presenter) {
this.presenter = presenter;
}
@@ -129,6 +115,7 @@
taskList.setSelectionModel(selectionModel);
}
+ @Override
public void setTasks(List<TaskProxy> tasks) {
taskList.setRowData(tasks);
}
diff --git a/samples/mobilewebapp/src/main/java/com/google/gwt/sample/mobilewebapp/client/desktop/DesktopTaskListView.ui.xml b/samples/mobilewebapp/src/main/java/com/google/gwt/sample/mobilewebapp/client/desktop/DesktopTaskListView.ui.xml
index 266cf6d..5ab10c9 100644
--- a/samples/mobilewebapp/src/main/java/com/google/gwt/sample/mobilewebapp/client/desktop/DesktopTaskListView.ui.xml
+++ b/samples/mobilewebapp/src/main/java/com/google/gwt/sample/mobilewebapp/client/desktop/DesktopTaskListView.ui.xml
@@ -9,7 +9,7 @@
</ui:style>
<g:ScrollPanel>
- <c:CellTable
+ <c:DataGrid
ui:field="taskList" />
</g:ScrollPanel>