private VirtualTreeModelViewer initVirtualViewer( TreeModelViewer clientViewer, VirtualViewerListener listener) { Object input = clientViewer.getInput(); ModelDelta stateDelta = new ModelDelta(input, IModelDelta.NO_CHANGE); clientViewer.saveElementState(TreePath.EMPTY, stateDelta, IModelDelta.EXPAND); listener.fRemainingUpdatesCount = calcUpdatesCount(stateDelta); VirtualTreeModelViewer fVirtualViewer = new VirtualTreeModelViewer( clientViewer.getDisplay(), SWT.NONE, clientViewer.getPresentationContext()); fVirtualViewer.setFilters(clientViewer.getFilters()); fVirtualViewer.addViewerUpdateListener(listener); fVirtualViewer.addLabelUpdateListener(listener); String[] columns = clientViewer.getPresentationContext().getColumns(); fVirtualViewer.setInput(input); if (fVirtualViewer.canToggleColumns()) { fVirtualViewer.setShowColumns(clientViewer.isShowColumns()); fVirtualViewer.setVisibleColumns(columns); } fVirtualViewer.updateViewer(stateDelta); return fVirtualViewer; }