听新贝壳

时间:2016-01-14 08:17:03

标签: java eclipse eclipse-plugin swt

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

当然,当首选项窗口打开时,我们无法重新加载IPreferenceStore - 至少我们应该在这种情况下带来某种消息。所以我需要有办法倾听PreferenceDialog开场。

由于我们正在实施Eclipse应用程序,如果不能直接对首选项对话框作出反应,则可能只需要监听Shells打开并检查其标题。

我尝试了什么:

// 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));

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

对于Display.addFilter

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

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

widget的{​​{1}}字段包含正在激活的控件。