テキストフィールドなどから値を取得
テキストフィールドなどから値を取得するにはフォームを作成する。
フォームを作成しなくてもできるっぽいがそれはまた後日。
まずはフォームを作成。
XMLの名前+Formでフォームを作成する。
SubDispForm.java
package gui.test; import org.seasar.uruma.annotation.ImportValue; public class SubDispForm { @ImportValue(id="title") private String title; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } }
@ImportValueでXMLのidと等しいものから値を取得することができる。
ちなみに@ImportValueは取得のみ、@ExportValueはセットのみ、@ImportExportValueは両方が可能になる。
値を持ってくるだけだから型がText型じゃなくてString型なんだろうなぁ。
上のはprivateになっているがpublicでも可。
その場合にはセッターとゲッターは必要ありません。(自動的にセット、ゲットしてくれるらしい。)
続いてアクション
package gui.test; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Shell; import org.seasar.framework.container.annotation.tiger.Component; import org.seasar.uruma.annotation.EventListener; import org.seasar.uruma.annotation.Form; @Component(name="subDispAction") @Form(SubDispForm.class) public class SubDispAction { public Shell shell; public SubDispForm subDispForm; @EventListener(id="button") public void dispTitleValue() { MessageDialog.openInformation(shell, "TitleValue", subDispForm.getTitle()); } }
@Formでどのフォームを使用するかを決定する。
2つ以上の記述は不可。
フォームとアクションは多:1の関係になる。
public SubDispForm subDispForm;でフォームを持ってきてsubDispForm.getTitle()でゲットできる。
フォームがpublic String titleの場合はsubDispFOrm.titleでゲットできる。
最後にapp.diconにアクションとフォームを設定する。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.3//EN" "http://www.seasar.org/dtd/components23.dtd"> <components> <component class="gui.test.MenuAction"/> <component class="gui.test.SubDispAction"/> <component class="gui.test.SubDispForm"/> </components>
これで完成。