+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package net.sourceforge.phpeclipse.phpeditor;
-
-import java.util.Iterator;
-import java.util.ResourceBundle;
-
-import net.sourceforge.phpdt.core.ICompilationUnit;
-import net.sourceforge.phpdt.core.IJavaElement;
-import net.sourceforge.phpdt.core.JavaCore;
-import net.sourceforge.phpdt.internal.ui.IJavaHelpContextIds;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.IVerticalRulerInfo;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.texteditor.AbstractMarkerAnnotationModel;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.eclipse.ui.texteditor.ITextEditorExtension;
-import org.eclipse.ui.texteditor.SelectMarkerRulerAction;
-
-/**
- * A special select marker ruler action which activates quick fix if clicked on
- * a quick fixable problem.
- */
-public class JavaSelectMarkerRulerAction extends SelectMarkerRulerAction {
-
- private ITextEditor fTextEditor;
-
- private Position fPosition;
-
- public JavaSelectMarkerRulerAction(ResourceBundle bundle, String prefix,
- ITextEditor editor, IVerticalRulerInfo ruler) {
- super(bundle, prefix, editor, ruler);
- fTextEditor = editor;
- PlatformUI.getWorkbench().getHelpSystem().setHelp(this,
- IJavaHelpContextIds.JAVA_SELECT_MARKER_RULER_ACTION);
- }
-
- public void run() {
- // if
- // (PHPeclipsePlugin.getDefault().getPreferenceStore().getBoolean(PreferenceConstants.EDITOR_ANNOTATION_ROLL_OVER))
- // return;
-
- if (fPosition != null) {
- ITextOperationTarget operation = (ITextOperationTarget) fTextEditor
- .getAdapter(ITextOperationTarget.class);
- // final int opCode= PHPUnitEditor.CORRECTIONASSIST_PROPOSALS;
- // if (operation != null && operation.canDoOperation(opCode)) {
- // fTextEditor.selectAndReveal(fPosition.getOffset(),
- // fPosition.getLength());
- // operation.doOperation(opCode);
- // return;
- // }
- return;
- }
- super.run();
- }
-
- public void update() {
- // Begin Fix for http://dev.eclipse.org/bugs/show_bug.cgi?id=20114
- if (!(fTextEditor instanceof ITextEditorExtension)
- || ((ITextEditorExtension) fTextEditor).isEditorInputReadOnly()) {
- fPosition = null;
- super.update();
- return;
- }
- // End Fix for http://dev.eclipse.org/bugs/show_bug.cgi?id=20114
- fPosition = getJavaAnnotationPosition();
- if (fPosition != null)
- setEnabled(true);
- else
- super.update();
- }
-
- private Position getJavaAnnotationPosition() {
- AbstractMarkerAnnotationModel model = getAnnotationModel();
- IDocument document = getDocument();
- if (model == null)
- return null;
- ICompilationUnit cu = getCompilationUnit();
- if (cu == null) {
- return null;
- }
-
- // boolean hasAssistLightbulb=
- // PreferenceConstants.getPreferenceStore().getBoolean(PreferenceConstants.APPEARANCE_QUICKASSIST_LIGHTBULB);
- Annotation assistAnnotation = null;
-
- Iterator iter = model.getAnnotationIterator();
- while (iter.hasNext()) {
- Annotation annotation = (Annotation) iter.next();
- if (annotation instanceof IJavaAnnotation) {
- IJavaAnnotation javaAnnotation = (IJavaAnnotation) annotation;
- if (!javaAnnotation.isMarkedDeleted()) {
- Position position = model.getPosition(annotation);
- // if (includesRulerLine(position, document) &&
- // JavaCorrectionProcessor.hasCorrections(javaAnnotation))
- // return position;
- }
- }
- // else if (hasAssistLightbulb && annotation instanceof
- // AssistAnnotation) {
- // // there is only one AssistAnnotation at a time
- // assistAnnotation= annotation;
- // }
- }
- if (assistAnnotation != null) {
- Position position = model.getPosition(assistAnnotation);
- // no need to check 'JavaCorrectionProcessor.hasAssists': annotation
- // only created when
- // there are assists
- if (includesRulerLine(position, document))
- return position;
- }
- return null;
- }
-
- private ICompilationUnit getCompilationUnit() {
- IEditorInput input = fTextEditor.getEditorInput();
- if (input instanceof IFileEditorInput) {
- IFile file = ((IFileEditorInput) input).getFile();
- IJavaElement element = JavaCore.create(file);
- if (element instanceof ICompilationUnit)
- return (ICompilationUnit) element;
- }
- return null;
- }
-}