如何使我的e4 swt应用程序图标在Mac Dock中弹跳

时间:2014-06-17 12:32:36

标签: java macos swt e4

我正按照How to make my app icon bounce in the Mac dock

中的建议制作我的mac托盘图标

这适用于纯Java应用程序和swings

但这不适用于e4 swt应用程序,如何让它在这种类型的应用程序中反弹

REF: 以下链接中示例代码的pfa https://bugs.eclipse.org/bugs/show_bug.cgi?id=321949

1 个答案:

答案 0 :(得分:1)

Application.requestUserAttention在e4应用程序中适用于我(使用Java 1.8更新5的Mac 10.9.3上的Eclipse 4.3.2)。

注意:如果应用程序不是专注的应用程序,它只会执行某些操作。使用false参数只有一次退回,指定true以使其反弹,直到应用具有焦点。

更新

您也可以使用SWT Mac特定类来执行此操作,如下所示:

private static final long sel_requestUserAttention_ = OS.sel_registerName("requestUserAttention:");

private static final int NSCriticalRequest = 0;
private static final int NSInformationalRequest = 10;

...

NSApplication app = NSApplication.sharedApplication();

OS.objc_msgSend(app.id, sel_requestUserAttention_, NSInformationalRequest);

使用NSInformationalRequest进行单次反弹,NSCriticalRequest反弹,直到应用获得焦点。

由于这是仅限Mac的SWT代码,因此您必须将其放在MANIFEST.MF中带有平台过滤器的插件或片段中,例如:

Eclipse-PlatformFilter: (& (osgi.ws=cocoa) (osgi.os=macosx) (osgi.arch=x86_64) )

更新

以上代码适用于Mac OSX上的64位SWT,用于32位SWT使用

private static final int sel_requestUserAttention_ = OS.sel_registerName("requestUserAttention:");