2013-10-22 110 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'做出反应 - 请参阅已编辑的答案 –