diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/filters/FilterColumnUI.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/filters/FilterColumnUI.java index de37b76471..5e204d6591 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/filters/FilterColumnUI.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/filters/FilterColumnUI.java @@ -30,8 +30,8 @@ public interface FilterColumnUI { }; ItemColumnDescriptor include = new ItemColumnDescriptor("", " Type", SWT.LEFT, 85, false, includeAcc); - ItemColumnDescriptor pmd = new ItemColumnDescriptor("", "PMD", SWT.LEFT, 55, false, pmdAcc); - ItemColumnDescriptor cpd = new ItemColumnDescriptor("", "CPD", SWT.LEFT, 55, false, cpdAcc); + ItemColumnDescriptor pmd = new ItemColumnDescriptor("", "PMD", SWT.CENTER, 55, false, pmdAcc); + ItemColumnDescriptor cpd = new ItemColumnDescriptor("", "CPD", SWT.CENTER, 55, false, cpdAcc); ItemColumnDescriptor pattern = new ItemColumnDescriptor("", "Pattern", SWT.LEFT, 55, true, patternAcc); @SuppressWarnings("rawtypes") diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/filters/FilterHolder.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/filters/FilterHolder.java index f2aca0b875..6e1ff5810a 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/filters/FilterHolder.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/filters/FilterHolder.java @@ -48,12 +48,13 @@ class FilterHolder { public static Boolean boolValueOf(Collection holders, Accessor boolAccessor) { Set values = new HashSet(); 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 holders, Accessor textAccessor) { Set values = new HashSet(); for (FilterHolder fh : holders) values.add(textAccessor.textValueFor(fh)); - return values.size() > 1 ? "" : values.iterator().next(); + return (values.size() == 1) ? values.iterator().next() : ""; } } diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/filters/FilterPreferencesPage.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/filters/FilterPreferencesPage.java index 4932d71015..d383f687c1 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/filters/FilterPreferencesPage.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/filters/FilterPreferencesPage.java @@ -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; @@ -58,263 +58,26 @@ import org.eclipse.swt.widgets.Text; */ public class FilterPreferencesPage extends AbstractPMDPreferencePage implements ValueChangeListener, SizeChangeListener { - private TableViewer tableViewer; - private Button addButton; - private Button removeButton; - - private Button excludeButt; - private Button includeButt; - private Button cpdButt; - private Button pmdButt; - private Text patternField; - private BasicTableManager reportTableMgr; - - - private static Image IncludeIcon; - private static Image ExcludeIcon; + private TableViewer tableViewer; + private Button addButton; + private Button removeButton; + private Button excludeButt; + private Button includeButt; + private Button cpdButt; + private Button pmdButt; + private Text patternField; + private BasicTableManager reportTableMgr; + + private static Image IncludeIcon; + private static Image ExcludeIcon; + + private static final String NewFilterPattern = ""; 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 Image includeIcon() { - - if (IncludeIcon != null) return IncludeIcon; - - IncludeIcon = ShapePainter.newDrawnImage( - Display.getCurrent(), - 16, - 16, - Shape.plus, - ProtoTransparentColour, - new RGB(0,255,0) - ); - - return IncludeIcon; - } - - private static Image excludeIcon() { - - if (ExcludeIcon != null) return ExcludeIcon; - - ExcludeIcon = ShapePainter.newDrawnImage( - Display.getCurrent(), - 16, - 16, - Shape.minus, - ProtoTransparentColour, - new RGB(255,0,0) - ); - - return ExcludeIcon; - } - - /** - * Create and initialize the controls of the page - * - - * @param parent Composite - * @return Control - * @see PreferencePage#createContents */ - @Override - protected Control createContents(Composite parent) { - - // Create parent composite - Composite composite = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(2, false); - layout.verticalSpacing = 10; - composite.setLayout(layout); - - // Create panels - Composite filterGroup = buildFilterGroup(composite); - Composite buttonPanel = buildTableButtons(composite); - - // Layout children - filterGroup.setLayoutData(new GridData(GridData.FILL_BOTH)); - buttonPanel.setLayoutData(new GridData()); - buildFilterEditor(parent); - - return composite; - } - - private FilterHolder[] currentFilters() { - - List holders = new ArrayList(); - - RuleSet ruleSet = plugin.getPreferencesManager().getRuleSet(); - - for (String pattern : ruleSet.getExcludePatterns() ) { - holders.add( new FilterHolder(pattern, true, false, false) ); - } - for (String pattern : ruleSet.getIncludePatterns() ) { - holders.add( new FilterHolder(pattern, true, false, true) ); - } - return holders.toArray(new FilterHolder[holders.size()]); - } - /** - * Build the group of priority preferences - * @param parent the parent composite - - * @return the group widget */ - private Composite buildFilterGroup(Composite parent) { - - IStructuredContentProvider contentProvider = new IStructuredContentProvider() { - public void dispose() { } - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } - public Object[] getElements(Object inputElement) { return (FilterHolder[])inputElement; } - }; - BasicTableLabelProvider labelProvider = new BasicTableLabelProvider(FilterColumnUI.VisibleColumns); - - reportTableMgr = new BasicTableManager("renderers", null, FilterColumnUI.VisibleColumns); - tableViewer = reportTableMgr.buildTableViewer( - parent, - SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION | SWT.CHECK - ); - reportTableMgr.setupColumns(FilterColumnUI.VisibleColumns); - - Table table = tableViewer.getTable(); - table.setLayoutData( new GridData(GridData.FILL, GridData.FILL, true, true, 1, 1) ); - - tableViewer.setLabelProvider(labelProvider); - tableViewer.setContentProvider(contentProvider); - table.setHeaderVisible(true); - // labelProvider.addColumnsTo(table); - - tableViewer.setInput( currentFilters() ); - - selectCheckedFilters(); - - TableColumn[] columns = table.getColumns(); - for (TableColumn column : columns) column.pack(); - - tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection selection = (IStructuredSelection)event.getSelection(); - selectedPatterns(filtersIn(selection.toList())); - } - }); - - tableViewer.getTable().addListener(SWT.Selection, new Listener () { - public void handleEvent(Event event) { - if (event.detail == SWT.CHECK) { - checked(event.item); - } - } - }); - - return parent; - } - - private void selectedPatterns(Collection holders) { - - setState(holders, includeButt, FilterHolder.IncludeAccessor); - setState(holders, pmdButt, FilterHolder.PMDAccessor); - setState(holders, cpdButt, FilterHolder.CPDAccessor); - setValue(holders, patternField, FilterHolder.PatternAccessor); - } - - private static void setState(Collection holders, Button button, FilterHolder.Accessor accessor) { - - Boolean state = FilterHolder.boolValueOf(holders, accessor); - if (state == null) { - button.setGrayed(true); - return; - } - - button.setSelection(state); - } - - private static void setValue(Collection holders, Text field, FilterHolder.Accessor accessor) { - - String text = FilterHolder.textValueOf(holders, accessor); - field.setText(text); - } - - private void setAllPMD(boolean state) { - for (FilterHolder fh : selectedFilters()) { - fh.forPMD = state; - } - } - - private void setAllCPD(boolean state) { - for (FilterHolder fh : selectedFilters()) { - fh.forCPD = state; - } - } - - private void setAllInclude(boolean state) { - for (FilterHolder fh : selectedFilters()) { - fh.isInclude = state; - } - } - - private void setAllPatterns(String pattern) { - for (FilterHolder fh : selectedFilters()) { - fh.pattern = pattern; - } - } - - private void buildFilterEditor(Composite parent) { - - Composite editorPanel = new Composite(parent, SWT.None); - editorPanel.setLayoutData( new GridData(GridData.FILL, GridData.FILL, false, true) ); - editorPanel.setLayout(new GridLayout(3, false)); - - Label typeLabel = new Label(editorPanel, SWT.None); - typeLabel.setLayoutData( new GridData()); - typeLabel.setText("Type:"); - - excludeButt = createButton(editorPanel, SWT.RADIO, excludeIcon(), "Exclude"); - excludeButt.addSelectionListener( new SelectionAdapter() { - public void widgetSelected(SelectionEvent se) { - setAllInclude(includeButt.getSelection()); - tableViewer.refresh(); - } - }); - - includeButt = createButton(editorPanel, SWT.RADIO, includeIcon(), "Include"); - includeButt.addSelectionListener( new SelectionAdapter() { - public void widgetSelected(SelectionEvent se) { - setAllInclude(includeButt.getSelection()); - tableViewer.refresh(); - } - }); - - Label contextLabel = new Label(editorPanel, SWT.None); - contextLabel.setLayoutData( new GridData()); - contextLabel.setText("Applies to:"); - - pmdButt = createButton(editorPanel, SWT.CHECK, "PMD"); - pmdButt.addSelectionListener( new SelectionAdapter() { - public void widgetSelected(SelectionEvent se) { - setAllPMD(pmdButt.getSelection()); - tableViewer.refresh(); - } - }); - - cpdButt = createButton(editorPanel, SWT.CHECK, "CPD"); - cpdButt.addSelectionListener( new SelectionAdapter() { - public void widgetSelected(SelectionEvent se) { - setAllCPD(cpdButt.getSelection()); - tableViewer.refresh(); - } - }); - - Label patternLabel = new Label(editorPanel, SWT.None); - patternLabel.setLayoutData( new GridData()); - patternLabel.setText("Pattern:"); - - patternField = new Text(editorPanel, SWT.BORDER); - patternField.setLayoutData( new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1) ); - patternField.addFocusListener(new FocusAdapter() { - public void focusLost(FocusEvent fe) { - setAllPatterns(patternField.getText()); - tableViewer.refresh(); - } - }); - } private static Button createButton(Composite panel, int type, String label) { Button butt = new Button(panel, type); @@ -322,7 +85,7 @@ public class FilterPreferencesPage extends AbstractPMDPreferencePage implements 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)); @@ -330,7 +93,258 @@ public class FilterPreferencesPage extends AbstractPMDPreferencePage implements butt.setToolTipText(tooltip); return butt; } + + private static Image includeIcon() { + + if (IncludeIcon != null) return IncludeIcon; + + IncludeIcon = ShapePainter.newDrawnImage( + Display.getCurrent(), + 16, + 16, + Shape.plus, + ProtoTransparentColour, + new RGB(0,255,0) + ); + + return IncludeIcon; + } + + private static Image excludeIcon() { + + if (ExcludeIcon != null) return ExcludeIcon; + + ExcludeIcon = ShapePainter.newDrawnImage( + Display.getCurrent(), + 16, + 16, + Shape.minus, + ProtoTransparentColour, + new RGB(255,0,0) + ); + + return ExcludeIcon; + } + + /** + * Create and initialize the controls of the page + * + + * @param parent Composite + * @return Control + * @see PreferencePage#createContents */ + @Override + protected Control createContents(Composite parent) { + + // Create parent composite + Composite composite = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(2, false); + layout.verticalSpacing = 10; + composite.setLayout(layout); + + // Create panels + Composite filterGroup = buildFilterGroup(composite); + Composite buttonPanel = buildTableButtons(composite); + + // Layout children + filterGroup.setLayoutData(new GridData(GridData.FILL_BOTH)); + buttonPanel.setLayoutData(new GridData()); + buildFilterEditor(parent); + + return composite; + } + + private FilterHolder[] currentFilters() { + + List holders = new ArrayList(); + + RuleSet ruleSet = plugin.getPreferencesManager().getRuleSet(); + + for (String pattern : ruleSet.getExcludePatterns() ) { + holders.add( new FilterHolder(pattern, true, false, false) ); + } + for (String pattern : ruleSet.getIncludePatterns() ) { + holders.add( new FilterHolder(pattern, true, false, true) ); + } + return holders.toArray(new FilterHolder[holders.size()]); + } + private List tableFilters(boolean isInclude) { + + List filters = new ArrayList(); + + 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 + + * @return the group widget */ + private Composite buildFilterGroup(Composite parent) { + + IStructuredContentProvider contentProvider = new IStructuredContentProvider() { + public void dispose() { } + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } + public Object[] getElements(Object inputElement) { return (FilterHolder[])inputElement; } + }; + BasicTableLabelProvider labelProvider = new BasicTableLabelProvider(FilterColumnUI.VisibleColumns); + + reportTableMgr = new BasicTableManager("renderers", null, FilterColumnUI.VisibleColumns); + tableViewer = reportTableMgr.buildTableViewer( + parent, + SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION | SWT.CHECK + ); + reportTableMgr.setupColumns(FilterColumnUI.VisibleColumns); + + Table table = tableViewer.getTable(); + table.setLayoutData( new GridData(GridData.FILL, GridData.FILL, true, true, 1, 1) ); + + tableViewer.setLabelProvider(labelProvider); + tableViewer.setContentProvider(contentProvider); + table.setHeaderVisible(true); + // labelProvider.addColumnsTo(table); + + tableViewer.setInput( currentFilters() ); + + selectCheckedFilters(); + + TableColumn[] columns = table.getColumns(); + for (TableColumn column : columns) column.pack(); + + tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection selection = (IStructuredSelection)event.getSelection(); + selectedPatterns(filtersIn(selection.toList())); + updateControls(); + } + }); + + tableViewer.getTable().addListener(SWT.Selection, new Listener () { + public void handleEvent(Event event) { + if (event.detail == SWT.CHECK) { + checked(event.item); + } + } + }); + + return parent; + } + + private void selectedPatterns(Collection holders) { + + setState(holders, includeButt, FilterHolder.IncludeAccessor); + setState(holders, pmdButt, FilterHolder.PMDAccessor); + setState(holders, cpdButt, FilterHolder.CPDAccessor); + setValue(holders, patternField, FilterHolder.PatternAccessor); + } + + private static void setState(Collection holders, Button button, FilterHolder.Accessor accessor) { + + Boolean state = FilterHolder.boolValueOf(holders, accessor); + if (state == null) { + button.setGrayed(true); + return; + } + + button.setSelection(state); + } + + private static void setValue(Collection holders, Text field, FilterHolder.Accessor accessor) { + + String text = FilterHolder.textValueOf(holders, accessor); + field.setText(text); + } + + private void setAllPMD(boolean state) { + for (FilterHolder fh : selectedFilters()) { + fh.forPMD = state; + } + } + + private void setAllCPD(boolean state) { + for (FilterHolder fh : selectedFilters()) { + fh.forCPD = state; + } + } + + private void setAllInclude(boolean state) { + for (FilterHolder fh : selectedFilters()) { + fh.isInclude = state; + } + } + + private void setAllPatterns(String pattern) { + for (FilterHolder fh : selectedFilters()) { + fh.pattern = pattern; + } + } + + private void buildFilterEditor(Composite parent) { + + Composite editorPanel = new Composite(parent, SWT.None); + editorPanel.setLayoutData( new GridData(GridData.FILL, GridData.FILL, false, true) ); + editorPanel.setLayout(new GridLayout(3, false)); + + Label typeLabel = new Label(editorPanel, SWT.None); + typeLabel.setLayoutData( new GridData()); + typeLabel.setText("Type:"); + + excludeButt = createButton(editorPanel, SWT.RADIO, excludeIcon(), "Exclude"); + excludeButt.addSelectionListener( new SelectionAdapter() { + public void widgetSelected(SelectionEvent se) { + setAllInclude(includeButt.getSelection()); + tableViewer.refresh(); + } + }); + + includeButt = createButton(editorPanel, SWT.RADIO, includeIcon(), "Include"); + includeButt.addSelectionListener( new SelectionAdapter() { + public void widgetSelected(SelectionEvent se) { + setAllInclude(includeButt.getSelection()); + tableViewer.refresh(); + } + }); + + Label contextLabel = new Label(editorPanel, SWT.None); + contextLabel.setLayoutData( new GridData()); + contextLabel.setText("Applies to:"); + + pmdButt = createButton(editorPanel, SWT.CHECK, "PMD"); + pmdButt.addSelectionListener( new SelectionAdapter() { + public void widgetSelected(SelectionEvent se) { + setAllPMD(pmdButt.getSelection()); + tableViewer.refresh(); + } + }); + + cpdButt = createButton(editorPanel, SWT.CHECK, "CPD"); + cpdButt.addSelectionListener( new SelectionAdapter() { + public void widgetSelected(SelectionEvent se) { + setAllCPD(cpdButt.getSelection()); + tableViewer.refresh(); + } + }); + + Label patternLabel = new Label(editorPanel, SWT.None); + patternLabel.setLayoutData( new GridData()); + patternLabel.setText("Pattern:"); + + patternField = new Text(editorPanel, SWT.BORDER); + patternField.setLayoutData( new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1) ); + patternField.addFocusListener(new FocusAdapter() { + public void focusLost(FocusEvent fe) { + setAllPatterns(patternField.getText()); + tableViewer.refresh(); + } + }); + } + /** * Create buttons for rule table management * @param parent Composite @@ -345,204 +359,220 @@ 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); return composite; } - - /** - * Check the filters as noted from the preferences. - */ - private void selectCheckedFilters() { - Set activeOnes = preferences.activeExclusionPatterns(); - activeOnes.addAll(preferences.activeInclusionPatterns()); - - for (TableItem item : tableViewer.getTable().getItems()) { - FilterHolder holder = (FilterHolder)item.getData(); - item.setChecked( - activeOnes.contains(holder.pattern) - ); - } - } + /** + * Check the filters as noted from the preferences. + */ + private void selectCheckedFilters() { - /** - * - * @return Set - */ - private Set currentCheckedFilters() { + Set activeOnes = preferences.activeExclusionPatterns(); + activeOnes.addAll(preferences.activeInclusionPatterns()); - Set holders = new HashSet(); - for (Object holder : checkedItems(tableViewer.getTable())) { - holders.add((FilterHolder) holder); - } - return holders; - } + for (TableItem item : tableViewer.getTable().getItems()) { + FilterHolder holder = (FilterHolder)item.getData(); + item.setChecked( + activeOnes.contains(holder.pattern) + ); + } + } - /** - * - * @return Set - */ - private Set selectedFilters() { + /** + * + * @return Set + */ + private Set currentCheckedFilters() { - Set holders = new HashSet(); - for (Object tItem : tableViewer.getTable().getSelection()) { - holders.add((FilterHolder) (((TableItem)tItem).getData())); - } - return holders; - } - - /** - * - * @return Set - */ - private static Collection filtersIn(List tableItems) { + Set holders = new HashSet(); + for (Object holder : checkedItems(tableViewer.getTable())) { + holders.add((FilterHolder) holder); + } + return holders; + } - Set holders = new HashSet(); - for (Object tItem : tableItems) { - holders.add((FilterHolder) tItem); - } - return holders; - } - - /** - * Method checkedItems. - * @param table Table - * @return Set - */ - private static Set checkedItems(Table table) { + /** + * + * @return Set + */ + private Set selectedFilters() { - Set checkedItems = new HashSet(); + Set holders = new HashSet(); + for (Object tItem : tableViewer.getTable().getSelection()) { + holders.add((FilterHolder) (((TableItem)tItem).getData())); + } + return holders; + } - for (TableItem ti : table.getItems()) { - if (ti.getChecked()) checkedItems.add( ti.getData() ); - } - return checkedItems; - } + /** + * + * @return Set + */ + private static Collection filtersIn(List tableItems) { - /** - * - * @param item Object - */ - private void checked(Object item) { + Set holders = new HashSet(); + for (Object tItem : tableItems) { + holders.add((FilterHolder) tItem); + } + return holders; + } - //FIXME - boolean matches = currentCheckedFilters().equals(preferences.activeExclusionPatterns()); + /** + * Method checkedItems. + * @param table Table + * @return Set + */ + private static Set checkedItems(Table table) { - setModified(!matches); - } + Set checkedItems = new HashSet(); - /** - - * @see org.eclipse.jface.preference.PreferencePage#performDefaults() */ - @Override + for (TableItem ti : table.getItems()) { + if (ti.getChecked()) checkedItems.add( ti.getData() ); + } + return checkedItems; + } + + /** + * + * @param item Object + */ + private void checked(Object item) { + + //FIXME + boolean matches = currentCheckedFilters().equals(preferences.activeExclusionPatterns()); + + setModified(!matches); + } + + /** + + * @see org.eclipse.jface.preference.PreferencePage#performDefaults() */ + @Override protected void performDefaults() { - } + } - /** - * - * @return boolean - * @see org.eclipse.jface.preference.IPreferencePage#performCancel() - */ - @Override + /** + * + * @return boolean + * @see org.eclipse.jface.preference.IPreferencePage#performCancel() + */ + @Override public boolean performCancel() { - // clear out any changes for next possible usage - selectCheckedFilters(); - return true; - } + // clear out any changes for next possible usage + selectCheckedFilters(); + return true; + } + + private static Set patternsIn(Collection holders, boolean getInclusions) { + + if (holders.isEmpty()) return Collections.emptySet(); + + Set patterns = new HashSet(); + for (FilterHolder holder : holders) { + if (holder.isInclude == getInclusions) { + patterns.add(holder.pattern); + } + } + return patterns; + } - private static Set patternsIn(Collection holders, boolean getInclusions) { - - if (holders.isEmpty()) return Collections.emptySet(); - - Set patterns = new HashSet(); - for (FilterHolder holder : holders) { - if (holder.isInclude == getInclusions) { - patterns.add(holder.pattern); - } - } - return patterns; - } - protected Button newImageButton(Composite parent, String imageId, String toolTipId) { - + Button button = new Button(parent, SWT.PUSH | SWT.LEFT); button.setImage(ResourceManager.imageFor(imageId)); button.setToolTipText(getMessage(toolTipId)); button.setEnabled(true); return button; } - + /** * Build the edit rule button * @param parent Composite * @return Button */ 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) { - addNewFilter(); - } - }); + public void widgetSelected(SelectionEvent event) { + addNewFilter(); + } + }); return button; } - - private void addNewFilter() { - FilterHolder holder = new FilterHolder("", 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 filters = currentCheckedFilters(); + preferences.activeExclusionPatterns( patternsIn(filters, false) ); + preferences.activeInclusionPatterns( patternsIn(filters, true) ); - Set filters = currentCheckedFilters(); - preferences.activeExclusionPatterns( patternsIn(filters, false) ); - preferences.activeInclusionPatterns( patternsIn(filters, true) ); - - preferences.sync(); - PMDPlugin.getDefault().applyLogPreferences(preferences); - - return true; - } + preferences.sync(); + + return super.performOk(); + } /** * Method descriptionId. @@ -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) { } diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/nls/StringKeys.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/nls/StringKeys.java index 07954a9e36..7278de270a 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/nls/StringKeys.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/nls/StringKeys.java @@ -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";