/**
* Copyright (c) 2013-2016 Angelo ZERRR and Genuitec LLC.
* 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:
* Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
* Piotr Tomiak <piotr@genuitec.com> - refactoring of file management API
*/
package tern.eclipse.ide.core.utils;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.preferences.IScopeContext;
import org.eclipse.core.runtime.preferences.InstanceScope;
public class FileUtils {
private static ILineOfOffsetProvider provider;
private FileUtils() {
}
/**
* Set the line offset provider singleton.
*/
public static void setProvider(ILineOfOffsetProvider provider) {
FileUtils.provider = provider;
}
/**
* returns the the line offset provider singleton.
*/
public static ILineOfOffsetProvider getProvider() {
return provider;
}
/**
* Returns the preferences of line seperator.
*
* @param project
* @return
*/
public static String getLineSeparator(IProject project) {
if (Platform.isRunning()) {
String lineSeparator = null;
// line delimiter in project preference
IScopeContext[] scopeContext;
if (project != null) {
scopeContext = new IScopeContext[] { new ProjectScope(project) };
lineSeparator = Platform.getPreferencesService().getString(
Platform.PI_RUNTIME, Platform.PREF_LINE_SEPARATOR,
null, scopeContext);
if (lineSeparator != null)
return lineSeparator;
}
// line delimiter in workspace preference
scopeContext = new IScopeContext[] { InstanceScope.INSTANCE };
lineSeparator = Platform.getPreferencesService().getString(
Platform.PI_RUNTIME, Platform.PREF_LINE_SEPARATOR, null,
scopeContext);
if (lineSeparator != null)
return lineSeparator;
}
return System.getProperty("line.separator"); //$NON-NLS-1$
}
/**
* Returns the line of offset of the given file with the given start offset
* and null otherwise.
*/
public static Integer getLineOfOffset(int start, IFile file) {
if (getProvider() != null) {
return getProvider().getLineOfOffset(start, file);
}
return null;
}
/**
* Returns true if the given resource is valid and false otherwise.
*
* @param resource
* @return true if the given resource is valid and false otherwise.
*/
public static boolean isValidResource(IResource resource) {
return !(resource == null || resource.isDerived() || resource.isTeamPrivateMember() || !resource.isAccessible()
|| resource.getName().charAt(0) == '.');
}
}