--- /dev/null
+package net.sourceforge.phpeclipse.wiki.velocity;
+
+import java.text.BreakIterator;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.texteditor.IDocumentProvider;
+import org.eclipse.ui.texteditor.ITextEditor;
+
+public class EditorText {
+ private IEditorPart targetEditor = null;
+
+ String selection = null;
+
+ String text = null;
+
+ public EditorText(IEditorPart targetEditor) {
+ this.targetEditor = targetEditor;
+ }
+
+ public void clear() {
+ selection = null;
+ text = null;
+ }
+
+ /**
+ * @return Returns the selection.
+ */
+ public String getSelection() {
+ if (selection == null) {
+ selection = findSelectedText();
+ if (selection == null) {
+ selection = "";
+ }
+ }
+ return selection;
+ }
+
+ /**
+ * @param selection
+ * The selection to set.
+ */
+ public void setSelection(String selection) {
+ this.selection = selection;
+ }
+
+ /**
+ * @return Returns the text.
+ */
+ public String getText() {
+ return text;
+ }
+
+ /**
+ * @param text
+ * The text to set.
+ */
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ public String findSelectedText() {
+ String selectedText = null;
+ ITextSelection textSelection = (ITextSelection) targetEditor.getEditorSite().getSelectionProvider().getSelection();
+
+ selectedText = textSelection.getText();
+ if (selectedText == null || selectedText.trim().length() == 0) {
+ selectedText = findWord(textSelection);
+ }
+ return selectedText;
+ }
+
+ private String findWord(ITextSelection textSelection) {
+ IDocumentProvider documentProvider = ((ITextEditor) targetEditor).getDocumentProvider();
+ IDocument document = documentProvider.getDocument(targetEditor.getEditorInput());
+ int caretPosition = textSelection.getOffset();
+ try {
+ IRegion line = document.getLineInformation(document.getLineOfOffset(caretPosition));
+ String currentLine = document.get(line.getOffset(), line.getLength());
+ int positionInLine = caretPosition - line.getOffset();
+ return findWordAt(positionInLine, currentLine);
+ } catch (Exception e) {
+ }
+ return null;
+ }
+
+ private String findWordAt(int pos, String source) {
+ BreakIterator boundary = BreakIterator.getWordInstance();
+ boundary.setText(source);
+ int end = boundary.following(pos);
+ int start = boundary.previous();
+ return source.substring(start, end);
+ }
+}
\ No newline at end of file