第一天:第一个Plug-in,Hello World

从 Hello World Plug-In 看透 SAP Fiori Launchpad 插件机制与实现 本文介绍了SAP Fiori launchpad插件的开发要点,通过分析官方"Hello World Plug-In"示例,阐述了插件开发的核心机制和注意事项。文章指出,插件与普通应用不同,它服务于整个launchpad壳层而非单个应用,需要特别注意初始化时序问题。示例代码展示了插件如何安全地等待UI5 Core初始化完成后再执行操作,但强调这种直接触发UI动作的方式仅适合教学,生产环境应采用更成熟的模式。最后说明了插件激活需要正确配置target mapping,特别是使用特定语义对象 阅读详情

作者:梁祺 (eclipsesbs@gmail.com)

来自:http://www.benisoft.net/day1/index.html

刚开始接触Plug-in开发,我们可以先看一个最简单的Plug-in,Hello World。这个Plug-in可以通过Eclipse提供的模版生成,不需要写任何代码。不过通过这个Plug-in,可以了解Plug-in的基本结构,对于今后的Plug-in开发是很有帮助的。下面我们就开始吧。

首先启动Eclipse,来创建一个Plug-in项目。在主菜单选择“File/New/Project”。

在“New Project”对话框中选择“Plug-in Project”,点击“Next“。

在“New Plug-in Project”对话框中,在”Project name“文本框输入项目名,这里我们输入“eclipse.tutorial.day1“。顺便看一下”Location“文本框,也就是新创建的项目在磁盘上的位置,方便今后查找。其他的属性就不用改了,点击“Next“。

这里我们需要输入Plug-in的一些基本信息。

  • ID:Plug-in的ID是Plug-in的唯一标识,我们输入“ eclipse.tutorial.day1”。
  • Version:我们就用缺省值"1.0.0.qualifier",”1.0.0“比较好理解,”qualifier“我们后面会看到,在Plug-in导出时,它会被替换成导出的日期。
  • Name:用以表达Plug-in用途,用户在安装Plug-in的时候,是通过这个名字了解这个Plug-in是做什么用的。
  • Vendor:就是开发者或公司名称,我们这里用不着。
  • Execution Environment,是指定Plug-in运行的环境要求,比如Java 1.5还是1.6,等等。

其他选项用就用缺省值,点击“Next“。

在接下来这页,选择模版“Hello, World”。从右面的解释,可以看到这个模版演示如何使用Action Set来创建菜单和工具栏按钮,在Eclipse里,菜单和按钮都由Action来完成,Action是Eclipse里非常灵活的一个部分,当然也很复杂。另外,Eclipse里大量使用扩展点来添加功能,在这个例子里,就用到“org.eclipse.ui.actionSets”这个扩展点,通过扩展这个扩展点,可以在Eclipse的主菜单栏和工具栏中插入我们的菜单项和工具栏按钮。当然,插入的位置是Eclipse预先保留给其他Plug-in的。点击“Next“。

我们定义的Action需要告诉Eclipse菜单项的显示文字,Tooltip文字,图标,一个符合要求(实现接口)的Action类,以及快捷键等等。详细的内容我们等一会儿会看到。这里模版只要求提供如下几项:

  • Java Package Name:输入“eclipse.tutorial.day1.actions”作为Action类的Java包名
  • Action Class Name:输入Action的类名为SampleAction
  • Message Box Text:这个模版演示的Action会打开一个对话框,并显示这里输入的文字。我们用缺省的“Hello, Eclipse world”。

点击”Finish“。

这样,一个Plug-in项目就建好了。项目里的绝大部分文件都可以在左侧的Package View里找到,但是”.project“和”.classpath“这两个文件除外。(不过你仍然可以通过Navigation View找到它们,一般情况我们不需要这样做)。项目包含三个文件。

  • src: 存放Java源文件
  • icons: 存放Plug-in用到的图像文件
  • META-INF: 只存放MANIFEST.MF文件

Package View右面是Plug-in Editor,通过它,你可以查看或修改Plug-in的任何信息。它的内容来源于两个文件,MANIFEST.MF和plugin.xml。前者提供Plug-in的ID,版本,与其他Plug-in之间的依赖关系等Plug-in的配置信息,后者则定义了当前Plug-in的所有扩展。Plug-in Editor有很多配置子页,大部分都很直观,这里就不多作解释了。

运行一下看看这个Plug-in运行起来怎么样。在Plug-in Editor的Overview子页中,点击“Launch an Eclipse Application”。事实上,我们启动的是加载了Hello World这个Plug-in的Eclipse,Plug-in本身是无法独立运行的,它必须在Eclipse提供的框架中运行,这个框架提供了Plug-in运行所需要的运行时环境。等Eclipse启动起来后,在主菜单栏里找到“Sample Menu”,选择“Sample Action”。

我们会看到下面这个对话框,对话框里显示的“Hello, Eclipse world”就是我们刚才输入的内容。

到目前为止,我们没有编写任何代码,那它到底是怎么工作的呢?下面我们来看一下。首先找到Plug-in Editor的Extensions子页,这个页面列出Plug-in扩展的所有扩展点,也就是Extension Point。这个Plug-in只扩展了扩展点“org.eclipse.ui.actionSets”。它先是定义了一个Action Set,名字是“Sample Action Set”。Action Set允许你把同一类的Action归在一起,便于管理。这个Action Set定义了一个名为“Sample Menu”的菜单。菜单下面的sampleGroup是一个菜单分割线,菜单分割线一方面起了对Action分组的作用,把同一类的Action挂到同一个sampleGroup上,就可以保证它们在菜单显示时处于相邻的位置。另一方面,菜单里会出现一个分割线,把归属于不同菜单分割线的Action隔开,所以它被称为分割线(separator)。

最后我们说一下Sample Action,它有很多东西需要定义:

  • id:每个Action需要有一个标识,命名方式类似于Java包名的命名方式。
  • label:指定出现在菜单上的文字,&符号以及它后面的字母标识Action的快捷键。
  • menubarPath:指定Action在菜单中的位置,“sampleMenu/sampleGroup”表示放在主菜单栏中ID是sampelMenu的菜单里,和ID为sampleGroup的其他Action放在一起。
  • toolbarPath:指定Action在工具栏中的位置,工具栏不象菜单栏是有层次结构的,所以定义起来就比较简单,只要给个组名就可以了。
  • icon:指定图标文件在Plug-in项目中的相对路径。
  • tooltip:显示Tooltip文字。
  • class:指定Action的Java类。把鼠标移到class上,我们能看到Action的Java类必须实现IWorkbenchWindowActionDelegate,或者IWorkbenchWindowPulldownDelegate接口。点击class,就可以打开Java类文件,非常方便。

SampleAction这个类实现了IWorkbenchWindowActionDelegate接口,其中最重要的方法就是run方法,用户选择菜单后,在这个方法会弹出一个对话框。

     /**
     * The action has been activated. The argument of the
     * method represents the \'real\' action sitting
     * in the workbench UI.
     * @see IWorkbenchWindowActionDelegate#run
     */

     public void run(IAction action) {
        MessageDialog.openInformation(
            window.getShell(),
            \ "Day1\",
            \ "Hello, Eclipse world\");
    }

到此为止,我们可以看到,Hello World Plug-in通过扩展“org.eclipse.ui.actionSet”这个扩展点,定义了一个Action,包括它的菜单名,图标,在菜单栏和工具栏中的位置,以及Java类SampleAction, SampleAction根据“org.eclipse.ui.actionSet”扩展点的要求,实现IWorkbenchWindowActionDelegate接口,在run方法里完成动作,弹出对话框。

非常的简单,不是吗?

从 Hello World Plug-In 看懂 SAP Fiori Launchpad 插件的工作机制与落地方式 本文探讨了SAP Fiori launchpad中plug-in的核心价值与实现原理。插件作为launchpad的公共基础设施扩展层,能够在壳层(shell)对整个门户入口体验和通用交互进行补充,而非局限于单一应用。通过分析Hello World示例,文章揭示了插件的关键特性:作为标准SAPUI5组件实现、遵循manifest规范、通过Core事件机制确保初始化时序正确。特别强调了插件开发需要注意的性能敏感性和架构治理要求,指出其企业级门户场景下的独特价值,如全局消息提醒、环境标识等跨应用功能的实现。代码示 阅读详情

相关推荐

ADRV9009学习资料保存:基于XC7Z100+ADRV9009的双收双发无线电射频板卡

ADRV9009学习资料保存:基于XC7Z100+ADRV9009的双收双发无线电射频板卡 一、板卡概述 基于XC7Z100+ADRV9009的双收双发无线电射频板卡是基于XilinxZYNQFPGA和ADI的无线收发芯片ADRV9009开发的专用功能板卡,用于5G小基站,无线图传,数据收发...

9357

eclipse plug-in 的开发-- Rich Client 教程

zhuan zi: http://www.benisoft.com/cn/java/index.htmRich Client 教程 第一部分Rich Client Platform (RCP)是一种全新的建立Java应用的方式,它完全不逊色于任何为专门平台开发的应用。本教程帮助你快速建立一个RCP应用,并被更新以适用于Eclipse 3.1。作者 Ed Burnette, SAS200

it_man的专栏 1万+

使用 Mid360 从零开始搭建实物机器人入门级导航系统 —— 基于 Fast_Lio 和 Move_Base

本文详细介绍了如何使用Mid360机器人从零开始搭建一个基于Fast_Lio和Move_Base的入门级导航系统。通过配置 ROS2、集成激光雷达、IMU、Fast_Lio、Move_Base 等模块,我们成功构建了一个能够实现自动导航的机器人系统。在实际开发中,随着需求的变化,你可以不断调整参数、优化路径规划算法、增加新的传感器等,逐步提升机器人的智能与功能。

小蜗牛的珍贵百宝箱 3564

Eclipse Plug-in 创建插件项目(一)

首先申明下,本文为笔者学习《Eclipse插件开发学习笔记》的笔记,并加入笔者自己的理解和归纳总结。 1. 工具栏菜单 扩展点【org.eclipse.ui.actionSets】 在【Extensions】中添加【org.eclipse.ui.actionSets】。 在【org.eclipse.ui.actionSets】中添加【menu】和【seperator】,并创建【action】。...

假装你是大灰狼的专栏 2614

【backtrader保姆级教学】投资组合回测

method1:探索投资组合的最有方案,使用蒙特卡洛模拟Markowitz模型。# 提取最小波动组合对应的权重, 并转换成Numpy数组。# 绘制收益-标准差的散点图,并用颜色描绘夏普比率。# 在收益-风险散点图中突出风险最小的点。:param any_day: 任意日期。# 将该点坐标显示在图中并保留四位小数。password = “替换密码”# 找到标准差最小数据的索引值。user = “替换账号”# 计算GMV投资组合收益。# 计算每项资产的夏普比率。# 设置无风险回报率为0。

weixin_38132951的博客 2315

Microsemi Libero使用技巧11——CoreUARTAPB RX管脚分配时不显示

调用串口IP核CoreUARTAPB,并例化到顶层设计,发现UART_RX管脚在进行管脚分配时没有显示出来,最后发现是CoreAPB3总线IP核配置不对导致,改为如下配置后正常。

whik1194的博客 757

Eclipse入门:开发Eclipse插件

Eclipse最有魅力的地方就是它的插件体系结构。在这个体系中重要的概念是扩展点(extension points),也就是为插件提供的接口。每一个插件都是在现有的扩展点上开发,并可能还留有自己的扩展点,以便在这个插件上继续开发。 由于有了插件,Eclipse系统的核心部分在启动的时候要完成的工作十分简单:启动平台的基础部分和查找系统的插件。在Eclipse中实现的绝大部分功能是由相应的插件完成的

!Java 3708

【100%通过率】2024华为OD机试真题E卷 C++语言 实现【流浪地球】

流浪地球计划在赤道上均匀部署了N个转向发动机,按位置顺序编号为0~N-1。 1) 初始状态下所有的发动机都是未启动状态; 2) 发动机起动的方式分为“手动启动”和“关联启动”两种方式; 3) 如果在时刻1一个发动机被启动,下一个时刻2与之相邻的两个发动机就会被“关联启动”; 4) 如果准备启动某个发动机时,它已经被启动了,则什么都不用做; 5) 发动机0与发动机N-1是相邻; 地球联合政府准备挑选某些发动机在某些时刻进行“手动启动”,当然最终所有的发动机都会被启动。 哪些发动机最晚被启动呢?

MISAYAONE的博客 4210

osgi 学习系列(二)第一个plug-in项目

New-->Plug-in Project 如果你的bundle在启动和关闭的时候需要被通知,可以勾上Options中的第一个,实现BundleActivator接口,Finish后我们的第一个Bundle就建好了 Bundle中最重要的一个文件就是bundle的描述文件MANIFEST.MF,看下该文件中的内容 Bundle-ManifestVersion 该属性...

网站开发初中级代码参考-转载 301

【数据集】CMIP6气候模式数据下载

简介CMIP6及其气候模式数据下载

WW、forever的博客 9353

测绘程序设计——试题一:出租车轨迹数据计算

仅展示试题1的原文,如需了解其余内容,请自行购买图书李老师著作主页-http://ybli.users.sgg.whu.edu.cn/book/

chengzilhc的博客 891

Eclipse 用户界面指南(V2.1)

(Chinese Version From http://www.eclipse.org/articles/Article-UI-Guidelines/index_cn.html)(English Version From http://www.eclipse.org/articles/Article-UI-Guidelines/Index.html)Copyright?2001-2004 Int

星光灿烂 1万+

AgentScope Java 入门:Spring AI Alibaba 与 AgentScope 的定位与区别

摘要:Spring AI Alibaba是阿里基于Spring AI开发的本地化AI应用框架,旨在服务Java开发者。它提供模型接入、函数调用、RAG等功能,并与阿里云基础设施深度集成。同时,阿里开源了多智能体框架AgentScope,其Java版(AgentScope-Java)专注于Agentic设计理念。两者将协同发展:Spring AI Alibaba侧重Spring生态集成,AgentScope-Java强化智能体能力。未来计划包括支持AgentScope、升级Admin平台,以及推进Server

SmartSi 1530

Eclipse Plug-in Hello world

这一篇就简单说下一个hello world插件工程创建过程。 1.创建一个Plug-in Project     2.填写project name     3.第二个确认框勾上,然后直接下一步     4.选择Hello,World的模版,直接finish     5.选中创建好的工程,右键如下操作     6.在新打开的Eclips

MitKey的博客 712

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

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Elixir Plug: 使用Plug开发Web应用程序

需要一些 Elixir 的基础. 对于没有Erlang背景知识的同学, 有比较陡峭的学习曲线. 但是Elixir语言提供了一个库: Plug, 用它我们能够开发基于Erlang VM的Web应用. 本文采用 Cowboy 作为Web服务器, 来构造一个超级简单的Web应用. 它唯一的功能就是在浏览器上显示一个纯文本: "Hello Wo...

weixin_33716941的博客 419

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

OSGI入门——Hello World

http://www.cnblogs.com/lw900320/archive/2012/06/26/2563170.html HelloWorld 一般情况下,学习一门新的技术,程序员都习惯于首先开发一个 hello world 应用程序,这似乎也是一种“工业标准”。好的,让我们开始吧,开发一个简单的 OSGi 应用程序并不难,步骤如下: 建立一个 plug-in 工程,F

Quincylk的专栏 904

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

BlackBerry App之Hello World

<br /> <br />1. 安装BlackBerry_Email_MDS_4.1.4.exe和BlackBerry_Simulators_5.0.0.228_9700.exe<br />2. 安装eclipse3.6<br />3. 安装BlackBerry Java Plug-in for Eclipse v1.1<br />4. 创建BlackBerry工程,File -> New -> Project -> BlackBerry -> BlackBerry Project<br />  Proje

kongxx的专栏 2641

eclipse4.2插件开发之Hello!EclipsePlugin

一 创建eclipse插件工程 1. 创建一个新的插件工程 File→New→Project→Plug-inDevelopment→Plug-in Project. 选择Hello,World Command模板 选择MANIFEST.MF文件,右键选择Run-As→Eclipse Application 这样我们的第一个插件工程就做完了 转载于:h...

weixin_30632899的博客 86

Your First Plug-in(转载)

Your First Plug-in Developing the Eclipse "Hello World" plug-in Summary The traditional Hello World program doesn't do that much, but it can be invaluable when exploring a new development envi...

weixin_33832340的博客 161

开发自己的Maven插件之一:hello world

一直在使用Maven,用了各种各样的插件,但是有时候没有的话,还是需要自己写点。写一个插件并不难,会写插件的另一个好处就是了解了更多的Maven工作机制的内幕。对更好的使用Maven有帮助。首先创建一个Maven项目,名叫plugin-example1。这里要理解一个术语:mojo,就是Maven Plain Old Java Object,也就是一个普通的Java类。我们需要mojo的api库,

Dean Chen的专栏 1万+

Hello World!第一个 OSGi 应用程序

HelloWorld!直接开始! 1、建立一个 plug-in 工程,File > New > Project,选择 Plug-in development > Plug-in Project  2、在建立工程的第一个向导,填入工程的名称:osgi.test.helloworld,使用缺省的工程路径。注意目标平台的选择,由于我们的项目是一个通用的 OSGi bundle,所以选

matt8的专栏 581

黑莓开发之Helloword

上一篇文章介绍了我的黑莓开发环境, 有了环境,那就得试一试。就像有了枪,总想着支打一枪。还是写个helloworld来熟悉一下开发环境。 点击桌面上的BlackBerry Java Plug-in 1.3.0, 启动开发环境。 新建一个BlackBerry Project,

Care iOS技术团队 2514

扩展Eclipse的Java开发工具(二)

在用户界面中,如何显示扩展,显示在何处? 这在很大程度上是一个温和的提示,因为我们已得到了答案。我们希望对一个或多个选中的方法显示上下文菜单选项,这些菜单选项允许我们只用一个操作就可以更改方法的可视性。我们更喜欢在可以显示方法的任何地方都能使用这些菜单选项,如在 Hierarchy 视图和 Package Explorer 中。这把我们带到下一个问题。 通常如何扩展用户界面? 通过示例来学习会更有

oicqren的专栏 1125
下一篇: 第二天:创建一个View试试
std3lqi
博客等级 码龄24年 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值