【原创】开发视图插件(十六)
上一篇 / 下一篇 2008-07-04 12:50:38 / 个人分类:Eclipse插件开发
ITPUB个人空间O,{4ct?v0W*C-c@
视图是工作台页面内的可视组件,通常用来浏览信息的层次结构(如工作空间)、打开编辑器或显示活动编辑器的属性。用户可以通过“Window”→“Show view”菜单显示视图,也可以从视图局部标题栏关闭视图。
ITPUB个人空间bh$t#}z)]
视图分类
ITPUB个人空间)AJqfq;V e
在Eclipse中用户可以在同一时间打开多个视图(编辑器在同一时间只能打开一个),每个视图能够有自己的位置布局信息,Eclipse会根据上一次视图布局的信息初始化视图。
vodwn(J|0Eclipse视图一般来说有两种表现形式,一种是用户通过视图扩展点“org.eclipse.ui.views”实现自定义的视图,另一种是实现Eclipse中视图提供的扩展,用户可以通过实现Eclipse的相应接口实现,如Outline视图和Properties视图,如图1所示。
Str8LC!S0
ITPUB个人空间)f4j b1ONKU
图1 Eclipse视图
在Eclipse中,用户可以按自己的要求建立自己的视图,即扩展Eclipse的视图扩展点。也能实现Eclipse的接口,通过Eclipse的Adapter机制实现Eclipse的扩展。其中,Outline和Properties视图也是通过这种方式实现的,在后面的章节会介绍Outline视图和Properties视图的实现。ITPUB个人空间#O:o+W R1u9M
当用户定义了自己的视图后能通过“Window”→“Show view”菜单打开自定义的视图。如图2所示。ITPUB个人空间PK.Ihq
ITPUB个人空间5NP Js!R
图2 选择视图
ITPUB个人空间,FQ:u
v"Q)gE+f?yn
常用视图可实现的功能
ITPUB个人空间eA^xD*RgA
Eclipse的视图就功能来说一般有两种形式,一种是功能性视图,例如Java的Default视图,default负责用树形目录组织Java的项目结构,并且能通过双击节点在编辑器中打开相应的资源。另一种视图是辅助型的视图,例如Console负责控制台信息的显示。
t8|*@3]"K"r0不管是哪种类型的视图,它们的实现原理是一样的。在Eclipse中视图可以实现的功能有如下一些。ITPUB个人空间9gSL/LS Py#r'C
右键菜单:可以通过视图中的树、表弹出的菜单完成相应的功能。ITPUB个人空间9`9QbEw'El{BSf%T
工具栏:可以定制视图的工具栏,完成当前视图的功能。ITPUB个人空间7m9D.~|D*N {j-Mv
表格:视图中可以加入表格以显示相应的表结构信息。ITPUB个人空间 {\7u%U2E&M"e7}
Q
树:视图中可以加入树结构以显示相应的树结构信息。ITPUB个人空间/~Cj5x8gH8{
Log 输出:视图中可以直接输出信息。
E(vOb@0这些只是一般在Eclipse中可以看到的实现,用户可以把视图当做操作Eclipse接口。
g?7]4X$WEP0提示:任何SWT的组件都可以作为视图的一部分,用户可以按自己的需求定制自己的视图。
T-M3N't$Os1B;U0创建“Tree viewer”视图
ITPUB个人空间8BEEu"aY'V
创建“Tree viewer”视图插件项目,步骤如下:ITPUB个人空间f^ w3gXA5ag
1. 打开新建向导。
5Q$RAPO,b/p,`k0单击Eclipse的“File”→“New”→“Other”菜单项,在弹出的对话框中选择Select对话框左边的 Plug-in Development 向导。ITPUB个人空间'?#C
SB9h}.q
2. 建立一个空的插件项目。
4Xo$h4?`0 输入插件工程的名字为“com.free.view. treeview”。
$T\3k2~0^0BI0 输入插件的ID为“com.free.view.treeview”。
F`e6ya0 输入插件的Name为“helloworld Plug-in”。
-uN?K2E!T0t^t0 选择使用模板建立插件项目,如图3所示。ITPUB个人空间 c6s#J)oF j0nJ
单击“Next”按钮,选择“Tree viewer”选项。
S!ati2plN0 单击“Finish”按钮,完成项目的建立。
D[i#en~L^ RD0
ITPUB个人空间2HZ[-^}E|%h{N
图3 选择插件模板对话框
4T,}i+Y*I'lNv:N0通过这种方式建立了一个包含JFace的“Tree viewer”组件的插件项目,此项目已经具备了视图插件常用的功能。
ITPUB个人空间PPK#A5D
视图扩展点
[%nY&b/\hE0通过插件模板创建了“Tree viewer”视图插件,此插件只实现了一个视图分类节点和视图节点。如例程1所示。ITPUB个人空间`$l?%fzb@+w3f4r
例程1 plugin.xml
s$B1\ X$Tx0<plugin>
B$R'la
TI1CN0
PAO.t(x!S1k0<extensionITPUB个人空间SGg2sN1oKY7GHR
point="org.eclipse.ui.views">
6\
j gmY6g0<categoryITPUB个人空间$p1O]{H4bK[
name="tree view"ITPUB个人空间ico"xa S
id="com.free.view.categoryall">ITPUB个人空间#P:_6a!?1ki6d
</category>ITPUB个人空间6Gx
hCZ3B5{y1S4b
<viewITPUB个人空间V3G5ft@ ?(EA-h7Q;e
name="Tree View"
PB&@"B,k:~(G
d6]0icon="icons/tree.GIF"ITPUB个人空间1c \:lvHR1z\
category="com.free.view.categoryall"
]F3KIF0class="com.free.view.treeview.views.TreeViewTest"
R(}3@ J1h!_,S1Z1H"dg0id="com.free.view.treeview.views.TreeViewTest">ITPUB个人空间*R7DLx X@!T!{Y4w
</view>ITPUB个人空间7gxf]lr.W_7T
</extension>
X-muITu;}6Z0ITPUB个人空间_&B,Yjc"Q)g}
</plugin>
bCM ^t0“plugin.xml”实现了视图的扩展点“org.eclipse.ui.views”,Eclipse会根据扩展点的信息展现视图。
ITPUB个人空间U+v^-v(a V{
视图扩展点的实现类
ITPUB个人空间}h3Dpyw~"F
在“Tree viewer”视图中要完成的功能有:树、菜单、工具栏和事件响应事件。“Tree viewer”视图的实现类为“TreeViewTest”,通过实现类能实现这些功能。ITPUB个人空间7g%^$q|!n
实现类中要完成如下的功能。ITPUB个人空间7G*CRZ i
1. 初始化树。
/Ro`]J
q(MX02. 完成菜单和工具栏响应的Action。ITPUB个人空间n-h-sf?VK9A
3. 完成上下文菜单。
-y:ClF&?
z&G.`
v_04. 完成工具栏。ITPUB个人空间0xWb/OtGA#xqm6C%w
5. 完成双击树节点的响应方式。ITPUB个人空间kA!I\U.a
在createPartControl方法中能对视图进行初始化,代码片段如下。
SiU!c,A0public void createPartControl(Composite parent) {
5JHT,l@vO0//初始化树


