GWT Wave 开源代码运行跑通分析(1)

单一布局回复的运行效果

div 窗口。有标题和关闭按钮。

 

 

GWT Wave 开源代码运行跑通分析(1)

Created Wednesday 13 April 2011

google 果然是大神。虽然早就知道 wave的代码开源了但是一直据没有跑通。

连编译都没有通过。不过最近终于有了点突破。

找到了一个demo的入口。

如上图第一个所示。借助GWT google 将ajax 做到了及至。同时弄的应用具复杂。

看这个代码看了很久了。好多地方没有太明白。

将学习理解的记录下来。

编辑器文件路径
org/waveprotocol/wave/client/wavepanel/impl/toolbar/images/edit
多种颜色边框,绿色,银色
org/waveprotocol/wave/client/wavepanel/view/dom/full/frame
聊天按钮,默认头像图片
org/waveprotocol/wave/client/wavepanel/view/dom/full/mock/
面板,添加,窗口图片
org/waveprotocol/wave/client/wavepanel/view/dom/full/
三种颜色,蓝色,白色,绿色,肉色button
org/waveprotocol/wave/client/widget/button/text/
添加,灯泡,最大最小关闭按钮。
org/waveprotocol/wave/client/widget/button/icon
wave破损图片,wave加载图片
org/waveprotocol/wave/client/gadget/renderer
附件加载,边框图片
org/waveprotocol/wave/client/doodad/attachment/render

没有使用其他的 ioc框架。和一般的系统不同 在client 下面的类都要转换成 javacript 代码。

google在 client 下面使用了大量的接口。

1)分析google的窗口构造。

创建一个桌面窗口。

// 桌面窗口
        DesktopPopupChrome desktopPopupChrome = new DesktopPopupChrome();
通过一个构造器DesktopPopupProvider创建窗口的弹出布局。

UniversalPopup desktopUniversalPopup = new DesktopPopupProvider()
                .createPopup(RootPanel.get().getElement(),
                        dropdownPopupPositioner, desktopPopupChrome, false);

这个 UniversalPopup 就是一个接口。

创建一个按钮是通过 工厂类创建的。

ClickButtonWidget iconButtonTemplateMin = ButtonFactory
                .createIconClickButton(IconButtonStyle.PANEL_MINIMIZE, "最小化",
                        new ClickButtonListener() {
                            @Override
                            public void onClick() {
                            }
                        });
变量 IconButtonStyle.PANEL_MINIMIZE 是类里面写死的常量。
不同数值代表不同的按钮图标。

创建一个桌面窗口的全部代码

2)创建一个聊天程序

 

// 桌面窗口
		DesktopPopupChrome desktopPopupChrome = new DesktopPopupChrome();
		// 显示标题栏
		desktopPopupChrome.enableTitleBar();

		desktopPopupChrome.setPixelSize(300, 300);

		DropdownPopupPositioner dropdownPopupPositioner = new DropdownPopupPositioner();
		UniversalPopup desktopUniversalPopup = new DesktopPopupProvider()
				.createPopup(RootPanel.get().getElement(),
						dropdownPopupPositioner, desktopPopupChrome, false);

		// 显示
		desktopUniversalPopup.show();
		// 设置标题
		desktopUniversalPopup.getTitleBar().setTitleText("1234");
		// 添加弹出窗口内容
		HTML html = new HTML("普通html组件");
		// html.setPixelSize(300, 300);
		desktopUniversalPopup.add(html);

		ClickButtonWidget iconButtonTemplateMin = ButtonFactory
				.createIconClickButton(IconButtonStyle.PANEL_MINIMIZE, "最小化",
						new ClickButtonListener() {
							@Override
							public void onClick() {
							}
						});
		desktopUniversalPopup.getTitleBar().addButton(iconButtonTemplateMin);

		ClickButtonWidget iconButtonTemplateMax = ButtonFactory
				.createIconClickButton(IconButtonStyle.PANEL_MAXIMIZE, "最大化",
						new ClickButtonListener() {
							@Override
							public void onClick() {
							}
						});
		desktopUniversalPopup.getTitleBar().addButton(iconButtonTemplateMax);

		ClickButtonWidget iconButtonTemplateClose = ButtonFactory
				.createIconClickButton(IconButtonStyle.PANEL_CLOSE, "关闭",
						new ClickButtonListener() {
							@Override
							public void onClick() {
							}
						});
		desktopUniversalPopup.getTitleBar().addButton(iconButtonTemplateClose);

 

 

 2) 代码/src/com/freewebsys/sns/client/TestTwo.java

是创建图1的代码。刚跑通。代码本身可能只是google的一个测试。

但是上面的回复。都可以用。效果都可以看到。

 

光标选中。

 


 点击回复。。

 


 传说中的盖楼。

 

 

 

程序比较大 37 MB ,超出上传的范围了。直接上传到googlecode的服务器上面了。
下子地址:

http://code.google.com/p/freewebsys/downloads/detail?name=GwtWave.2011.04.13.tar.gz

 

如果要运行程序需要使用google的GWT插件,安装使用参考google文档。

 

http://code.google.com/webtoolkit/usingeclipse.html

 

接下来继续研究Wave的代码。然后用GWT + wave 创建一个SNS 社区。

 

继续研究中。

时间: 2024-08-30 16:15:22

GWT Wave 开源代码运行跑通分析(1)的相关文章

Google wave 开源代码更新 wave-libraries-2010-11-17.zip 可以下载

  google wave  的代码更新 还是够快的.   上次是 20 10 -11 -09 发布的.   才过了 8 天又发布了一个版本.   还好我 做了记录.. http://toeo.iteye.com/admin/blogs/808628       附件是下载 文件   也可以直接从服务器下载最新 版本.   http://code.google.com/p/wave-protocol/downloads/list   gwt 开发的.有兴趣的 大家可以一起研究.

jpeg-冈萨雷斯 JPEG2000 参数不知道设置为多少合适 下载了开源代码 也不会运行

问题描述 冈萨雷斯 JPEG2000 参数不知道设置为多少合适 下载了开源代码 也不会运行 10C 冈萨雷斯 JPEG2000 参数不知道设置为多少合适 下载了开源代码 也不会运行

详细分析JS中用try catch对代码运行的性能影响

前言 之前一直没有去研究try catch对代码运行的性能影响,只是一直停留在了感觉上,正好最近开会交流学习的时候,有人提出了相关的问题.借着周末,正好研究一番. 前端线上脚本错误的捕获方法: window.JSTracker=window.JSTracker||[]; try{ //your code }catch(e){ JSTracker.push(e); throwe;//建议将错误再次抛出,避免测试无法发现异常 } 设计实验方式 简单的设计方案也就是对比实验. 空白组1:[无 try

PhalApi-Xhprof -- Facebook开源的轻量级PHP性能分析工具

PhalApi-Xhprof -- Facebook开源的轻量级PHP性能分析工具 前言 Facebook开源的轻量级PHP性能分析工具,非常爽希望大家喜欢 附上: 官网地址:http://www.phalapi.net/ 开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release 开源中国拓展Git地址:http://git.oschina.net/dogstar/PhalApi-Library 1. 安装 首先需要安装配置Xhp

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(21)-权限管理系统-跑通整个系统

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(21)-权限管理系统-跑通整个系统 这一节我们来跑通整个系统,验证的流程,通过AOP切入方式,在访问方法之前,执行一个验证机制来判断是否有操作权限(如:增删改等) 原理:通过MVC自带筛选器,在筛选器分解路由的Action和controller来验证是否有权限. 首先我们要理解一下筛选器 筛选器的由来及用途有时,您需要在调用操作方法之前或运行操作方法之后执行逻辑. 为了对此提供支持,ASP.NET MV

C++开源代码项目汇总

Google的C++开源代码项目 v8  -  V8 JavaScript EngineV8 是 Google 的开源 JavaScript 引擎.V8 采用 C++ 编写,可在谷歌浏览器(来自 Google 的开源浏览器)中使用.V8 根据 ECMA-262 第三版中的说明使用 ECMAScript,并在使用 IA-32 或 ARM 处理器的 Windows XP 和 Vista.Mac OS X 10.5 (Leopard) 以及 Linux 系统中运行.V8 可以独立运行,也可以嵌入任何

Sonar实战【开源代码质量管理平台】

随着项目的展开,代码的质量需要定期的检查,除了Code Review外,使用工具进行定期的检查规范等很重要,Sonar就是这样一个平台. 介绍 Sonar是一个开源代码质量管理平台.以下是它的主要特点: 代码覆盖:通过单元测试,将会显示哪行代码被选中 改善编码规则 搜寻编码规则:按照名字,插件,激活级别和类别进行查询 项目搜寻:按照项目的名字进行查询 对比数据:比较同一张表中的任何测量的趋势 安装 从http://www.sonarsource.org/ 下载安装文件,解压到任意目录,执行对应3

c语言-杭电oj2012素数判定 可以运行为什么通不过

问题描述 杭电oj2012素数判定 可以运行为什么通不过 #include "stdio.h" int main() { int x,y,n,j,s; while( scanf("%d%d",&x,&y)!=EOF) { if( x==0 && y==0 ) break; else { for( n=x; n<=y; n++ ) { s=n*n+n+41; for( j=2; j<=s/2; j++ ) { if( s%j

python-Python获取指定服务的cpu占用率?求大神指点,我代码运行不出来

问题描述 Python获取指定服务的cpu占用率?求大神指点,我代码运行不出来 以下是我的两个文件,希望大神或者喜欢尝试的兄弟看看. test_no1.py #!/usr/bin/env python #-*- coding:utf-8 -*- import ctypes; import psutil import test_no2metaclass = type; class PROCESSENTRY32(ctypes.Structure):fields = [ ("dwSize",