2015-05-11 5 views
0

я определяю свою собственную перспективу, используя:Использование IPageLayout.addActionSet()

<extension point="org.eclipse.ui.perspectives"> 

В моей реализации IPerspectiveFactory :: createInitialLayout() Я хочу использовать IPageLayout.addActionSet(), который указывает на новый actionset. Но действия запрещены; что является рекомендуемой альтернативой?

Причина, по которой я хочу добавить новый набор действий, - это то, что я хочу, чтобы меню «Выполнить» отображало действия отладки, но не запускало действия. Если я использую layout.addActionSet (IDebugUIConstants.LAUNCH_ACTION_SET), я получаю оба. Поэтому я решил, что определю свой собственный набор действий только с вариантами отладки. Но я бы хотел использовать не устаревший API. Что такое recom

ответ

1

Альтернативой является использование точки расширения org.eclipse.ui.menus для пунктов меню. Однако вы не можете добавить это в перспективу, вместо этого вы должны использовать элемент visibleWhen для управления, когда отображается меню.

Например, это как PDE плагин добавляет меню в меню Navigate, когда перспективы развития плагина активны или набор поиска действия используется:

<extension 
     point="org.eclipse.ui.menus"> 
     <menuContribution 
      locationURI="menu:navigate?after=open.ext2"> 
     <separator 
       name="org.eclipse.pde.ui.openPluginArtifactSeparator" 
       visible="true"> 
     </separator> 
     <command 
       commandId="org.eclipse.pde.ui.openPluginArtifact" 
       icon="$nl$/icons/obj16/open_artifact_obj.gif" 
       label="%pluginsearch.action.menu.name"> 
      <visibleWhen> 
      <or> 
       <with 
        variable="activeWorkbenchWindow.currentPerspective"> 
        <equals 
         value="org.eclipse.pde.ui.PDEPerspective"> 
        </equals> 
       </with> 
       <with 
        variable="activeContexts"> 
        <iterate 
         operator="or"> 
        <equals 
          value="org.eclipse.pde.ui.SearchActionSet"> 
        </equals> 
        </iterate> 
       </with> 
      </or> 
      </visibleWhen> 
     </command> 
     </menuContribution> 

Хотя наборы действий являются устаревшими, они не являются который будет удален в течение длительного времени, так как много кода Eclipse все еще использует их, поэтому вы можете просто захотеть придерживаться их.

+0

Привет, спасибо за ваш ответ. Да, я видел огромное количество платформы eclipse с помощью наборов действий, поэтому, как вы указываете, API, вероятно, не будет удален в ближайшее время. С педантичной точки зрения, что происходит с API, который использует устаревший API? Оказывается ли это устаревшим? Я имею в виду IPageLayout.addActionSet(), принимая устаревший параметр. – betamax

+0

Вы просто получите предупреждение в файле plugin.xml, я не думаю, что какой-либо из связанных классов Java отмечен как устаревший. –