From 3930fa6ccf6bfd1ae7d52197d4fc7ad9526db9d8 Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Thu, 11 Oct 2007 10:03:19 +0000 Subject: [PATCH] Fix for 205013: Project Explorer: filtering non-C project also filters out the C projects --- core/org.eclipse.cdt.ui/plugin.properties | 2 +- .../ui/filters/NonCElementFilter.java | 20 +++++++++++++------ .../ui/filters/NonCProjectsFilter.java | 18 +++++++++++++---- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/core/org.eclipse.cdt.ui/plugin.properties b/core/org.eclipse.cdt.ui/plugin.properties index 3f8ea2549f7..26fc977760a 100644 --- a/core/org.eclipse.cdt.ui/plugin.properties +++ b/core/org.eclipse.cdt.ui/plugin.properties @@ -242,7 +242,7 @@ HideArchiveFiles.description= Hides Archive files HideObjectFiles.label= Object files HideObjectFiles.description= Hides Object files -HideNonCElements.label= Non-C resource +HideNonCElements.label= Non-C elements HideNonCElements.description= Show only C elements HideNonCProjects.label = Non-C projects diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/NonCElementFilter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/NonCElementFilter.java index ab2e2813925..58a976645e1 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/NonCElementFilter.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/NonCElementFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation and others. + * Copyright (c) 2000, 2007 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -7,9 +7,11 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Anton Leherbauer (Wind River Systems) *******************************************************************************/ package org.eclipse.cdt.internal.ui.filters; +import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; @@ -21,7 +23,7 @@ import org.eclipse.jface.viewers.ViewerFilter; /** - * Filters out all non-Java elements. + * Filters out all non-C elements. */ public class NonCElementFilter extends ViewerFilter { @@ -34,13 +36,19 @@ public class NonCElementFilter extends ViewerFilter { public boolean select(Viewer viewer, Object parent, Object element) { if (element instanceof ICElement) return true; - - if (element instanceof IResource) { - IProject project= ((IResource)element).getProject(); + + if (element instanceof IProject) { + IProject project = (IProject)element; + if (!project.isOpen() || CoreModel.hasCNature(project)) { + return true; + } + return false; + } else if (element instanceof IResource) { + IProject project= ((IResource)element).getProject(); return project == null || !project.isOpen(); } - // Exclude all IStorage elements which are neither Java elements nor resources + // Exclude all IStorage elements which are neither C elements nor resources if (element instanceof IStorage) return false; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/NonCProjectsFilter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/NonCProjectsFilter.java index 7761aea3f3d..d959ea38480 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/NonCProjectsFilter.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/NonCProjectsFilter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation and others. + * Copyright (c) 2000, 2007 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -7,18 +7,21 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Anton Leherbauer (Wind River Systems) *******************************************************************************/ package org.eclipse.cdt.internal.ui.filters; -import org.eclipse.cdt.core.model.ICProject; import org.eclipse.core.resources.IProject; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; +import org.eclipse.cdt.core.model.CoreModel; +import org.eclipse.cdt.core.model.ICProject; + /** - * Filters closed projects + * Filters (open) non-C projects. */ public class NonCProjectsFilter extends ViewerFilter { @@ -29,7 +32,14 @@ public class NonCProjectsFilter extends ViewerFilter { if (element instanceof ICProject) { return true; } else if (element instanceof IProject) { - return !((IProject)element).isOpen(); + IProject project = (IProject)element; + if (!project.isOpen()) { + return true; + } + if (CoreModel.hasCNature(project)) { + return true; + } + return false; } return true; }