我想从代码中打开Eclipse CDT项目属性页的特定选项卡。例如,下面的屏幕截图显示了“构建步骤”选项卡上打开的属性页。
以下代码成功打开属性页,但始终是最后访问的选项卡。
private void openProperties(IProject project) {
String ID = "org.eclipse.cdt.managedbuilder.ui.properties.Page_BuildSettings";
org.eclipse.swt.widgets.Shell shell = org.eclipse.swt.widgets.Display.getCurrent().getActiveShell();
org.eclipse.ui.dialogs.PreferencesUtil.createPropertyDialogOn(
shell, project,
ID, null, null, 0)
.open();
}
我不太明白的是,“设置”页面是使用extension point="org.eclipse.ui.propertyPages"
声明的,并且有一个ID。但是使用不包含ID的extension point="org.eclipse.cdt.ui.cPropertyTab"
添加选项卡。那么如何在没有ID的情况下解决标签?
答案 0 :(得分:0)
这只是一个部分解决方案,但希望它有所帮助:
createPropertyDialogOn()
的返回值。这是一个PreferenceDialog
。getSelectedPage()
以获取代表该网页的IPreferencePage
。org.eclipse.cdt.ui.newui.AbstractPage
延伸。 AbstractPage
使用SWT TabFolder
小部件来存储标签。TabFolder
小部件。不幸的是,它没有通过任何公共API公开,所以我认为你的选择是:
TabFolder
存储为名为AbstractPage
的{{1}}的受保护字段。folder
为根的SWT窗口小部件层次结构,其中page.getControl()
为page
,AbstractPage
。TabFolder
和getItemCount()
枚举其项目,其类型为getItem(index)
。TabItem
上,致电TabItem
以检索相关的getData()
。ICPropertyTab
对象以查看它是否是您要激活的对象。在您的情况下,这可能是ICPropertyTab
。tab instanceof org.eclipse.cdt.managedbuilder.ui.properties.BuildStepsTab
激活它。