如何在 SWT UI 中检测对 Draw2D 图形的三次单击?

How to detect triple-click on Draw2D figure in SWT UI?

我想检测对 Draw2D 图形的三次单击。

这将允许第一次点击 select Draw2D 图,第二次点击展开 selection,第三次点击进一步展开。

SWT 在其 MouseEvent 中提供点击计数。但是,Draw2D 有自己的 MouseEvent,不会公开点击次数。 [参见 Eclipse bug 516272。 ]

我可以将第三次鼠标单击检测为独立事件,并确定它是否在最后一次双击后足够快地发生。

我想遵守 OS 的多次点击速度设置。在AWT/Swing中,我可以用Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval")得到最大间隔。但我想避免在 SWT 应用程序中耦合到 AWT class。

有没有办法通过 SWT 或 Draw2D API 获取多次点击间隔?

SWT 的 Display class 提供了一个方法 getDoubleClickTime():

public int getDoubleClickTime()

Returns the longest duration, in milliseconds, between two mouse button clicks that will be considered a double click by the underlying operating system.getDoubleClickTime():

例如:

    int doubleClickTime = Display.getDefault().getDoubleClickTime();

可以跟踪自双击以来的时间,并在下一次候选鼠标单击时查看它是否小于该值。