0

私はEclipseプラグインを構築しており、タイプAの要素の構造を表示するツリー表現があります(以下を参照)。

Class A{
  List<B> children;
}

Abstract Class B{
  ...
}

Class C extend B{
  ...
}

Class D extend B{
  ...
}

3つのうち選択した要素がAのインスタンスである場合にのみ開始できるコマンドがあります。これは、私が使用している式です。

<extension point="org.eclipse.core.expressions.definitions">
  <definition id="SelectionOfA">
    <with variable="selection">
      <and>
        <count value="1"></count>
        <iterate ifEmpty="false" operator="or">
          <instanceof value="A"></instanceof>
        </iterate>
      </and>
    </with>
  </definition>
</extension>

ここで、この条件を改善したいと思います。Aのインスタンスが選択され、リストの子に少なくともCのインスタンスである要素が含まれている場合にのみ、コマンドを有効にします。この式を保持し、新しい式を定義してみました。次に、両方の式が真の場合にのみコマンドを有効にします。instanceof上記の式から始めて、タグをタグwithに置き換えようとしましたがiterateadapt良い結果は得られませんでした。

どうすればいいですか?

4

1 に答える 1

3

条件が満たされているかどうかを確認するために、プロパティテスターを実装します。

このような何かが仕事をするはずです:

public class YourConditionTester extends PropertyTester {
  public boolean test(final Object receiver, final String property, final Object[] args, final Object expectedValue) {
    if (property.equals("isA_and_hasC")) {
      return (true if your condition is met, otherwise false)
    }
    return false;
  }
}

次に、set(eg)を"isA_and_hasC"に設定してinstanceof使用testする代わりに。property

プロパティテスターの詳細については、こちらをご覧ください。

于 2013-03-26T16:15:07.353 に答える