跳到主要內容

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.

留言

張貼留言

熱門文章

差不多食譜:手工巧克力餅乾 Chocolate Cookies

又是手工餅乾,最近一連出了兩份餅乾食譜,這個「手工巧克力餅乾」已經是第三份了。會不會有更多呢?我可以告訴大家,這是肯定的。 要怪就怪這個陰鬱的冬季雨天,哪裡都不方便去,也懶得出去。餅乾櫃空在那邊已經很久了,雖然有時候會嘴饞,但也沒有迫切去補貨的必要。反正經常開伙,平常該有的材料都會有,自己弄個成分完全透明的零食,也是個不錯的選擇。再說,用烤箱進行烘焙時,房間會變得比較乾燥,也比較溫暖。在夏天是個折磨,但到了冬天,這種感覺還滿不錯的。 話不多說,開始進行這一道「手工巧克力餅乾」的準備工作。

差不多食譜:壽桃 Birthday Bunns

「壽桃」可不是老人家生日的專利,小巧玲瓏的壽桃超級受到小朋友歡迎,直說「好可愛喔!」其實壽桃就是一種造型饅頭/包子,只要掌握了這些方法,要做其他的造型都沒問題。

Excel好用的函數:INDIRECT, SUMIF

呈現資料總覽(Overview)的時候,Excel有兩個函數非常好用,那就是INDRIRECT和SUMIF。讓我自己在記帳的時候,總算可以不用每個月手動做小計,然後再抄錄到年度總覽的表格了。