diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/selection/TextEditorSelectionParticipant.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/selection/TextEditorSelectionParticipant.java | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/selection/TextEditorSelectionParticipant.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/selection/TextEditorSelectionParticipant.java deleted file mode 100644 index 24dcffaef1..0000000000 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/selection/TextEditorSelectionParticipant.java +++ /dev/null @@ -1,215 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.ui.internal.selection; - -import org.eclipse.jface.text.ITextSelection; -import org.eclipse.jface.viewers.IPostSelectionProvider; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jpt.common.core.utility.TextRange; -import org.eclipse.jpt.core.JpaFile; -import org.eclipse.jpt.core.JpaStructureNode; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IFileEditorInput; -import org.eclipse.ui.IPropertyListener; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.texteditor.ITextEditor; - -public class TextEditorSelectionParticipant - implements JpaSelectionParticipant -{ - private final JpaSelectionManager selectionManager; - - final ITextEditor textEditor; - - private final IPropertyListener editorInputListener; - - private final ISelectionChangedListener editorSelectionListener; - - private JpaSelection currentSelection; - - private boolean forwardSelection = true; // TODO this just smells wrong ~bjv - - - public TextEditorSelectionParticipant(JpaSelectionManager selectionManager, ITextEditor textEditor) { - super(); - this.selectionManager = selectionManager; - this.textEditor = textEditor; - this.editorInputListener = new EditorInputListener(); - this.textEditor.addPropertyListener(this.editorInputListener); - this.editorSelectionListener = new EditorSelectionListener(); - this.getPostSelectionProvider().addPostSelectionChangedListener(this.editorSelectionListener); - this.currentSelection = this.calculateSelection(); - } - - // ********** IJpaSelectionParticipant implementation ********** - - public JpaSelection getSelection() { - return this.currentSelection; - } - - public void selectionChanged(JpaSelectionEvent evt) { - JpaSelection newSelection = evt.getSelection(); - - if ((newSelection == JpaSelection.NULL_SELECTION) - || newSelection.equals(this.currentSelection)) { - return; - } - - if (getActiveTextEditor() != this.textEditor) { - return; - } - - this.forwardSelection = false; - TextRange textRange = newSelection.getSelectedNode().getSelectionTextRange(); - if (textRange != null) { - this.textEditor.selectAndReveal(textRange.getOffset(), textRange.getLength()); - this.currentSelection = newSelection; - } - this.forwardSelection = true; - } - - public boolean disposeOnHide() { - return true; - } - - public void dispose() { - this.textEditor.removePropertyListener(this.editorInputListener); - this.getPostSelectionProvider().removePostSelectionChangedListener(this.editorSelectionListener); - } - - - // ********** internal methods ********** - - protected JpaSelection calculateSelection() { - ISelection selection = this.textEditor.getSelectionProvider().getSelection(); - if (! (selection instanceof ITextSelection)) { - return JpaSelection.NULL_SELECTION; - } - - JpaFile jpaFile = this.getJpaFile(); - if (jpaFile == null) { - return JpaSelection.NULL_SELECTION; - } - - return this.buildSelection(jpaFile.getStructureNode(((ITextSelection) selection).getOffset())); - } - - protected JpaSelection buildSelection(JpaStructureNode selectedNode) { - return (selectedNode == null) ? JpaSelection.NULL_SELECTION : new DefaultJpaSelection(selectedNode); - } - - protected IWorkbenchPage getActivePage() { - return this.textEditor.getEditorSite().getWorkbenchWindow().getActivePage(); - } - - protected IWorkbenchPart getActivePart() { - IWorkbenchPage activePage = getActivePage(); - return (activePage == null) ? null: activePage.getActivePart(); - } - - protected IEditorPart getActiveEditor() { - IWorkbenchPage activePage = getActivePage(); - return (activePage == null) ? null: activePage.getActiveEditor(); - } - - protected ITextEditor getActiveTextEditor() { - return getTextEditor(getActiveEditor()); - } - - protected ITextEditor getTextEditor(IWorkbenchPart part) { - return (part == null) ? null : (ITextEditor) part.getAdapter(ITextEditor.class); - } - - protected JpaFile getJpaFile() { - IEditorInput input = this.textEditor.getEditorInput(); - if ( ! (input instanceof IFileEditorInput)) { - return null; - } - return JptCorePlugin.getJpaFile(((IFileEditorInput) input).getFile()); - } - - protected IPostSelectionProvider getPostSelectionProvider() { - return (IPostSelectionProvider) this.textEditor.getSelectionProvider(); - } - - - // ********** listener callbacks ********** - - protected void editorInputChanged() { - this.selectionChanged(); - } - - protected void editorSelectionChanged(SelectionChangedEvent event) { - // This is a bit kludgey. We check to see if the selection event - // occurred when a participating part is active (and so, ostensibly, - // *because* of the participating part). If so, we reselect the valid - // text. - IWorkbenchPart activePart = getActivePart(); - if (getTextEditor(activePart) != this.textEditor && this.selectionManager.isRegistered(activePart)) { - if (this.currentSelection.isEmpty()) { - return; - } - - this.forwardSelection = false; - TextRange textRange = this.currentSelection.getSelectedNode().getSelectionTextRange(); - if (textRange != null) { - this.textEditor.selectAndReveal(textRange.getOffset(), textRange.getLength()); - } - this.forwardSelection = true; - - return; - } - - this.selectionChanged(); - } - - protected void selectionChanged() { - JpaSelection newSelection = this.calculateSelection(); - if (newSelection.equals(this.currentSelection)) { - return; - } - this.currentSelection = newSelection; - - if (this.forwardSelection) { - this.selectionManager.select(newSelection, this); - } - } - - - // ********** listeners ********** - - protected class EditorInputListener implements IPropertyListener { - protected EditorInputListener() { - super(); - } - public void propertyChanged(Object source, int propId) { - if ((source == TextEditorSelectionParticipant.this.textEditor) - && (propId == IEditorPart.PROP_INPUT)) { - TextEditorSelectionParticipant.this.editorInputChanged(); - } - } - } - - - protected class EditorSelectionListener implements ISelectionChangedListener { - protected EditorSelectionListener() { - super(); - } - public void selectionChanged(SelectionChangedEvent event) { - TextEditorSelectionParticipant.this.editorSelectionChanged(event); - } - } - -} |