2012-02-09 27 views
2

首先,我不是Mac開發人員,也是非常隨意的Mac用戶,所以請耐心等待我的問題。Mac的RCP應用程序 - 碳還是可可?

我有一個相當大的RCP應用程序,主要針對Windows和Linux,在兩者上運行良好。現在,在試圖在OSX(碳x86)上運行它時,我發現它看起來非常難看,完全沒有像Mac那樣笨拙的使用。例如,這裏是最簡單的東西,我不能讓它看起來很直,不管我做什麼,這些按鈕都不會像我想要的那樣坐着:mac這就是它在窗戶上看起來如何比較(相同代碼庫):win

它減少了按鈕的高度,不把他們的權利,對準的是一個爛攤子等

而這些只是冰山的提示,有可能是更大的問題出在那裏。

所以,我有兩個問題:

1)我應該打擾在所有的Mac上存在與RCP應用程序的戰鬥?可能是死路一條,沒有人真的這樣做?畢竟蘋果和Java不會混合太多。 2)如果我願意,我應該把目標定位在碳還是可可?我希望期待最新的mac開發。我會中心只喜歡其中的一個,你會選擇哪一個?什麼是標準?


UPDATE:

我創建可可的分佈和所有這些奇怪的渲染問題消失了。使用eclispe rcp 3.7。一切都很完美。

+1

@awoodland誰收的問題 - 其實,我已收到以極大的參考和實際經驗非常寶貴的答案。如果你沒有受到干擾,可能會收到更多。恕我直言 - 超過主持。在你看到寶貴的答案即將到來之後,我認爲關閉這個主題並不是件好事。 – Dima 2012-02-10 17:22:15

回答

6
  1. 這是一種主觀的問題。其他人這樣做嗎?當然,有不同程度的投資和關懷。你應該這樣做嗎?我想說這取決於你的用戶想要和期望的。

  2. 使用可可。 Carbon是舊的Mac OS 9兼容API,而Cocoa是新的Mac OS X API(以前稱爲NextStep API)。從歷史上看,Eclipse(以及SWT和RCP應用程序)僅支持Carbon,但在Eclipse 3.4中添加了Cocoa支持。 (可可事件循環和SWT事件循環證明很難整合,但是蘋果邀請SWT團隊去庫比蒂諾坐下來讓它工作。)

    這就是說,如果你的應用看起來非常不同在兩個平臺之間。在一些小部件周圍確實存在一些次要的UI差異 - 焦點環特別看起來略有不同 - 但總體而言,您應該能夠真實地測試Carbon或Cocoa。但作爲釋放工具,我會用可可。

工作作爲對「蘋果佬」的Eclipse插件(以前的RCP應用程序),如果你決定在改善了Mac OS的經驗,投資一些時間,我可以提供幾個要點:

  1. 這可能是值得一讀的Mac Human Interface Guidelines。實際上,沒有人(包括Apple)將此文檔視爲不可破解的法律,但將Mac應用程序視爲Mac應用程序是一個好開始。我懷疑HIG是這麼說的,但是在按鈕上放置圖標並不是特別需要Mac的東西。 (它更可能是在工具欄中。)

  2. Eclipse bugzilla是你的朋友。當你發現自己在桌面上打頭時,想知道爲什麼ButtonSWT.ARROW位在Carbon上看起來不合適,所以很高興知道在Bug評論中可能有一種解決方法。另外,你有時會讓人發佈可以整合的修復程序(因爲作爲RCP應用程序,你可以發佈自己的SWT版本)。例如,Mac OS中use the proper window toolbar的功能首先出現在bugzilla中。

  3. Mac OS應用程序傾向於使用比Windows或GTK應用程序更多的空白。如果您只是爲Windows和Linux開發,則有一種趨勢就是在佈局中只填充許多像素來填充邊距。當你在Mac OS上運行這個應用程序時,它往往看起來很奇怪,並且會縮小。根據系統建議最好設置邊距和填充。您可以使用IDialogConstants獲取這些默認值(在DLU中),然後轉換爲像素。例如:

    int marginW = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_MARGIN); 
    int marginH = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_MARGIN); 
    
    int hSpacing = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_SPACING); 
    int vSpacing = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_SPACING); 
    

    您可能希望使用Dialog和Composite基類來爲您提供此功能,以便您擁有簡單的訪問器。

  4. 回想一下,在Windows上的確定和取消按鈕是從Mac OS和GTK向後。 Dialog類處理將默認(確定,是,接受等)按鈕放在正確的位置。如果您開始在對話框按鈕欄中放置奇怪的按鈕,請務必注意,SWT可能會爲您重新排序它們。

  5. 連接鍵監聽器或加速器時不要假設控制鍵。在這種情況下,Apple用戶可能希望使用Command鍵(又稱Apple鍵)。對於加速器,只需使用M1而不是CTRL

  6. 當您發佈時,將您的應用程序重新包裝到.app。 Mac用戶期望有一個.app以及其中的資源,他們不希望有一個文件夾.app和一堆其他不必要的文件夾。來自PDE build for Mac的輸出看起來就像其他平臺一樣 - 內部有啓動程序的文件夾,位於pluginsfeatures目錄旁邊。作爲構建後步驟,您可以將pluginsfeatures目錄移動到.app目錄中,並編輯啓動程序以反映更改。 (有一個Perl腳本流傳在Internet上,我想,如果不是我可以張貼一個。)

+0

謝謝,Edward,這非常有幫助 – Dima 2012-02-09 16:29:09

相關問題