Как обновить плагин Eclipse View
Я создал простой вид, основанный на учебном пособии по плагину 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, оно не работает. Это означает, что мой взгляд никогда не обновляется.
Спасибо за любую помощь.