Bug 244011 [Wizards] Import from Filesystem dialog does not always give file-list
Build ID: I20080617-2000 Steps To Reproduce: When using the Eclipse importer from "File system" I encounter two situations where the panes showing directories and files do not repaint without further user actions. Scenario 1: when pasing directory name into "From directory" Scenario 2: after navigating to directory using Browse... button, then clicking Back and Next buttons in sequence The symptom in both cases is that after selecting the directory, I expect to see the folder name in the LH pane and a list of files to choose in the RH pane. Instead they remain blank until further action is taken: In scenario 1: Click in the 'From directory:' field of the Import wizard of the tooling, then Ctrl-V to paste the path into the field. You will see nothing in either pane below the field, even if you press Enter. There are several ways to make files appear: - switch focus to a different application; the left-hand pane will magically be populated. - or: click on one of the 2 panes below. Clicking on the left one populates both panes; clicking on the right pane only populates the left pane. - or: click on Browse... to the right of the field to see the directory highlighted. Click OK and the left pane will be populated. In scenario 2: The directory listing appears when you OK the initial selection of directory. But clicking Back then Next on the wizard leaves you with the "From directory:" still showing the right value, the LH pane populated, but the RH pane empty. More information: I agree it is possible to get the file list to appear and once I have selected files, they do import. However the wizard behaviour could be improved, particularly in the use case when I cut+paste the directory from another application. I have tested this only on Windows XP (SP2). No stack traces were produced here.
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceTreeAndListGroup.java
private boolean isEveryChildrenChecked(Object treeElement) {
        List checked = (List) checkedStateStore.get(treeElement);
        if (checked != null && (!checked.isEmpty())) {
            Object[] listItems = listContentProvider.getElements(treeElement);
        	if (listItems.length != checked.size())
        		return false;
		}
    	Object[] children = treeContentProvider.getChildren(treeElement);
        for (int i = 0; i < children.length; ++i) {
        	if (!whiteCheckedTreeItems.contains(children[i])) {
                if (!treeViewer.getGrayed(children[i]))
                	return false;
        		if (!isEveryChildrenChecked(children[i]))
        			return false;
        	}
        }
		return true;
	}
	/**
     *	Returns a flat list of all of the leaf elements which are checked.
     *
     *	@return all of the leaf elements which are checked. This API does not
     * 	return null in order to keep backwards compatibility.
     */
    public List getAllCheckedListItems() {
        final ArrayList returnValue = new ArrayList();
        IElementFilter passThroughFilter = new IElementFilter() {
            public void filterElements(Collection elements,
                    IProgressMonitor monitor) {
                returnValue.addAll(elements);