Eclipse プラグイン ビュー チュートリアルに基づいて、簡単なビューを作成しました。プラグインがデバッガーの変更をリッスンできるようにする機能を追加しました。私の問題は、デバッガーで何かが発生するたびに、ビューを更新して新しい情報で更新することです。ここに私が持っているもの/私が試しているものがあります:
public void createPartControl(Composite parent) {
listener = new DebugContextListener(this);
DebugUITools.getDebugContextManager().addDebugContextListener(listener);
// Check if there is an already started debug context
IAdaptable dc = DebugUITools.getDebugContext();
if (dc != null) {
dataCollection.add(new ProxyScope("hi")); // manually injecting data
Object o = dc.getAdapter(IStackFrame.class);
if (o instanceof IStackFrame)
setStackFrame((IStackFrame) o);
viewer.refresh(); // this doesn't work
}
viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
// Set column lines visible, and create two columns
Tree tree = viewer.getTree();
tree.setHeaderVisible(true);
tree.setLinesVisible(true);
TreeColumn column1 = new TreeColumn(tree, SWT.LEFT);
column1.setText("Name");
column1.setWidth(400);
TreeColumn column2 = new TreeColumn(tree, SWT.LEFT);
column2.setText("Value");
column2.setWidth(200);
drillDownAdapter = new DrillDownAdapter(viewer);
viewer.setContentProvider(new VariableViewContentProvider());
viewer.setLabelProvider(new VariableViewLabelProvider());
viewer.setSorter(new ViewerSorter());
viewer.setInput(getViewSite());
....
}
基本的に、このデバッグ リスニング ロジックはすべて上部にあり、if ステートメント内で発生します。私のプログラムがそこに入るという事実を私は知っています。何かが変わるたびに、ビューを更新したいのですが、viewer.refresh を実行しようとしましたが、うまくいきません。ビューに表示される情報は、dataCollection オブジェクトに基づいているため、dataCollection.add... の行は、デバッガーが何かを行ったかのように手動でデータを追加するだけです。その行を if ステートメントの外に置くと、ビューは機能します (これは、プラグインを最初に起動したときのビューの元の構成にすぎないと思います) が、if ステートメントの中に入れると機能しません。 、私のビューが更新されないことを意味します。
助けてくれてありがとう。