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
<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
<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>
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上创建。