@Override
	private void createFilterTable(Composite parent, final boolean includeFilter) {		Composite tableComposite = new Composite(parent, SWT.NULL);		GridLayout layout = new GridLayout(2, false);		layout.marginHeight = 0;		layout.marginWidth = 0;		tableComposite.setLayout(layout);		tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,				true, 2, 1));		Label titleLabel = new Label(tableComposite, SWT.NULL);		final String title;		if (includeFilter) {			title = getMessage("property.includefilter");		} else {			title = getMessage("property.excludefilter");		}		titleLabel.setText(title);		titleLabel.setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, true,				false, 2, 1));		final TableViewer viewer = new TableViewer(tableComposite, SWT.MULTI				| SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);		viewer.setContentProvider(new BaseWorkbenchContentProvider());		viewer.setLabelProvider(new WorkbenchLabelProvider());		viewer.getControl().setLayoutData(				new GridData(SWT.FILL, SWT.FILL, true, true, 1, 2));		String[] filterFiles;		if (includeFilter) {			filterFiles = currentExtendedPreferences.getIncludeFilterFiles();		} else {			filterFiles = currentExtendedPreferences.getExcludeFilterFiles();		}		//final List<FilePlaceHolder> filters = new ArrayList<FilePlaceHolder>();		final List filters = new ArrayList();		if (filterFiles != null) {			for (int i = 0; i < filterFiles.length; i++) {				filters.add(new FilePlaceHolder(project.getFile(filterFiles[i])));			}		}		viewer.add(filters.toArray());		final Button addButton = new Button(tableComposite, SWT.PUSH);		String addButtonLabel;		if (includeFilter) {			addButtonLabel = getMessage("property.includefilteraddbutton");		} else {			addButtonLabel = getMessage("property.excludefilteraddbutton");		}		addButton.setText(addButtonLabel);		addButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false,				false));		addButton.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(SelectionEvent e) {				FileSelectionDialog dialog = new FileSelectionDialog(addButton						.getShell(), title, ".xml");				dialog.setInput(project);				dialog.setAllowMultiple(true);				if (dialog.open() == ElementTreeSelectionDialog.OK) {					Object[] result = dialog.getResult();					for (int i = 0; i < result.length; i++) {						FilePlaceHolder holder = new FilePlaceHolder((IFile) result[i]);						filters.add(holder);						viewer.add(holder);					}					if (includeFilter) {						currentExtendedPreferences								.setIncludeFilterFiles(filesToStrings(filters));					} else {						currentExtendedPreferences								.setExcludeFilterFiles(filesToStrings(filters));					}				}			}		});		final Button removeButton = new Button(tableComposite, SWT.PUSH);		removeButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false,				true));		String removeButtonLabel;		if (includeFilter) {			removeButtonLabel = getMessage("property.includefilterremovebutton");		} else {			removeButtonLabel = getMessage("property.excludefilterremovebutton");		}		removeButton.setText(removeButtonLabel);		removeButton.setEnabled(false);		removeButton.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(SelectionEvent e) {				Iterator selectionIter = ((IStructuredSelection) viewer						.getSelection()).iterator();				while (selectionIter.hasNext()) {					Object element = selectionIter.next();					FilePlaceHolder holder = (FilePlaceHolder) element;					filters.remove(holder);					viewer.remove(holder);				}				if (includeFilter) {					currentExtendedPreferences							.setIncludeFilterFiles(filesToStrings(filters));				} else {					currentExtendedPreferences							.setExcludeFilterFiles(filesToStrings(filters));				}			}		});		viewer.addSelectionChangedListener(new ISelectionChangedListener() {			public void selectionChanged(SelectionChangedEvent event) {				removeButton.setEnabled(!event.getSelection().isEmpty());			}		});	}