WIzardPage中的Tableviewer验证

时间:2013-12-18 17:21:19

标签: eclipse swt eclipse-rcp

在我的eclipse rcp应用程序中,我使用一个向导,其中一个WizardPage使用TableViewer组件。 tableviewer中有2列,我为其中一列启用了EditingSupport。我的要求是验证在可编辑列中输入的值,以便不应该是空格。此外,我只需在用户完成所有行的编辑后进行验证。我尝试了各种方法。但似乎都没有工作。

  1. 我尝试在Table元素和Tableviewer元素上找到侦听器,但没有运气(我在表上尝试FocusListener,在TableViewer上尝试SelectionChangedListener
  2. 我尝试使用Eclipse页面上的一篇文章所建议的WizardPage的canFlipToNextPage()覆盖方法,但这似乎没什么帮助。这种方法的问题是,即使在页面显示之前,平台也会调用canFlipToNextPage()
  3. 当使用向导或向导页面的getNextPage重写方法时,我得到与#2相同的结果
  4. 有人能指出我这样做的正确方法吗?

3 个答案:

答案 0 :(得分:0)

我看不出你怎么知道用户已经完成了所有行的编辑。

每次用户更改单元格时,我都会验证表格,并在验证调用中WizardPage.setPageComplete(boolean)启用/禁用“下一步”和“完成”按钮。

答案 1 :(得分:0)

我会稍微偏离你的问题并给你一些适当的MVC提示。

  • 您不应该在实际行中侦听更改,而应该在由该行表示的模型中进行更改。
  • 模型可以拥有属性更改侦听器(例如),并且可以自行验证,从而向UI提供isValid()等API。
  • 在UI部分(视图)上,您可以监听模型更改,并在发现事件时setPageComplete(model.isValid());
  • 为每一行建立一个模型是不好的做法(对于非MVC实现也是如此)。

答案 2 :(得分:0)

如果您将列“实时”验证并将结果存储在 WizardPage#getNexPage()中使用的标志中以确定是否可以获取下一页或只是再次返回当前页面()以及验证结果的一些说明?