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