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> 
 
QT开发串口程序与单片机通讯 如果有对象对这个信号感兴趣,想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。的内容,虽然实现的功能很简单,但是QT上位机开发的步骤基本就是这些步骤,通过这个基础实例把这些套路摸透我们就可以接着进行后续更多QT程序地开发学习了。QWidget类:所有用户界面对象的基类,窗口部件是用户界面的一个基本单元,它从窗口系统接收鼠标,键盘和其他消息,并在屏幕上绘制自己。我们上面运行的上位机都是在Qt Creator中编译运行的,如果我们需要把编写好的可执行文件发送给别人使用的话还需要进行打包。 阅读详情

相关推荐

解决Linux下Questasim中代码字体非常小

Questasim的source窗口里代码字体非常小 你是不是也遇到这样的问题,在使用Vmware时,Questasim的代码字体非常小,小到完全看不见,连断点都没办法标记。 下面我给出我摸索好久的解决办法,分享给大家。 1.首先,版本是Questasim 10.7c,在Vmware16中打开,情况如下: 不多逼逼,直接上图开搞: 给textFontV2设置值:monospace 12 normal roman 这里一定要注意啦,点完apply之后,不要点ok,直接关闭窗口。 ...

SummerXRT的博客 7815

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

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

smartinvoke的专栏 216

VLA模型(具身智能入门十)

Vision Language Action(VLA)模型VLA模型是机器人领域的“感知-理解-执行”一体化框架,通过Transformer架构融合视觉、语言、动作模态,核心目标是让机器人在自然语言驱动下,自主完成复杂操控任务。其定义的核心在于“跨模态统一”与“具象化行动”——不仅能“看懂”“听懂”,更能“做出正确的动作”,是实现通用机器人智能的关键方向。提供通用序列建模骨架,让视觉、语言、动作能以“序列”形式统一处理;ViT将视觉输入转换为序列特征,提供“看”的能力;LLMs。

weixin_39699362的博客 9928

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

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

smartinvoke的专栏 187

【Unity】YooAsset与HybridCLR:高效资源管理与代码热更的黄金组合

本文深入探讨了Unity开发中YooAsset与HybridCLR的组合应用,为需要长期运营的项目提供了完整的资源与代码热更新解决方案。YooAsset作为高效的资源管理框架,简化了AssetBundle的打包、加载与热更流程;而HybridCLR则攻克了IL2CPP模式下C#代码无法热更的难题。两者结合,实现了从资源到逻辑的平滑在线更新,极大提升了开发迭代与线上维护的效率。

weixin_29006701的博客 281

从涡流求解器到瞬态场:Maxwell 3D里无线充电仿真,选对求解器能省一半计算时间

本文深入探讨了Maxwell 3D在无线充电仿真中涡流求解器与瞬态求解器的选择策略,帮助工程师优化计算效率与精度。通过对比分析两种求解器的适用场景、性能差异及实战技巧,揭示如何根据频率特性、材料非线性和动态过程需求做出精准选择,可节省高达50%的计算时间。特别针对3D线圈模型的无线充电系统设计提供了专业建议。

weixin_26861329的博客 231

SmartRCP介绍

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

weixin_34114823的博客 143

2023最新扫码连wifi-扫码挪车-聚合CPS返利多合一小程序源码

2023最新扫码连wifi-扫码挪车-聚合CPS返利多合一系统 系统特点: 目前已接入的 CPS 渠道: 充值:话费充值、电费充值、影视会员充值、会员卡券充值 本地团购:联联周边游 电商平台:京东、拼多多、唯品会、淘宝、抖音美团:外卖、闪购、酒店、到店、优选饿了么:外卖、商超 出行服务:滴滴打车、滴滴加油、滴滴货运、花小猪打车、高德打车、同程打车 连锁餐饮点餐:肯德基、麦当劳、百果园、奈雪的茶、瑞幸咖啡、星巴克、喜茶、汉堡王、必胜客电影票:特价电影票 注意:以上涉及到需要支付的 CPS 渠道,不需要预存!

qq_41837379的博客 3111

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

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

smartinvoke的专栏 212

[27] cuda 应用之 核函数实现图像通道变换

[27] cuda 应用之 核函数实现图像通道变换

yohnyang的博客 202

YOLO-V8训练自己的数据集之标注样本

四、标注样本 4.1、标注样本概述 4.1.1、样本标注主要方法 4.1.2、标注样本概念 4.1.3、标注样本实现方式 4.1.4、常见标注样本软件 4.2、标注工具LabelImg 4.2.1、LabelImg介绍 4.2.2、LabelImg特点 4.2.3、LabelImg安装方法 4.2.4、LabelImg使用方法 4.3、标注样本实操 4.3.1、安装标注软件Labelimg 4.3.2、Labelimg界面介绍 4.3.3、LabelImg实操过程中常

qq_29633789的博客 664

创建你的第一个smartrcp程序

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

813

无人机视觉锁定与目标跟踪技术深度解析(含完整代码)

本文介绍了无人机视觉锁定系统的核心技术实现,包括系统架构、目标检测与跟踪算法。系统采用YOLOv5进行初始目标检测,结合手动框选作为备选方案。在跟踪环节对比了KCF、CSRT等传统方法和SiamFC等深度学习算法,最终选用CSRT作为CPU平台最优方案。文章详细解析了相关滤波跟踪的数学原理,并提供了目标检测器和跟踪器的Python实现代码。该系统能有效处理目标遮挡、光照变化等挑战,为无人机自主跟踪提供了实用解决方案。

电脑管家 686

SmartRCP是什么

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

hack2me---Just for fun 822

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SmartRCP的插件版终于差不多了

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

smartinvoke的专栏 154

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

想开始整整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、付费专栏及课程。

余额充值