0
我无法在Eclipse ViewPart中为ContainerCheckedTreeViewer设置初始输入。我在createPartControl
方法中设置了初始输入,但内容不呈现/可见。这只是创建视图时的一个问题(例如Eclispe首次启动/首次打开视图)。在视图完全初始化之后设置输入(例如通过oberservable),并且树被正确渲染。为ContainerCheckedTreeViewer设置初始输入
这是我的部分createPartControl
方法不起作用和update
方法工作。
private ContainerCheckedTreeViewer viewer;
//...
@Override
public void createPartControl(Composite parent) {
//Optional<ModelObject> data = null;
//Setting data
//...
contentProvider = new ViewContentProvider(viewer);
viewer = new ContainerCheckedTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
viewer.setContentProvider(contentProvider);
viewer.setLabelProvider(new DefaultEObjectLabelProvider());
viewer.addCheckStateListener(this);
viewer.setSorter(null);
if(data.isPresent()){
viewer.setInput(data); //This is actually called, breakpoint is hit, data looks ok
}
viewer.expandAll();
//doing other stuff
}
@Override
public void update(Observable o, Object arg) {
if (arg instanceof ModelObject){
viewer.setInput(arg); //This works...
}
}
我错过了什么或者是有一些其他的方法,在早期应该被用来设置默认数据ViewPart时的生命周期?
当然你的contentprovider希望你的数据是正确的。 – SomeDude
当然,当你传递其他东西时,它不会抛出。 – jasper