首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

SWT/Jface 起用Properties view :PropertySheet

2012-12-27 
SWT/Jface 启用Properties view :PropertySheet1. Perspective添加Properties view:IDorg.eclipse.ui.vie

SWT/Jface 启用Properties view :PropertySheet

1. Perspective添加Properties view:ID=org.eclipse.ui.views.PropertySheet;

2. 实现ISelectionProvider接口(Viewer,Editor已经实现);

3. 打开界面时可以先激活一下properties view:

????? PlatformUI.getWorkbench().getActiveWorkbench().getActivePage().active(ID);

4. 如果一个面板有多个View时,切换属性显示是:

?// 切换展示属性的Viewer
??importVariableTreeViewer.getTree().addFocusListener(new FocusAdapter() {
???? @Override
???? public void focusGained(FocusEvent e) {
??????? ?if (getSite().getSelectionProvider()!=importVariableTreeViewer) {
???????????? ?getSite().setSelectionProvider(importVariableTreeViewer);
???????????? PlatformUI.getWorkbench().getActiveWorkbench().getView(ID).setFocus();
??????? }
?????}
??});
??exportVariableTreeViewer.getTree().addFocusListener(new FocusAdapter() {
????? @Override
????? public void focusGained(FocusEvent e) {
????????? if (getSite().getSelectionProvider()!=exportVariableTreeViewer) {
????????????? getSite().setSelectionProvider(exportVariableTreeViewer);
????????????? PlatformUI.getWorkbench().getActiveWorkbench().getView(ID).setFocus();
????????? }
????? }
??});

// 数据提供Po的实现有两种方式,一种是Po直接implements IPropertySource,另一种是Po implements IPropertySource;前者对序列化对象时会有一定的影响,而且耦合度高,推荐后者;

// 以下是后一种实现方式:

5. 点击时,所关联的Po应 implements IAdaptable,重写getAdapter(),如下:

??? @Override
????public Object getAdapter(Class adapter) {
??????? if (IPropertySource.class == adapter) {
?????????????? return new PoPropertySource(this);
??????? }
??????? return null;
??? }

6. PoPropertySource implements IPropertySource,主要实现方法:

??? // 返回Descriptor

??? @Override
??? public IPropertyDescriptor[] getPropertyDescriptors() {
??????? if (!Utils.isEmpty(descriptors)) return descriptors.toArray(new IPropertyDescriptor[0]);
??????? descriptors.add(new PropertyDescriptor(P_CLASS_REF, P_CLASS_REF));
??????? return descriptors.toArray(new IPropertyDescriptor[0]);
????}

??? // 返回数值

?? @Override
???? public Object getPropertyValue(Object id) {
?????????return?value

?? ??}
???如果有多级属性,将下级返回对象即可;?

1 楼 haimiao_88 2011-03-30   写的非常笼统,不适合初学者 2 楼 zhymin77 2011-04-01   谢谢,后面会改进

热点排行