--- /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.ResourceBundle;
+
+import net.sourceforge.phpdt.internal.ui.IJavaHelpContextIds;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.text.Position;
+import org.eclipse.jface.text.source.Annotation;
+import org.eclipse.jface.text.source.IAnnotationModel;
+import org.eclipse.jface.text.source.VerticalRulerEvent;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.ui.texteditor.ITextEditorActionConstants;
+import org.eclipse.ui.texteditor.IUpdate;
+import org.eclipse.ui.texteditor.SelectAnnotationRulerAction;
+
+// import net.sourceforge.phpdt.internal.ui.IJavaHelpContextIds;
+// import
+// net.sourceforge.phpdt.internal.ui.text.correction.JavaCorrectionProcessor;
+// import
+// net.sourceforge.phpdt.internal.ui.text.correction.QuickAssistLightBulbUpdater.AssistAnnotation;
+// import net.sourceforge.phpdt.internal.ui.text.java.hover.JavaExpandHover;
+
+/**
+ * A special select marker ruler action which activates quick fix if clicked on
+ * a quick fixable problem.
+ */
+public class JavaSelectMarkerRulerAction2 extends SelectAnnotationRulerAction {
+
+ public JavaSelectMarkerRulerAction2(ResourceBundle bundle, String prefix,
+ ITextEditor editor) {
+ super(bundle, prefix, editor);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(this,
+ IJavaHelpContextIds.JAVA_SELECT_MARKER_RULER_ACTION);
+ }
+
+ /*
+ * @see org.eclipse.ui.texteditor.IVerticalRulerListener#annotationDefaultSelected(org.eclipse.ui.texteditor.VerticalRulerEvent)
+ */
+ public void annotationDefaultSelected(VerticalRulerEvent event) {
+ Annotation annotation = event.getSelectedAnnotation();
+ IAnnotationModel model = getAnnotationModel();
+
+ // if (isOverrideIndicator(annotation)) {
+ // ((OverrideIndicatorManager.OverrideIndicator)annotation).open();
+ // return;
+ // }
+
+ if (isBreakpoint(annotation))
+ triggerAction(ITextEditorActionConstants.RULER_DOUBLE_CLICK);
+
+ Position position = model.getPosition(annotation);
+ if (position == null)
+ return;
+
+ // if (isQuickFixTarget(annotation)) {
+ // ITextOperationTarget operation= (ITextOperationTarget)
+ // getTextEditor().getAdapter(ITextOperationTarget.class);
+ // final int opCode= PHPUnitEditor.CORRECTIONASSIST_PROPOSALS;
+ // if (operation != null && operation.canDoOperation(opCode)) {
+ // getTextEditor().selectAndReveal(position.getOffset(),
+ // position.getLength());
+ // operation.doOperation(opCode);
+ // return;
+ // }
+ // }
+
+ // default:
+ super.annotationDefaultSelected(event);
+ }
+
+ /**
+ * Tells whether the given annotation is an override annotation.
+ *
+ * @param annotation
+ * the annotation
+ * @return <code>true</code> iff the annotation is an override annotation
+ */
+ private boolean isOverrideIndicator(Annotation annotation) {
+ return false; // annotation instanceof
+ // OverrideIndicatorManager.OverrideIndicator;
+ }
+
+ /**
+ * @param annotation
+ * @return
+ */
+ private boolean isBreakpoint(Annotation annotation) {
+ return annotation.getType().equals("org.eclipse.debug.core.breakpoint");
+ // ||
+ // annotation.getType().equals(JavaExpandHover.NO_BREAKPOINT_ANNOTATION);
+ // //$NON-NLS-1$
+
+ }
+
+ private boolean isQuickFixTarget(Annotation a) {
+ return false; // JavaCorrectionProcessor.hasCorrections(a) || a
+ // instanceof AssistAnnotation;
+ }
+
+ private void triggerAction(String actionID) {
+ IAction action = getTextEditor().getAction(actionID);
+ if (action != null) {
+ if (action instanceof IUpdate)
+ ((IUpdate) action).update();
+ // hack to propagate line change
+ if (action instanceof ISelectionListener) {
+ ((ISelectionListener) action).selectionChanged(null, null);
+ }
+ if (action.isEnabled())
+ action.run();
+ }
+ }
+
+}