package org.erlide.erlang.ui.ide;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IStorage;
import org.eclipse.emf.common.util.URI;
import org.eclipse.xtext.resource.IResourceServiceProvider;
import org.eclipse.xtext.ui.resource.DefaultResourceUIServiceProvider;
import com.google.inject.Inject;
public class ErlangResourceUiServiceProvider extends
DefaultResourceUIServiceProvider {
@Inject
public ErlangResourceUiServiceProvider(
final IResourceServiceProvider delegate) {
super(delegate);
}
@Override
public boolean canHandle(final URI uri) {
return super.canHandle(uri);
}
@Override
public boolean canHandle(final URI uri, final IStorage storage) {
final boolean canHandle = super.canHandle(uri, storage);
if (canHandle && storage instanceof IResource) {
final IResource resource = (IResource) storage;
final IProject project = resource.getProject();
if (isInTestDir(resource)) {
return false;
}
// final IErlangProject erlangProject = ErlangCore.getModel()
// .getErlangProject(project);
// if (erlangProject != null) {
// return erlangProject.getBuildpath().hasResource(resource);
// }
}
return canHandle;
}
private boolean isInTestDir(final IResource resource) {
// TODO should be handled by project buildpath...
for (final String seg : resource.getProjectRelativePath().segments()) {
if (seg.equals("test")) {
return true;
}
}
return false;
}
}