`
fishyu0817
  • 浏览: 111302 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Google Web Toolkit (GWT) MVP Example (2)

阅读更多

GreetingPresenter.java

view source
<object id="highlighter_516673_clipboard" title="copy to clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash"> </object>
print?
001.package co.uk.hivedevelopment.greet.client.mvp;
002.import net.customware.gwt.dispatch.client.DispatchAsync;
003.import net.customware.gwt.presenter.client.DisplayCallback;
004.import net.customware.gwt.presenter.client.EventBus;
005.import net.customware.gwt.presenter.client.place.Place;
006.import net.customware.gwt.presenter.client.place.PlaceRequest;
007.import net.customware.gwt.presenter.client.widget.WidgetDisplay;
008.import net.customware.gwt.presenter.client.widget.WidgetPresenter;
009.import co.uk.hivedevelopment.greet.shared.event.GreetingSentEvent;
010.import co.uk.hivedevelopment.greet.shared.rpc.SendGreeting;
011.import co.uk.hivedevelopment.greet.shared.rpc.SendGreetingResult;
012.import com.allen_sauer.gwt.log.client.Log;
013.import com.google.gwt.event.dom.client.ClickEvent;
014.import com.google.gwt.event.dom.client.ClickHandler;
015.import com.google.gwt.event.dom.client.HasClickHandlers;
016.import com.google.gwt.user.client.Window;
017.import com.google.gwt.user.client.ui.HasValue;
018.import com.google.inject.Inject;
019.public class GreetingPresenter extends WidgetPresenter {
020. /**
021.  * The message displayed to the user when the server cannot be reached or
022.  * returns an error.
023.  */
024. private static final String SERVER_ERROR = "An error occurred while "
025.  + "attempting to contact the server. Please check your network "
026.  + "connection and try again.";
027.  
028. public interface Display extends WidgetDisplay {
029.  public HasValue getName();
030.  public HasClickHandlers getSend();
031. }
032. public static final Place PLACE = new Place("Greeting");
033.  
034. private final DispatchAsync dispatcher;
035. // FUDGE FACTOR! Although this is not used, having Gin pass the object
036. // to this class will force its instantiation and therefore will make the
037. // response presenter listen for events (via bind()). This is not a very good way to
038. // achieve this, but I wanted to put something together quickly - sorry!
039. private final GreetingResponsePresenter greetingResponsePresenter;
040. @Inject
041. public GreetingPresenter(final Display display,
042.     final EventBus eventBus,
043.     final DispatchAsync dispatcher,
044.     final GreetingResponsePresenter greetingResponsePresenter) {
045.  super(display, eventBus);
046.   
047.  this.dispatcher = dispatcher;
048.   
049.  this.greetingResponsePresenter = greetingResponsePresenter;
050.   
051.  bind();
052. }
053.  
054. /**
055.  * Try to send the greeting message
056.  */
057. private void doSend() {
058.  Log.info("Calling doSend");
059.   
060.  dispatcher.execute(new SendGreeting(display.getName().getValue()), new DisplayCallback(display) {
061.   @Override
062.   protected void handleFailure(final Throwable cause) {
063.    Log.error("Handle Failure:", cause);
064.     
065.    Window.alert(SERVER_ERROR);
066.   }
067.   @Override
068.   protected void handleSuccess(final SendGreetingResult result) {
069.    // take the result from the server and notify client interested components
070.    eventBus.fireEvent(new GreetingSentEvent(result.getName(), result.getMessage()));
071.   }
072.    
073.  });
074. }
075. @Override
076. protected void onBind() {
077.  // 'display' is a final global field containing the Display passed into the constructor.
078.  display.getSend().addClickHandler(new ClickHandler() {
079.   public void onClick(final ClickEvent event) {
080.    doSend();
081.   }
082.  });
083. }
084. @Override
085. protected void onUnbind() {
086.  // Add unbind functionality here for more complex presenters.
087. }
088. public void refreshDisplay() {
089.  // This is called when the presenter should pull the latest data
090.  // from the server, etc. In this case, there is nothing to do.
091. }
092. public void revealDisplay() {
093.  // Nothing to do. This is more useful in UI which may be buried
094.  // in a tab bar, tree, etc.
095. }
096. /**
097.  * Returning a place will allow this presenter to automatically trigger when
098.  * '#Greeting' is passed into the browser URL.
099.  */
100. @Override
101. public Place getPlace() {
102.  return PLACE;
103. }
104. @Override
105. protected void onPlaceRequest(final PlaceRequest request) {
106.  // Grab the 'name' from the request and put it into the 'name' field.
107.  // This allows a tag of '#Greeting;name=Foo' to populate the name
108.  // field.
109.  final String name = request.getParameter("name", null);
110.   
111.  if (name != null) {
112.   display.getName().setValue(name);
113.  }
114. }
115.}

GreetingResponseView.java

view source
<object id="highlighter_657638_clipboard" title="copy to clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash"> </object>
print?
01.package co.uk.hivedevelopment.greet.client.mvp;
02.import net.customware.gwt.presenter.client.widget.WidgetDisplay;
03.import com.google.gwt.event.dom.client.HasClickHandlers;
04.import com.google.gwt.user.client.ui.Button;
05.import com.google.gwt.user.client.ui.DialogBox;
06.import com.google.gwt.user.client.ui.HTML;
07.import com.google.gwt.user.client.ui.HasHTML;
08.import com.google.gwt.user.client.ui.HasText;
09.import com.google.gwt.user.client.ui.Label;
10.import com.google.gwt.user.client.ui.VerticalPanel;
11.import com.google.gwt.user.client.ui.Widget;
12.public class GreetingResponseView extends DialogBox implements GreetingResponsePresenter.Display {
13. private final Label textToServerLabel;
14. private final HTML serverResponseLabel;
15. private final Button closeButton;
16. public GreetingResponseView() {
17.  setText("Remote Procedure Call");
18.  setAnimationEnabled(true);
19.  closeButton = new Button("Close");
20.  // We can set the id of a widget by accessing its Element
21.  closeButton.getElement().setId("closeButton");
22.  textToServerLabel = new Label();
23.  serverResponseLabel = new HTML();
24.  final VerticalPanel dialogVPanel = new VerticalPanel();
25.  dialogVPanel.addStyleName("dialogVPanel");
26.  dialogVPanel.add(new HTML("Sending name to the server:"));
27.  dialogVPanel.add(textToServerLabel);
28.  dialogVPanel.add(new HTML("Server replies:"));
29.  dialogVPanel.add(serverResponseLabel);
30.  dialogVPanel.setHorizontalAlignment(VerticalPanel.ALIGN_RIGHT);
31.  dialogVPanel.add(closeButton);
32.  setWidget(dialogVPanel);
33. }
34. public HasText getTextToServer() {
35.  return textToServerLabel;
36. }
37. public HasHTML getServerResponse() {
38.  return serverResponseLabel;
39. }
40. public HasClickHandlers getClose() {
41.  return closeButton;
42. }
43. public DialogBox getDialogBox() {
44.  return this;
45. }
46. /**
47.  * Returns this widget as the {@link WidgetDisplay#asWidget()} value.
48.  */
49. public Widget asWidget() {
50.  return this;
51. }
52. @Override
53. public void startProcessing() {
54. }
55. @Override
56. public void stopProcessing() {
57. }
58.}
分享到:
评论

相关推荐

    Google Web工具包(GWT)编程手册The Google Web Toolkit (GWT) Programming Cookbook

    Google Web Toolkit(GWT)是一个用于开发和优化复杂浏览器端应用的开源工具集,它允许开发者使用Java语言编写前端代码,然后通过编译器将Java代码转换成兼容各主流浏览器的JavaScript、HTML和CSS。《Google Web工具...

    Google Web Toolkit gwt-2.10.0 最新版本

    Google Web Toolkit(GWT)是Google推出的一款强大的Web开发框架,专注于帮助开发者使用Java语言创建高性能、跨浏览器的Web应用程序。GWT g-2.10.0是该框架的一个重要版本更新,提供了许多增强的功能和优化,以提升...

    GWT(Google Web Toolkit)

    GWT(Google Web Toolkit) 是 Google 最近推出的一个开发 Ajax 应用的框架,它支持用 Java 开发和调试 Ajax 应用,本文主要介绍如何利用 GWT 进行 Ajax 的开发。 GWT特性简介  1.动态,可重用的UI组件  GWT提供的...

    gwt-2.8.2 SDK 最新下载 google web toolkit

    Google Web Toolkit(GWT)是Google推出的一款开源的、基于Java的Web开发框架,它允许开发者使用Java语言来编写前端应用程序。GWT-2.8.2是该SDK的一个版本,提供了最新的特性和改进,旨在简化Web应用的开发流程,...

    Google Web Toolkit 入门

    ### Google Web Toolkit (GWT) 入门指南 #### 一、引言 随着网络技术的发展,用户对Web应用的期望越来越高,不仅要求其功能强大,还希望具有良好的交互性和用户体验。为此,一种名为Ajax(Asynchronous JavaScript...

    Google Web Toolkit Applications

    《Google Web Toolkit Applications》这本书是针对Google Web Toolkit(GWT)这一强大开发工具的深入指南。GWT是一款由Google开发的开源JavaScript框架,它允许开发者使用Java语言来编写Web应用程序,然后自动编译成...

    Google Web Toolkit 开发 Ajax

    ### Google Web Toolkit (GWT) 开发 Ajax 技术详解 #### 一、GWT特性简介 **GWT**(Google Web Toolkit)是Google推出的一款用于构建和优化复杂Web前端应用的开发工具包。它通过提供一系列强大的特性,极大地简化...

    ajax例子,Google Web Toolkit 1.0.21-ajax example, Google Web Toolkit 1.0.21

    在"ajax例子,Google Web Toolkit 1.0.21-ajax example"中,我们可以预期找到的是一个使用GWT 1.0.21构建的Ajax示例应用。这个示例可能展示了如何使用GWT库创建异步通信,以及如何处理服务器返回的数据。通过学习这个...

    Using Google Web Toolkit (GWT) for Developing AJAX-Based Web Applications for the SAP NetWeaver J2EE Framework.pdf

    ### 使用Google Web Toolkit (GWT) 开发基于AJAX的SAP NetWeaver J2EE框架Web应用 #### 概述 本文档旨在提供一种利用Google Web Toolkit (GWT) 在SAP NetWeaver J2EE框架下开发AJAX基础Web应用的方法。SAP ...

    Google Web Toolkit开发实战

    谷歌Web工具包(Google Web Toolkit,简称GWT)是一种开源的Java框架,它允许开发者使用Java语言编写客户端的Web应用程序,然后自动编译为优化过的JavaScript代码。GWT的核心理念是利用Java的强类型、面向对象的特性...

    利用 Google Web Toolkit 在 Java 框架中开发 Ajax 应用程序

    Google Web Toolkit(GWT)是主要工具,它允许开发者使用 Java 语言来编写前端的 AJAX 应用程序。Ajax,即异步 JavaScript 和 XML,是一种用于创建快速互动网页的技术。通过 GWT,Java 开发者无需深入学习 ...

    Google-Web-Toolkit (GWT)

    ### Google Web Toolkit (GWT):工作原理与应用实例 #### 一、GWT简介 Google Web Toolkit(GWT)是一种强大的开发框架,用于构建基于AJAX的Web应用程序。GWT的主要特点在于它允许开发者完全使用Java语言进行前端...

    Google Web Toolkit API 文档

    Google Web Toolkit(GWT)是Google推出的一款开源的JavaScript开发框架,它允许开发者使用Java语言来编写前端Web应用。GWT API文档是开发者理解和使用GWT进行开发的重要参考资料,提供了全面的技术指南和API参考。 ...

    google web toolkit 1.5.3

    Google Web Toolkit(GWT)1.5.3是一款由Google开发的开源JavaScript开发框架,它允许Java开发者使用Java语言来构建高性能、跨浏览器的Web应用程序。这个版本是GWT的一个重要里程碑,带来了许多改进和新特性,使得...

    面向 Java 开发人员的 Ajax 探索 Google Web Toolkit

    Google Web Toolkit(GWT)是一款由Google推出的开源框架,专为Java开发者设计,旨在简化和加速Web应用程序的开发过程。它允许开发者使用Java语言编写前端代码,并将其编译成高性能的JavaScript,从而在浏览器上运行...

    Accelerated GWT: Building Enterprise Google Web Toolkit Applications

    《加速GWT:构建企业级Google Web Toolkit应用》是一本深度探讨如何利用Google Web Toolkit(GWT)构建高性能Ajax应用程序的专业书籍。本书作者Vipul Gupta深入解析了GWT的核心功能,以及如何通过GWT生成优化的...

    面向 Java 开发人员的 Ajax: Google Web Toolkit 入门(GWT入门)

    **Java开发人员的Ajax:Google Web Toolkit (GWT) 入门** Google Web Toolkit (GWT) 是一个强大的工具,它允许Java开发人员使用熟悉的Java语言来构建高性能、跨浏览器的Ajax应用程序。GWT通过将Java代码编译为优化...

    GWT (GOOGLE WEB TOOLKIT)介绍PPT

    **GWT (Google Web Toolkit)** 是一款由Google开发的开源工具包,专为Java开发者设计,使得他们能够使用Java语言创建高效、动态且交互性强的Ajax应用。GWT通过将Java代码编译成浏览器可执行的JavaScript和HTML,解决...

Global site tag (gtag.js) - Google Analytics