[英]How to communicate between a RCP workbench toolbar and RCP views
我有一個帶有某些視圖的RCP應用程序,以及一個為該應用程序創建工具欄的ActionBarAdvisor。 工具欄的初始化如下:
public class ApplicationActionBarAdvisor extends ActionBarAdvisor
...
protected void fillCoolBar(ICoolBarManager coolBar)
{
// Create new Toolbar
IToolBarManager toolbar = new ToolBarManager(coolBar.getStyle());
// Adds toolbar to perspective
coolBar.add(toolbar);
...
ActionContributionItem compareFilesCI = new ActionContributionItem(compareFiles);
compareFilesCI.setMode(ActionContributionItem.MODE_FORCE_TEXT);
toolbar.add(compareFilesCI);
...
}
該工具欄項的目的是切換JFace表的值的顏色。 用戶可以通過按下按鈕來打開或關閉表格中的顏色。 但是告訴表應該啟用/禁用着色的最佳方法是什么? 目前,我已經按照這種方式完成了:
public class ActionCompareFiles extends Action implements ISelectionListener, ActionFactory.IWorkbenchAction
{
...
public void run()
{
// Check if the button is enabled. When it is enabled, comparison should be performed
try
{
// Get the label values view
final ViewFileValues labelViewer = (ViewFileValues) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences()[3].getView(true);
// Refresh the view
labelViewer.setColoringValues(this.isChecked());
}
catch (Exception e)
{
System.out.println("Exception when searching the values view");
}
}
...
當按下按鈕時,我得到包含表格的視圖。 此視圖類中的方法是“ SetColoringValues”,該方法通知表列的標簽提供者已按下按鈕並更新表。 這行得通,但我不確定這是否是最佳解決方案...
我的第一個想法是簡單地將監聽器添加到按鈕。 按下按鈕后,將通知聽眾。 但這似乎不起作用,因為在創建工具欄時我沒有得到ActionBarAdvisor對象。 工作台窗口中的工具欄似乎沒有getter方法。
解決此問題的最佳方法是什么?
1)您最好使用Eclipse RCP命令框架(擴展點* .commands,*。handlers,*。menu),而不是像這樣實現。 乍一看可能看起來很麻煩,但實際上它更加結構化和直接。
2)獲取視圖實例的方式是完全錯誤的:您依賴於該視圖在頁面中的索引為3的事實,這是絕對不能保證的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.