2

独自の問題ビューを作成しようとしています。
次のチュートリアルを見つけましたが、すべて正常に動作します。

しかし、独自のDoubleClickListenerなどを追加する可能性はありますか?
リストで実行されるユーザーアクションに反応したい。

アドバイスをありがとう。

4

2 に答える 2

0

これが私がすることです:

オーバーライドpublic void createPartControl(final Composite parent)すると、親コンポジットが作成されます。parent.getChildren() を呼び出すことで、使用可能なコントロールを反復処理できます。ExtendedMarkersView「デフォルト」コントロールはツリービューアーである MarkersTreeViewer であるため、コントロールはツリーになります。ツリーがあり、必要なリスナーを追加できます。スニペットは次のとおりです。

@Override
public void createPartControl(final Composite parent) {
    super.createPartControl(parent);

    for (final Control control : parent.getChildren()) {
        if (!(control instanceof Tree)) {
            continue;
        }

        tree = (Tree) control;

        final Listener[] listeners = tree.getListeners(SWT.DefaultSelection);
        if (listeners != null) {
            for (final Listener listener : listeners) {
                tree.removeListener(SWT.DefaultSelection, listener);
            }
        }
        tree.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseDoubleClick(final MouseEvent e) {
                if (e.widget instanceof Tree) {
                    final Tree tree = (Tree) e.widget;

                    // do whatever you want
                }
            }

        });
    }
}
于 2012-05-08T11:12:28.003 に答える
0

最善の解決策ではなく、許容できる方法を見つけました。ViewPartでSelectionService
使用し、新しいSelectionListenerを登録します。

私の解決策は、問題ビューでの選択のみを受け入れます。おそらく、イベントを区別するより良い方法があります。

site.getWorkbenchWindow().getSelectionService().addSelectionListener(new ISelectionListener() {
    @Override
    public void selectionChanged(IWorkbenchPart part, ISelection selection) {
        IStructuredSelection s = (IStructuredSelection) selection;

        if (s.getFirstElement() instanceof MarkerItem) {
            MarkerItem marker = (MarkerItem) s.getFirstElement();
            if (marker != null && marker.getMarker() != null) {
                IMarker iMarker = marker.getMarker();

                // More Code here ...
            }
        }
    }
});
于 2012-05-08T15:47:10.603 に答える