• 検索結果がありません。

勉強会 資料 Google Developer Group 京都

N/A
N/A
Protected

Academic year: 2018

シェア "勉強会 資料 Google Developer Group 京都"

Copied!
40
0
0

読み込み中.... (全文を見る)

全文

(1)

UiBinder GWT-RPC

(2)

白山 文彦&

京都 GTUG

大学生

:静的型付 言語 Linux

Twitter: @fshiroyama

願いい

(3)

正式 Kyoto Google Technology User

Group => Kyoto GTUG

純粋 Google 理解 習得

活動 非営利団体

世界 GTUG 機会

ひ 参 く い!

http://kyoto-gtug.org/

http://group.kyoto-gtug.org/

(4)

京都 株式会社

http://www.krp.co.jp/

会場 京都 株式会社様

援 無料 利用 い い

勉強会 理解

面白 感 く 場合 ひ京都

様 前 共 等 書い い

ば 嬉 い

(5)

GWT2.0 目玉機能 UiBinder 使

分 作 挑戦

GWT-RPC 使 自分 定義 型オ

非 期通信 渡

く使わ 実際 確認

動的 コン ン 簡単 構築可能 あ 体験

本日 第一回 対象

ほ 内容 場 う

付 合い い m(_ _)m

(6)

統合開 環境 Eclipse 導入

http://www.eclipse.org/

Google Plugin for Eclipse 導入

http://code.google.com/intl/en/appengine/docs/ja

va/tools/eclipse.html#Installing_the_Google_Plugin

_for_Eclipse

Google AppEngine

http://code.google.com/intl/ja/appengine/

本日解説

http://kyoto-gtug-for-

staff.googlecode.com/svn/trunk/shiroyama/gwt/Us

erControl (Subversion )

(7)

資料 全ソ

要点 解説 い 部分 多々あ

興味 準備 記載 SVN

ソ コ く

不明 質疑応答 時間 質問い

ば幸い

ML 利用く い!

http://groups.google.com/group/gwt-jp

(8)

優秀

型紙 作 出 出来 元 必要

追 く 簡単 う

準備 参照 Google Plugin for Eclipse

入 い く い

(9)
(10)

ビ 時 JavaScript 変換

部分

JavaServlet

処理 担う部分

共通 利用 部分

入力

作 く 便利 DOM 生 コン

ン 動的 挿入

HTML

(11)
(12)

div id=“menu” div id=“main”

作 ン

検索 ン

Menu.java

UserCreate.java

or

UserSearch.java

メ ンコン ン 表示領域

(13)

利用 簡単

UiBinder XML 対応 Java

ン 右

順 選択 く

(14)

入力 Finish

(15)

GWT EntryPoint 実装 起点

初期化処理

onModuleLoad() メソ 記述

一般的 RootPanel.get( “div 指定

ID” ).add(Widget ); いう構

(16)

public class UserControl implements EntryPoint {

public void onModuleLoad() {

Widget menu = new Menu();

Widget main = new UserCreate();

// Use RootPanel.get() to get the entire body element

RootPanel.get("menu").add(menu);

RootPanel.get("main").add(main);

}

}

Widget

div id 指定

追 表示

(17)

UiBinder 解説

参考 Menu.java, Menu.ui.xml

XML 編集 部分

GWT 対応 一意

担当 Java ソ 制御 準備

Java 記述

(18)

<ui:style>

</ui:style>

<g:HTMLPanel>

<div>

<g:Button ui:field="btnCreate"> </g:Button>

</div>

<div>

<g:Button ui:field="btnSearch"> 検索 </g:Button>

</div>

</g:HTMLPanel>

HTML 実際

HTML Widget

オ 子要素

Button 対応

Struts

利用

対応 Java

オ 制御

一意 前 い

(19)

@UiField

Button btnCreate;

@UiField

Button btnSearch;

public Menu() {

initWidget(uiBinder.createAndBindUi(this));

}

宣言 以後

扱う

コ 分 可

能 い

正確 メソ 呼

初期化

い う 消 わ い

(20)

@UiHandler("btnCreate")

void onClickCreate(ClickEvent e) {

clear();

add(new UserCreate());

}

コ コ 等価

btnCreate.addClickHandler(new ClickHandler() {

@Override

public void onClick(ClickEvent event) {

// hoge

}

});

ン !

ン い

ン 型 指定

オ ン 拾い ば

MouseOverEvent e

う 変更 捕 え !

(21)

GWT Java 基本型や String

定義 型 オ RPC 通信 送

信 出来

定義 RPC 通信

送 信 IsSerializable

実装 い 必要 あ

UserCreate.java 解説

GWT-RPC 方法 確認 思い

(22)

public class UserData implements IsSerializable {

private String name;

private String mailAddress;

private String password;

/* setter, getter 省略 */

}

特 問題あ

(23)

UserData 引数 いメソ

GreetingServiceAsync.jav

a 対応 メソ 無い

(24)

Generate method

選択

GreetingServiceAsync.jav

a 対応 メソ 自動生

(25)

先程 2 メソ 実装 server

GreetingServiceImpl.java 実装

工程 先程 警告 表示

い 自動生

未実装 メソ 追

(26)

実際 記述

(27)

@Override

public void createUser(UserData data) {

String name = data.getName();

String mailAddress = data.getMailAddress();

String password = data.getPassword();

PersistentUserData storeData = new PersistentUserData();

storeData.setName(name);

storeData.setMailAddress(mailAddress);

storeData.setPassword(password);

PersistenceManager pm = PMF.get().getPersistenceManager();

try {

pm.makePersistent(storeData);

} finally {

pm.close();

}

}

引数 UserData

AppEngine

DataStoreAPI(JDO )

使 情報

永続化

(28)

GWT AppEngine JDO

う 作法 簡単 永続化 出来

興味 京都 GTUG

書 記事 参照く い!

Google App Engine for Java 使 う!

5Datastore Java API

http://codezine.jp/article/detail/3904//api.class.p

hp

(29)

先程 実際

ソ 追

今度 利用

UiBinder 使

UserCreate いう 新規作

(30)

<g:HTMLPanel>

<div class="{style.left}"> :</div>

<div>

<g:TextBox styleName="{style.textBox}" ui:field="tbName" />

</div>

<div class="{style.left}"> :</div>

<div>

<g:TextBox styleName="{style.textBox}" ui:field="tbMail" />

</div>

<div class="{style.left}"> :</div>

<div>

<g:PasswordTextBox styleName="{style.textBox}" ui:field="tbPassword" />

</div>

<div class="{style.left}">&nbsp;</div>

<div>

<g:Button styleName="{style.button}" ui:field="btnCreate"> :</g:Button>

</div>

</g:HTMLPanel>

ほ 普通

HTML

題 い う

ン 追 い部

分 う オ

表 表記

(31)

実装 内容 入力

メ ワ 作

ン 押 送信 結果

いう処理

(32)

private final GreetingServiceAsync greetingService = GWT .create(GreetingService.class);

/* 中略 */

@UiHandler("btnCreate") void onClick(ClickEvent e) {

greetingService.createUser(data, new AsyncCallback<Void>() {

@Override

public void onSuccess(Void result) {

dialog.center(" [" + name + "] "); }

@Override

public void onFailure(Throwable caught) {

dialog.center(" [" + name + "] 失敗 "); GWT.log("Failed to create user: " + name, caught);

} });

}

GreetingServiceAs

ync 変数 宣言

メソ 呼べ

非 期通信 終わ ば引数

型 結果 返

& 例 結果

い い'

(33)

実際 後以

理 実装 い 興味 あ 方 ソ 覗い

く い!

入力

結果

期通信中 表示

結果 表示

今回

UiBinder 使

ン べ 任

実装 集中

(34)

情報 出来

出 部分 作

基本的 全く

疑問 思 作 解説

戻 確認く い

(35)

<g:HTMLPanel>

<div>

<div class="{style.left}"> 検索 :</div>

<div>

<g:TextBox styleName="{style.right}"

ui:field="tbSearch" />

</div>

<div class="{style.blank}">&nbsp;</div>

<div styleName="{style.right}">

<g:FlowPanel ui:field="panel" />

</div>

</div>

</g:HTMLPanel> 検索結果

や メ セ

挿入

(36)

検索 結果 メソ

GreetingService.java,

GreetingServiceAsync.java,

GreetingServiceImpl.java,

※createUser 解説 省略

折角 如何 期通信!

敢え ン 設 文字

入力 ン 捕 え 非

期通信

(37)

@UiHandler("tbSearch")

void onKeyUp(KeyUpEvent e) {

final String userName = tbSearch.getText().trim();

greetingService.searchUser(userName, new AsyncCallback<List<UserData>>() {

@Override

public void onSuccess(List<UserData> result) { panel.clear();

for (UserData data : result) {

UserAnchor a = new UserAnchor(data); panel.add(a);

} }

@Override

public void onFailure(Throwable caught) {

GWT.log(“erro: " + userName, caught); }

}); }

UserData List

表示

処理

(38)

[a]

検索 べ 表

示 !

詳細情報 表示

文字 入力

非 期通信 結

果 変わ !

(39)

一見 見え 覚え

い ほ あ 魔法 処理

ほ 行 く

高い

可能 う 1px 単位 CSS 忙殺

必要 あ ! ういう 任

い う!

(40)

清聴あ う い !

参照

関連したドキュメント

In Section 2, we introduce the infinite-wedge space (Fock space) and the fermion operator algebra and write the partition function in terms of matrix elements of a certain operator..

These counting problems provide a beautiful hierarchy of relationships between topological string theory/gauge theory in six dimensions, four-dimensional supersymmetric gauge

Toyotsu Rare Earths India Private Limited、Toyota Tsusho Gas E&amp;P Trefoil Pty Ltd、. Toyota Tsusho

Although I admittedly do not understand string theory from a physical point of view, I do think (most of my colleagues from algebraic QFT do not share such optimistic ideas) that

That is, we want to know if we can generalize Jacobsthal numbers, to express the number of occurrences of each digit in each shortest repeating string in the b-ary g-Collatz

So consider an arbitrary string s ∈ T , and imagine writing, after each initial segment, the number of left minus right parentheses in that segment.. gambling terminology, this count

), Principles, Definitions and Model Rules of European Private Law: Draft Common Frame of Reference (DCFR), Interim Outline Edition, Munich 200(, Bénédicte Fauvarque-Cosson

A carnet is an international, unified Customs document under an international system based on “Customs Conventions on the Temporary Importation of Private Road Vehicles”