private void createProjectViewerField(Composite parent) {
    projectViewer = new WorkspaceViewer(parent, SWT.BORDER);
    projectViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
    projectViewer.getViewer().addFilter(getFilter());
    projectViewer
        .getViewer()
        .addSelectionChangedListener(
            new ISelectionChangedListener() {

              @Override
              public void selectionChanged(SelectionChangedEvent event) {
                String targetLocation = null;
                IStructuredSelection selection =
                    (IStructuredSelection) projectViewer.getSelectionProvider().getSelection();
                if (selection.getFirstElement() == null
                    || !(selection.getFirstElement() instanceof IContainer)) {
                  setErrorMessage(SELECT_THE_LOCATION_OF_THE_GENERATED_PAGE);
                } else {
                  setErrorMessage(null);
                  IContainer container = ((IContainer) selection.getFirstElement());
                  targetLocation = container.getFullPath().toString();
                  getModel().setTargetLocation(targetLocation);
                }
                checkPageStatus();
              }
            });
    projectViewer.getViewer().expandToLevel(2);
  }