Eclipse选项卡式的属性视图(The Eclipse Tabbed Properties View)
Eclipse工作台提供了一个性能视图用于查看(和/或编辑)选定项目的属性。
在本文中,您将学习怎样使用选项卡式的属性视图创建一个性能增强的用户界面视图。
1.引言
Eclipse工作台提供了一个属性视图。即在文章中具体描写叙述你的性能控制。默认的用户界面是属性和值对表,而且值使用一个标准的对话框单元格编辑器。
工作台使用扩展(extensions)为属性视图定义了一个自己定义的用户界面。利用这个扩展,Properties视图已创建。
属性视图同意您创建不论什么用户界面的属性。此外,您能够为元素创建用户接口而不用实现IPropertySource。
其实,属性视图能够被扩展到查看在工作台中被选择的不论什么数据。
2.实例解析
依赖 org.eclipse.ui.views.properties.tabbed 插件
须要实现三个扩展点:
org.eclipse.ui.views.properties.tabbed.PropertyContributor
Tabbed View 由一个 PropertyContributor 构成,当中包括多个 PropertyTab。
<extension point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
<propertyContributor contributorId="mview.views.SampleView">
<propertyCategory category="sample"/>
</propertyContributor>
</extension>
org.eclipse.ui.views.properties.tabbed.PropertyTabs
每一个 PropertyTab 由多个 PropertySection 构成。
<extension point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
<propertyTabs contributorId="mview.views.SampleView">
<propertyTab
category="sample"
id="mview.ButtonTab"
label="Button"/>
<propertyTab
afterTab="mview.ButtonTab"
category="sample"
id="mview.AdvancedTab"
label="Advanced"/>
</propertyTabs>
</extension>
org.eclipse.ui.views.properties.tabbed.PropertySections
每一个 PropertySection 实现为一个或一组 widget,相应着一个 property。
<extension point="org.eclipse.ui.views.properties.tabbed.propertySections">
<propertySections contributorId="mview.views.SampleView">
<propertySection
class="mview.views.LabelSection"
id="mview.LabelSection"
tab="mview.ButtonTab">
<input type="mview.views.ButtonElement"/>
</propertySection>
<propertySection
afterSection="mview.LabelSection"
class="mview.views.SizeSection"
id="mview.SizeSection"
tab="mview.ButtonTab">
<input type="mview.views.ButtonElement"/>
</propertySection>
<propertySection
afterSection="mview.SizeSection"
class="mview.views.FontSection"
id="mview.FontSection"
tab="mview.ButtonTab">
<input type="mview.views.ButtonElement"/>
</propertySection>
<propertySection
class="org.eclipse.ui.views.properties.tabbed.AdvancedPropertySection"
id="mview.AdvancedSection"
tab="mview.AdvancedTab">
<input type="mview.views.ButtonElement"/>
</propertySection>
</propertySections>
</extension>
Tabbed Property是eclipse3.2中新增加一个view,能够使属性编辑器的功能近乎无限的扩大。这里说明一些Tabbed Property的用法。Tabbed Property中分成三个部分,Contributer,Tabs,Sections,一个Contributor包括若干个Tabs。一个Tabs又能够包括若干个sections。
以下我们来分别进行描写叙述。
1.Contributor 这须要扩展org.eclipse.ui.views.properties.tabbed.PropertyContributor扩展点,定义时,最重要的是定义contributId,这个id必须是全局唯一的,这样在载入属性页时,才干找到这个我们定义的属性页。一般地,我们都将相应于这个属性页的workbenchpart的id作为本contributor的id,这样我们在代码中能够不硬编码本id字符串,而使用getSite().getId()就能够得到这个id了(当然,这样定义id不是必须的)。一个property
view能够被多个workbench part共享。但 一个workbench part仅仅能有一个property view,这个workbench part须要实现ITabbedPropertySheetPageContributor 接口,这个接口仅仅有一个方法,要求返回本part相应的tabbed property Contributor id,一般仅仅要return getSite().getId();
contributor有例如以下几个attribute:
1)typeMapper。这个类须要实现org.eclipse.ui.views.properties.tabbed.ITypeMapper。主要是实现类型的映射。由于我们选择的元素并不一定是实现IPropertySource的元素(就可以以给property view提供内容的元素),比方在GEF中,我们选择的finger实际上是选择了相应的EditPart,而实际上实现了IPropertySource一般的是model部分的元素,所以这时候我们要将Editpart映射到相应的model元素。
2)labelProvider,须要一个实现org.eclipse.jface.viewers.ILabelProvider的类,主要是在各个tabs的最上面显示文字和图片。
3)propertyCategory,用于聚合多个tabs,注意至少要定义一个category,来聚合tabs,否则。可能会显示property失败。
2.Tabs。这个须要扩展org.eclipse.ui.views.properties.tabbed.propertyTabs扩展点。当中contributorId就是与之相关联的Contributor的id。然后我们能够定义多个tab,这些tab的属性例如以下:
1)label,用于显示在property view的tab bar上的字
2)category,填入的就是在Contributor扩展点中定义的那些category,用于聚合tabs
3)id。本tab的唯一标识
4)afterTab,用于tab之间的排序,假设这是第一个tab,则没有afterTab。afterTab指的是在本tab之前的那个tab,而且afterTab描写叙述的是在同一个category中的tabs,不同category之间的顺序是依照在contributor中定义category的顺序来定义的。
5)indented。假设为ture。则各个tabs是有缩进的
6)image,本tab的图片
3.section ,须要扩展 org.eclipse.ui.views.properties.tabbed.PropertySections扩展点。它的contributionId就是本section所在的Contribution的id。针对每一个tab。我们能够定义多个section,每一个section的attribut描写叙述例如以下:
1)id,本secation的唯一标识
2)tab。本section所属tab的标识
3)class,实现了org.eclipse.ui.views.properties.tabbed.AbstractPropertySection抽象类的类,用于描写叙述这个section的控件和布局。
4)aftersection和上面的aftertab差点儿相同。描写叙述的是同一个tab中的section的顺序,注意afterserction描写叙述的是本section之前的section的id
5)filter:一个实现org.eclipse.jface.viewers.IFilter接口的过滤器,对选中元素进行过滤。
6)enableFor:一个用于仅仅是选择数目的值,必需要符合这个数目才干使能这个section。假设不符合。则这个section就被过滤了。假设省略本值,则section的使能器就不会工作了。
这是一个自然数,比方。当enableFor=1时,仅仅仅仅有一个元素被选择的时候,本section才会被使能。
some notes:
上面说过实现ITabbedPropertySheetPageContributor接口的workbench part除了要实现getContributeId方法外,还须要重载getAdapter方法。由于eclipse的默认载入的property veiw时原来的那个view,为了使tabbed property view可以载入,我们就须要重载getAdapter方法,返回一个TabbedPropertySheetPage对象。
在实现section class的时候须要注意。createcontrol时首先应该先创建一个composite,通常是 Composite composite = getWidgetFactory().createFlatFormComposite(parent); 然后各个控件在这个composite上创建。
Eclipse选项卡式的属性视图(The Eclipse Tabbed Properties View)的更多相关文章
- SAP HANA 创建属性视图
[Step By Step]SAP HANA创建属性视图(Attribute View) Demo Instruction: 从一张用户信息表中组合出相信地址. 1. 在modeler窗口中,找到相应 ...
- Eclipse中Project的属性Deployment Assembly(部署程序集)消失了,不存在了,去哪儿了
1. 该项目不是web项目,所以不存在Deployment Assembly 属性.在Eclipse中,怎样将一个非web project变成一个web project? 1)右键项目,选择Proje ...
- Eclipse的Project Facets属性设置解决项目无故报错
新检出项目,发现代码无故报错,各种尝试,最终发现是因为 项目右键中的 project Facets 属性中的 java 后面的 version 版本和项目 build path 的 jdk 版本不一 ...
- Eclipse里的Java EE视图在哪里?MyEclipse里的Java EE视图在哪里?MyEclipse里的MyEclipse Java Enterprise视图在哪里?(图文详解)
为什么要写这篇博客呢? 是因为,最近接触一个web项目. 然后呢,Eclipse里的Java EE视图的位置与MyEclipse里不太一样.为了自己梳理日后查找,也是为了新手少走弯路. Eclipse ...
- Eclipse 设置生成带有属性注释的getter/setter方法
1. 在开发中,一般类注释常注释在字段上面.但eclipse工具自动生成的getter和setter方法是没有注释的,而且还需要自己手动添加,这样比较麻烦.下面介绍如何通过修改eclipse的jar ...
- eclipse如何修改dynamic web module version;——eclipse操作备忘
1.eclipse如何修改dynamic web module version 一.修改工程属性: 右键eclipse的工程,选择属性,再选择Project Facets里面中选择Dynamic We ...
- Eclipse IDE for Java EE Developers 与 Eclipse Classic(Eclipse Standard)区别
Eclipse下载官网:http://www.eclipse.org/downloads/ 版本: 1.Eclipse classic(Eclipse Standard):Eclipse的标准版; 2 ...
- Eclipse安装反编译工具JadClipse for Eclipse手把手教程
今天闲来无事准备弄弄eclipse的反编译工具JadClipse for Eclipse,百度经验里也说的比较清楚只是两个文件下载地址没有明确 net.sf.jadclipse_3.3.0.jar ...
- eclipse怎么对项目重命名,eclipse怎么重命名类
eclipse怎么对项目重命名,eclipse怎么重命名类
随机推荐
- UI常用控件的一些属性
UILable 1 //设置文本信息 2 nameLable.text = @"用户名:"; 3 //对齐方式(居中 居左 局右); 4 nameLable.textAlignme ...
- Battle ships(二分图,建图,好题)
Battle ships Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tot ...
- java学习——入门扫盲篇
概要 近期这几天開始进入java的学习,接触到了好多不是非常了解的概念,像JDK.JRE.JVM.GC等等这些,放到这里来进行下扫盲. java java是一种面向对象程序设计语言和java平台的总称 ...
- 2013 成都网络赛 1004 Minimum palindrome
题目大意:用m个字母组成一个长度为N的字符串,使得最长的回文子串 的长度最小. 并且要求字典序最小. 思路:分类模拟. 当M为1 的时候就直接输出N个A 当M大于2的时候就循环ABC 当M等于2的时候 ...
- 初识Channel
java.nio.channels 中的接口和类. A channel represents an open connection to an entity such as a hardware de ...
- CSS 规避脱标之两种用法
大家好,我是小强老师,今天讲解一小点知识哈 对比了才知道什么好 看不出,很漂亮吧! 有木有倾国倾城的美色. 呵呵,好多东西也是这样的,好的东西只有对比了才觉得好. 我们知道我们网页布局 有三模式. ...
- 【转】关于C语言生成不重复的随机数
一 说起随机函数,恐怕又有人说这是老生长谈了……一般很多人都形成了自己的固定格式,因为随机数用处比较大,用的时候比较多,拿过来就用了.但是新手不这么 干,他们总是抱有疑惑,我就是一个新手,而且较菜…… ...
- 修改、设置root密码
参考文档: http://zhidao.baidu.com/link?url=OaUTAj6FrMGDjbPZHWv3NNDOaIl3HNqZz_3lF_Zpi8oZpLkBfnHfPlpgE1EvN ...
- Nmon 性能:分析 AIX 和 Linux 性能的免费工具
原文摘自: http://www.ibm.com/developerworks/cn/aix/library/analyze_aix/ 官网:http://www.ibm.com/developerw ...
- 第四届蓝桥杯 c/c++真题
第四届蓝桥杯 c/c++真题 <1>高斯日记 问题 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们 ...