TableItem[] items= fList.getItems(); for (int i= 0; i != fFoldedCount; i++) { TableItem item= items[i]; Label label= fLabels[fFilteredIndices[fFoldedIndices[i]]];  item.setText(label.string); item.setImage(label.image); }  if (fList.getItemCount() > 0) fList.setSelection(0);  fList.setRedraw(true); fList.notifyListeners(SWT.Selection, new Event());
if (fUpdateThread != null) fUpdateThread.requestStop(); fUpdateThread= new UpdateThread(new TableUpdater(fList, fFoldedCount)); fUpdateThread.start();
	private void updateList() {		if (fList.isDisposed())			return;					fList.setRedraw(false);				// resize table		int itemCount= fList.getItemCount();		if (fFoldedCount < itemCount)			fList.remove(0, itemCount - fFoldedCount - 1);		else if (fFoldedCount > itemCount)			for (int i= 0; i != fFoldedCount - itemCount; i++)				new TableItem(fList, SWT.NONE);		// fill table		TableItem[] items= fList.getItems();		for (int i= 0; i != fFoldedCount; i++) {			TableItem item= items[i];			Label label= fLabels[fFilteredIndices[fFoldedIndices[i]]];						item.setText(label.string);			item.setImage(label.image);		}		// select first item if any		if (fList.getItemCount() > 0)			fList.setSelection(0);					fList.setRedraw(true);				fList.notifyListeners(SWT.Selection, new Event());	}