如何在代码中关闭对话框?

时间:2014-02-10 06:10:39

标签: plugins eclipse-plugin swt

所以我正在创建一个eclipse插件,我通过扩展对话框类来创建自己的对话框。

我的对话框基本上使用来自服务器的数据填充树视图。有时无法填充数据(因为服务器已关闭),因此我的树视图为空。

如果我无法连接到服务器,我会显示另一个对话框报告错误。 我的问题是,当我在错误对话框中按ok时,我想关闭初始对话框。

我无法找到一个很好的方法来做到这一点。 我试过将setBlockOnOpen设置为false。 我试过调用cancelPressed。 他们都没有工作。 我在createDialogArea函数中调用它们。

关于如何让它发挥作用的任何想法?

2 个答案:

答案 0 :(得分:2)

它基本上是用户取消对话框。你需要调用cancelPressed()所以如果你有任何依赖于returnCode

的代码,它将是一致的处理
if(noDataLoaded){
    Display.getDefault().asyncExec(new Runnable() {

     public void run() {
        cancelPressed():
    }
    });
}

答案 1 :(得分:1)

对话框创建完成后,您需要进行close调用。您可以使用以下代码执行此操作:

parent.getDisplay().asyncExec(new Runnable()
  {
    @Override
    public void run()
    {
      close();
    }
  });

在您的createDialogArea方法中。但是,对话框可能会短暂显示。在创建对话框之前进行检查会更好。