1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / JavaSelectMarkerRulerAction2.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/JavaSelectMarkerRulerAction2.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/JavaSelectMarkerRulerAction2.java
new file mode 100644 (file)
index 0000000..0e9b0bc
--- /dev/null
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * 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();
+               }
+       }
+
+}