Bug 29896 M4 Usability issue when defining link exclusion filters [build path]
Consider the following scenarios that can occur when defining exclusion filters for source file links in a single rooted tree. For all scenarios assume that up to 100 directories may need to be dealt with. 1. A source path should include a single directory. In this case you could have up to 99 directories that need to be excluded. With the current implementation each directory will need to be specified individually which is very tedious and error prone. 2. A source path should contain half the visible directories. Here it will be necessary to individually select the directories to be excluded individually, resulting in 50 invocations of the exclusion filter dialog. Again this is tedious and error prone. One possibility to make the process of defining the contents of a linked source tree easier would be to allow multiple selection of directories so that all directories at the same level in the tree could be selected with a single interaction. Another possibility would be to be able to specify whether a selected directory or file was to be excluded or included. This would be particularly convenient when only one or two directories are to be included in a source path and a large candidate search path exists. The basic problem is that the current UI mechanisms do not scale well to large existing code bases. Regards Jonathan Gossage
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ExclusionPatternDialog.java
private static class ExclusionPatternLabelProvider extends LabelProvider {
				
		public Image getImage(Object element) {
			ImageDescriptorRegistry registry= JavaPlugin.getImageDescriptorRegistry();
			return registry.get(JavaPluginImages.DESC_OBJS_EXCLUSION_FILTER_ATTRIB);
		}
		public String getText(Object element) {
			return (String) element;
		}
	}
	
	
	private ListDialogField fExclusionPatternList;
	private CPListElement fCurrElement;
	private IProject fCurrProject;
	
	private static final int IDX_ADD= 0;
	private static final int IDX_EDIT= 1;
	private static final int IDX_REMOVE= 3;
	
		
	public ExclusionPatternDialog(Shell parent, CPListElement entryToEdit) {
		super(parent);
		fCurrElement= entryToEdit;
		setTitle(NewWizardMessages.getString("ExclusionPatternDialog.title"));