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
}
如果有多级属性,将下级返回对象即可;
[url]http://www.imilo.cn/[/url]
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
}
如果有多级属性,将下级返回对象即可;
[url]http://www.imilo.cn/[/url]