]> git.uio.no Git - ifi-stolz-refaktor.git/blame - software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/utils/DocumentUtils.java
CompilationUnitTextSelection: can now find local declaring types
[ifi-stolz-refaktor.git] / software / no.uio.ifi.refaktor / src / no / uio / ifi / refaktor / utils / DocumentUtils.java
CommitLineData
87b2afda
EK
1package no.uio.ifi.refaktor.utils;
2
171cf942 3import static no.uio.ifi.refaktor.assertion.RefaktorAssert.assertThat;
02079d76
EK
4import static org.hamcrest.CoreMatchers.instanceOf;
5import static org.hamcrest.CoreMatchers.notNullValue;
6
87b2afda
EK
7import org.eclipse.core.commands.ExecutionEvent;
8import org.eclipse.core.commands.ExecutionException;
dde93e7b 9import org.eclipse.core.resources.IFile;
fe4785f1
EK
10import org.eclipse.jdt.core.ICompilationUnit;
11import org.eclipse.jdt.core.JavaModelException;
12import org.eclipse.jface.text.Document;
87b2afda 13import org.eclipse.jface.text.IDocument;
4c03afae 14import org.eclipse.jface.text.ITextSelection;
87b2afda
EK
15import org.eclipse.jface.text.TextSelection;
16import org.eclipse.jface.viewers.ISelection;
17import org.eclipse.ui.IEditorPart;
18import org.eclipse.ui.handlers.HandlerUtil;
dde93e7b 19import org.eclipse.ui.ide.ResourceUtil;
87b2afda
EK
20import org.eclipse.ui.texteditor.ITextEditor;
21
4c03afae 22public class DocumentUtils {
87b2afda 23
625f3718 24 private static TextSelection getTextSelectionFrom(ExecutionEvent event) throws ExecutionException {
87b2afda 25 ISelection selection = HandlerUtil.getCurrentSelectionChecked(event);
02079d76 26 assertThat(selection, instanceOf(TextSelection.class));
87b2afda
EK
27 return (TextSelection) selection;
28 }
29
30 public static ITextEditor getEditorFrom(ExecutionEvent event) throws ExecutionException {
31 IEditorPart part = HandlerUtil.getActiveEditorChecked(event);
02079d76 32 assertThat(part, instanceOf(ITextEditor.class));
87b2afda
EK
33 return (ITextEditor) part;
34 }
35
36 public static IDocument getDocumentFrom(ITextEditor editor) {
37 return editor.getDocumentProvider().getDocument(editor.getEditorInput());
38 }
39
18447975 40 public static CompilationUnitTextSelection getStrippedCompilationUnitTextSelectionFromExecutionEvent(ExecutionEvent event)
610e968d 41 throws ExecutionException {
18447975 42 ICompilationUnit compilationUnit = getCompilationUnitFromExecutionEvent(event);
1d39ea7d 43 IDocument document = DocumentUtils.getDocumentFromCompilationUnit(compilationUnit);
4c03afae 44 ITextSelection strippedTextSelection = ParseUtils.stripTextSelection(document, getTextSelectionFrom(event));
1d39ea7d 45 return new CompilationUnitTextSelection(compilationUnit, strippedTextSelection);
610e968d
EK
46 }
47
18447975
EK
48 public static CompilationUnitTextSelection getCompilationUnitTextSelectionFromExecutionEvent(ExecutionEvent event)
49 throws ExecutionException {
50 return new CompilationUnitTextSelection(getCompilationUnitFromExecutionEvent(event), getTextSelectionFrom(event));
51 }
52
53 private static ICompilationUnit getCompilationUnitFromExecutionEvent(ExecutionEvent event)
54 throws ExecutionException {
55 return RefaktorHandleUtils.getCompilationUnitFromEditor(getEditorFrom(event));
56 }
57
610e968d
EK
58 public static void setSelectionForEditor(ISelection selection, ITextEditor editor) {
59 editor.getSite().getSelectionProvider().setSelection(selection);
4c03afae
EK
60 }
61
57ec7e36 62 public static IDocument getDocumentFromCompilationUnit(ICompilationUnit compilationUnit) {
02079d76 63 assertThat(compilationUnit, notNullValue());
fe4785f1 64 try {
57ec7e36 65 return new Document(compilationUnit.getSource());
fe4785f1
EK
66 } catch (JavaModelException e) {
67 throw new RuntimeException(e);
68 }
69 }
70
558315ef 71 public static IFile getFileFromEditor(IEditorPart editor) {
dde93e7b
EK
72 return ResourceUtil.getFile(editor.getEditorInput());
73 }
87b2afda 74}