テキストフィールドなどから値を取得

テキストフィールドなどから値を取得するにはフォームを作成する。

フォームを作成しなくてもできるっぽいがそれはまた後日。

まずはフォームを作成。

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>

これで完成。