Jak odświeżyć wtyczkę Eclipse View
Stworzyłem prosty widok oparty na samouczku widoku wtyczki eclipse. Dodałem funkcjonalność, która pozwala mojej wtyczce na słuchanie zmian w debuggerze. Mój problem polega na tym, że za każdym razem, gdy zdarza się coś w debuggerze, chcę, aby mój widok został odświeżony i zaktualizowany o nowe informacje. Oto co mam / co próbuję:
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());
....
}
Tak więc w zasadzie mam całą tę logikę odsłuchiwania debugowania na górze, co dzieje się wewnątrz instrukcji if. Wiem na pewno, że mój program tam wchodzi. Za każdym razem, gdy coś zmieniam, chcę odświeżyć mój widok i próbowałem zrobić viewer.refresh, który nie działa. Informacje, które wyświetla mój widok, są oparte na obiekcie dataCollection, więc linia z dataCollection.add ... to tylko ręczne dodawanie danych, tak jakby debugger coś zrobił. Jeśli umieściłem tę linię poza instrukcją if, to mój widok działa (domyślam się, że jest to tylko oryginalna konstrukcja widoku po pierwszym uruchomieniu wtyczki), ale kiedy umieściłem go w instrukcji if, nie działa , co oznacza, że mój widok nigdy się nie odświeża.
Dziękuję za pomoc.