Bugfixes for file filters preference page
git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@7581 51baf565-9d33-0410-a72c-fc3788e3496d
This commit is contained in:
pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui
@ -30,8 +30,8 @@ public interface FilterColumnUI {
|
||||
};
|
||||
|
||||
ItemColumnDescriptor<String, FilterHolder> include = new ItemColumnDescriptor<String, FilterHolder>("", " Type", SWT.LEFT, 85, false, includeAcc);
|
||||
ItemColumnDescriptor<String, FilterHolder> pmd = new ItemColumnDescriptor<String, FilterHolder>("", "PMD", SWT.LEFT, 55, false, pmdAcc);
|
||||
ItemColumnDescriptor<String, FilterHolder> cpd = new ItemColumnDescriptor<String, FilterHolder>("", "CPD", SWT.LEFT, 55, false, cpdAcc);
|
||||
ItemColumnDescriptor<String, FilterHolder> pmd = new ItemColumnDescriptor<String, FilterHolder>("", "PMD", SWT.CENTER, 55, false, pmdAcc);
|
||||
ItemColumnDescriptor<String, FilterHolder> cpd = new ItemColumnDescriptor<String, FilterHolder>("", "CPD", SWT.CENTER, 55, false, cpdAcc);
|
||||
ItemColumnDescriptor<String, FilterHolder> pattern = new ItemColumnDescriptor<String, FilterHolder>("", "Pattern", SWT.LEFT, 55, true, patternAcc);
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
|
@ -48,12 +48,13 @@ class FilterHolder {
|
||||
public static Boolean boolValueOf(Collection<FilterHolder> holders, Accessor boolAccessor) {
|
||||
Set<Boolean> values = new HashSet<Boolean>();
|
||||
for (FilterHolder fh : holders) values.add(boolAccessor.boolValueFor(fh));
|
||||
return values.size() == 2 ? null : values.iterator().next();
|
||||
int valueCount = values.size();
|
||||
return (valueCount == 2 || valueCount == 0) ? null : values.iterator().next();
|
||||
}
|
||||
|
||||
public static String textValueOf(Collection<FilterHolder> holders, Accessor textAccessor) {
|
||||
Set<String> values = new HashSet<String>();
|
||||
for (FilterHolder fh : holders) values.add(textAccessor.textValueFor(fh));
|
||||
return values.size() > 1 ? "" : values.iterator().next();
|
||||
return (values.size() == 1) ? values.iterator().next() : "";
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ import java.util.Set;
|
||||
import net.sourceforge.pmd.PropertyDescriptor;
|
||||
import net.sourceforge.pmd.PropertySource;
|
||||
import net.sourceforge.pmd.RuleSet;
|
||||
import net.sourceforge.pmd.eclipse.plugin.PMDPlugin;
|
||||
import net.sourceforge.pmd.eclipse.runtime.preferences.IPreferencesManager;
|
||||
import net.sourceforge.pmd.eclipse.ui.BasicTableLabelProvider;
|
||||
import net.sourceforge.pmd.eclipse.ui.PMDUiConstants;
|
||||
import net.sourceforge.pmd.eclipse.ui.Shape;
|
||||
@ -69,16 +69,31 @@ public class FilterPreferencesPage extends AbstractPMDPreferencePage implements
|
||||
private Text patternField;
|
||||
private BasicTableManager reportTableMgr;
|
||||
|
||||
|
||||
private static Image IncludeIcon;
|
||||
private static Image ExcludeIcon;
|
||||
|
||||
private static final String NewFilterPattern = "<finish this>";
|
||||
private static final RGB ProtoTransparentColour = new RGB(1,1,1); // almost full black, unlikely to be used
|
||||
|
||||
public static Image typeIconFor(FilterHolder holder) {
|
||||
return holder.isInclude ? includeIcon() : excludeIcon();
|
||||
}
|
||||
|
||||
private static Button createButton(Composite panel, int type, String label) {
|
||||
Button butt = new Button(panel, type);
|
||||
butt.setLayoutData( new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1));
|
||||
butt.setText(label);
|
||||
return butt;
|
||||
}
|
||||
|
||||
private static Button createButton(Composite panel, int type, Image image, String tooltip) {
|
||||
Button butt = new Button(panel, type);
|
||||
butt.setLayoutData( new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1));
|
||||
butt.setImage(image);
|
||||
butt.setToolTipText(tooltip);
|
||||
return butt;
|
||||
}
|
||||
|
||||
private static Image includeIcon() {
|
||||
|
||||
if (IncludeIcon != null) return IncludeIcon;
|
||||
@ -153,6 +168,19 @@ public class FilterPreferencesPage extends AbstractPMDPreferencePage implements
|
||||
}
|
||||
return holders.toArray(new FilterHolder[holders.size()]);
|
||||
}
|
||||
|
||||
private List<String> tableFilters(boolean isInclude) {
|
||||
|
||||
List<String> filters = new ArrayList<String>();
|
||||
|
||||
for (TableItem ti : tableViewer.getTable().getItems()) {
|
||||
FilterHolder fh = (FilterHolder)ti.getData();
|
||||
if (fh.isInclude == isInclude) filters.add(fh.pattern);
|
||||
}
|
||||
|
||||
return filters;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the group of priority preferences
|
||||
* @param parent the parent composite
|
||||
@ -193,6 +221,7 @@ public class FilterPreferencesPage extends AbstractPMDPreferencePage implements
|
||||
public void selectionChanged(SelectionChangedEvent event) {
|
||||
IStructuredSelection selection = (IStructuredSelection)event.getSelection();
|
||||
selectedPatterns(filtersIn(selection.toList()));
|
||||
updateControls();
|
||||
}
|
||||
});
|
||||
|
||||
@ -316,21 +345,6 @@ public class FilterPreferencesPage extends AbstractPMDPreferencePage implements
|
||||
});
|
||||
}
|
||||
|
||||
private static Button createButton(Composite panel, int type, String label) {
|
||||
Button butt = new Button(panel, type);
|
||||
butt.setLayoutData( new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1));
|
||||
butt.setText(label);
|
||||
return butt;
|
||||
}
|
||||
|
||||
private static Button createButton(Composite panel, int type, Image image, String tooltip) {
|
||||
Button butt = new Button(panel, type);
|
||||
butt.setLayoutData( new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1));
|
||||
butt.setImage(image);
|
||||
butt.setToolTipText(tooltip);
|
||||
return butt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create buttons for rule table management
|
||||
* @param parent Composite
|
||||
@ -345,9 +359,7 @@ public class FilterPreferencesPage extends AbstractPMDPreferencePage implements
|
||||
composite.setLayout(gridLayout);
|
||||
|
||||
addButton = buildAddButton(composite);
|
||||
addButton.setEnabled(false);
|
||||
removeButton = buildRemoveButton(composite);
|
||||
removeButton.setEnabled(false);
|
||||
|
||||
GridData data = new GridData();
|
||||
addButton.setLayoutData(data);
|
||||
@ -486,7 +498,7 @@ removeButton.setEnabled(false);
|
||||
*/
|
||||
public Button buildAddButton(final Composite parent) {
|
||||
|
||||
Button button = newImageButton(parent, PMDUiConstants.ICON_BUTTON_ADD, StringKeys.PREF_RULESET_BUTTON_ADDRULE);
|
||||
Button button = newImageButton(parent, PMDUiConstants.ICON_BUTTON_ADD, StringKeys.PREF_RULESET_BUTTON_ADDFILTER);
|
||||
|
||||
button.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
@ -497,10 +509,23 @@ removeButton.setEnabled(false);
|
||||
return button;
|
||||
}
|
||||
|
||||
private void addNewFilter() {
|
||||
FilterHolder holder = new FilterHolder("<finish this>", true, false, false);
|
||||
private FilterHolder[] tableFiltersWith(FilterHolder anotherOne) {
|
||||
|
||||
// TODO finish this
|
||||
FilterHolder[] holders = new FilterHolder[ tableViewer.getTable().getItemCount() + (anotherOne == null ? 0 : 1) ];
|
||||
|
||||
TableItem[] items = tableViewer.getTable().getItems();
|
||||
for (int i=0; i<items.length; i++) {
|
||||
holders[i] = (FilterHolder)items[i].getData();
|
||||
}
|
||||
|
||||
if (anotherOne != null) holders[holders.length-1] = anotherOne;
|
||||
|
||||
return holders;
|
||||
}
|
||||
|
||||
private void addNewFilter() {
|
||||
FilterHolder newHolder = new FilterHolder(NewFilterPattern, true, false, false);
|
||||
tableViewer.setInput( tableFiltersWith(newHolder) );
|
||||
}
|
||||
|
||||
/**
|
||||
@ -510,7 +535,7 @@ removeButton.setEnabled(false);
|
||||
*/
|
||||
public Button buildRemoveButton(final Composite parent) {
|
||||
|
||||
Button button = newImageButton(parent, PMDUiConstants.ICON_BUTTON_DELETE, StringKeys.PREF_RULESET_BUTTON_REMOVERULE);
|
||||
Button button = newImageButton(parent, PMDUiConstants.ICON_BUTTON_DELETE, StringKeys.PREF_RULESET_BUTTON_REMOVEFILTER);
|
||||
|
||||
button.addSelectionListener(new SelectionAdapter() {
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
@ -525,7 +550,8 @@ removeButton.setEnabled(false);
|
||||
IStructuredSelection sel = (IStructuredSelection)tableViewer.getSelection();
|
||||
if (sel.isEmpty()) return;
|
||||
|
||||
// TODO finish this
|
||||
Object[] selections = sel.toArray();
|
||||
tableViewer.remove(selections);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -534,14 +560,18 @@ removeButton.setEnabled(false);
|
||||
@Override
|
||||
public boolean performOk() {
|
||||
|
||||
IPreferencesManager ipMgr = plugin.getPreferencesManager();
|
||||
RuleSet ruleSet = ipMgr.getRuleSet();
|
||||
ruleSet.setExcludePatterns( tableFilters(false) );
|
||||
ruleSet.setIncludePatterns( tableFilters(true) );
|
||||
|
||||
Set<FilterHolder> filters = currentCheckedFilters();
|
||||
preferences.activeExclusionPatterns( patternsIn(filters, false) );
|
||||
preferences.activeInclusionPatterns( patternsIn(filters, true) );
|
||||
|
||||
preferences.sync();
|
||||
PMDPlugin.getDefault().applyLogPreferences(preferences);
|
||||
|
||||
return true;
|
||||
return super.performOk();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -557,6 +587,11 @@ removeButton.setEnabled(false);
|
||||
// TODO enable/disable save/cancel buttons
|
||||
}
|
||||
|
||||
private void updateControls() {
|
||||
|
||||
removeButton.setEnabled( !selectedFilters().isEmpty() );
|
||||
}
|
||||
|
||||
// ignore these
|
||||
|
||||
public void addedRows(int newRowCount) { }
|
||||
|
@ -113,6 +113,8 @@ public class StringKeys {
|
||||
public static final String PREF_RULESET_GROUPING_NONE = "preference.ruleset.grouping.none";
|
||||
public static final String PREF_RULESET_GROUPING_PMD_VERSION = "preference.ruleset.grouping.pmd_version";
|
||||
public static final String PREF_RULESET_GROUPING_REGEX = "preference.ruleset.grouping.regex";
|
||||
public static final String PREF_RULESET_BUTTON_ADDFILTER = "preference.ruleset.button.addfilter";
|
||||
public static final String PREF_RULESET_BUTTON_REMOVEFILTER = "preference.ruleset.button.removefilter";
|
||||
public static final String PREF_RULESET_BUTTON_ADDRULE = "preference.ruleset.button.addrule";
|
||||
public static final String PREF_RULESET_BUTTON_REMOVERULE = "preference.ruleset.button.removerule";
|
||||
public static final String PREF_RULESET_BUTTON_EDITRULE = "preference.ruleset.button.editrule";
|
||||
|
Reference in New Issue
Block a user