仅为一个Perspective添加菜单项

时间:2012-12-03 09:16:57

标签: eclipse eclipse-plugin birt

我正在尝试通过插件向Eclipse中的Run菜单添加一个菜单项。

但是,我只想在“报告设计”视角(这是BIRT)时出现这个项目。 其次,(如果可能的话)我希望只有在打开文件的扩展名为.rptdesign时才能启用菜单项。

我没有运气使用plugin.xml中的可见性 visibleWhen 元素

任何提示赞赏, RO

1 个答案:

答案 0 :(得分:1)

最终得到了,这就是我必须要做的事情.....

创建命令

<extension
     point="org.eclipse.ui.commands">
  <command
        name="Deploy"
        icon="icons/deploy.gif"
        style="push"
        id="com.test.deployCommand">
  </command>

为命令

创建处理程序
<extension
     point="org.eclipse.ui.handlers">
  <handler
        commandId="com.test.deployCommand"
        class="com.test.DeployHandler">
  </handler>

添加BIRT中可用的现有属性测试器(以测试文件类型) - 如果我更改了命名空间参数,则无效

<extension
    point="org.eclipse.core.expressions.propertyTesters">
 <propertyTester
       class="org.eclipse.birt.report.debug.internal.ui.script.ScriptDebuggerPropertyTester"
       id="com.test.propertyTester1"
       namespace="scriptdebug"
       properties="isRptdesign"
       type="org.eclipse.core.runtime.IAdaptable">
 </propertyTester>

添加了两个定义

<extension point="org.eclipse.core.expressions.definitions">
  <definition id="com.test.inRptDesignPerspective">
    <with variable="activeWorkbenchWindow.activePerspective">
      <equals value="org.eclipse.birt.report.designer.ui.ReportPerspective"/>
    </with>
  </definition>
  <definition id="com.test.inRptDesignFile">
    <with variable="selection">
    <count value="1" />
    <iterate>
       <and>
         <test property="scriptdebug.isRptdesign" />
       </and>
     </iterate>
    </with>
  </definition>
</extension>

在我的菜单扩展名上,为命令添加了一个设置,标记其可见

<extension
     point="org.eclipse.ui.menus">
     <menuContribution locationURI="menu:org.eclipse.ui.main.menu" id="com.test.contribution2">
     <menu
          id="org.eclipse.ui.run"
          label="Run"
          path="additions">
        <groupMarker
             name="preview">
       </groupMarker>
        <command
              commandId="com.test.deployCommand"
              icon="icons/deploy.gif"
              id="com.test.deployCommand"
              menubarPath="org.eclipse.ui.run/preview"
              style="push"
              class="com.test.DeployHandler">
              <visibleWhen>
              <and>
                <reference definitionId="com.test.inRptDesignPerspective"/>
                <reference definitionId="com.test.inRptDesignFile"/>
              </and>
           </visibleWhen>
         </command>
       </menu>
     </menuContribution>