2013-10-22 56 views
1

我正在使用多個視圖來顯示多個表格查看器。 我想要的工作或功能是,當用戶單擊視圖選項卡 時,所需的數據取決於視圖應填充在表中。Eclipse RCP視圖選項卡選擇

有沒有適當的事件來做到這一點?

enter image description here 我想在用戶選擇特定視圖選項卡時加載數據。 我用這兩個事件加載此數據

第 - 。

getViewSite()GETPAGE()addSelectionListener(新ISelectionListener(){

@覆蓋

公共無效的SelectionChanged( IWorkbenchPart part,ISelection lection){

} });

對於這個事件所有視圖的selectionChanged()方法被觸發,並且 在所有視圖中加載數據.. !!

二 -

getSite()GETPAGE()addPartListener(partListener)。;

private IPartListener partListener = new IPartListener() { 
    public void partActivated(IWorkbenchPart part) { 

    } 
    public void partBroughtToTop(IWorkbenchPart part) { 
    } 
    public void partClosed(IWorkbenchPart part) { 
    } 
    public void partDeactivated(IWorkbenchPart part) { 
    } 
    public void partOpened(IWorkbenchPart part) { 
    //writing code here to fill TableViewer 
    } 

};

爲此,數據在創建視圖時加載。

但是,我想在TableViewer中加載數據,當用戶選擇特定視圖選項卡

+0

桌子在哪裏?一張照片可能會幫助我們理解。 –

+1

表在每個視圖中。當我選擇一個特定的視圖,然後填寫選定的視圖表上的數據 – Abhit

+0

我也在尋找相同的解決方案。 – John

回答

1

您可以使用org.eclipse.ui.IPartListener監聽到被激活的視圖的一部分。使用:

getSite().getPage().addPartListener(partListener); 

在您的視圖部分設置偵聽器。

當視圖被激活時(partBroughtToTop有時也會)調用partActivated方法。

注:您需要檢查零件實際上是您的視圖,因爲您將接收所有零件的事件。

+0

我正在執行此操作,但並未完全滿足我的要求..... – Abhit

+0

您需要對'partActivated'做出反應 - 請參閱已編輯的答案 –