0

私が書いているEclipseプラグインでは、エディターで現在選択されている行のコンテンツに応じて、ポップアップメニューの貢献を表示または非表示にできるようにしたいと考えています。

これを実現するために、プロパティ テスターを使用します。プロパティ テスターに​​よって実行されるテストには少し時間がかかる場合があります (~ 200 ミリ秒) が、ポップアップ メニューが表示されるのを待つ場合には問題ありません。

ただし、ポップアップが表示されようとしているときにプロパティテスターが呼び出されるだけでなく、エディターでテキストをマークするとすぐに呼び出され、テキストの選択が非常に遅くて煩わしいことに気付きました。

質問は次のとおりです。ポップアップが表示されようとしているときだけでなく、テキストを選択/マークするときに呼び出されるのはなぜですか?どうすればそれを回避できますか?

これは、プロパティ テスターとメニューをセットアップした方法です。

<extension
     point="org.eclipse.core.expressions.propertyTesters">
  <propertyTester 
        class="popupmenucontribtest.PropertyTester"
        id="PopupMenuContribTest.test1"
        namespace="PopupMenuContribTest.propertyTester"
        properties="propertyTester1"
        type="java.lang.Object">
  </propertyTester>

<extension
     point="org.eclipse.ui.menus">
<menuContribution
        allPopups="false"
        locationURI="popup:org.eclipse.ui.popup.any?after=additions">
     <command
           commandId="PopupMenuContribTest.command"
           label="My Popup Option"
           style="push">
        <visibleWhen
              checkEnabled="false">
           <and>
              <test
                 forcePluginActivation="true"
                 property="PopupMenuContribTest.propertyTester.propertyTester1">
              </test>
           </and>
        </visibleWhen>
     </command>
  </menuContribution>

ありがとう!

4

1 に答える 1

0

定義で 属性java.lang.Objectを使用して、 のインスタンスごとにプロパティ テスターが呼び出されるように指定しました。typeこれを、エディターのより具体的なスーパー クラスに制限します。リソースに制限されているこの例を参照してください。

とはいえ、200 ミリ秒のプロパティ テスト期間は、ユーザーがそのような遅延に気付くため、受け入れられません。

于 2013-02-08T05:07:48.410 に答える