我创建了一个插件项目,当在项目浏览器中选择文件时,该项目应从服务器获取一些数据。获取此数据后,项目资源管理器应触发属性视图,并显示从服务器获取的数据。
我尝试了以下教程:
http://www.vogella.com/tutorials/EclipsePlugIn/article.html
我不知道如何在项目浏览器选择更改时触发属性视图。
public class TodoAdapterFactory implements IAdapterFactory {
public Object getAdapter(Object adaptableObject, Class adapterType) {
// TODO Auto-generated method stub
if (adapterType== IPropertySource.class && adaptableObject instanceof Todo){
return new TodoPropertySource((Todo) adaptableObject);
}
return null;
}
@SuppressWarnings("rawtypes")
public Class[] getAdapterList() {
// TODO Auto-generated method stub
return new Class[] {
IPropertySource.class
};
}
}
在上面的函数中,仅当我在另一个视图中选择模型时才会触发属性视图。
我应该如何在项目浏览器和属性视图之间创建链接?
答案 0 :(得分:1)
项目视图使用标签式属性页,您可以使用org.eclipse.ui.views.properties.tabbed.propertySections
扩展点添加标签。
以下是“项目”视图使用的现有属性选项卡的代码。它只是使用PropertySheetPage
- 您必须解决此问题才能使用其他IPropertySource
。
public class AdvancedPropertySection extends AbstractPropertySection {
protected PropertySheetPage page;
public void createControls(Composite parent,
final TabbedPropertySheetPage atabbedPropertySheetPage) {
super.createControls(parent, atabbedPropertySheetPage);
Composite composite = getWidgetFactory()
.createFlatFormComposite(parent);
page = new PropertySheetPage();
page.createControl(composite);
FormData data = new FormData();
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
data.top = new FormAttachment(0, 0);
data.bottom = new FormAttachment(100, 0);
page.getControl().setLayoutData(data);
page.getControl().addControlListener(new ControlAdapter() {
public void controlResized(ControlEvent e) {
atabbedPropertySheetPage.resizeScrolledComposite();
}
});
}
public void setInput(IWorkbenchPart part, ISelection selection) {
super.setInput(part, selection);
page.selectionChanged(part, selection);
}
public void dispose() {
super.dispose();
if (page != null) {
page.dispose();
page = null;
}
}
public void refresh() {
page.refresh();
}
public boolean shouldUseExtraSpace() {
return true;
}
}