我正在尝试编写一个供个人使用的eclipse插件。它应该是这样简单:下拉列表应该在工具栏中有3个项目(item1,item2,item3),它们是切换按钮。切换每个按钮时,环境变量或构建变量应采用相应的值。
我的问题是没有调用切换按钮的处理程序。
为了达到这个目的,我写了以下内容直到现在:
的plugin.xml
<extension point="org.eclipse.ui.commands">
<category
name="Sample Category"
id="example.commands.category">
</category>
<command
name="Sample Command"
categoryId="example.commands.category"
id="example.commands.sampleCommand">
</command>
<command
name="Dropdown Command"
categoryId="example.commands.category"
id="example.commands.dropdownCommand">
</command>
</extension>
<extension point="org.eclipse.ui.handlers">
<handler
commandId="example.commands.sampleCommand"
class="example.handlers.SampleHandler">
</handler>
<handler
commandId="example.commands.dropdownCommand"
class="example.handlers.DropdownHandler">
</handler>
</extension>
<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
<toolbar
id="example.toolbars.sampleToolbar"
label="Sample Menu">
<command
commandId="example.commands.sampleCommand"
tooltip="Say hello world"
id="example.toolbars.sampleCommand"
style="pulldown">
</command>
</toolbar>
</menuContribution>
<menuContribution locationURI="menu:example.toolbars.sampleCommand">
<command commandId="example.commands.dropdownCommand" label="Processor1" style="toggle">
<parameter name="example.toolbars.msg1" value="Processor1"></parameter>
</command>
<separator name="separator1" visible="true"/>
<command commandId="example.commands.dropdownCommand" label="Processor2" style="toggle">
<parameter name="example.toolbars.msg2" value="Processor2"></parameter>
</command>
<separator name="separator2" visible="true"/>
<command commandId="example.commands.dropdownCommand" label="Processor3" style="toggle">
<parameter name="example.toolbars.msg3" value="Processor3"></parameter>
</command>
</menuContribution>
</extension>
</plugin>
DropdownHandler.java
public class DropdownHandler extends AbstractHandler {
/**
* The constructor.
*/
public DropdownHandler() {
}
/**
* the command has been executed, so extract extract the needed information
* from the application context.
*/
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
MessageDialog.openInformation(
window.getShell(),
"GreeHills Project",
"Hello, Eclipse World");
return null;
}
}
SampleHandler.java
public class SampleHandler extends AbstractHandler {
/**
* The constructor.
*/
public SampleHandler() {
}
/**
* the command has been executed, so extract extract the needed information
* from the application context.
*/
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
MessageDialog.openInformation(
window.getShell(),
"GreeHills Project",
"Please pick a processor from the dropdown list!");
return null;
}
}
当我单击Sample Command时,会调用正确的处理程序,并且弹出窗口会显示相应的消息。 当我点击Processor1,Processor2或Processor3时没有任何反应,没有消息。
我发现这是谷歌搜索:https://wiki.eclipse.org/Menu_Contributions/Dropdown_Command 单独尝试(更改处理程序中的SysOutPrintln以显示MessageDialog)并得到相同的结果,不显示任何消息。
有关如何最终使我的插件正常工作的任何想法都受到高度赞赏!
答案 0 :(得分:1)
所以你的问题是,当按下处理器2&#39;按钮例如,没有任何反应。
对于处理器2按钮,您已设置参数,但在命令部分中您不接受任何参数。
请你试试这个:
<command
name="Dropdown Command"
categoryId="example.commands.category"
id="example.commands.dropdownCommand">
</command>
并且像这样做
<command name="Dropdown Command" categoryId="example.commands.category" id="example.commands.dropdownCommand">
<commandParameter id="example.toolbars.msg2" name="DropOpts" optional="true"></commandParameter>
</command>
请注意,对于命令参数,我设置了&#34; example.toolbars.msg2&#34;这应该仅在按下处理2按钮时才有效