Eclipse插件开发笔记四:Wizard与WizardPage

本文介绍了如何在Eclipse插件开发中使用WizardDialog启动Wizard,通过分析Eclipseme和FatJar源码,展示了如何创建并启动Wizard。在Wizard实现中,重点讨论了addPages方法、performFinish方法以及dialog.open()的返回值。对于WizardPage,文章聚焦于CreateControl方法,解释了如何构建页面控件,特别是如何利用Composite类作为控件容器,以及创建控件时的构建时传入策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在popupmenu中选中 一个菜单项时,我期望能够启动 一个wizard,进行简单的配置。

 

Eclipse PDT提供了NewWizard的模板,它是使用的org.eclipse.ui.newwizards扩展点;它在plugin.xml中定义了一个category和一个wizard。使用模板创建出来的插件必须要用new来启动,这不是我想要的。

 

查看Eclipseme和FatJar的源码,发现它们启动wizard用的都是同一种方式:

WizardDialog dialog = new WizardDialog(shell, this);

return (dialog.open() == Window.OK);

使用WizardDialog,将shell和Wizard对象的实例传入来构建WizardDialog后启动即可。

 

这也是NewWizard模板隐藏了的部分。

 

Wizard实现中需要注意的就是addPages方法,注意它还有一个addpage方法,两个方法之间是调用的关系;还有performFinish方法,当Wizard Finish后,这个方法会被调用;还有dialog.open(),如果Wizard以Finish结束,它是会返回OK的;如果被Cancel掉,则返回FALSE。

 

而WizardPage实现中的核心方法就是CreateControl了。这个CreateControl的实现很值得研究。因为,在这个方法中,要创建Page上面的很多控件,比如button、Text、Label;消息是怎么传递到这些控件的呢?

 

一般的实现方法是,先构建父容器,然后用父容器将这些控件add进去。我没有找到add,CreateControl用的是另外一种办法,就是在构建子控件时,直接将父容器的引入传递了进去。这个就是所谓的构建时传入。

AOC有三种方法,set、register和构建时传入,createControl用的是第三种。

这种方法就有点类似于WIN32里面的CreateWindow函数,其实就是把这些操作封装起来了。

 

CreateControl传入的父容器的引用是Composite类型的。它是org.eclipse.swt.widget包的一个类。它继承自Scrollable,而Scrollable继承自Control;

对Composite的定义是,一个能够容纳Control的Control。

 

在CreateControl中,并不是直接将传入的Composite作为父。而是构建一个composite,作为中间层。在createControl中的最后一句非常关键:setControl(comp);

 

 

 

绝版的书,貌似淘宝还能找到。原来只有页码,边看边加的目录,有一半花了一晚上添加的目录,方便看了。 《Eclipse插件开发》由浅入深、有重点、有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章。第一篇介绍Eclipse平台界面开发的基础知识,包括SWT控件的使用、界面布局、事件处理等内容;第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包括行为(Action)、视图(ViewPart)、编辑器(Editor)、透视图(Perspective)等10章的内容;第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍实现等4个章节;第篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地理解插件开发相关技术。 目录: 第一篇 开发基础 第1章 Eclipse平台简介 1.1 Eclipse集成开发环境(IDE)介绍 1.1.1 安装及使用Eclipse IDE 1.1.2 为Eclipse IDE安装中文语言包 1.1.3 IDE的环境设置 1.1.4 使用帮助系统 1.2 什么是Eclipse 1.3 SWT/JFace技术 1.4 插件技术和OSGi 1.5 RCP技术 1.6 EMF技术 1.7 GEF技术 1.8 本章小结 第2章 SWT/JFace概述 第3章 SWT编程基础 第4章 使用基本控件对话框 第5章 容器布局管理器 第6章 界面开发工具 第7章 高级控件使用 第8章 SWT/Jface的事件处理 第二篇 核心技术 第9章 Eclipse插件体系结构 第10章 开发 第一个插件项目 第11章 操作(Actions) 第12章 视图(Views) 第13章 编辑器(Editors) 第14章 透视图(Perspectives) 第15章 对话框和向导(DialogsWizards) 第16章 首选项(Preferences) 第17章 帮助内容(Help Contents) 第18章 备忘单(CheatSheet) 第三篇 高级进阶 第19章 插件开发高级内容 第20章 富客户端平台(RCP)技术 第21章 Draw2d 第22章 GEF介绍实现 第篇 综合实例 第23章 插件开发实例 第24章 GEF实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值