1 package jp.sourceforge.moreemacs.handlers;
\r
3 import org.eclipse.jface.text.IDocument;
\r
4 import org.eclipse.jface.text.ITextOperationTarget;
\r
5 import org.eclipse.jface.text.ITextSelection;
\r
6 import org.eclipse.jface.text.ITextViewer;
\r
7 import org.eclipse.jface.text.ITextViewerExtension;
\r
8 import org.eclipse.ui.IEditorPart;
\r
9 import org.eclipse.ui.IWorkbenchWindow;
\r
10 import org.eclipse.ui.texteditor.ITextEditor;
\r
12 abstract class TextEditorExecution implements Execution {
\r
13 protected IWorkbenchWindow window;
\r
14 protected ITextEditor textEditor;
\r
15 protected ITextViewer textViewer;
\r
16 protected Cursor cursor;
\r
17 protected IDocument doc;
\r
20 public boolean init(IWorkbenchWindow window) {
\r
21 this.window = window;
\r
23 IEditorPart editor = window.getActivePage().getActiveEditor();
\r
24 if (editor instanceof ITextEditor) {
\r
25 textEditor = (ITextEditor) editor;
\r
27 textEditor = (ITextEditor) editor.getAdapter(ITextEditor.class);
\r
29 if(textEditor == null) {
\r
33 doc = textEditor.getDocumentProvider().getDocument(
\r
34 textEditor.getEditorInput());
\r
36 ITextOperationTarget target =
\r
37 (ITextOperationTarget)editor.getAdapter(ITextOperationTarget.class);
\r
38 if(!(target instanceof ITextViewer)) {
\r
41 textViewer = (ITextViewer) target;
\r
43 cursor = new Cursor(textEditor, textViewer);
\r
48 protected ITextSelection getSelection(boolean fallbackToMark) {
\r
49 ITextSelection selection =
\r
50 (ITextSelection) textEditor.getSelectionProvider().getSelection();
\r
52 if(!fallbackToMark && selection.getLength() != 0) {
\r
56 IEditorPart editor = window.getActivePage().getActiveEditor();
\r
57 ITextOperationTarget target =
\r
58 (ITextOperationTarget)editor.getAdapter(ITextOperationTarget.class);
\r
60 if(!(target instanceof ITextViewerExtension)) {
\r
64 ITextViewerExtension viewerEx = (ITextViewerExtension) target;
\r
66 int mark = viewerEx.getMark();
\r
72 int current = selection.getOffset();
\r
74 int start = (mark < current) ? mark : current;
\r
75 textViewer.setSelectedRange(start, Math.abs(mark - current));
\r
77 return (ITextSelection) textEditor.getSelectionProvider().getSelection();
\r
80 protected final int getTabStop() {
\r
81 return textViewer.getTextWidget().getTabs();
\r