2015-04-21 47 views
1

我有一個e3 RCP應用程序。該應用程序由一個工具欄和兩個視圖組成。一個獨立的左側和一個容器右側(經典的兩列布局)。Eclipse:Active Context以某種方式被禁用

分層順序我的應用程序佈局:

- Perspective 
    |- View 
    |`- TableViewer 
    `- ViewContainer 
    `- View2 (multiple) 

而且我在plugin.xml中定義的上下文:

<extension point="org.eclipse.ui.contexts"> 
    <context 
     id="my.context.MY_ID" 
     name="MY_CONTEXT"> 
     parentId="org.eclipse.ui.contexts.window"> 
    </context> 
</extension> 

不管什麼時候在TableViewer中被選中,我被激活,一個特定的視圖會在視圖容器中打開。 TableViewer中的選擇和右側打開的視圖連接在一起。上下文狀態應該保持持久性,意思是:選擇TableViewer或者相應的視圖處於活動狀態,這也應該啓用我的上下文的活動狀態(或保留它)。但是,當TableViewer失去焦點時(例如右側的視圖處於活動狀態),則會取消激活上下文。這不是由我以編程方式完成的,這是eclipse正在做的事情(我已經在上下文服務中添加了一個監聽器來跟蹤這個),我想擺脫它。我想控制我的上下文的激活和停用。有任何想法嗎?

+0

您是否使用'IContextService'來激活上下文?你最近怎麼樣?確切地說,是 –

+0

。這是我如何激活我的上下文: 'IContextService contextService =(IContextService)getSite()。getService(IContextService.class); context = contextService.activateContext(MyConstants.CONTEXT);' – gossi

回答

1

我假設您使用IContextService來激活上下文。

如果你使用像得到IContextService

getSite().getService(IContextService.class); 

那麼內容服務是專門針對你的一部分,並且在另一部分被激活將被停用。

使用

PlatformUI.getWorkbench().getAdapter(IContextService.class); 

給你工作臺上下文服務。在該服務中激活的上下文應該保持對所有部分都有效。

+0

這正是我的問題。非常感謝! – gossi