2017-02-14 28 views
0

私はCheckStateChangedEvent.ContainerCheckedTreeViewerを使用して私のカスタムタイプmy.application.Termorg.eclipse.swt.widgets.Treeを視覚化するEclipseビューを開発しています。 Termは、org.eclipse.emf.ecore.EObjectに拡張されたインターフェイスです。EclipseはvisibleWhenを使用して特定のタイプのコンテキストメニューを表示します

Termをクリックした場合にのみ、いくつかのコマンドを含むコンテキストメニューを表示したいとします。

<menuContribution 
    locationURI="popup:my.application.View"> 
    <command 
     commandId="my.application.renameterm" 
     tooltip="Rename this term"> 
     <visibleWhen 
      checkEnabled="false"> 
      <with variable="activeMenuSelection"> 
       <iterate 
        ifEmpty="false"> 
        <instanceof value="my.application.Term"/> 
       </iterate> 
      </with> 
     </visibleWhen> 
    </command> 
</menuContribution> 

私は<iterate>要素またはcheckEnabledを残してのようないくつかのことを試してみました。しかし、私が試しているものとは関係なく、Termをクリックしたときだけでなく、私のビュー内を右クリックするたびにコンテキストメニューが表示されます。

私はここで何が欠けていますか?

答えて

0

activeMenuSelectionを使用するには、ツリーがビューの選択プロバイダである必要があります。

providerISelectionProviderを実装
getSite().setSelectionProvider(provider); 

:あなたはでこれを設定します。 JFace TreeViewerはすでにISelectionProviderを実装していますので、通常これが使用されています。あなたがちょうどTreeを使用している場合は、あなた自身で書く必要があります。

+0

私の質問でその詳細を忘れているかもしれませんが(ちょうど追加しました)、私はすでに 'TreeViewer'である' org.eclipse.ui.dialogs.ContainerCheckedTreeViewer'を使用しています。 – Stephan

+0

そして 'setSelectionProvider'を呼び出しましたか?あなたのツリーコンテンツプロバイダは、ツリーのオブジェクトとして何を返しますか? 'instanceof'によってテストされるのはこれらのオブジェクトですか? –

関連する問題