smartrcp工具栏的实现

本篇展示flex工具栏的实现:

<?xml version="1.0" encoding="utf-8"?>
<gui:RCPModule xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:gui="cn.smartinvoke.gui.*"
 xmlns:rcp="cn.smartinvoke.rcp.*"
        layout="vertical" creationComplete="init()">
        <mx:Script>
                <![CDATA[
					import cn.smartinvoke.smartrcp.gui.FlashShell;
					import cn.smartinvoke.smartrcp.gui.control.CActionManager;
					import cn.smartinvoke.smartrcp.gui.control.CAppToolBarManager;
					import cn.smartinvoke.smartrcp.gui.control.CNativeMenuBuilder;
					import cn.smartinvoke.smartrcp.gui.control.ViewManager;
					import cn.smartinvoke.smartrcp.gui.module.CActionEvent;
					import cn.smartinvoke.smartrcp.gui.module.CPartEvent;
					import cn.smartinvoke.smartrcp.util.JFaceConstant;
					import cn.smartinvoke.smartrcp.util.Log;
					
					import cn.smartinvoke.rcp.*;
					
					import mx.controls.Alert;
                        
                        var action:CAction;
                        var dropDownMenu:CNativeMenuBuilder;
                        function init():void{
							var info:String="本模块主要演示smartrcp在工具栏上的功能,本模块
运行时会自动增加一工具栏按钮,点击" +
								"该按钮会出现下拉菜单,也可以设置工具栏的样式";
							
							smartrcpDemo.Instance.setInfo(info);
							
                            this.action=new CAction("toolBarTest","测试","icons/help.gif","hello...");
                            this.action.type=CAction.AS_DROP_DOWN_MENU;//下拉菜单样式
                            
                            //添加到全局action管理器,这样toolBar才可以根据该action的id添加此按钮
                            var actionManager:CActionManager=CActionManager.Instance;
                            actionManager.addAction(this.action);

                            //下拉菜单
                            dropDownMenu=new CNativeMenuBuilder(FlashShell.MainShell.getShell());
                            dropDownMenu.initAction(this.cActions);
                            dropDownMenu.initMenu(this.relation);
                            dropDownMenu.addListener(function (evt:CActionEvent):void{
                               this.infoLabel.text="当前点击的action id为"+evt.actionId;
                            },this);
                            
                             //添加对应的事件监听
                            actionManager.addListener(this.action.actionId,function(evt:CActionEvent):void{
                               this.dropDownMenu.show(evt.x,evt.y);
                            },this);
                           
                            //获得全局工具栏管理器对象
                            var toolBarManager:CAppToolBarManager=CAppToolBarManager.Instance;
                            //添加对应的action
                            toolBarManager.insertItem(action.actionId);
                            
                            //-------------当此视图退出时,删除对应的工具栏
                            ViewManager.Instance.addListener(this.viewEventHandler,this);
                        }
                        function viewEventHandler(evt:CPartEvent):void{
                                if(evt.type==CPartEvent.Part_Closed){
                                	var closeModule:String=evt.taget.getModulePath();
                                	Log.Instance.println("module close :"+closeModule);
                                	if(closeModule.indexOf("AppToolBar_T.swf")!=-1){
                                        CAppToolBarManager.Instance.removeItem(this.action.actionId);
                                    }
                                }
                        }
                        
                        function onDelClick():void{
                            CAppToolBarManager.Instance.removeItem(this.action.actionId);
                        }
                        
                        function removeAllItems():void{
                                CAppToolBarManager.Instance.removeAll();
                        }
                        var enable:Boolean=false;
                        function setDisable():void{
                                CActionManager.Instance.updateEnable(this.action.actionId,enable);
                                enable=!enable;
                        }
                        function changeToolBarStyle():void{
                                var curToolBar:CToolBar=CAppToolBarManager.Instance.getCurToolBar();
                                if(curToolBar!=null){
                                  if(listType.selectedItem==null){
                                  	Alert.show("请选择工具栏样式");return;
                                  }
                                  curToolBar.type=listType.selectedItem.data;
                                  CAppToolBarManager.Instance.fillToolBar(curToolBar);
                                }
                        }
                        function addSpace():void{
                                var curToolBar:CToolBar=CAppToolBarManager.Instance.getCurToolBar();
                                if(curToolBar!=null){
                                   //在当前添加的action前加上一个分割符
                                   var index:int=curToolBar.actionIds.getItemIndex(this.action.actionId);
                                   curToolBar.actionIds.addItemAt(JFaceConstant.Menu_Separator_Str,index);
                                   CAppToolBarManager.Instance.fillToolBar(curToolBar);
                                }
                        }
                ]]>
        </mx:Script>
        
    <rcp:CMenuRelation id="relation">
        <rcp:actions>
                <mx:String>a1</mx:String>
                <mx:String>-</mx:String>
                <rcp:CMenuRelation label="子菜单">
                        <rcp:actions>
                                <mx:String>a3</mx:String>
                                <rcp:CMenuRelation label="子菜单">
                                  <rcp:actions>
                                   <mx:String>a4</mx:String>
                                  </rcp:actions>
                                </rcp:CMenuRelation>
                        </rcp:actions>
                </rcp:CMenuRelation>
                <mx:String>a2</mx:String>
        </rcp:actions>
    </rcp:CMenuRelation>
        <mx:Array id="cActions">
                <rcp:CAction actionId="a1" text="hello1"/><rcp:CAction actionId="a2" text="hello2"/>
                <rcp:CAction actionId="a3" text="hello3"/><rcp:CAction actionId="a4" text="hello4"/>
        </mx:Array>
    <mx:Panel title="工具栏图标的添加删除与样式设置" cornerRadius="0" layout="horizontal" 
horizontalAlign="center" verticalAlign="middle"
            styleName="opaquePanel" width="100%" height="100%">
        <mx:VBox width="50%" height="100%">
            <mx:Label text="选择样式"/>
                <mx:List id="listType" width="200" selectedIndex="1">
                  <mx:dataProvider>
                        <mx:ArrayCollection>
                         <mx:Object label="图标右字符" data="{CToolBar.Image_Text_Horizontal}"/>
                         <mx:Object label="图标下字符" data="{CToolBar.Image_Text_Vertical}"/>
                         <mx:Object label="图标" data="{CToolBar.Image}"/>
                        </mx:ArrayCollection>
                  </mx:dataProvider>
                </mx:List>
                <mx:Button label="更改样式" click="changeToolBarStyle()"/>
        </mx:VBox>
        <mx:Button label="删除工具按钮" click="onDelClick()"/>
        <mx:Button label="清空工具栏" click="removeAllItems()"/>
        <mx:Button label="改变按钮状态" click="setDisable()"/>
        
        <mx:Label id="infoLabel" width="100%"/>
    </mx:Panel>
</gui:RCPModule> 
 
Label Studio 数据标注平台,大模型预训练与微调必备 摘要:LabelStudio是一款开源数据标注工具,支持文本、图像等多种数据类型的标注。本文介绍了其安装方法(通过conda创建环境并pip安装)、基础使用流程(创建项目、导入数据、设置标签、标注导出)以及AI自动标注功能的实现。重点讲解了如何通过MLBackend集成LangChain模型实现自动标注:创建自定义模型类、构建预测链、处理返回结果,最后配置到LabelStudio项目中。该功能可显著提升标注效率,标注人员只需在AI预测结果基础上进行修正。 阅读详情

相关推荐

一文看懂分布式存储架构

目录一、集中存储结构二、分布式存储1 、分布式存储的兴起2 、分布式存储的重要性3 、分布式存储的种类和比较三、分布式理论浅析1 、一致性和可用性2 、数据分布3 、复制4 、分布式协议5、跨机房部署四、分布式文件系统1、 Google 文件系统( GFS )2、 Taobao 文件系统( TFS )3、 Fackbook Haystack 文件系统4、 CDN 内容分发网络五、分布式键值系统1、 Amazon Dynamo2、 Taobao Tiar3、 ETCD4 、产品选型比较( Etcd , Zoo

weixin_70730532的博客 2万+

smartrcp开源平台使用Java与Flex构建桌面程序 一(smartrcp版hello world)

  安装配置 首先到:http://smartrcp.googlecode.com/files/smartrcp_1.0.a_20100429.rar 下载最新版的 smartrcp 开发包。 解压后双击 smartrcp.exe 就可启动 smartrcp 平台,如下图:              如果启动失败原因有二...

smartinvoke的专栏 216

3U 与 SV630A 伺服实现 CANLINK 通讯

SD410这组参数特别重要,这个32位特别重要,是防止数值乱码的关键。

weixin_42714122的博客 2694

smartrcp入门视频系列二(flex调用java和多线程演示)

本篇演示了Flex调用Java以及多线程实现的详细过程   视频比较大,加载很慢,查看不便请谅解,下载观看可达到最佳效果,地址为: http://smartrcp.googlecode.com/svn/org.smartrcp.demo/src/vedios/vedio2.swf    ...

smartinvoke的专栏 187

M2DGR数据集在一些SLAM框架上的配置与运行:ORB-SLAM系列、VINS-Mono、LOAM系列、FAST-LIO系列、hdl_graph_slam

为了说明以上这些SLAM框架的测试与数据集适配,以M2DGR数据集为例进行各自的配置与运行,方便我以后适配自己的数据集,运行的SLAM框架包括:ORB-SLAM2、ORB-SLAM3、VINS-Mono、A-LOAM、LeGO-LOAM、LIO-SAM、LVI-SAM、FAST-LIO2、FAST-LIVO、Faster-LIO、hdl_graph_slam。实验基于Ubuntu20.04,其中ORB、VINS-Mono、和LOAM系列的安装参考我以前的博客,有详细的安装方法,其他的框架在后面会简单介绍一下

zardforever123的博客 1万+

告别WSL!用AMD ROCm7在Windows上跑ComfyUI,我的幻x2025 AI Max+ 395体验与性能调优心得

本文详细介绍了在搭载AMD Ryzen AI Max+ 395处理器的幻x2025笔记本上,如何通过ROCm7在Windows原生环境下高效运行ComfyUI,并分享了一系列性能调优技巧和实战经验,帮助开发者摆脱WSL束缚,提升AI创作效率。

weixin_29102619的博客 1115

SmartRCP介绍

为什么80%的码农都做不了架构师?>>> ...

weixin_34114823的博客 143

R语言实战:5分钟搞定相加交互效应分析(逻辑回归/Cox回归/GLMM/GEE全支持)

本文详细介绍了如何利用R语言中的`scitable`包快速实现相加交互效应分析,支持逻辑回归、Cox回归、GLMM和GEE等多种模型。通过自动化计算RERI、AP和SI等指标,大幅提升临床研究和流行病学分析的效率与准确性,特别适合处理多因素联合作用的复杂场景。

fanta的博客 671

smartrcp开源平台使用Java与Flex构建桌面程序

SmartRCP是什么 SmartRCP是一个使用Java与Flex 编写高度可扩展可配置可裁剪的桌面程序的开发平台它继承了java与flex的优势,并扬长避短,将它们的优势发挥得淋漓尽致。整个系统构建在eclipse 插件体系之上,所以可以充分与现有的eclipse 插件体系融合;同时充分flex module的优势,使整个程序的界面开发更加扩展性与配置性。 SmartRCP的目标  ...

smartinvoke的专栏 212

Xilinx Vivado LDPC IP core,TSN IP core. 各种IP core

Xilinx Vivado LDPC IP core,TSN IP core. 各种IP core

qq_1432825237的博客 3991

【Python基础】FastAPI 从入门到项目实战操作详解

【Python基础】FastAPI从入门到使用实战操作详解

congge_study的博客 444

创建你的第一个smartrcp程序

仅仅是弹出一个窗口没多大意思,接下来让我们通过简单的几句代码快速搭建出像eclipse那样成熟的软件界面。 效果如下图:       基本步骤如下: 1:smartrcpDemo项目的src目录下新建modules目录,并在该目录下    新建两个名称分别为Modul

813

【OpenClaw从入门到精通】第12篇:OpenClaw 2026子代理实战全攻略:用ACP架构搭建多智能体协作网络(附完整代码)

本文聚焦OpenClaw 2026.3.2版本默认启用的ACP(Agent Communication Protocol)子代理机制,从核心概念、底层原理到企业级实操全流程拆解。先解析子代理的定义、ACP协议通信原理及主从代理分工逻辑,再提供环境准备的详细步骤(版本验证、配置调整、技能安装);随后通过三个递进式虚拟案例(客服分流、智能文档处理、企业级招聘全流程),提供可直接运行的完整代码、执行结果及技术要点解析;最后补充子代理管理运维、性能优化与避坑指南。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2382

SmartRCP是什么

这是个好东西,果断备忘 本系列简要介绍怎样使用smartrcp构建强大可伸缩的桌面程序。项目地址:http://code.google.com/p/smartrcp/ SmartRCP是什么 SmartRCP是一个使用Java与Flex 编写

hack2me---Just for fun 822

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

smartrcp的TabFolder菜单及工具栏演示代码

&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;gui:RCPModule xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:gui="cn.smartinvoke.gui.*" xmlns:rcp="cn.smartinvoke.rcp.*" layout="verti

smartinvoke的专栏 179

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SmartRCP的插件版终于差不多了

通过几天的努力终于将SmartRCP以插件的方式迁移到eclipse中了 效果如下: 希望会给java的桌面开发带来一些方便 项目地址:http://code.google.com/p/smartrcp/

smartinvoke的专栏 154

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

想开始整整SmartRcP Flex + Java 开发GUI程序

想开始整整SmartRcP Flex + Java 开发GUI程序 2011年04月14日   之前在准备使用Java开发GUI桌面程序时,在网上google了半天,多数是SWT和Swing,偶然间发现了OpenSource的SmartRcp,听了作者的介绍,有点意思。准备学习做个简单的UI来尝试尝试,主要的担心是对Flex不熟悉。   废话不多说,先将需要准备的东东记录在此: ...

rjxws34k 188

smartrcp右键菜单的实现示例

&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;gui:RCPModule xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:gui="cn.smartinvoke.gui.*"  xmlns:rcp="cn.smartinvoke.rcp.*" layout="verti

smartinvoke的专栏 149

smartrcp入门视频系列四(flex右键菜单)

大家都知道很难屏蔽掉flex程序中的某些右键菜单项,比如 设置...,关于 adobe flash player。   在smartrcp中可以轻松屏蔽掉这些菜单项,并构建出功能丰富的右键菜单。   效果如下图:          视频教程下载地址:   http://smartrcp.googlecode.com/svn/org.smartrcp.demo/src/vedi...

smartinvoke的专栏 146

smartrcp的多窗口管理演示代码

&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;gui:RCPModule xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:gui="cn.smartinvoke.gui.*"  xmlns:rcp="cn.smartinvoke.rcp.*" layout="verti

smartinvoke的专栏 168

smartrcp开源平台使用Java与Flex构建桌面程序 四(smartrcp的运行原理)

smartrcp的程序结构如下:        图片说明:   启动文件:继承自cn.smartinvoke.gui.SplashApp的mxml Application文件编译后               所得的swf文件。该文件有点儿像eclipse插件中的plugin.xml文件的作用,              它定义了整个应用程序的基本信息;菜单工具栏;与整体布局。应用程序文...

smartinvoke的专栏 182

【想开始整整SmartRcp】Flex + Java 开发GUI程序

[size=large]之前在准备使用Java开发GUI桌面程序时,在网上google了半天,多数是SWT和Swing,偶然间发现了OpenSource的SmartRcp,听了作者的介绍,有点意思。准备学习做个简单的UI来尝试尝试,主要的担心是对Flex不熟悉。[/size] 废话不多说,先将需要准备的东东记录在此: 1. SmartRcp的项目地址 http://code.goo...

mm1983abc的专栏 186

smartrcp开源平台使用Java与Flex构建桌面程序 二(快速搭建程序整体布局)

本篇是 smartrcp开源平台AIR的掘墓人一(smartrcp版hello world) 的继续。   仅仅是弹出一个窗口没多大意思,接下来让我们通过简单的几句代码快速搭建出像eclipse那样成熟的软件界面。 效果如下图:       基本步骤如下: 1:smartrcpDemo项目的src目录下新建modules目录,并在该目录下    新建两个名称分别为Module_C...

smartinvoke的专栏 206

smartrcp开源平台使用Java与Flex构建桌面程序 三(使用eclipse插件扩展smartrcp平台)

1:背景:  Adobe AIR平台最大的劣势就是很难在该平台的基础上进行扩展,程序的功能受限于该平台的标准API,而smartrcp使用eclipse插件体系很好的解决了平台的扩展问题。    从此可以使用Java解决复杂的业务逻辑,Flex负责界面展示,Java与Flex互相配合,充分发挥各自的优势。2:基本开发步骤如下:      2.1 保证您的eclipse 具有插件开发的功能,File...

smartinvoke的专栏 206

smartrcp键盘右键菜单以及键盘组合键的示例

&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;gui:RCPModule xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:gui="cn.smartinvoke.gui.*"  xmlns:rcp="cn.smartinvoke.rcp.*" layout="verti

smartinvoke的专栏 172

smartrcp入门视频系列三(快速构建程序界面)

本节讲述怎样使用smartrcp快速构建程序界面 :   完成后效果如下:         smartrcp下载地址:     http://smartinvoke.cn/download.html     视频示例代码:    请下载附件:source.rar   视频文件下载地址:     http://smartrcp.googlecod...

smartinvoke的专栏 114
上一篇: smartrcp菜单栏的实现
下一篇: smartrcp右键菜单的实现示例
smartinvoke
博客等级 码龄17年 4粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值