]> git.uio.no Git - ifi-stolz-refaktor.git/blob - software/no.uio.ifi.refaktor/src/no/uio/ifi/refaktor/utils/DocumentUtils.java
fixed bug, needs cleaning up
[ifi-stolz-refaktor.git] / software / no.uio.ifi.refaktor / src / no / uio / ifi / refaktor / utils / DocumentUtils.java
1 package no.uio.ifi.refaktor.utils;
2
3 import no.uio.ifi.refaktor.textselection.CompilationUnitTextSelection;
4
5 import org.eclipse.core.commands.ExecutionEvent;
6 import org.eclipse.core.commands.ExecutionException;
7 import org.eclipse.core.resources.IFile;
8 import org.eclipse.jdt.core.ICompilationUnit;
9 import org.eclipse.jdt.core.JavaModelException;
10 import org.eclipse.jface.text.Document;
11 import org.eclipse.jface.text.IDocument;
12 import org.eclipse.jface.text.ITextSelection;
13 import org.eclipse.jface.text.TextSelection;
14 import org.eclipse.jface.viewers.ISelection;
15 import org.eclipse.ui.IEditorPart;
16 import org.eclipse.ui.handlers.HandlerUtil;
17 import org.eclipse.ui.ide.ResourceUtil;
18 import org.eclipse.ui.texteditor.ITextEditor;
19
20 public class DocumentUtils {
21
22         public static ITextEditor getEditorFrom(ExecutionEvent event) throws ExecutionException {
23                 IEditorPart part = HandlerUtil.getActiveEditorChecked(event);
24                 assert part instanceof ITextEditor;
25                 return (ITextEditor) part;
26         }
27
28         public static IDocument getDocumentFrom(ITextEditor editor) {
29                 return editor.getDocumentProvider().getDocument(editor.getEditorInput());
30         }
31
32         public static CompilationUnitTextSelection getStrippedCompilationUnitTextSelectionFromExecutionEvent(ExecutionEvent event) 
33                         throws ExecutionException {
34                 ICompilationUnit compilationUnit = getCompilationUnitFromExecutionEvent(event);
35                 IDocument document = DocumentUtils.getDocumentFromCompilationUnit(compilationUnit);
36                 ITextSelection strippedTextSelection = ParseUtils.stripTextSelection(document, getTextSelectionFrom(event));
37                 return new CompilationUnitTextSelection(compilationUnit, strippedTextSelection);
38         }
39
40         public static CompilationUnitTextSelection getCompilationUnitTextSelectionFromExecutionEvent(ExecutionEvent event) 
41                         throws ExecutionException {
42                 return new CompilationUnitTextSelection(getCompilationUnitFromExecutionEvent(event), getTextSelectionFrom(event));
43         }
44
45         private static ICompilationUnit getCompilationUnitFromExecutionEvent(ExecutionEvent event)
46                         throws ExecutionException {
47                 return RefaktorHandleUtils.getCompilationUnitFromEditor(getEditorFrom(event));
48         }
49
50
51         private static TextSelection getTextSelectionFrom(ExecutionEvent event) throws ExecutionException {
52                 ISelection selection = HandlerUtil.getCurrentSelectionChecked(event);
53                 assert selection instanceof TextSelection;
54                 return (TextSelection) selection;
55         }
56         public static void setSelectionForEditor(ISelection selection, ITextEditor editor) {
57                 editor.getSite().getSelectionProvider().setSelection(selection);
58         }
59
60         public static IDocument getDocumentFromCompilationUnit(ICompilationUnit compilationUnit) {
61                 assert compilationUnit != null;
62                 try {
63                         return new Document(compilationUnit.getSource());
64                 } catch (JavaModelException e) {
65                         throw new RuntimeException(e);
66                 }
67         }
68
69         public static IFile getFileFromEditor(IEditorPart editor) {
70                 return ResourceUtil.getFile(editor.getEditorInput());
71         }
72 }