Index: C:/home/paul/workspace-other/ui-filter/src/org/tigris/subversion/subclipse/ui/SVNConflictsFilter.java
===================================================================
--- C:/home/paul/workspace-other/ui-filter/src/org/tigris/subversion/subclipse/ui/SVNConflictsFilter.java	(revision 0)
+++ C:/home/paul/workspace-other/ui-filter/src/org/tigris/subversion/subclipse/ui/SVNConflictsFilter.java	(revision 0)
@@ -0,0 +1,90 @@
+package org.tigris.subversion.subclipse.ui;
+
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.IParent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.tigris.subversion.subclipse.core.resources.LocalResourceStatus;
+import org.tigris.subversion.subclipse.core.resources.SVNWorkspaceRoot;
+
+/**
+ * Filter which only shows resources that have Subversion conflicts. Works by checking 
+ * if the the resource has an associated SVN conflic warning marker tied to it.
+ */
+public class SVNConflictsFilter extends ViewerFilter {
+    
+    public boolean select(Viewer viewer, Object parentElement, Object element) {        
+        try {
+            // short circuit jars/zips
+            if (element instanceof IPackageFragmentRoot && ((IPackageFragmentRoot)element).getKind()==IPackageFragmentRoot.K_BINARY) {
+                return false;
+            }
+            
+            IResource resource = null;
+            if (element instanceof ICompilationUnit) {
+                resource = ((ICompilationUnit)element).getResource();
+            }
+            else if (element instanceof IFolder) {
+                // check if this element has children which are conflicted
+                IResource[] resources = ((IFolder)element).members();
+                for (int i = 0; i < resources.length; i++ ) {
+                    if (select(viewer,element,resources[i])) {
+                        return true;
+                    }
+                }
+                // if the children aren't coflicted, the folder itself may be conflicted
+                resource = (IResource)element;
+            }
+            else if (element instanceof IResource) {
+                resource = (IResource)element;
+            }
+            else if (element instanceof IParent) {
+                // check the java children first
+                IJavaElement[] children = ((IParent)element).getChildren();
+                for (int i = 0; i < children.length; i++ ) {
+                    if (select(viewer,element,children[i])) {
+                        return true;
+                    }
+                }
+                // then check non-java resources
+                if (element instanceof IPackageFragment || element instanceof IJavaProject) {
+                    Object[] resources = element instanceof IPackageFragment ? ((IPackageFragment)element).getNonJavaResources() :
+                                                                               ((IJavaProject)element).getNonJavaResources();
+                    for (int i = 0; i < resources.length; i++ ) {
+                        if (select(viewer,element,resources[i])) {
+                            return true;
+                        }                    
+                    }
+                }
+                // If it's a folder, it may have props set on it which may be in conflicted state
+                if (element instanceof IJavaElement) {
+                    resource = ((IJavaElement)element).getResource();
+                } else {
+                    return false;
+                }
+            }
+            // filter out ClassPathContainer. Is this too broad a filter?
+            else if (element instanceof IWorkbenchAdapter) {
+                return false;
+            }
+            
+            if (resource != null ) {
+                LocalResourceStatus status = SVNWorkspaceRoot.getSVNResourceFor(resource).getStatus();
+                return resource.isAccessible() && (status.isTextConflicted() || status.isPropConflicted());
+            }            
+        } catch( CoreException ce ) {
+            // what can we do here aside from log the exception?
+            ce.printStackTrace();
+            return true;                        
+        }
+        return true;
+    }
+}
\ No newline at end of file
Index: C:/home/paul/workspace-other/ui-filter/plugin.properties
===================================================================
--- C:/home/paul/workspace-other/ui-filter/plugin.properties	(revision 2081)
+++ C:/home/paul/workspace-other/ui-filter/plugin.properties	(working copy)
@@ -141,6 +141,8 @@
 SVNActionSet.syncLabel=Synchronize SVN Projects
 SVNActionSet.syncTooltip=Synchronize SVN Projects
 SVNCompareParticipant=SVN Compare
+SVNConflictFilter.name=Non-SVN Conflicts
+SVNConflictFilter.description=Filters out elements which aren't subversion conflicts
 SVNConsoleFont.description=The font for the SVN console.
 SVNConsoleFont.label=SVN Console Font
 SVNGroupMenu.label=S&VN
Index: C:/home/paul/workspace-other/ui-filter/plugin.xml
===================================================================
--- C:/home/paul/workspace-other/ui-filter/plugin.xml	(revision 2081)
+++ C:/home/paul/workspace-other/ui-filter/plugin.xml	(working copy)
@@ -999,5 +999,14 @@
 		</description>
       </svnPropertyTypes>                      
    </extension>	  
+   <extension
+         point="org.eclipse.jdt.ui.javaElementFilters">
+      <filter
+            class="org.tigris.subversion.subclipse.ui.SVNConflictsFilter"
+            description="%SVNConflictFilter.description"
+            enabled="false"
+            id="org.tigris.subversion.subclipse.conflictFilter"
+            name="%SVNConflictFilter.name"/>
+   </extension>	  
 
 </plugin>
Index: C:/home/paul/workspace-other/ui-filter/META-INF/MANIFEST.MF
===================================================================
--- C:/home/paul/workspace-other/ui-filter/META-INF/MANIFEST.MF	(revision 2081)
+++ C:/home/paul/workspace-other/ui-filter/META-INF/MANIFEST.MF	(working copy)
@@ -20,7 +20,9 @@
  org.eclipse.compare,
  org.eclipse.osgi,
  org.eclipse.ui.console,
- org.eclipse.help
+ org.eclipse.help,
+ org.eclipse.jdt.ui;optional=true,
+ org.eclipse.jdt.core;optional=true
 Eclipse-AutoStart: true
 Provide-Package: org.tigris.subversion.subclipse.ui,
  org.tigris.subversion.subclipse.ui.actions,


