按下F1
时,TrayDialog
的默认行为是通过调用openTray()
打开帮助托盘(如果尚未打开)。我不想这种行为(但我确实想使用扩展了ElementTreeSelectionDialog
的TrayDialog
),而且我不知道如何禁用它。
我尝试为SWT.KeyDown
添加我自己的侦听器事件过滤器,并在我的event.type = SWT.NONE
中设置handleEvent()
失败(我自己的事件处理程序正常工作,但托盘也已打开)。
我还尝试覆盖openTray()
不执行任何操作,但是随后引发了NPE:
java.lang.NullPointerException
at org.eclipse.help.ui.internal.DefaultHelpUI.displayContextAsHelpTray(DefaultHelpUI.java:426)
at org.eclipse.help.ui.internal.DefaultHelpUI.displayContext(DefaultHelpUI.java:348)
at org.eclipse.help.ui.internal.DefaultHelpUI.displayContext(DefaultHelpUI.java:288)
at org.eclipse.ui.internal.help.WorkbenchHelpSystem.displayContext(WorkbenchHelpSystem.java:905)
at org.eclipse.ui.internal.help.WorkbenchHelpSystem$WorkbenchHelpListener.helpRequested(WorkbenchHelpSystem.java:142)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:153)
...
有任何想法吗?我正在使用Eclipse Kepler。
最佳答案
好吧,我找到了办法。我不确定这是否是推荐的/干净的/安全的方法,但是如果它对某人有所帮助,那么这对我有用:
@Override
protected void configureShell(Shell shell) {
super.configureShell(shell);
shell.addHelpListener(new HelpListener() {
@Override
public void helpRequested(HelpEvent e) {
// nothing to do
}
});
}