package com.laboki.eclipse.plugin.smartsave.contexts; import org.eclipse.jface.text.IDocument; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.texteditor.IDocumentProvider; import org.eclipse.ui.texteditor.ITextEditor; import com.google.common.base.Optional; public enum DocumentContext { INSTANCE; public static Optional<IDocument> getDocument(final Optional<IEditorPart> editor) { final Optional<IDocumentProvider> provider = DocumentContext.getDocumentProvider(editor); if (!provider.isPresent()) return Optional.absent(); return Optional.fromNullable(provider.get().getDocument(editor.get() .getEditorInput())); } private static Optional<IDocumentProvider> getDocumentProvider(final Optional<IEditorPart> editor) { if (!editor.isPresent()) return Optional.absent(); final IEditorPart part = editor.get(); if (DocumentContext.isNotTextEditor(part)) return Optional.absent(); return Optional.fromNullable(((ITextEditor) part).getDocumentProvider()); } private static boolean isNotTextEditor(final IEditorPart part) { return !DocumentContext.isTextEditor(part); } private static boolean isTextEditor(final IEditorPart part) { return part instanceof ITextEditor; } }