java - 聆听新贝壳

标签 java eclipse eclipse-plugin swt

我们的应用程序的首选项是共享的(即办公室中的所有用户都有相同的首选项)。为此,我们实现了一个自定义 IPreferenceStore,用于将数据保存到数据库或从数据库(重新)加载数据。

现在,当然我们不能在首选项窗口打开时重新加载 IPreferenceStore - 至少我们应该在这种情况下带来某种消息或其他内容。所以我需要有一种方法来监听 PreferenceDialog 打开。

由于我们正在实现 Eclipse 应用程序,如果无法直接对首选项对话框使用react,那么监听 Shell 打开并检查其标题可能就足够了。

我尝试过的:

// this only reacts to the main window changing
PlatformUI.getWorkbench().addWindowListener(new IWindowListener() { ... });

// shells (and composites in general) are missing listeners for
// adding child controls
Shell currentShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
currentShell.addListener(SWT.???, e-> System.out.println(e));

// what listeners do display even have?
Display.getDefault().addListener(SWT.???, e-> System.out.println(e));

有什么想法吗?

最佳答案

Display.addFilter for SWT.Activate 确实在激活 shell 时给出一个事件(以及许多其他事情)。由于某种原因 addListener 在我的测试中不起作用。

Display.getDefault().addFilter(SWT.Activate, listener);

Eventwidget 字段包含正在激活的控件。

关于java - 聆听新贝壳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34784596/

相关文章:

java - 如何启动 aicas license provider ?并使用 jamaicaVM 调用文件?

java - 如何存储和修改账户余额:

java - 如何: Eclipse RAP configuration external ip,听0.0.0.0

eclipse - 使用您想要的插件启动 Eclipse

java - 如何在 java 中实例化通用数组类型?

java - Maven 依赖 log4j 错误

Android 基本布局大小调整

java - 无限( eclipse )自移动测试以来没有找到上次更改的相关测试

android - 无法在 Eclipse 中启动 Android sdk 管理器

java - 为 Pig 设置 eclipse