独自の問題ビューを作成しようとしています。
次のチュートリアルを見つけましたが、すべて正常に動作します。
しかし、独自のDoubleClickListenerなどを追加する可能性はありますか?
リストで実行されるユーザーアクションに反応したい。
アドバイスをありがとう。
独自の問題ビューを作成しようとしています。
次のチュートリアルを見つけましたが、すべて正常に動作します。
しかし、独自のDoubleClickListenerなどを追加する可能性はありますか?
リストで実行されるユーザーアクションに反応したい。
アドバイスをありがとう。
これが私がすることです:
オーバーライド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
}
}
});
}
}
最善の解決策ではなく、許容できる方法を見つけました。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 ...
}
}
}
});