当前位置: 首页 > news >正文

Eclipse 插件开发 4 工具栏

Eclipse 插件开发 4 工具栏

  • 1 增加工具(push)
  • 2 增加工具(toggle)
  • 3 增加工具(radio)

位置locationURI备注
菜单栏menu:org.eclipse.ui.main.menu添加到传统菜单
工具栏toolbar:org.eclipse.ui.main.toolbar添加到工具栏
style 值含义显示效果
push普通按钮(默认)普通的点击按钮,点一下执行一次
toggle切换按钮有按下/弹起两种状态,比如"开关"
radio单选按钮多个按钮互斥选择,比如 “模式切换”

1 增加工具(push)

package com.xu.learn.handlers;import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.jface.dialogs.MessageDialog;public class SampleHandler extends AbstractHandler {@Overridepublic Object execute(ExecutionEvent event) throws ExecutionException {IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);MessageDialog.openInformation(window.getShell(),"Learn","点击菜单弹框");return null;}
}
<?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.example.commands.helloCommand" icon="icons/sample.png" tooltip="点我执行命令" label="按钮名称" style="push"></command></toolbar></menuContribution></extension><extension point="org.eclipse.ui.handlers"><handler class="com.xu.learn.handlers.SampleHandler" commandId="com.example.commands.helloCommand"></handler></extension></plugin>

在这里插入图片描述

2 增加工具(toggle)

package com.xu.learn.handlers;import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.commands.ToggleState;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.handlers.HandlerUtil;public class ToggleHandler extends AbstractHandler {private static final String STATS = "org.eclipse.ui.commands.toggleState";private static IPreferenceStore preferenceStore;public static void setPreferenceStore(IPreferenceStore store) {preferenceStore = store;}@Overridepublic Object execute(ExecutionEvent event) throws ExecutionException {Command command = event.getCommand();// 获取状态ToggleState state = (ToggleState) command.getState(STATS);if (state == null) {state = new ToggleState();command.addState(STATS, state);}// 打印状态boolean currentState = HandlerUtil.toggleCommandState(command);System.out.println("当前按钮状态:" + currentState);// 保存状态if (preferenceStore != null) {preferenceStore.setValue(STATS, currentState);}return null;}}
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin><extension point="org.eclipse.ui.commands"><command id="com.example.commands.toggleCommand" name="切换按钮命令"/></extension><extension point="org.eclipse.ui.handlers"><handler class="com.xu.learn.handlers.ToggleHandler" commandId="com.example.commands.toggleCommand"/></extension><extension point="org.eclipse.ui.menus"><menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar"><toolbar id="com.example.toolbar"><command commandId="com.example.commands.toggleCommand" icon="icons/sample.png" style="toggle" tooltip="开关按钮示例"/></toolbar></menuContribution></extension></plugin>

在这里插入图片描述

3 增加工具(radio)

package com.xu.learn.handlers;import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;public class RadioHandler extends AbstractHandler {@Overridepublic Object execute(ExecutionEvent event) throws ExecutionException {// 拿到参数String option = event.getParameter("option");System.out.println("当前选中的Radio按钮是:选项 " + option);// 这里可以根据 option 做不同处理if ("1".equals(option)) {// 选中了第一个} else if ("2".equals(option)) {// 选中了第二个} else if ("3".equals(option)) {// 选中了第三个}return null;}
}
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin><extension point="org.eclipse.ui.commands"><command id="com.example.commands.radioCommand" name="单选按钮命令"><commandParameter id="option" name="选项" optional="true"/></command></extension><extension point="org.eclipse.ui.handlers"><handler class="com.xu.learn.handlers.RadioHandler" commandId="com.example.commands.radioCommand"/></extension><extension point="org.eclipse.ui.menus"><menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar"><toolbar id="com.example.toolbar"><command commandId="com.example.commands.radioCommand" icon="icons/sample.png" label="选项1" style="radio"><parameter name="option" value="1"/></command><command commandId="com.example.commands.radioCommand" icon="icons/sample.png" label="选项2" style="radio"><parameter name="option" value="2"/></command><command commandId="com.example.commands.radioCommand" icon="icons/sample.png" label="选项3" style="radio"><parameter name="option" value="3"/></command></toolbar></menuContribution></extension></plugin>

在这里插入图片描述

相关文章:

  • JAVA JVM面试题
  • 【TypeScript】速通篇
  • 比象AI创作系统,多模态大模型:问答分析+AI绘画+管理后台系统
  • ip-prefix前缀列表
  • 基于PyTorch的图像识别主要依赖于深度学习模型(尤其是卷积神经网络,CNN)对图像特征进行自动学习和分类
  • dubbo 异步化实践
  • Python类和对象四(十三)
  • 【springboot知识】配置方式实现SpringCloudGateway相关功能
  • 通过Golang实现快速实现MCP Server
  • Go 语言中的实时交互式编程环境
  • 量子跃迁:Vue组件安全工程的基因重组与生态免疫(完全体终局篇)
  • 正则表达式 工作案例
  • docker 常用配置
  • python 画折线统计图
  • Linux下的I/O复用技术之epoll
  • 模型 隐含前提
  • MyBatis缓存配置的完整示例,包含一级缓存、二级缓存、自定义缓存策略等核心场景,并附详细注释和总结表格
  • Python部署Docker报错:curl: (56) Recv failure: Connection reset by peer
  • 强化学习:高级策略梯度理论与优化方法
  • leetcode110 平衡二叉树
  • 宜家上海徐汇商场明天恢复营业,改造后有啥新变化?
  • 伊朗港口爆炸最新情况:14死700多伤,大火延烧,调查困难
  • 俄罗斯准备在没有先决条件的情况下与乌克兰进行谈判
  • 如何做大中国拳击产业的蛋糕?这项赛事给出办赛新思考
  • 摩根士丹利基金雷志勇:AI带来的产业演进仍在继续,看好三大景气领域
  • AI翻译技术已走向大规模商用,应用场景覆盖多个关键领域