package com.laboki.eclipse.plugin.smartsave.contexts;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.part.FileEditorInput;
import com.google.common.base.Optional;
public enum FileContext {
INSTANCE;
public static Optional<IFile>
getFile() {
final Optional<IEditorPart> editor = EditorContext.getEditor();
final Optional<FileEditorInput> fileEditorInput =
FileContext.getFileEditorInput(editor);
if (!fileEditorInput.isPresent()) return Optional.absent();
return Optional.fromNullable(fileEditorInput.get().getFile());
}
public static Optional<IFile>
getFile(final Optional<IEditorPart> editor) {
final Optional<FileEditorInput> fileEditorInput =
FileContext.getFileEditorInput(editor);
if (!fileEditorInput.isPresent()) return Optional.absent();
return Optional.fromNullable(fileEditorInput.get().getFile());
}
private static Optional<FileEditorInput>
getFileEditorInput(final Optional<IEditorPart> editor) {
if (!editor.isPresent()) return Optional.absent();
final IEditorInput editorInput = editor.get().getEditorInput();
if (!(editorInput instanceof IFileEditorInput)) return Optional.absent();
return Optional.fromNullable((FileEditorInput) editorInput);
}
public static IContentType[]
getContentTypes() {
return Platform.getContentTypeManager().getAllContentTypes();
}
}