package com.redhat.ceylon.eclipse.core.propertyTesters;
import org.eclipse.core.expressions.PropertyTester;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IResource;
import org.eclipse.jdt.core.IJavaElement;
import com.redhat.ceylon.eclipse.core.builder.CeylonBuilder;
import com.redhat.ceylon.eclipse.core.builder.CeylonBuilder.RootFolderType;
public class InCeylonRootFolderPropertyTester extends PropertyTester {
private static final String IS_IN_CEYLON_SOURCE_FOLDER_PROPERTY = "isInCeylonSourceFolder";
private static final String IS_IN_CEYLON_RESOURCE_FOLDER_PROPERTY = "isInCeylonResourceFolder";
@Override
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
RootFolderType rootFolderType = null;
IResource resource = null;
if (receiver instanceof IResource) {
resource = (IResource) receiver;
}
if (receiver instanceof IJavaElement) {
resource = ((IJavaElement) receiver).getResource();
}
if (resource instanceof IFolder) {
rootFolderType= CeylonBuilder.getRootFolderType((IFolder)resource);
}
if (resource instanceof IFile) {
rootFolderType= CeylonBuilder.getRootFolderType((IFile)resource);
}
if (rootFolderType != null) {
if (IS_IN_CEYLON_SOURCE_FOLDER_PROPERTY.equals(property)) {
return rootFolderType.equals(RootFolderType.SOURCE);
}
if (IS_IN_CEYLON_RESOURCE_FOLDER_PROPERTY.equals(property)) {
return rootFolderType.equals(RootFolderType.RESOURCE);
}
}
return false;
}
}