Graoverings stackoverflownians,
我正在开发一个Eclipse RCP应用程序,其中也是标准的Project Explorer View
。
我需要向org.eclipse.core.internal.resources.Project
添加几个属性,与标准Resource
中的常用Properties View
属性一起显示。
我的思考过程是我向SelectionService
添加了另一个听众:
window =PlatformUI.getWorkbench().getActiveWorkbenchWindow();
window.getSelectionService().addSelectionListener("org.eclipse.ui.navigator.ProjectExplorer", listener);
并在此选择监听器中,我获取所选项目,更改它,并将其传递给选择服务。
麻烦的是,我没有任何方法来在没有内容提供商的情况下以编程方式设置选择。
另外,据我所知,Project
没有实现IPropertySource
,因此将其子类化很难,覆盖getPropertyDescriptors/Values
方法......
如果是这样,我如何获得Project Explorer
视图的内容提供商?
或者我如何在SelectionService
?
任何帮助/意见赞赏!
答案 0 :(得分:1)
我已经成功地向现有IProject
添加了一个属性,尽管它没有实现IPropertySource
(因此可以通过子类化和覆盖{{1}来添加一些功能。 }和getPropertyDescriptors
方法。
感谢greg-449,我能够理解getPropertyValue
的{{1}}功能StandardPropertiesAdapterFactory
(ResourcePropertySource
扩展{/ 1}}
因此,解决所有这些问题的一种方法是使用IProject
的子类来显示IResource
的属性......
这是kewd:
我将AdvancedPropertySection
的视图ID与IProject
中的ProjectExplorer
相关联:
TabDescriptorProvider
之后,我们定义plugin.xml
,并将其链接到我们的自定义<extension point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
<propertyContributor
contributorId="org.eclipse.ui.navigator.ProjectExplorer"
tabDescriptorProvider="eb.tresos.bustools.connection.extraproperty.TabDescriptorProvider">
<propertyCategory
category="tabbedCategory">
</propertyCategory>
</propertyContributor>
</extension>
:
TabDescriptorProvider
AdvancedPropertySection
本身:
public class TabDescriptorProvider implements ITabDescriptorProvider {
@Override
public ITabDescriptor[] getTabDescriptors( IWorkbenchPart part, ISelection selection ) {
AbstractTabDescriptor[] tabs = new AbstractTabDescriptor[1];
tabs[0] = new TabDescriptor("Aww shucks, TabDescriptorTitle");
return tabs;
}
class TabDescriptor extends AbstractTabDescriptor {
String label;
/**
* Constructor
*
* @param label sets the label text of the tab
*/
TabDescriptor( String label ) {
this.label = label;
}
@SuppressWarnings("rawtypes")
@Override
public List getSectionDescriptors() {
List<SectionDescriptor> sList = new ArrayList<SectionDescriptor>();
sList.add( new SectionDescriptor( label ) );
return sList;
}
@Override
public String getCategory() {
//Stub
return "";
}
@Override
public String getId() {
//stub
return "";
}
@Override
public String getLabel() {
return "Resource";
}
}
class SectionDescriptor extends AbstractSectionDescriptor {
String section;
List<AbstractPropertySection> sectionTabs = new ArrayList<AbstractPropertySection>();
public SectionDescriptor( String section ) {
this.section = section;
}
/**
* SectionId
*/
@Override
public String getId() {
//stub
return "";
}
/**
* SectionClass
*/
@Override
public ISection getSectionClass() {
return new AuxiliaryProjectSection();
}
/**
* SectionTab
*/
@Override
public String getTargetTab() {
//stub
return "";
}
}
}
再次感谢,格雷格!