2010-04-28 44 views
1

我們有一個應用程序,其中某些視圖僅在附加到某些視圖時才起作用。 我們希望從窗口 - >顯示視圖對話框中刪除這些視圖,以便用戶不能將它們添加到不工作的視角。從Eclipse窗口中刪除視圖 - >顯示視圖

有關如何以編程方式或聲明方式執行此任何想法?

我一直在使用<visibleWhen />試過,但意見在對話框中仍然顯示:

<view class="com.mycompany.ViewClass" 
     id="com.mycompany.ViewId" 
     name="View Name" 
     restorable="true"> 

     <visibleWhen> 
      <with variable="activeWorkbenchWindow.activePerspective"> 
       <equals value="com.mycompany.MyPerspective"/> 
      </with> 
     </visibleWhen> 
    </view> 

我不認爲這是與<visibleWhen />條款的任何問題,所以我想知道,如果它可以與View一起使用?

+0

http://stackoverflow.com/questions/22681622/how-to-remove-views-from-windows-show-view-list – 2014-03-27 09:46:38

回答

0

不幸的是,Eclipse似乎已經通過調用顯示視圖對話框的內容提供者上的專用ViewContentProvider.removeIntroView來爲簡介視圖執行此操作。解決此限制的一種方法是通過添加到org.eclipse.ui.activities擴展點來定義活動(請參閱activityPatternBinding關於如何將活動映射到UI貢獻)。這樣做不僅會從「顯示視圖」對話框中刪除視圖,還會阻止它們在視圖本身中顯示。然後可以以編程方式顯示視圖。我只好也能因爲我們的應用程序限制在ApplicationWorkbenchAdvisor.preStartup方法的活動:

Set<String> activityIds = new HashSet<String>(); 
    activityIds.add("com.my.activity.id"); 
    IWorkbenchActivitySupport activitySupport = PlatformUI.getWorkbench().getActivitySupport(); 
    activitySupport.setEnabledActivityIds(activityIds); 

在這種情況下,該活動具有顯示對話框之前被禁用的,所以顯示視圖菜單的貢獻,必須修改也要這樣做。

希望擴展點將被添加到Eclipse的下一個版本中,以便開發人員以聲明方式從對話框中刪除視圖。