Revision: 10167
Author:   jlaba...@google.com
Date:     Mon May  9 10:25:15 2011
Log:      Implementing custom TaskReadViews for tablet, desktop, and mobile.

http://code.google.com/p/google-web-toolkit/source/detail?r=10167

Added:
/trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/desktop/DesktopTaskReadView.java /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/desktop/DesktopTaskReadView.ui.xml /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/mobile/MobileTaskReadView.java /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/mobile/MobileTaskReadView.ui.xml
Modified:
/trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImpl.java /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImplMobile.java /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImplTablet.java

=======================================
--- /dev/null
+++ /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/desktop/DesktopTaskReadView.java Mon May 9 10:25:15 2011
@@ -0,0 +1,106 @@
+/*
+ * 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.
+ */
+package com.google.gwt.sample.mobilewebapp.client.desktop;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.sample.mobilewebapp.client.activity.TaskReadView;
+import com.google.gwt.sample.mobilewebapp.client.ui.DateButton;
+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.client.ui.Button;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.DateLabel;
+import com.google.gwt.user.client.ui.DockLayoutPanel;
+import com.google.gwt.user.client.ui.HTMLPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.TextBoxBase;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * View used to edit a task.
+ */
+public class DesktopTaskReadView extends Composite implements TaskReadView {
+
+  /**
+   * The UiBinder interface.
+   */
+ interface DesktopTaskReadViewUiBinder extends UiBinder<Widget, DesktopTaskReadView> {
+  }
+
+
+ interface Driver extends SimpleBeanEditorDriver<TaskProxy, DesktopTaskReadView> {
+  }
+
+  /**
+   * The UiBinder used to generate the view.
+   */
+  private static DesktopTaskReadViewUiBinder uiBinder = GWT
+      .create(DesktopTaskReadViewUiBinder.class);
+
+  @UiField
+  DockLayoutPanel dockLayoutPanel;
+
+  /**
+   * The panel that contains the edit form.
+   */
+  @UiField
+  HTMLPanel editForm;
+
+  @UiField
+  DateLabel dueDateEditor;
+  @UiField
+  Label nameEditor;
+  @UiField
+  Label notesEditor;
+  @UiField
+  Button saveButton;
+
+  private final Driver driver = GWT.create(Driver.class);
+
+  /**
+   * The {@link TaskReadView.Presenter} for this view.
+   */
+  private Presenter presenter;
+
+  /**
+   * Construct a new {@link DesktopTaskReadView}.
+   */
+  public DesktopTaskReadView() {
+    initWidget(uiBinder.createAndBindUi(this));
+    driver.initialize(this);
+
+    // Create a new task or modify the current task when done is pressed.
+    saveButton.addClickHandler(new ClickHandler() {
+      public void onClick(ClickEvent event) {
+        if (presenter != null) {
+          presenter.editTask();
+        }
+      }
+    });
+  }
+
+  public SimpleBeanEditorDriver<TaskProxy, ?> getEditorDriver() {
+    return driver;
+  }
+
+  public void setPresenter(Presenter presenter) {
+    this.presenter = presenter;
+  }
+}
=======================================
--- /dev/null
+++ /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/desktop/DesktopTaskReadView.ui.xml Mon May 9 10:25:15 2011
@@ -0,0 +1,140 @@
+<!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:c="urn:import:com.google.gwt.user.cellview.client"
+  xmlns:app="urn:import:com.google.gwt.sample.mobilewebapp.client.ui">
+
+  <ui:style>
+    .title {
+      padding: 4px 10px;
+      font-size: 14pt;
+      font-weight: bold;
+      color: #666;
+    }
+
+    .editForm {
+      padding: 10px;
+      background: white;
+    }
+
+    .label {
+      color: #333;
+      font-size: 10pt;
+      padding-bottom: 3px;
+    }
+
+    .field {
+      width: 300px;
+    }
+
+    .textBoxWrapper {
+      margin-right: 10px;
+    }
+
+    .notesBox {
+      height: 6em;
+    }
+
+    .violation {
+      color: red;
+    }
+
+    .button {
+      padding-top: 8px;
+      padding-bottom: 8px;
+      color: #3f3f3f;
+    }
+
+    .dateButton {
+      text-align: center;
+    }
+
+    .buttonPanel {
+      padding: 10px;
+      margin-top: 15px;
+    }
+
+    .saveButton {
+      width: 130px;
+      margin-right: 5px;
+    }
+
+    .templateList {
+      border-left: 1px solid #aaa;
+    }
+  </ui:style>
+
+  <g:DockLayoutPanel
+    ui:field="dockLayoutPanel"
+    unit="PX">
+    <!-- Edit Form. -->
+    <g:center>
+      <g:HTMLPanel
+        ui:field="editForm"
+        addStyleNames="{style.editForm}">
+        <table
+          cellspacing="10"
+          align="center">
+
+          <!-- Form title. -->
+          <tr>
+            <td
+              align='center'
+              colspan='2'
+              class="{style.title}">Task Details</td>
+          </tr>
+
+          <!-- Task name. -->
+          <tr>
+            <td
+              class="{style.label}">Task Name:</td>
+            <td
+              class="{style.textBoxWrapper}">
+              <g:Label
+                addStyleNames="{style.field}"
+                ui:field="nameEditor" />
+            </td>
+          </tr>
+
+          <!-- Task notes. -->
+          <tr>
+            <td
+              class="{style.label}">Notes:</td>
+            <td
+              class="{style.textBoxWrapper}">
+              <g:Label
+                addStyleNames="{style.field} {style.notesBox}"
+                ui:field="notesEditor" />
+            </td>
+          </tr>
+
+          <!-- Task due date. -->
+          <tr>
+            <td
+              class="{style.label}">Due date:</td>
+            <td>
+              <g:DateLabel
+ addStyleNames="{style.field} {style.button} {style.dateButton}"
+                ui:field="dueDateEditor" />
+            </td>
+          </tr>
+
+          <!-- Button panel. -->
+          <tr
+            class="{style.buttonPanel}">
+            <td
+              colspan='2'
+              align='center'>
+              <g:Button
+                ui:field="saveButton"
+ addStyleNames="{style.button} {style.saveButton}">Edit</g:Button>
+            </td>
+          </tr>
+        </table>
+      </g:HTMLPanel>
+    </g:center>
+
+  </g:DockLayoutPanel>
+
+</ui:UiBinder>
=======================================
--- /dev/null
+++ /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/mobile/MobileTaskReadView.java Mon May 9 10:25:15 2011
@@ -0,0 +1,98 @@
+/*
+ * 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.
+ */
+package com.google.gwt.sample.mobilewebapp.client.mobile;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.sample.mobilewebapp.client.activity.TaskReadView;
+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.client.ui.Composite;
+import com.google.gwt.user.client.ui.DateLabel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.TextBoxBase;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.widget.client.TextButton;
+import com.google.web.bindery.requestfactory.gwt.client.RequestFactoryEditorDriver;
+
+/**
+ * View used to edit a task.
+ */
+public class MobileTaskReadView extends Composite implements TaskReadView {
+
+  /**
+   * Editor driver for this view.
+   */
+ interface Driver extends SimpleBeanEditorDriver<TaskProxy, MobileTaskReadView> {
+  }
+
+  /**
+   * The UiBinder interface.
+   */
+ interface MobileTaskReadViewUiBinder extends UiBinder<Widget, MobileTaskReadView> {
+  }
+
+  /**
+   * The UiBinder used to generate the view.
+   */
+ private static MobileTaskReadViewUiBinder uiBinder = GWT.create(MobileTaskReadViewUiBinder.class);
+
+
+  @UiField
+  DateLabel dueDateEditor;
+  @UiField
+  Label nameEditor;
+  @UiField
+  Label notesEditor;
+  @UiField
+  @Ignore
+  TextButton saveButton;
+
+  private final Driver driver = GWT.create(Driver.class);
+
+  /**
+   * The {@link TaskReadView.Presenter} for this view.
+   */
+  private Presenter presenter;
+
+  /**
+   * Construct a new {@link MobileTaskEditView}.
+   */
+  public MobileTaskReadView() {
+    initWidget(uiBinder.createAndBindUi(this));
+    driver.initialize(this);
+
+    // Create a new task or modify the current task when done is pressed.
+    saveButton.addClickHandler(new ClickHandler() {
+      public void onClick(ClickEvent event) {
+        if (presenter != null) {
+          presenter.editTask();
+        }
+      }
+    });
+  }
+
+  public SimpleBeanEditorDriver<TaskProxy, ?> getEditorDriver() {
+    return driver;
+  }
+
+  public void setPresenter(Presenter presenter) {
+    this.presenter = presenter;
+  }
+}
=======================================
--- /dev/null
+++ /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/mobile/MobileTaskReadView.ui.xml Mon May 9 10:25:15 2011
@@ -0,0 +1,130 @@
+<!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:w="urn:import:com.google.gwt.widget.client"
+  xmlns:app="urn:import:com.google.gwt.sample.mobilewebapp.client.ui">
+
+  <ui:style>
+    .outer {
+      background: #eee;
+    }
+
+    .title {
+      background: #393939;
+      color: white;
+      padding: 4px 10px;
+      font-size: 10pt;
+    }
+
+    .editForm {
+      padding: 10px;
+      background: white;
+    }
+
+    .label {
+      color: #666;
+      font-size: 10pt;
+      padding-bottom: 3px;
+    }
+
+    .field {
+      width: 100%;
+      margin-bottom: 12px;
+    }
+
+    .textBoxWrapper {
+      margin-right: 10px;
+    }
+
+    .nameBox {
+      height: 2em;
+    }
+
+    .notesBox {
+      height: 4em;
+    }
+
+    .buttonPanel {
+      width: 100%;
+      padding: 10px;
+      margin-top: 15px;
+    }
+
+    .button {
+      width: 100%;
+    }
+  </ui:style>
+
+  <g:DockLayoutPanel
+    unit="PT">
+    <!-- Title. -->
+    <g:north
+      size="18">
+      <g:Label
+        addStyleNames="{style.title}">DETAILS</g:Label>
+    </g:north>
+
+    <g:center>
+      <g:ScrollPanel
+        addStyleNames="{style.outer}">
+        <g:HTMLPanel>
+
+          <!-- Edit Form. -->
+          <div
+            class="{style.editForm}">
+            <!-- Task name. -->
+            <div
+              class="{style.label}">What</div>
+            <div
+              class="{style.textBoxWrapper}">
+              <g:Label
+                addStyleNames="{style.field} {style.nameBox}"
+                ui:field="nameEditor" />
+            </div>
+
+            <!-- Task notes. -->
+            <div
+              class="{style.label}">Notes</div>
+            <div
+              class="{style.textBoxWrapper}">
+              <g:Label
+                addStyleNames="{style.field} {style.notesBox}"
+                ui:field="notesEditor" />
+            </div>
+
+            <!-- Task due date. -->
+            <div
+              class="{style.label}">Due date</div>
+            <g:DateLabel
+              addStyleNames="{style.field}"
+              ui:field="dueDateEditor" />
+          </div>
+
+          <!-- Button panel. -->
+          <table
+            class="{style.buttonPanel}"
+            cellspacing="0"
+            cellpadding="0">
+            <tr>
+              <td
+                align="center"
+                style="width:50%;padding-right:5px;">
+                <w:TextButton
+                  ui:field="saveButton"
+                  addStyleNames="{style.button}">Edit</w:TextButton>
+              </td>
+              <td
+                align="center"
+                style="width:50%;padding-left:5px;">
+                &nbsp;
+              </td>
+            </tr>
+          </table>
+
+        </g:HTMLPanel>
+      </g:ScrollPanel>
+    </g:center>
+  </g:DockLayoutPanel>
+
+</ui:UiBinder>
=======================================
--- /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImpl.java Mon May 9 10:10:43 2011 +++ /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImpl.java Mon May 9 10:25:15 2011
@@ -31,9 +31,9 @@
 import com.google.gwt.sample.mobilewebapp.client.activity.TaskReadView;
import com.google.gwt.sample.mobilewebapp.client.desktop.DesktopTaskEditView; import com.google.gwt.sample.mobilewebapp.client.desktop.DesktopTaskListView; +import com.google.gwt.sample.mobilewebapp.client.desktop.DesktopTaskReadView; import com.google.gwt.sample.mobilewebapp.client.desktop.MobileWebAppShellDesktop; import com.google.gwt.sample.mobilewebapp.client.place.AppPlaceHistoryMapper;
-import com.google.gwt.sample.mobilewebapp.client.tablet.TabletTaskReadView;
 import com.google.gwt.storage.client.Storage;
 import com.google.gwt.user.client.Window;
 import com.google.web.bindery.requestfactory.shared.RequestTransport;
@@ -174,6 +174,10 @@
   protected TaskListView createTaskListView() {
     return new DesktopTaskListView();
   }
+
+  protected TaskReadView createTaskReadView() {
+    return new DesktopTaskReadView();
+  }

   /**
* Returns provider that indicates whether the task list is always visible.
@@ -203,8 +207,4 @@
       }
     };
   }
-
-  private TaskReadView createTaskReadView() {
-    return new TabletTaskReadView();
-  }
-}
+}
=======================================
--- /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImplMobile.java Mon May 9 10:10:43 2011 +++ /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImplMobile.java Mon May 9 10:25:15 2011
@@ -17,8 +17,10 @@

 import com.google.gwt.sample.mobilewebapp.client.activity.TaskEditView;
 import com.google.gwt.sample.mobilewebapp.client.activity.TaskListView;
+import com.google.gwt.sample.mobilewebapp.client.activity.TaskReadView;
 import com.google.gwt.sample.mobilewebapp.client.mobile.MobileTaskEditView;
 import com.google.gwt.sample.mobilewebapp.client.mobile.MobileTaskListView;
+import com.google.gwt.sample.mobilewebapp.client.mobile.MobileTaskReadView;
import com.google.gwt.sample.mobilewebapp.client.mobile.MobileWebAppShellMobile;
 import com.google.gwt.sample.mobilewebapp.client.ui.OrientationHelper;
import com.google.gwt.sample.mobilewebapp.client.ui.WindowBasedOrientationHelper;
@@ -44,4 +46,9 @@
   protected TaskListView createTaskListView() {
     return new MobileTaskListView();
   }
-}
+
+  @Override
+  protected TaskReadView createTaskReadView() {
+    return new MobileTaskReadView();
+  }
+}
=======================================
--- /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImplTablet.java Mon May 9 08:12:52 2011 +++ /trunk/samples/mobilewebapp/src/main/com/google/gwt/sample/mobilewebapp/client/ClientFactoryImplTablet.java Mon May 9 10:25:15 2011
@@ -17,9 +17,11 @@

 import com.google.gwt.sample.mobilewebapp.client.activity.TaskEditView;
 import com.google.gwt.sample.mobilewebapp.client.activity.TaskListView;
+import com.google.gwt.sample.mobilewebapp.client.activity.TaskReadView;
 import com.google.gwt.sample.mobilewebapp.client.mobile.MobileTaskListView;
import com.google.gwt.sample.mobilewebapp.client.tablet.MobileWebAppShellTablet;
 import com.google.gwt.sample.mobilewebapp.client.tablet.TabletTaskEditView;
+import com.google.gwt.sample.mobilewebapp.client.tablet.TabletTaskReadView;
 import com.google.gwt.sample.mobilewebapp.client.ui.OrientationHelper;
import com.google.gwt.sample.mobilewebapp.client.ui.WindowBasedOrientationHelper;

@@ -45,6 +47,11 @@
     // Use the mobile list view on tablets.
     return new MobileTaskListView();
   }
+
+  @Override
+  protected TaskReadView createTaskReadView() {
+    return new TabletTaskReadView();
+  }

   @Override
   protected Provider<Boolean> getIsTaskListIncludedProvider() {

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

Reply via email to