簡體   English   中英

如何在RCP工作台工具欄和RCP視圖之間進行通信

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM