Como atualizar o plug-in do Eclipse View
Eu criei uma visão simples baseada no tutorial de visualização de plug-in do eclipse. Eu adicionei funcionalidade que permite que meu plugin escute as alterações no depurador. Meu problema é que toda vez que algo no depurador acontece, quero que minha visualização seja atualizada e atualizada com novas informações. Aqui está o que eu tenho / o que estou tentando:
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());
....
}
Então, basicamente, eu tenho toda essa lógica de escuta de depuração no topo, o que acontece dentro dessa instrução if. Eu sei de fato que meu programa entra lá. Everytime somethign changes Eu quero atualizar minha visão, e eu tentei fazer viewer.refresh, que não funciona. As informações exibidas pela minha exibição são baseadas no objeto dataCollection, de modo que a linha com o dataCollection.add ... é apenas eu adicionando dados manualmente, como se o depurador fizesse alguma coisa. Se eu colocar essa linha fora da instrução if, então minha view funciona (eu acho que esta é apenas a construção original da view quando eu inicio o plugin pela primeira vez), mas quando eu a coloco dentro da declaração if ela não funciona , o que significa que minha visão nunca é atualizada.
Obrigado por qualquer ajuda.