blob: 583e719abeb83e63c630908f2bded01e1ff8fb60 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 University of Illinois at Urbana-Champaign 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* UIUC - Initial API and implementation
*******************************************************************************/
package org.eclipse.rephraserengine.internal.examples.text;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.core.runtime.content.IContentTypeManager;
import org.eclipse.rephraserengine.core.resources.IResourceFilter;
/**
* Resource filter that accepts any kind of text file (but not binaries) in any project or folder,
* excluding files named *makefile or .*
* <p>
* Only resources that are accessible and not "derived resources" (according to the Eclipse
* Platform) are considered.
*
* @author Jeff Overbey
*/
public class TextFileResourceFilter implements IResourceFilter
{
private static final IContentType TEXT_CONTENT_TYPE =
Platform.getContentTypeManager().getContentType(IContentTypeManager.CT_TEXT);
public boolean shouldProcess(IResource resource)
{
if (!(resource instanceof IFile)) return true; // Process all projects, all folders
String filename = resource.getName();
if (filename.toLowerCase().endsWith("makefile") || filename.startsWith(".")) return false;
IContentType contentType = Platform.getContentTypeManager().findContentTypeFor(filename);
return contentType != null
&& contentType.isKindOf(TEXT_CONTENT_TYPE)
&& resource.isAccessible()
&& !resource.isDerived();
}
public String getError(IResource resource)
{
return "The file " + resource.getName() + " is not a text file, or it is not accessible.";
}
}