@Override
        public void replaceAllChildren(List<T> values, SelectionModel<? super T> selectionModel,
                                       boolean stealFocus) {
            SafeHtml html = renderRowValues(values, hasData.getPageStart(), selectionModel);

            // Removing elements can fire a blur event, which we ignore.
            hasData.isFocused = hasData.isFocused || stealFocus;
            wasFocused = hasData.isFocused;
            hasData.isRefreshing = true;
            hasData.replaceAllChildren(values, html);
            hasData.isRefreshing = false;

            // Ensure that the keyboard selected element is focusable.
            Element elem = hasData.getKeyboardSelectedElement();
            if (elem != null) {
                hasData.setFocusable(elem, true);
                if (hasData.isFocused) {
                    hasData.onFocus();
                }
            }

            fireValueChangeEvent();
            View.this.hasData.fireEvent(new RedrawEvent());
        }
Implementation of {@link HasDataPresenter.View} used by this widget.

@param <T> the data type of the view
stroom-core-client-widget/src/main/java/com/google/gwt/user/cellview/client/AbstractHasData.java