跳到主要內容

SWT now supports Mac Application Menu (About, Preferences, and Quit)


Hooking Mac's application menu is no longer a trouble issue for SWT (standard widget toolkits) developers.  Display.getSystemMenu() is a new API returns the system-provided menu for the application.  All you have to do is comparing a MenuItem's id with various SWT.ID_* constants.  You can even change default system MenuItem's name.

  • SWT.ID_QUIT
  • SWT.ID_HIDE
  • SWT.ID_HIDE_OTHERS
  • SWT.ID_PREFERENCES
  • SWT.ID_ABOUT

Display.getSystemMenu() returns null if not running on Mac OS X.  Here's a sample usage:

Menu systemMenu = Display.getDefault().getSystemMenu();
if (systemMenu != null) {
    MenuItem sysItem = getSystemItem(systemMenu, SWT.ID_PREFERENCES);
    sysItem.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            System.out.println("Preferences");
        }
    });
    sysItem.setText("My Preferences");
}

You need a getSystemItem() function to make above code work.

static MenuItem getSystemItem(Menu menu, int id) {
    for (MenuItem item : menu.getItems()) {
        if (item.getID() == id) return item;
    }
    return null;
}

That's all.  Check SWT snippet354 for a detailed example of how you can use this API in a cross-platform application.  It's much easier than my previous way hooking application menu by CocoaUIEnhancer.

留言

張貼留言

熱門文章

差不多食譜:牡丹魚片 Fish Slices Moutan

往餐桌端上這一道「牡丹魚片」,需要解釋的大概只有「這真的是我做的!」它是道不折不扣的大菜,能把一塊平凡無奇的魚片,展開變成一朵朵牡丹花。做這道菜最需要的不是技巧,是耐心;當然還有一點美學的天份!

【跟著我的閱讀腳步】山居歲月:普羅旺斯的一年 A Year in Provence

就記得我看過Peter Mayle(彼得.梅爾)的作品,而且對他在第一章大談用塑膠湯匙吃高級魚子醬的說法印象深刻,但怎麼樣就是想不起來到底是哪一本書。好在有些現代科技的幫忙,找出了那本令我印象深刻的《 關於品味 》。只不過,在《 關於品味 》之前,Peter Mayle還有另一部更加出名的作品——《 山居歲月:普羅旺斯的一年 》( A Year in Provence )。 穿襪子這件事已成遙遠的記憶,手錶躺在抽屜裡也已很久了。我發覺,憑著庭院中樹影的位置,我可以大致估算出時間;至於今日何日,我就不大記得了。反正也不重要。我快要化為安份守己,無欲無求的院中蔬菜了;與現實世界的偶然接觸,僅限於在電話中與遠方辦公室裡的人交談。他們總是欣羨渴慕地問起天氣如何,答案則讓他們鬱鬱不樂。他們寬慰自己的方法是警告我會得皮膚癌,又說太陽曬多了頭腦會遲鈍。我並不與他們爭執;他們也許說的沒錯。只不過,變笨也好,增添皺紋也好,可能得癌症也罷,我從來沒像現在這麼快活過。 ---《 山居歲月 》, pp. 173-174

「抓烏龜」的麻將遊戲

今天要和大家分享一個打發時間的簡單遊戲——抓烏龜。這可是我老爸老媽特別從美國學回來的,是個名符其實的「海歸」遊戲,據說是在下雪時無聊打發時間用的。