dialog - 如何确定 JFace 或 SWT 对话框当前处于打开状态?

标签 dialog swt eclipse-rcp jface

在我们的 RCP 应用程序中,无论当前焦点如何,我们都需要使用全局键事件处理程序(通过 Display.addFilter())来进行更高级的键事件处理/路由。我们需要能够确定当前是否为某些路由逻辑打开了一个对话框。

似乎是一个相当微不足道的问题,但我一直在解决 Widget 层次结构、Shell、WindowManagers 的死胡同。

我正在寻找一个强大的解决方案,它不需要 Dialog 实现者或使用标准框架对话框的客户端代码的任何额外工作。

最佳答案

在下面的示例中,shell是范围内已定义的 Shell。您可以修改代码进行比较 activeShell带有 Shell 列表。

shell.getDisplay().addFilter(SWT.KeyDown, new Listener() {
    public void handleEvent(final Event event) {
        if (shell.isDisposed()) {
            return;
        }
        final Shell activeShell = shell.getDisplay().getActiveShell();
        if (activeShell != null && activeShell.equals(shell)) {
            if (event.stateMask == SWT.MOD1 && event.character == 'w') {
                shell.dispose();
            }
        }
    }
});

此示例代码将关闭 shell + W在 Mac 上按下。

关于dialog - 如何确定 JFace 或 SWT 对话框当前处于打开状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3490988/

相关文章:

javascript - Jquery对话框高度和垂直滚动条

java - 如何过滤掉 SWT DirectoryDialog 中的 "My Computer"-选项?

java - 从自定义对话框 View 返回值

c# - 你能访问像 'Cancel' 这样的标准 Windows 字符串吗?

java - SWT JFace如何在moveBelow()后重绘

java - SWT 中不同大小的 View

eclipse - 尝试运行 eclipse 产品时出现异常

java - 使用 Eclipse RCP 开发 Workbench 应用程序::它能变得多丰富?

eclipse - 是否可以拥有受密码保护的 Eclipse 更新站点?

php - jQuery 就绪函数在对话框中被调用两次