先来看下这种菜单的配置. 我不知道这个叫什么, 我就叫它工具菜单组. 单击它它就会执行, 如果单击它旁边的小按钮. 它就会弹出一个菜单.
这个基本上都是在Plug-in.xml里面配置的:
首先我们要配置command:
<extension point="org.eclipse.ui.commands">
<command
defaultHandler="com.test.ExportExcelCommand"
id="Command.ExportExcelCommand"
name="name">
</command>
<command
defaultHandler="com.test.ExportSQLCommand"
id="Command.ExportSQLCommand"
name="name">
</command>
</extension>
其次在定义工具菜单组:
<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="toolbar:org.eclipse.ui.main.toolbar">
<toolbar
id="TestCommand.toolbar4">
<command
commandId="Command.ExportExcelCommand"
icon="icons/page_excel.png"
style="pulldown"
tooltip="导出查询结果(Execl文件)">
</command>
</toolbar>
</menuContribution>
<menuContribution
allPopups="false"
locationURI="menu:Command.ExportExcelCommand">
<command
commandId="Command.ExportExcelCommand"
label="导出Execl文件"
style="push">
</command>
<command
commandId="Command.ExportSQLCommand"
label="导出SQL文件"
style="push">
</command>
</menuContribution>
</extension>
最后是COMMAND的实现类:
package com.test.commands;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PlatformUI;
import com.test.SQLEditor;
public class FormatSQLCommand extends AbstractHandler implements IHandler {
private IWorkbenchWindow window;
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
//此方法是在Command里面获取Window对象.
window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
// TODE 在此处写执行操作.
return null;
}
}
此类只写一次. 其他的Command的实现类都是一样的.
首先还是先定义command:
<extension
point="org.eclipse.ui.commands">
<command
defaultHandler="com.test.FormatSQLCommand"
id="Command.FormatSQLCommand"
name="Format SQL">
</command>
</extension>
再定义快捷键操作. 绑定command:
<extension
point="org.eclipse.ui.bindings">
<key
commandId="Command.FormatSQLCommand"
contextId="org.eclipse.ui.contexts.dialogAndWindow"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="M1+M2+F">
</key>
</extension>
这里的M1 + M2 + F 是指的 Ctrl + Shift + F的快捷键.