So aktualisieren Sie das Eclipse View-Plugin
Ich habe eine einfache Ansicht basierend auf dem Tutorial zur Eclipse-Plugin-Ansicht erstellt. Ich habe Funktionen hinzugefügt, mit denen mein Plugin Änderungen im Debugger abhören kann. Mein Problem ist, jedes Mal, wenn etwas im Debugger passiert, möchte ich, dass meine Ansicht aktualisiert und mit neuen Informationen aktualisiert wird. Folgendes habe ich / was ich versuche:
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());
....
}
Im Grunde habe ich all diese Debug-Listening-Logik oben, die in dieser if-Anweisung vorkommt. Ich weiß, dass mein Programm dort ankommt. Jedes Mal, wenn sich etwas ändert, möchte ich meine Ansicht aktualisieren, und ich habe versucht, viewer.refresh auszuführen, was nicht funktioniert. Die Informationen, die meine Ansicht anzeigt, basieren auf dem dataCollection-Objekt. In dieser Zeile mit der dataCollection.add ... füge ich Daten nur manuell hinzu, als ob der Debugger etwas getan hätte. Wenn ich diese Zeile außerhalb der if-Anweisung setze, funktioniert meine Ansicht (ich vermute, dies ist nur die ursprüngliche Konstruktion der Ansicht, wenn ich das Plugin zum ersten Mal starte), aber wenn ich sie innerhalb der if-Anweisung setze, funktioniert sie nicht Das heißt, meine Ansicht wird nie aktualisiert.
Vielen Dank für jede Hilfe.