1

Eclipseプラグインとして画像エディタを構築しています。

プロパティビューを使用して、画像の下にあるモデルのプロパティを表示および編集したいと思います。したがって、私は呼んでいます..

getSite().setSelectionProvider( this );

.. createPartControl内で、EditorPart実装にISelectionProviderインターフェイスを実装します。これにより、モデルが選択として返されます(したがって、ISelectionインターフェイスを実装する必要があります)。

次のステップは、エディターがIAdaptableを実装して、選択したオブジェクトのアダプターを提供することです。

ただし、私の問題は、getAdapterがIPropertySource.classで呼び出されないため、プロパティビューが画像モデルを理解するために必要なものを取得できないことです。

あなたの助けは大歓迎です。

M。

4

1 に答える 1

2

答えは最終的にいくつかの断片に分解されました...

1.) 選択内容が変更された場合 (たとえば、ユーザーが画像を拡大した場合)、必ず Eclipse にこれを伝えてください。そうでなければ起こりません。

2.) SelectionChangedEvent を送信するときは、IAdaptable を StructuredSelection オブジェクトでラップします。そうしないと、Properties ビューはそれを無視します。

これは、次の方法に要約されました

public void fireSelectionChanged()
{
    final SelectionChangedEvent event = new SelectionChangedEvent( this, new StructuredSelection( this  ) );
    Object[] listeners = selectionChangedListeners.getListeners();
    for (int i = 0; i < listeners.length; ++i) 
    {
        final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
        SafeRunnable.run(new SafeRunnable() {
            public void run() {
                l.selectionChanged( event );
            }
        });
    }
}

... ISelectionProvider と IAdaptable を実装したクラスで。

M.

于 2009-05-05T10:18:10.450 に答える