diff options
Diffstat (limited to 'bundles/org.eclipse.wst.sse.ui/src/org/eclipse')
7 files changed, 54 insertions, 61 deletions
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/AbstractDropAction.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/AbstractDropAction.java index c5d034c827..d1771aad77 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/AbstractDropAction.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/AbstractDropAction.java @@ -15,68 +15,80 @@ package org.eclipse.wst.sse.ui.internal; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.text.TextSelection; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.swt.dnd.DropTargetEvent; -import org.eclipse.swt.graphics.Point; +import org.eclipse.ui.IEditorPart; import org.eclipse.ui.texteditor.ITextEditor; +import org.eclipse.wst.sse.ui.internal.provisional.extensions.ISourceEditingTextTools; /** */ public abstract class AbstractDropAction implements IDropAction { /* - * replace targetEditor's current selection by "text" + * Replaces targetEditor's current selection by "text" */ - protected boolean insert(String text, IExtendedSimpleEditor targetEditor) { + protected boolean insert(String text, IEditorPart targetEditor) { if (text == null || text.length() == 0) { - return false; + return true; } - Point pt = targetEditor.getSelectionRange(); - IDocument doc = targetEditor.getDocument(); + ITextSelection textSelection = null; + IDocument doc = null; + ISelection selection = null; - try { - doc.replace(pt.x, pt.y, text); - } catch (BadLocationException e) { - return false; + ISourceEditingTextTools tools = (ISourceEditingTextTools) targetEditor.getAdapter(ISourceEditingTextTools.class); + if (tools != null) { + doc = tools.getDocument(); + selection = tools.getSelection(); } ITextEditor textEditor = null; - if (targetEditor instanceof ITextEditor) { textEditor = (ITextEditor) targetEditor; } - if (textEditor == null && targetEditor.getEditorPart() instanceof ITextEditor) { - textEditor = (ITextEditor) targetEditor.getEditorPart(); - } - if (textEditor == null && targetEditor instanceof IAdaptable) { + if (textEditor == null) { textEditor = (ITextEditor) ((IAdaptable) targetEditor).getAdapter(ITextEditor.class); } - if (textEditor == null) { - textEditor = (ITextEditor) targetEditor.getEditorPart().getAdapter(ITextEditor.class); + if (textEditor == null && tools != null && tools.getEditorPart() instanceof ITextEditor) { + textEditor = (ITextEditor) tools.getEditorPart(); + } + if (textEditor == null && tools != null && tools.getEditorPart() != null) { + textEditor = (ITextEditor) tools.getEditorPart().getAdapter(ITextEditor.class); + } + + if (selection == null && textEditor != null) { + selection = textEditor.getSelectionProvider().getSelection(); } - if (textEditor != null) { + if (doc == null && textEditor != null) { + doc = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput()); + } + + if (selection instanceof ITextSelection) { + textSelection = (ITextSelection) selection; + try { + doc.replace(textSelection.getOffset(), textSelection.getLength(), text); + } + catch (BadLocationException e) { + return false; + } + } + if (textEditor != null && textSelection != null) { ISelectionProvider sp = textEditor.getSelectionProvider(); - ISelection sel = new TextSelection(pt.x, text.length()); + ITextSelection sel = new TextSelection(textSelection.getOffset(), text.length()); sp.setSelection(sel); - textEditor.selectAndReveal(pt.x, text.length()); + textEditor.selectAndReveal(sel.getOffset(), sel.getLength()); } return true; } - - /** - * @see IDropAction#isSupportedData(Object) - */ public boolean isSupportedData(Object data) { return true; } - /** - * @see IDropAction#run(DropTargetEvent, IExtendedSimpleEditor) - */ - public abstract boolean run(DropTargetEvent event, IExtendedSimpleEditor targetEditor); + public abstract boolean run(DropTargetEvent event, IEditorPart targetEditor); } diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ExtendedEditorDropTargetAdapter.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ExtendedEditorDropTargetAdapter.java index ef2d90806d..17335ae3f0 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ExtendedEditorDropTargetAdapter.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ExtendedEditorDropTargetAdapter.java @@ -12,8 +12,6 @@ *******************************************************************************/ package org.eclipse.wst.sse.ui.internal; - - import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.ITextViewer; @@ -30,7 +28,7 @@ import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Caret; - +import org.eclipse.ui.IEditorPart; /** * ExtendedEditorDropTargetAdapter @@ -40,7 +38,7 @@ public class ExtendedEditorDropTargetAdapter extends DropTargetAdapter { private Point caret = null; private String[] editorIds; private int orgOffset = 0; - private IExtendedSimpleEditor targetEditor = null; + private IEditorPart targetEditor = null; private ITextViewer textViewer = null; private Transfer[] transfers = null; @@ -273,7 +271,7 @@ public class ExtendedEditorDropTargetAdapter extends DropTargetAdapter { return offset; } - public IExtendedSimpleEditor getTargetEditor() { + public IEditorPart getTargetEditor() { return targetEditor; } @@ -297,7 +295,7 @@ public class ExtendedEditorDropTargetAdapter extends DropTargetAdapter { /** */ - public void setTargetEditor(IExtendedSimpleEditor targetEditor) { + public void setTargetEditor(IEditorPart targetEditor) { this.targetEditor = targetEditor; } diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/FileDropAction.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/FileDropAction.java index 557ddad98f..c8a3b31e52 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/FileDropAction.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/FileDropAction.java @@ -12,22 +12,19 @@ *******************************************************************************/ package org.eclipse.wst.sse.ui.internal; - - import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.swt.dnd.DropTargetEvent; +import org.eclipse.ui.IEditorPart; /** * Action for file drop */ public class FileDropAction extends AbstractDropAction { - - - public boolean run(DropTargetEvent event, IExtendedSimpleEditor targetEditor) { + public boolean run(DropTargetEvent event, IEditorPart targetEditor) { String[] strs = (String[]) event.data; if (strs == null || strs.length == 0) { return false; diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/IDropAction.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/IDropAction.java index 6f517dcae8..ac2a70bd35 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/IDropAction.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/IDropAction.java @@ -15,6 +15,7 @@ package org.eclipse.wst.sse.ui.internal; import org.eclipse.swt.dnd.DropTargetEvent; +import org.eclipse.ui.IEditorPart; /** */ @@ -32,5 +33,5 @@ public interface IDropAction { * @return boolean true for the action is actually processed false for the * action is not processed. */ - public boolean run(DropTargetEvent event, IExtendedSimpleEditor targetEditor); + public boolean run(DropTargetEvent event, IEditorPart targetEditor); } diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/TextDropAction.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/TextDropAction.java index 7854652356..27d196e33d 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/TextDropAction.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/TextDropAction.java @@ -15,18 +15,13 @@ package org.eclipse.wst.sse.ui.internal; import org.eclipse.swt.dnd.DropTargetEvent; +import org.eclipse.ui.IEditorPart; /** * TextDropAction */ public class TextDropAction extends AbstractDropAction { - - - /** - * @see AbstractDropAction#run(DropTargetEvent, IExtendedSimpleEditor) - */ - public boolean run(DropTargetEvent event, IExtendedSimpleEditor targetEditor) { + public boolean run(DropTargetEvent event, IEditorPart targetEditor) { return insert((String) event.data, targetEditor); } - } diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/debug/ToggleBreakpointAction.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/debug/ToggleBreakpointAction.java index f9182fedcb..de3c2e9661 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/debug/ToggleBreakpointAction.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/debug/ToggleBreakpointAction.java @@ -31,15 +31,12 @@ import org.eclipse.wst.sse.core.internal.provisional.IModelManager; import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager; import org.eclipse.wst.sse.core.internal.util.Debug; -import org.eclipse.wst.sse.ui.internal.IExtendedMarkupEditor; import org.eclipse.wst.sse.ui.internal.IExtendedSimpleEditor; import org.eclipse.wst.sse.ui.internal.Logger; import org.eclipse.wst.sse.ui.internal.SSEUIMessages; import org.eclipse.wst.sse.ui.internal.SSEUIPlugin; import org.eclipse.wst.sse.ui.internal.extension.BreakpointProviderBuilder; import org.eclipse.wst.sse.ui.internal.provisional.extensions.breakpoint.IBreakpointProvider; -import org.w3c.dom.Document; -import org.w3c.dom.Node; /** * ToggleBreakpointAction @@ -70,13 +67,6 @@ public class ToggleBreakpointAction extends BreakpointRulerAction { String contentType = getContentType(document); IBreakpointProvider[] providers = BreakpointProviderBuilder.getInstance().getBreakpointProviders(editor, contentType, getFileExtension(input)); - Document doc = null; - Node node = null; - if (editor instanceof IExtendedMarkupEditor) { - doc = ((IExtendedMarkupEditor) editor).getDOMDocument(); - node = ((IExtendedMarkupEditor) editor).getCaretNode(); - } - int pos = -1; if (editor instanceof IExtendedSimpleEditor) { pos = ((IExtendedSimpleEditor) editor).getCaretPosition(); @@ -88,7 +78,7 @@ public class ToggleBreakpointAction extends BreakpointRulerAction { try { if (Debug.debugBreakpoints) System.out.println(providers[i].getClass().getName() + " adding breakpoint to line " + lineNumber); //$NON-NLS-1$ - IStatus status = providers[i].addBreakpoint(doc, document, input, node, lineNumber, pos); + IStatus status = providers[i].addBreakpoint(document, input, lineNumber, pos); if (status != null && !status.isOK()) { errors.add(status); } diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/extension/BreakpointProviderBuilder.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/extension/BreakpointProviderBuilder.java index 059a20ac5a..c2a4183fec 100644 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/extension/BreakpointProviderBuilder.java +++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/extension/BreakpointProviderBuilder.java @@ -32,8 +32,8 @@ import org.eclipse.swt.custom.BusyIndicator; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.wst.sse.ui.internal.Logger; +import org.eclipse.wst.sse.ui.internal.provisional.extensions.ISourceEditingTextTools; import org.eclipse.wst.sse.ui.internal.provisional.extensions.breakpoint.IBreakpointProvider; -import org.eclipse.wst.sse.ui.internal.provisional.extensions.breakpoint.SourceEditingTextTools; import org.osgi.framework.Bundle; @@ -320,9 +320,9 @@ public class BreakpointProviderBuilder extends RegistryReader { IBreakpointProvider[] providers = new IBreakpointProvider[s.size()]; Iterator itr = s.iterator(); int i = 0; - SourceEditingTextTools tools = null; + ISourceEditingTextTools tools = null; if (editorpart != null && itr.hasNext()) - tools = (SourceEditingTextTools) editorpart.getAdapter(SourceEditingTextTools.class); + tools = (ISourceEditingTextTools) editorpart.getAdapter(ISourceEditingTextTools.class); while (itr.hasNext()) { providers[i] = (IBreakpointProvider) itr.next(); providers[i].setSourceEditingTextTools(tools); |