我有一个带默认按钮的TitleAreaDialog,我使用数据绑定来同步模型和小部件。如何延迟模型更新直到用户单击“确定”按钮?
谢谢!
答案 0 :(得分:0)
我不知道如何延迟。另一种方法是,注册DisposeListener以检查用户选择ok或取消。如果结果不合适,我会放弃更改。
就我而言,我将从hibernate获取的模型绑定。当'ok'时,休眠是否仍然存在,按下取消时刷新模型(从数据库重新读取数据)。
但是,我希望该功能也可以延迟或撤消更改。
答案 1 :(得分:0)
您必须为绑定设置UpdateValueStrategy
POLICY_CONVERT
或POLICY_ON_REQUEST
以“延迟”模型更新:
DataBindingContext dbc = new DataBindingContext();
final Binding binding = dbc.bindValue(target, model,
new UpdateValueStrategy(UpdateValueStrategy.POLICY_CONVERT), null);
然后你可以通过OK按钮更新目标,如下所示:
Button btnOK = mToolkit.createButton(parent, "OK", SWT.NONE);
btnOK.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
binding.updateModelToTarget();
}
});
或者您可以通过调用DataBindingContext
DataBindingContext.updateTargets()
中的所有绑定