您在這裏遇到的問題在我看來不是RCP相關的。它更多的是一個建築問題。您的觀點與業務邏輯和有線連接!
- 的Model-View-的Controler(MVC)
- 模型 - 視圖 - 演示者(MVP)
你可以找到很多: 該解決方案可通過兩種(通用)設計模式來實現有關此信息在網絡上。我將使用MVP爲您的特定問題指出可能的解決方案。
您將需要創建幾個項目。一個當然是一個RCP插件,可以叫它rcp.view。現在您創建另一個,它不會使UI貢獻(只有org.eclipse.core.runtime開始),並將其稱爲rcp.presenter。爲了簡化,這個插件也將成爲現在的模型。
下一步:
- 的rcp.presenter添加到 依賴rcp.view的(其 重要的是,主持人沒有 參照視圖)
- 出口所有包,你是 打算在rcp.presenter 創建,所以他們是可見的
- 在rcp.presenter創建一個n結界面 IPerspective具有一些方法 等(showLogiDialog(),showAdministratorViews(用戶用戶),showStandardViews(用戶用戶))
- 創建類PerspectivePresenter即需要IPerspective在構造和保存它在屬性中
- 在rcp中。鑑於去你的觀點,實現你的界面IPerspective,並在構造函數創建一個新的參考主持人=新PerspectivePresenter(本)
- 呼叫presenter.load()和implenent 這在主持人也許像這
代碼:
public void load()
{
User user = view.showLoginDialog(); // returns a user with the provided name/pw
user.login(); // login to system/database
if(user.isAdministrator())
view.showAdministratorViews(user);
else
view.showStandardViews(user);
}
正如你所看到的,認爲只是創建到主持人的參考,這爲r負責所有業務邏輯,主持人告訴視圖顯示什麼。因此,在您的Perspective中,您可以實現這些接口函數,並且在每個函數中您都可以以不同的方式設置您的Perspective。
對於每個View來說,它都以相同的方式,您需要一個視圖的演示者來執行操作,並告訴視圖(使用界面)顯示和傳遞最終數據。該觀點不關心邏輯。這在使用JFace-Databindings時也非常有用(只有綁定的數據被傳遞給視圖)。例如,WorkbenchWindowAdisor只會創建應用程序中所需的所有內容。其他視圖,透視圖可以根據他們獲得的數據來啓用/禁用菜單等等(例如,當管理員可能想要啓用特殊的adminMenu時)。我知道這是一個相當沉重的方法,但Eclipse RCP是爲大的應用程序而設計的(如名稱所示)。所以你應該花一些時間在正確的架構上。我的第一個RCP應用就像你描述的那樣......我從來不知道在哪裏存儲東西以及如何處理所有參考。在我的工作中,我瞭解了MVP(並且我仍在學習)。理解這個概念需要一段時間,但它值得。
你可能想看看my second post at this question來獲得關於如何構建插件的另一個想法。
類似於:http://stackoverflow.com/q/2457117/565879 – Buttons840 2011-10-21 17:45:38