发布于2023-11-26 20:53 阅读(374) 评论(0) 点赞(27) 收藏(0)
问候 Stackoverflownians 的朋友们,
我正在开发一个 Eclipse RCP 应用程序,其中也是标准的Project Explorer View
.
我需要向 a 添加几个属性,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
?
任何帮助/意见表示赞赏!
我已经成功地将一个属性添加到现有的IProject
,尽管它没有实现IPropertySource
(因此能够通过子类化和覆盖getPropertyDescriptors
和getPropertyValue
方法来添加一些功能。
感谢 greg-449 我能够理解从( 扩展)中StandardPropertiesAdapterFactory
创建的功能ResourcePropertySource
IProject
IResource
因此,解决所有这些问题的一种方法是使用 的子类AdvancedPropertySection
来显示IProject
的属性......
这是 kewd:
我将 的ProjectExplorer
视图 ID 与TabDescriptorProvider
in链接起来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 "";
}
}
}
还有它Section
本身:
public class AuxiliaryProjectSection extends AdvancedPropertySection {
@Override
public void setInput(IWorkbenchPart part, ISelection selection) {
if (selection instanceof StructuredSelection) {
Object firstElement = ((StructuredSelection)selection).getFirstElement();
if (firstElement instanceof IProject) {
final IProject theProject = (IProject) firstElement;
ISelection selection2 = new StructuredSelection(new ResourcePropertySource(theProject) {
@Override
public IPropertyDescriptor[] getPropertyDescriptors() {
ArrayList<IPropertyDescriptor> arrayList = new ArrayList<IPropertyDescriptor>();
IPropertyDescriptor[] array = {new PropertyDescriptor("ID-ul", "Labelul")};
arrayList.addAll(Arrays.asList(super.getPropertyDescriptors()));
arrayList.addAll(Arrays.asList(array));
return arrayList.toArray(new IPropertyDescriptor[0]);
}
@Override
public Object getPropertyValue(Object id) {
if (id.equals("ID-ul"))
return "Silly Value";
else
return super.getPropertyValue(id);
}
});
super.setInput(part, selection2);
} else {
super.setInput(part, selection);
}
}
}
}
再次感谢,格雷格!
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/684997/27f931bc0225d01a176d/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!