/** * Create the checkbox list for the found projects. * * @param workArea */ private void createProjectsList(Composite workArea) { Label title = new Label(workArea, SWT.NONE); title.setText(UIText.WizardProjectsImportPage_ProjectsListTitle); Composite listComposite = new Composite(workArea, SWT.NONE); GridLayout layout = new GridLayout(); layout.numColumns = 2; layout.marginWidth = 0; layout.makeColumnsEqualWidth = false; listComposite.setLayout(layout); listComposite.setLayoutData( new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH)); PatternFilter filter = new PatternFilter() { @Override public boolean isElementVisible(Viewer viewer, Object element) { if (getCheckedProjects().contains(element)) return true; return super.isElementVisible(viewer, element); } }; FilteredCheckboxTree filteredTree = new FilteredCheckboxTree(listComposite, null, SWT.NONE, filter); filteredTree.setInitialText(UIText.WizardProjectsImportPage_filterText); projectsList = filteredTree.getCheckboxTreeViewer(); GridData listData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH); projectsList.getControl().setLayoutData(listData); projectsList.addCheckStateListener( new ICheckStateListener() { public void checkStateChanged(CheckStateChangedEvent event) { ProjectRecord element = (ProjectRecord) event.getElement(); if (isProjectInWorkspace(element.getProjectName())) { projectsList.setChecked(element, false); } enableSelectAllButtons(); } }); // a bug in the CachedCheckboxTreeView requires us to not return null final Object[] children = new Object[0]; projectsList.setContentProvider( new ITreeContentProvider() { public Object[] getChildren(Object parentElement) { return children; } public Object[] getElements(Object inputElement) { return selectedProjects; } public boolean hasChildren(Object element) { return false; } public Object getParent(Object element) { return null; } public void dispose() { // ignore } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // ignore } }); projectsList .getTree() .addSelectionListener( new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { checkPageComplete(); } }); projectsList.setLabelProvider(new ProjectLabelProvider()); projectsList.setInput(this); projectsList.setComparator(new ViewerComparator()); createSelectionButtons(listComposite); }