gpt4 book ai didi

java - 如何检查项目是否包含启动快捷方式的特定文件

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:20 25 4
gpt4 key购买 nike

基本上,我想启用我的 LaunchShortcuts仅当项目具有特定性质并包含特定文件时。项目的性质不是问题。但是,我不知道如何检查项目是否包含特定文件。到目前为止,我在 plugin.xml 中有以下代码:

<contextualLaunch>
<enablement>
<with variable="selection">
<count value="1"/>
<iterate>
<adapt type="org.eclipse.core.resources.IResource">
<test property="org.eclipse.core.resources.projectNature"
value="my.project.nature" />
</adapt>
</iterate>
</with>
</enablement>
</contextualLaunch>

是否可以检查项目是否包含特定文件?

更新:

@greg-449 在下面的 1 条评论中给了我关于使用自定义 org.eclipse.core.expressions.propertyTesters 的重要提示。所以,现在我的代码如下所示:

.
.
.
<extension point="org.eclipse.core.expressions.propertyTesters">
<propertyTester
id="my.tester"
type="org.eclipse.core.resources.IResource"
namespace="my.namespace"
properties="myProperty"
class="my.MyTester">
</propertyTester>
</extension>
.
.
.
<contextualLaunch>
<enablement>
<with variable="selection">
<count value="1"/>
<iterate>
<adapt type="org.eclipse.core.resources.IResource">
<and>
<test property="org.eclipse.core.resources.projectNature"
value="my.project.nature" />
<test property="my.namespace.myProperty"
value="true"/>
</and>
</adapt>
</iterate>
</with>
</enablement>
</contextualLaunch>

这是MyTester的代码:

public class MyTester extends PropertyTester {
private static final String PROPERTY_NAME = "myProperty";

@Override
public boolean test(Object receiver, String property, Object[] arg2, Object expectedValue) {
if (property.equals(PROPERTY_NAME) && receiver instanceof IProject) {
return FileUtil.containsSpecificFile((IProject) receiver);
}
return false;
}
}

但是这个方法似乎行不通。调试时永远不会调用 MyTester.test() 。有任何想法吗?

最佳答案

该技巧与使用forcePluginActivation相结合。这定义了应该激活定义属性测试器的插件。如果未激活,则无法进行属性测试。所以,代码的最终版本应该看起来很smth。像这样:

<contextualLaunch>
<enablement>
<with variable="selection">
<count value="1"/>
<iterate>
<adapt type="org.eclipse.core.resources.IResource">
<and>
<test property="org.eclipse.core.resources.projectNature"
value="my.project.nature" />
<test property="my.namespace.myProperty"
forcePluginActivation="true"/>
</and>
</adapt>
</iterate>
</with>
</enablement>
</contextualLaunch>

注意:引用 documentation ,

forcePluginActivation - 一个标志,指示是否应在必要时加载提供属性测试器的插件。因此,应谨慎使用此标志,以避免不必要的插件激活。大多数客户端应避免将此标志设置为 true。仅当用于计算此表达式的计算上下文允许插件激活时,才会使用此标志。否则该标志将被忽略并且不会发生插件加载。

关于java - 如何检查项目是否包含启动快捷方式的特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27688010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com