西门子 Teamcenter13 Eclipse RCP 开发 1.3 工具栏 单选按钮
位置 | locationURI | 备注 |
---|
菜单栏 | menu:org.eclipse.ui.main.menu | 添加到传统菜单 |
工具栏 | toolbar:org.eclipse.ui.main.toolbar | 添加到工具栏 |
style 值 | 含义 | 显示效果 |
---|
push | 普通按钮(默认) | 普通的点击按钮,点一下执行一次 |
toggle | 切换按钮 | 有按下/弹起两种状态,比如"开关" |
radio | 单选按钮 | 多个按钮互斥选择,比如 “模式切换” |
1 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin><extension point="org.eclipse.ui.menus"><menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar"><toolbar id="com.example.toolbar"><command commandId="com.xu.work.tool.bar" icon="icons/sample.png" label="单选按钮1" style="radio"><parameter name="option" value="1"/></command><command commandId="com.xu.work.tool.bar" icon="icons/sample.png" label="单选按钮2" style="radio"><parameter name="option" value="2"/></command><command commandId="com.xu.work.tool.bar" icon="icons/sample.png" label="单选按钮3" style="radio"><parameter name="option" value="3"/></command></toolbar></menuContribution></extension><extension point="org.eclipse.ui.commands"><command id="com.xu.work.tool.bar" name="工具栏:单选按钮" defaultHandler="com.xu.work.tool3.handlers.SampleHandler"><commandParameter id="option" name="选项" optional="false"/></command></extension></plugin>
2 插件控制
package com.xu.work.tool2;import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
public class Activator extends AbstractUIPlugin {public static final String PLUGIN_ID = "com.xu.work.tool2"; private static Activator plugin;public Activator() {}@Overridepublic void start(BundleContext context) throws Exception {super.start(context);plugin = this;}@Overridepublic void stop(BundleContext context) throws Exception {plugin = null;super.stop(context);}public static Activator getDefault() {return plugin;}}
3 命令框架
package com.xu.work.tool3.handlers;import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.State;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.handlers.RadioState;public class SampleHandler extends AbstractHandler {private static final String RADIO_COMMEND_ID = "com.xu.work.tool.bar";@Overridepublic Object execute(ExecutionEvent event) throws ExecutionException {String option = event.getParameter("option");ICommandService service = PlatformUI.getWorkbench().getService(ICommandService.class);State state = service.getCommand(RADIO_COMMEND_ID).getState(RadioState.STATE_ID);String currentValue = state != null ? (String)state.getValue() : null;if (option != null && !option.equals(currentValue)) {Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();MessageDialog.openInformation(shell, "单选按钮", "您点击了单选按钮 " + option);}if (state != null) {state.setValue(option);}return null;}
}
