2011-08-14 46 views
2

我能夠通過使用PropertyTester:如何確定右鍵單擊項目類型?

<instanceof value="org.eclipse.core.resources.IProject"/> 
<test property="org.eclipse.core.resources.projectNature" 
     value="org.eclipse.wst.jsdt.core.jsNature"/> 

的彈出菜單命令來檢查項目類型我想爲e.g,然後相應地顯示我的菜單項。但是,有一些複雜的條件需要檢查,因此我被要求使用Property Tester。下面是plugin.xml中提取:

<with variable="selection"> 
    <test forcePluginActivation="true" 
     property="testWizard.propertyTester.checkFolder"/> 

<extension 
     point="org.eclipse.core.expressions.propertyTesters"> 
    <propertyTester 
      class="testwizard.wizards.MyPropTester" 
      id="MyPropTester" 
      namespace="testWizard.propertyTester" 
      properties="checkFolder" 
      type="org.eclipse.core.resources.IProject"> 
    </propertyTester> 
    </extension> 

...和PropertyTester java代碼:

package testwizard.wizards; 

import org.eclipse.core.internal.propertytester.ResourcePropertyTester; 
import org.eclipse.core.resources.IResource; 

@SuppressWarnings("restriction") 
public class MyPropTester extends ResourcePropertyTester { 

    @Override 
    public boolean test(Object receiver, String property, Object[] args, 
      Object expectedValue) { 

     IResource res = (IResource) receiver; 

     if(res instanceof IProject) 
     { 
      return true; 
     } 
     return false; 
    } 

} 

我非常新的使用性能測試儀,我會很感激,如果有人可以指導我的錯誤在哪裏。

+1

如果您希望您的問題更具可讀性,請閱讀http://stackoverflow.com/editing-help。目前,您已將所有內容放入一個「代碼」塊中。 –

+0

感謝您的鏈接... – Abbas

+0

找到解決方案:您需要定義一個屬性測試器,如前所述,並使用 <測試屬性=「org.eclipse.core.resources.projectNature」value =「org.eclipse.wst。 jsdt.core.jsNature「/>,此處的值充當Property Tester類的測試方法中的期望值,然後使用IProject項目=(IProject)接收器; if(project.hasNature(expectedValue.toString()))返回true; – Abbas

回答

2

找到了解決辦法:你需要定義一個屬性測試儀作爲前給予和使用

<test property="org.eclipse.core.resources.projectNature" value="org.eclipse.wst.jsdt.core.jsNature"/>, 這裏的值作爲在性能測試儀類的測試方法的預期值,然後用

IProject project=(IProject)receiver; 
if(project.hasNature(expectedValue.toString())) return true;