Search in sources :

Example 1 with ProjectRecord

use of net.sourceforge.pmd.eclipse.ui.model.ProjectRecord in project pmd-eclipse-plugin by pmd.

the class ViolationOverviewMenuManager method createProjectFilterMenu.

/**
 * Create the Menu for filtering Projects
 *
 * @param manager, the MenuManager
 */
private void createProjectFilterMenu(IMenuManager manager) {
    final List<AbstractPMDRecord> projectFilterList = this.overview.getProjectFilterList();
    final List<ProjectRecord> projectList = new ArrayList<ProjectRecord>();
    // We get a List of all Projects
    final AbstractPMDRecord[] projects = this.overview.getAllProjects();
    for (int i = 0; i < projects.length; i++) {
        final ProjectRecord project = (ProjectRecord) projects[i];
        // we add a FilterAction for it
        if (project.hasMarkers()) {
            // NOPMD by Herlin on 09/10/06 15:03
            final Action projectFilterAction = new ProjectFilterAction(project, this.overview);
            // we set it as "visible"
            if (!projectFilterList.contains(projects[i])) {
                // NOPMD by Herlin on 09/10/06 15:04
                projectFilterAction.setChecked(true);
            }
            manager.add(projectFilterAction);
            projectList.add(project);
        }
    }
    manager.add(new Separator());
}
Also used : ProjectFilterAction(net.sourceforge.pmd.eclipse.ui.views.actions.ProjectFilterAction) CalculateStatisticsAction(net.sourceforge.pmd.eclipse.ui.views.actions.CalculateStatisticsAction) PriorityFilterAction(net.sourceforge.pmd.eclipse.ui.views.actions.PriorityFilterAction) Action(org.eclipse.jface.action.Action) ProjectFilterAction(net.sourceforge.pmd.eclipse.ui.views.actions.ProjectFilterAction) ViolationPresentationTypeAction(net.sourceforge.pmd.eclipse.ui.views.actions.ViolationPresentationTypeAction) CollapseAllAction(net.sourceforge.pmd.eclipse.ui.views.actions.CollapseAllAction) ProjectRecord(net.sourceforge.pmd.eclipse.ui.model.ProjectRecord) ArrayList(java.util.ArrayList) Separator(org.eclipse.jface.action.Separator) AbstractPMDRecord(net.sourceforge.pmd.eclipse.ui.model.AbstractPMDRecord)

Example 2 with ProjectRecord

use of net.sourceforge.pmd.eclipse.ui.model.ProjectRecord in project pmd-eclipse-plugin by pmd.

the class ChangeEvaluator method changeRecordFor.

public ChangeRecord<AbstractPMDRecord> changeRecordFor(IResourceChangeEvent event) {
    List<IMarkerDelta> markerDeltas = MarkerUtil.markerDeltasIn(event);
    // first we get a List of changes to Files and Projects so we won't be
    // updating everything
    List<IResource> changedFiles = new ArrayList<IResource>();
    List<IProject> changedProjects = new ArrayList<IProject>();
    for (IMarkerDelta markerDelta : markerDeltas) {
        IResource resource = markerDelta.getResource();
        IProject project = resource.getProject();
        // the lists should not contain Projects or Resources twice
        if (!changedFiles.contains(resource)) {
            changedFiles.add(resource);
        // LOG.debug("Resource " + resource.getName() + " has changed");
        }
        if (!changedProjects.contains(project)) {
            changedProjects.add(project);
        // LOG.debug("Project " + project.getName() + " has changed");
        }
    }
    // we can add, change, or remove Resources
    // all the changes are given to the viewer later
    ChangeRecord<AbstractPMDRecord> changeRec = new ChangeRecord<AbstractPMDRecord>();
    // we go through the changed Projects
    for (IProject project : changedProjects) {
        // LOG.debug("Processing changes for project " + project.getName());
        ProjectRecord projectRec = (ProjectRecord) root.findResource(project);
        // Model and go on
        if (!(project.isOpen() && project.isAccessible())) {
            // LOG.debug("The project is not open or not accessible. Remove
            // it");
            List<AbstractPMDRecord>[] array = updateFiles(project, changedFiles);
            changeRec.removed(array[1]);
            root.removeResource(project);
        } else if (projectRec == null) {
            // if we couldn't find the Project then it has to be new
            // LOG.debug("Cannot find a project record for it. Add it.");
            projectRec = (ProjectRecord) root.addResource(project);
        }
        // then we can update the Files for the new or updated Project
        List<AbstractPMDRecord>[] array = updateFiles(project, changedFiles);
        changeRec.added(array[0]);
        changeRec.removed(array[1]);
        changeRec.changed(array[2]);
    }
    return changeRec;
}
Also used : ArrayList(java.util.ArrayList) IProject(org.eclipse.core.resources.IProject) AbstractPMDRecord(net.sourceforge.pmd.eclipse.ui.model.AbstractPMDRecord) ProjectRecord(net.sourceforge.pmd.eclipse.ui.model.ProjectRecord) List(java.util.List) ArrayList(java.util.ArrayList) IMarkerDelta(org.eclipse.core.resources.IMarkerDelta) IResource(org.eclipse.core.resources.IResource)

Example 3 with ProjectRecord

use of net.sourceforge.pmd.eclipse.ui.model.ProjectRecord in project pmd-eclipse-plugin by pmd.

the class ChangeEvaluator method updateFiles.

/**
 * Updates the Files for a given Project
 *
 * @param project
 * @param changedFiles,
 *            a List of all changed Files
 * @return an List of Lists containing additions [0], removals [1] and
 *         changes [2] (Array-Position in Brackets)
 */
private List<AbstractPMDRecord>[] updateFiles(IProject project, List<IResource> changedFiles) {
    // TODO use ChangeRecord
    List<AbstractPMDRecord> additions = new ArrayList<AbstractPMDRecord>();
    List<AbstractPMDRecord> removals = new ArrayList<AbstractPMDRecord>();
    List<AbstractPMDRecord> changes = new ArrayList<AbstractPMDRecord>();
    List<AbstractPMDRecord>[] updatedFiles = new List[] { additions, removals, changes };
    // we search for the ProjectRecord to the Project
    // if it doesn't exist, we return nothing
    ProjectRecord projectRec = (ProjectRecord) root.findResource(project);
    // we got through all files
    if (projectRec != null && project.isAccessible()) {
        updatedFiles = searchProjectForModifications(projectRec, changedFiles);
    } else if (projectRec != null) {
        // if the project is deleted or closed
        List<AbstractPMDRecord> packages = projectRec.getChildrenAsList();
        // ... we add all Packages to the removals so they are not shown
        // anymore
        removals.addAll(packages);
        for (int k = 0; k < packages.size(); k++) {
            PackageRecord packageRec = (PackageRecord) packages.get(k);
            removals.addAll(packageRec.getChildrenAsList());
        }
        updatedFiles = new List[] { additions, removals, changes };
    }
    return updatedFiles;
}
Also used : ArrayList(java.util.ArrayList) ProjectRecord(net.sourceforge.pmd.eclipse.ui.model.ProjectRecord) List(java.util.List) ArrayList(java.util.ArrayList) PackageRecord(net.sourceforge.pmd.eclipse.ui.model.PackageRecord) AbstractPMDRecord(net.sourceforge.pmd.eclipse.ui.model.AbstractPMDRecord)

Example 4 with ProjectRecord

use of net.sourceforge.pmd.eclipse.ui.model.ProjectRecord in project pmd-eclipse-plugin by pmd.

the class ViolationOverviewContentProvider method getChildrenOfRoot.

/**
 * Gets the children of the root depending on the show type.
 *
 * @return children
 */
private Object[] getChildrenOfRoot() {
    // ... we care about its Project's
    List<AbstractPMDRecord> projects = root.getChildrenAsList();
    ProjectRecord[] projectArray = new ProjectRecord[projects.size()];
    projects.toArray(projectArray);
    // we make a List of all Packages
    List<AbstractPMDRecord> packages = new ArrayList<AbstractPMDRecord>();
    for (ProjectRecord element : projectArray) {
        if (element.isProjectOpen()) {
            packages.addAll(element.getChildrenAsList());
        }
    }
    switch(violationView.getShowType()) {
        case ViolationOverview.SHOW_MARKERS_FILES:
        case ViolationOverview.SHOW_PACKAGES_FILES_MARKERS:
            // show packages
            return packages.toArray();
        case ViolationOverview.SHOW_FILES_MARKERS:
            // show files
            List<AbstractPMDRecord> files = new ArrayList<AbstractPMDRecord>();
            for (AbstractPMDRecord packageRec : packages) {
                files.addAll(packageRec.getChildrenAsList());
            }
            return files.toArray();
        default:
    }
    return Util.EMPTY_ARRAY;
}
Also used : ProjectRecord(net.sourceforge.pmd.eclipse.ui.model.ProjectRecord) ArrayList(java.util.ArrayList) AbstractPMDRecord(net.sourceforge.pmd.eclipse.ui.model.AbstractPMDRecord)

Aggregations

ArrayList (java.util.ArrayList)4 AbstractPMDRecord (net.sourceforge.pmd.eclipse.ui.model.AbstractPMDRecord)4 ProjectRecord (net.sourceforge.pmd.eclipse.ui.model.ProjectRecord)4 List (java.util.List)2 PackageRecord (net.sourceforge.pmd.eclipse.ui.model.PackageRecord)1 CalculateStatisticsAction (net.sourceforge.pmd.eclipse.ui.views.actions.CalculateStatisticsAction)1 CollapseAllAction (net.sourceforge.pmd.eclipse.ui.views.actions.CollapseAllAction)1 PriorityFilterAction (net.sourceforge.pmd.eclipse.ui.views.actions.PriorityFilterAction)1 ProjectFilterAction (net.sourceforge.pmd.eclipse.ui.views.actions.ProjectFilterAction)1 ViolationPresentationTypeAction (net.sourceforge.pmd.eclipse.ui.views.actions.ViolationPresentationTypeAction)1 IMarkerDelta (org.eclipse.core.resources.IMarkerDelta)1 IProject (org.eclipse.core.resources.IProject)1 IResource (org.eclipse.core.resources.IResource)1 Action (org.eclipse.jface.action.Action)1 Separator (org.eclipse.jface.action.Separator)1