Editorのサンプル
PhraseEditor
割りと普通
PhraseEditor.ui.xml
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:style>
.boldtitle{
font-weight:bold;
margin:2px;
}
.minlabel{
width:40px;
}
.mintext{
width:400px;
}
</ui:style>
<g:HTMLPanel>
<g:Label ui:field='englishLabel' styleName='{style.boldtitle}'/>
<g:HorizontalPanel><g:Label ui:field='label1' styleName='{style.minlabel}'></g:Label><g:TextBox ui:field='enquestionEditor' styleName='{style.mintext}'></g:TextBox></g:HorizontalPanel>
<g:HorizontalPanel><g:Label ui:field='label2' styleName='{style.minlabel}'></g:Label><g:TextBox ui:field='enanswerEditor' styleName='{style.mintext}'></g:TextBox></g:HorizontalPanel>
<g:Label ui:field='japaneseLabel' styleName='{style.boldtitle}'/>
<g:HorizontalPanel><g:Label ui:field='label3' styleName='{style.minlabel}'></g:Label><g:TextBox ui:field='jaquestionEditor' styleName='{style.mintext}'></g:TextBox></g:HorizontalPanel>
<g:HorizontalPanel><g:Label ui:field='label4' styleName='{style.minlabel}'></g:Label><g:TextBox ui:field='jaanswerEditor' styleName='{style.mintext}'></g:TextBox></g:HorizontalPanel>
<g:HorizontalPanel><g:Label ui:field='label5' styleName='{style.minlabel}'></g:Label><g:ValueListBox ui:field='priorityStringEditor' ></g:ValueListBox></g:HorizontalPanel>
<g:Button ui:field='button1'></g:Button>
</g:HTMLPanel>
</ui:UiBinder>
PhraseEditor.java
package com.akjava.gwt.wordbook.client.ui;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.akjava.gwt.wordbook.client.db.PhraseData;
import com.google.gwt.core.client.GWT;
import com.google.gwt.editor.client.Editor;
import com.google.gwt.editor.client.SimpleBeanEditorDriver;
import com.google.gwt.text.shared.Renderer;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.ValueListBox;
import com.google.gwt.user.client.ui.Widget;
public class PhraseEditor extends Composite implements Editor<PhraseData> {
private static LabelAndBox2UiBinder uiBinder = GWT
.create(LabelAndBox2UiBinder.class);
public interface PhraseEditorDriver extends SimpleBeanEditorDriver<PhraseData, PhraseEditor> {}
interface LabelAndBox2UiBinder extends UiBinder<Widget, PhraseEditor> {
}
public PhraseEditor() {
initWidget(uiBinder.createAndBindUi(this));
englishLabel.setText("英語");
label1.setText("質問");
label2.setText("回答");
japaneseLabel.setText("日本語");
label3.setText("質問");
label4.setText("回答");
label5.setText("優先度");
List<String> values=new ArrayList<String>();
for(int i=1;i<=10;i++){
values.add(""+i);
}
priorityStringEditor.setAcceptableValues(values);
}
int id;
double cdate;
int enid;
@UiField @Ignore Button button1;
@UiField @Ignore Label label1,label2,label3,label4,label5,englishLabel,japaneseLabel;
@UiField TextBox jaquestionEditor,enquestionEditor,jaanswerEditor,enanswerEditor;
@UiField(provided = true)ValueListBox<String> priorityStringEditor = new ValueListBox<String>(new Renderer<String>() {
@Override
public String render(String object) {
return object;
}
@Override
public void render(String object, Appendable appendable)
throws IOException {
// TODO Auto-generated method stub
}
});
//@UiField ListBox priorityStringEditor;
public Button getButton(){
return button1;
}
}
使い方
//準備
PhraseEditorDriver newdriver=GWT.create(PhraseEditorDriver.class);
//新規作成
newData = new PhraseEditor();
保存用のデーターを取得
PhraseData data=newdriver.flush();
//登録後の初期化
PhraseData initData=createInitializeData();
newdriver.initialize(newData);
newdriver.edit(initData);
public void setEditData(
PhraseData edata) {
editData.setVisible(true);
PhraseData newedata;
if(edata==null){
newedata=createInitializeData();
}else{
//the data from database cant rewrite.
newedata=edata.copy();
}
editdriver.initialize(editData);
editdriver.edit(newedata);
}