创建基于gwtext的数据绑定应用(2) 事件拦截器

事件拦截器是Dataset与被绑定对象的纽带,通过事件拦截器实现数据绑定

public interface DatasetInterceptor {
public boolean doBeforeIntercept(Dataset dataset, String action, Object[] params);

public void onIntercept(Dataset dataset, String action, Object[] params);

public void doAfterIntercept(Dataset dataset, String action, Object[] params, int resultCode);
}


一个简单的数据绑定TextField,当Dataset发生ACTION_MOVE(当前记录行变动)事件时动态修改绑定字段内容,如下:

public class DatasetText extends TextField implements DatasetFormField {
private Dataset dataset;
private DatasetField field;

private DatasetInterceptor interceptor;

public DatasetText(Dataset dataset, DatasetField field) {
this.dataset = dataset;
this.field = field;
this.init();
this.bind();
}

public DatasetText(DatasetField field) {
this(null, field);
}

private void init() {
setFieldLabel(field.getTitle());
setName(field.getName());
setWidth(field.getEditWidth());
if(dataset != null) {

this.addListener(new TextFieldListenerAdapter(){

@Override
public void onBlur(Field field) {
dataset.set(field.getName(), DatasetText.this.getText());
}

@Override
public void onFocus(Field field) {
DatasetText.this.selectText();
}

});
}
}

@Override
public void bind() {
if(this.dataset == null) return;
if(this.interceptor == null)
this.interceptor = new DatasetInterceptorFormAdapter(Constants.ACTION_MOVE){
@Override
public void doAction(Dataset dataset, Object params) {
Record rec = dataset.getRecordAtCursor();
if(rec != null)
DatasetText.this.setValue(rec.getAsString(field.getName()));
}
};
this.dataset.addInterceptor(this.interceptor);
Record rec = dataset.getRecordAtCursor();
if(rec != null)
this.setValue(rec.getAsString(field.getName()));
}

@Override
public void unbind() {
if(this.dataset == null) return;
this.dataset.removeInterceptor(this.interceptor);
}

@Override
public Dataset getDataset() {
return this.dataset;
}

@Override
public DatasetField getField() {
return this.field;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值