package net.sourceforge.pmd.eclipse.ui.views;
import java.util.ArrayList;
import java.util.List;
import net.sourceforge.pmd.eclipse.ui.model.FileRecord;
import net.sourceforge.pmd.eclipse.ui.model.AbstractPMDRecord;
import net.sourceforge.pmd.eclipse.ui.model.MarkerRecord;
import net.sourceforge.pmd.eclipse.ui.model.PackageRecord;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
/**
* Allows to filter Projects in the Violation Overview
*
* @author SebastianRaffel ( 17.05.2005 )
*/
public class ProjectFilter extends ViewerFilter {
private List<AbstractPMDRecord> projectFilterList;
/**
* Constructor
*/
public ProjectFilter() {
super();
projectFilterList = new ArrayList<AbstractPMDRecord>();
}
/* @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
boolean select = true;
AbstractPMDRecord projectRec = null;
if (element instanceof PackageRecord) {
projectRec = ((PackageRecord) element).getParent();
} else if (element instanceof FileRecord) {
projectRec = ((FileRecord) element).getParent().getParent();
} else if (element instanceof MarkerRecord) {
projectRec = ((MarkerRecord) element).getParent().getParent().getParent();
}
// if the Project to a File or Package is in the List
// we don't want the Element to be shown
if (projectFilterList.contains(projectRec)) {
select = false;
}
return select;
}
/**
* Sets the List of projects to filter
*
* @param newList
*/
public void setProjectFilterList(List<AbstractPMDRecord> newList) {
this.projectFilterList = newList;
}
/**
* @return the List of filtered Projects
*/
public List<AbstractPMDRecord> getProjectFilterList() {
return this.projectFilterList;
}
/**
* Adds a Project to the FilterList
*
* @param project
*/
public void addProjectToList(AbstractPMDRecord project) {
projectFilterList.add(project);
}
/**
* Removes a Project From the filterList
*
* @param project
*/
public void removeProjectFromList(AbstractPMDRecord project) {
projectFilterList.remove(project);
}
}