/**
   * Creates the tree viewer.
   *
   * @param parent the parent composite
   * @return the tree viewer
   */
  protected CheckboxTreeViewer createTreeViewer(Composite parent) {
    fViewer = new CheckboxTreeViewer(parent, SWT.BORDER);

    fViewer.setContentProvider(fContentProvider);
    fViewer.setLabelProvider(fLabelProvider);
    fViewer.addCheckStateListener(
        new ICheckStateListener() {
          public void checkStateChanged(CheckStateChangedEvent event) {
            updateOKStatus();
          }
        });

    fViewer.setComparator(new ResourceComparator(ResourceComparator.NAME));
    if (fFilters != null) {
      for (int i = 0; i != fFilters.size(); i++) fViewer.addFilter((ViewerFilter) fFilters.get(i));
    }

    fViewer.setInput(fInput);

    return fViewer;
  }