Eclipse 动态菜单分配-获取警告
我正在使用dynamicEclipse 动态菜单分配-获取警告,eclipse,plugins,warnings,Eclipse,Plugins,Warnings,我正在使用dynamicMenuContribution并收到一条警告,提示我的两个引用标识符“找不到”。尽管这一贡献起了作用。这些警告使我感到厌烦 我在我的一个插件中定义了一个CompoundContributionItem实现。基本上是这样的: public class ViewerHistoryMenuItems extends CompoundContributionItem implements IExecutableExtension { private stat
MenuContribution
并收到一条警告,提示我的两个引用标识符“找不到”。尽管这一贡献起了作用。这些警告使我感到厌烦
我在我的一个插件中定义了一个CompoundContributionItem
实现。基本上是这样的:
public class ViewerHistoryMenuItems extends CompoundContributionItem
implements IExecutableExtension {
private static final String PARAM_TYPE = "type";
private static final String PARAM_COMMAND = "command";
// some fields
public void setInitializationData(final IConfigurationElement config,
final String propertyName, final Object data) {
/* set fields */
}
protected final IContributionItem[] getContributionItems() {
/* create Items */
}
}
在其他插件中,我通过声明以下内容来使用这个ContributionItem
实现:
<menuContribution locationURI="menu:mylocationUri">
<dynamic id="myId">
<class class="ViewerHistoryMenuItems">
<parameter
name="type"
value="someValue">
</parameter>
<parameter
name="command"
value="someCommandId">
</parameter>
</class>
</dynamic>
<command
commandId="someCommandId"
icon="anIcon.png">
</command>
</menuContribution>
我错过了什么?有什么想法吗,为什么我会收到这个警告
PS:将两个字段
PARAM_类型
和PARAM_命令
public设置为公共字段没有帮助,我认为这与类中存在内部字段无关
如果您看到类似的错误(不相同,因为它包括annotationType
),则更正涉及所述参考标识符的定义:
Referenced identifier 'com.atlassian.connector.eclipse.cruicible.ui.comment.annotation'
in attribute 'annotationType' cannot be found
固定为:
+ <extension
+ point="org.eclipse.ui.editors.annotationTypes">
+ <type
+ markerType="com.atlassian.connector.eclipse.crucible.ui.com.atlassian.connector.eclipse.cruicible.ui.comment.marker"
+ name="com.atlassian.connector.eclipse.cruicible.ui.comment.annotation">
+ </type>
+ </extension>
+ <extension
+ id="com.atlassian.connector.eclipse.cruicible.ui.comment.marker"
+ point="org.eclipse.core.resources.markers">
+ </extension>
可执行扩展或命令的参数——取决于它在扩展中的位置
- 名称-名称是要传递给可执行扩展的参数的名称,或者是命令参数的标识符
- 值-此参数要传递的值
您需要在name属性中引用您的
plugin.xml
中其他地方的id,当然可以,VonC。我们开始:
在动态声明(见上文)中有两个参数引用
<parameter
name="type"
value="someValue">
</parameter>
<parameter
name="command"
value="someCommandId">
</parameter>
这两个参数要传递给命令本身。命令声明在同一plugin.xml中,但是没有声明这两个commandParameters
我所做的是添加这些缺少的commandParameters,解决缺少的引用,这在警告中得到了明确的说明
<command
categoryId="aCategory"
id="someCommandId"
name="%theName">
<commandParameter
id="type"
name="type"/>
<commandParameter
id="command"
name="command">
</commandParameter>
</command>
因此,你说的“更正涉及到所述参考标识符的定义”是绝对正确的。问题只是在哪里和我必须定义什么。
我想,我没有考虑这个例子中最明显的参数。它说“名称或者是参数的名称…”所以我想我使用了它,并将一个参数称为“type”,另一个参数称为“command”。但是我想,我必须更多地考虑你深刻的答案,VonC。@pimpf0r:就是这样:我不确定“参数名”是否可以引用任何内部字段类。在声明模式下,例如
plugin.xml
,我希望参数在所述plugin.xml
中的其他地方定义好,我想我找到了“其他地方”。本例中的其他地方指:定义/声明引用命令的位置。我在动态声明中引用了同一plugin.xml中的命令。但是添加的参数没有在那里声明。谢谢你的帮助,沃克。high5@pimpf0r:谢谢你的反馈。您能否将您需要添加到plugin.xml
中以解决此问题的内容发布为答案?
<parameter
name="type"
value="someValue">
</parameter>
<parameter
name="command"
value="someCommandId">
</parameter>
<command
categoryId="aCategory"
id="someCommandId"
name="%theName">
<commandParameter
id="type"
name="type"/>
<commandParameter
id="command"
name="command">
</commandParameter>
</command>