X-Git-Url: http://git.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPEditor.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPEditor.java
index 7ecba2c..0ba1930 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPEditor.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPEditor.java
@@ -37,7 +37,6 @@ import net.sourceforge.phpdt.core.compiler.ITerminalSymbols;
import net.sourceforge.phpdt.core.compiler.InvalidInputException;
import net.sourceforge.phpdt.internal.compiler.parser.Scanner;
import net.sourceforge.phpdt.internal.compiler.parser.SyntaxError;
-import net.sourceforge.phpdt.internal.core.CompilationUnit;
import net.sourceforge.phpdt.internal.ui.actions.CompositeActionGroup;
import net.sourceforge.phpdt.internal.ui.actions.FoldingActionGroup;
import net.sourceforge.phpdt.internal.ui.actions.SelectionConverter;
@@ -49,7 +48,7 @@ import net.sourceforge.phpdt.internal.ui.text.JavaWordFinder;
import net.sourceforge.phpdt.internal.ui.text.JavaWordIterator;
import net.sourceforge.phpdt.internal.ui.text.PHPPairMatcher;
import net.sourceforge.phpdt.internal.ui.text.PreferencesAdapter;
-import net.sourceforge.phpdt.internal.ui.text.java.JavaExpandHover;
+import net.sourceforge.phpdt.internal.ui.text.java.hover.JavaExpandHover;
import net.sourceforge.phpdt.internal.ui.viewsupport.ISelectionListenerWithAST;
import net.sourceforge.phpdt.internal.ui.viewsupport.IViewPartInputProvider;
import net.sourceforge.phpdt.internal.ui.viewsupport.SelectionListenerWithASTManager;
@@ -98,7 +97,6 @@ import org.eclipse.jface.text.ITextPresentationListener;
import org.eclipse.jface.text.ITextSelection;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.ITextViewerExtension2;
-import org.eclipse.jface.text.ITextViewerExtension3;
import org.eclipse.jface.text.ITextViewerExtension4;
import org.eclipse.jface.text.ITextViewerExtension5;
import org.eclipse.jface.text.ITypedRegion;
@@ -120,6 +118,7 @@ import org.eclipse.jface.text.source.IOverviewRuler;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.ISourceViewerExtension2;
import org.eclipse.jface.text.source.IVerticalRuler;
+import org.eclipse.jface.text.source.IVerticalRulerColumn;
import org.eclipse.jface.text.source.OverviewRuler;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
import org.eclipse.jface.text.source.projection.ProjectionSupport;
@@ -2186,8 +2185,8 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
try {
int widgetLocation = styledText.getOffsetAtLocation(new Point(x, y));
- if (textViewer instanceof ITextViewerExtension3) {
- ITextViewerExtension3 extension = (ITextViewerExtension3) textViewer;
+ if (textViewer instanceof ITextViewerExtension5) {
+ ITextViewerExtension5 extension = (ITextViewerExtension5) textViewer;
return extension.widgetOffset2ModelOffset(widgetLocation);
} else {
IRegion visibleRegion = textViewer.getVisibleRegion();
@@ -2900,15 +2899,21 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
doSelectionChanged(event);
}
}
+
/**
* The internal shell activation listener for updating occurrences.
+ *
* @since 3.0
*/
- private ActivationListener fActivationListener= new ActivationListener();
+ private ActivationListener fActivationListener = new ActivationListener();
+
private ISelectionListenerWithAST fPostSelectionListenerWithAST;
+
private OccurrencesFinderJob fOccurrencesFinderJob;
+
/** The occurrences finder job canceler */
private OccurrencesFinderJobCanceler fOccurrencesFinderJobCanceler;
+
/**
* Holds the current occurrence annotations.
*
@@ -3134,16 +3139,24 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
// setSourceViewerConfiguration(new
// JavaSourceViewerConfiguration(textTools.getColorManager(), store,
// this, IJavaPartitions.JAVA_PARTITIONING));
- fMarkOccurrenceAnnotations= store.getBoolean(PreferenceConstants.EDITOR_MARK_OCCURRENCES);
- fStickyOccurrenceAnnotations= store.getBoolean(PreferenceConstants.EDITOR_STICKY_OCCURRENCES);
-// fMarkTypeOccurrences= store.getBoolean(PreferenceConstants.EDITOR_MARK_TYPE_OCCURRENCES);
-// fMarkMethodOccurrences= store.getBoolean(PreferenceConstants.EDITOR_MARK_METHOD_OCCURRENCES);
-// fMarkConstantOccurrences= store.getBoolean(PreferenceConstants.EDITOR_MARK_CONSTANT_OCCURRENCES);
-// fMarkFieldOccurrences= store.getBoolean(PreferenceConstants.EDITOR_MARK_FIELD_OCCURRENCES);
-// fMarkLocalVariableypeOccurrences= store.getBoolean(PreferenceConstants.EDITOR_MARK_LOCAL_VARIABLE_OCCURRENCES);
-// fMarkExceptions= store.getBoolean(PreferenceConstants.EDITOR_MARK_EXCEPTION_OCCURRENCES);
-// fMarkImplementors= store.getBoolean(PreferenceConstants.EDITOR_MARK_IMPLEMENTORS);
-// fMarkMethodExitPoints= store.getBoolean(PreferenceConstants.EDITOR_MARK_METHOD_EXIT_POINTS);
+ fMarkOccurrenceAnnotations = store.getBoolean(PreferenceConstants.EDITOR_MARK_OCCURRENCES);
+ fStickyOccurrenceAnnotations = store.getBoolean(PreferenceConstants.EDITOR_STICKY_OCCURRENCES);
+ // fMarkTypeOccurrences=
+ // store.getBoolean(PreferenceConstants.EDITOR_MARK_TYPE_OCCURRENCES);
+ // fMarkMethodOccurrences=
+ // store.getBoolean(PreferenceConstants.EDITOR_MARK_METHOD_OCCURRENCES);
+ // fMarkConstantOccurrences=
+ // store.getBoolean(PreferenceConstants.EDITOR_MARK_CONSTANT_OCCURRENCES);
+ // fMarkFieldOccurrences=
+ // store.getBoolean(PreferenceConstants.EDITOR_MARK_FIELD_OCCURRENCES);
+ // fMarkLocalVariableypeOccurrences=
+ // store.getBoolean(PreferenceConstants.EDITOR_MARK_LOCAL_VARIABLE_OCCURRENCES);
+ // fMarkExceptions=
+ // store.getBoolean(PreferenceConstants.EDITOR_MARK_EXCEPTION_OCCURRENCES);
+ // fMarkImplementors=
+ // store.getBoolean(PreferenceConstants.EDITOR_MARK_IMPLEMENTORS);
+ // fMarkMethodExitPoints=
+ // store.getBoolean(PreferenceConstants.EDITOR_MARK_METHOD_EXIT_POINTS);
}
@@ -3302,14 +3315,15 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
* true
if search direction is forward,
* false
if backward
*/
- public void gotoAnnotation(boolean forward) {
+ public Annotation gotoAnnotation(boolean forward) {
ITextSelection selection = (ITextSelection) getSelectionProvider().getSelection();
Position position = new Position(0, 0);
+ Annotation annotation=null;
if (false /* delayed - see bug 18316 */) {
- getNextAnnotation(selection.getOffset(), selection.getLength(), forward, position);
+ annotation=getNextAnnotation(selection.getOffset(), selection.getLength(), forward, position);
selectAndReveal(position.getOffset(), position.getLength());
} else /* no delay - see bug 18316 */{
- Annotation annotation = getNextAnnotation(selection.getOffset(), selection.getLength(), forward, position);
+ annotation = getNextAnnotation(selection.getOffset(), selection.getLength(), forward, position);
setStatusLineErrorMessage(null);
setStatusLineMessage(null);
if (annotation != null) {
@@ -3318,6 +3332,7 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
setStatusLineMessage(annotation.getText());
}
}
+ return annotation;
}
/**
@@ -3576,15 +3591,15 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
if (isBrowserLikeLinks())
disableBrowserLikeLinks();
-// cancel possible running computation
- fMarkOccurrenceAnnotations= false;
+ // cancel possible running computation
+ fMarkOccurrenceAnnotations = false;
uninstallOccurrencesFinder();
uninstallOverrideIndicator();
if (fActivationListener != null) {
PlatformUI.getWorkbench().removeWindowListener(fActivationListener);
- fActivationListener= null;
+ fActivationListener = null;
}
if (fEncodingSupport != null) {
@@ -4209,10 +4224,10 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
return;
}
- boolean newBooleanValue= false;
- Object newValue= event.getNewValue();
+ boolean newBooleanValue = false;
+ Object newValue = event.getNewValue();
if (newValue != null)
- newBooleanValue= Boolean.valueOf(newValue.toString()).booleanValue();
+ newBooleanValue = Boolean.valueOf(newValue.toString()).booleanValue();
if (PreferenceConstants.EDITOR_SYNC_OUTLINE_ON_CURSOR_MOVE.equals(property)) {
if (newBooleanValue)
@@ -4222,7 +4237,7 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
if (PreferenceConstants.EDITOR_MARK_OCCURRENCES.equals(property)) {
if (newBooleanValue != fMarkOccurrenceAnnotations) {
- fMarkOccurrenceAnnotations= newBooleanValue;
+ fMarkOccurrenceAnnotations = newBooleanValue;
if (!fMarkOccurrenceAnnotations)
uninstallOccurrencesFinder();
else
@@ -4232,7 +4247,7 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
}
if (PreferenceConstants.EDITOR_STICKY_OCCURRENCES.equals(property)) {
- fStickyOccurrenceAnnotations= newBooleanValue;
+ fStickyOccurrenceAnnotations = newBooleanValue;
return;
}
// }
@@ -4246,7 +4261,6 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
// if (stickyOccurrenceAnnotations != fStickyOccurrenceAnnotations)
// {
-
((PHPSourceViewerConfiguration) getSourceViewerConfiguration()).handlePropertyChangeEvent(event);
// if (affectsOverrideIndicatorAnnotations(event)) {
@@ -4766,8 +4780,8 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
int targetOffset = (PHPPairMatcher.RIGHT == anchor) ? offset : offset + length - 1;
boolean visible = false;
- if (sourceViewer instanceof ITextViewerExtension3) {
- ITextViewerExtension3 extension = (ITextViewerExtension3) sourceViewer;
+ if (sourceViewer instanceof ITextViewerExtension5) {
+ ITextViewerExtension5 extension = (ITextViewerExtension5) sourceViewer;
visible = (extension.modelOffset2WidgetOffset(targetOffset) > -1);
} else {
IRegion visibleRegion = sourceViewer.getVisibleRegion();
@@ -4937,7 +4951,7 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
* otherwise
* @since 3.0
*/
- private boolean isNavigationTarget(Annotation annotation) {
+ protected boolean isNavigationTarget(Annotation annotation) {
Preferences preferences = EditorsUI.getPluginPreferences();
AnnotationPreference preference = getAnnotationPreferenceLookup().getAnnotationPreference(annotation);
// See bug 41689
@@ -4967,8 +4981,11 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
List segmentation = new ArrayList();
for (int i = 0; i < linePartitioning.length; i++) {
- if (IPHPPartitions.PHP_STRING_DQ.equals(linePartitioning[i].getType()))
+ if (IPHPPartitions.PHP_STRING_DQ.equals(linePartitioning[i].getType())) {
segmentation.add(linePartitioning[i]);
+ } else if (IPHPPartitions.PHP_STRING_HEREDOC.equals(linePartitioning[i].getType())) {
+ segmentation.add(linePartitioning[i]);
+ }
}
if (segmentation.size() == 0)
@@ -5378,12 +5395,53 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
/*
* @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#createCompositeRuler()
*/
- protected CompositeRuler createCompositeRuler() {
+// protected CompositeRuler createCompositeRuler() {
+// if (!getPreferenceStore().getBoolean(PreferenceConstants.EDITOR_ANNOTATION_ROLL_OVER))
+// return super.createCompositeRuler();
+//
+// CompositeRuler ruler = new CompositeRuler();
+// AnnotationRulerColumn column = new AnnotationRulerColumn(VERTICAL_RULER_WIDTH, getAnnotationAccess());
+// column.setHover(new JavaExpandHover(ruler, getAnnotationAccess(), new IDoubleClickListener() {
+//
+// public void doubleClick(DoubleClickEvent event) {
+// // for now: just invoke ruler double click action
+// triggerAction(ITextEditorActionConstants.RULER_DOUBLE_CLICK);
+// }
+//
+// private void triggerAction(String actionID) {
+// IAction action = 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();
+// }
+// }
+//
+// }));
+// ruler.addDecorator(0, column);
+//
+// if (isLineNumberRulerVisible())
+// ruler.addDecorator(1, createLineNumberRulerColumn());
+// else if (isPrefQuickDiffAlwaysOn())
+// ruler.addDecorator(1, createChangeRulerColumn());
+//
+// return ruler;
+// }
+
+ /*
+ * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#createAnnotationRulerColumn(org.eclipse.jface.text.source.CompositeRuler)
+ * @since 3.2
+ */
+ protected IVerticalRulerColumn createAnnotationRulerColumn(CompositeRuler ruler) {
if (!getPreferenceStore().getBoolean(PreferenceConstants.EDITOR_ANNOTATION_ROLL_OVER))
- return super.createCompositeRuler();
+ return super.createAnnotationRulerColumn(ruler);
- CompositeRuler ruler = new CompositeRuler();
- AnnotationRulerColumn column = new AnnotationRulerColumn(VERTICAL_RULER_WIDTH, getAnnotationAccess());
+ AnnotationRulerColumn column= new AnnotationRulerColumn(VERTICAL_RULER_WIDTH, getAnnotationAccess());
column.setHover(new JavaExpandHover(ruler, getAnnotationAccess(), new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
@@ -5392,13 +5450,13 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
}
private void triggerAction(String actionID) {
- IAction action = getAction(actionID);
+ IAction action= 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);
+ ((ISelectionListener)action).selectionChanged(null, null);
}
if (action.isEnabled())
action.run();
@@ -5406,16 +5464,9 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
}
}));
- ruler.addDecorator(0, column);
-
- if (isLineNumberRulerVisible())
- ruler.addDecorator(1, createLineNumberRulerColumn());
- else if (isPrefQuickDiffAlwaysOn())
- ruler.addDecorator(1, createChangeRulerColumn());
-
- return ruler;
+
+ return column;
}
-
/**
* Returns the folding action group, or null
if there is none.
*
@@ -5567,7 +5618,10 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
* the compilation unit AST
* @since 3.0
*/
- protected void updateOccurrenceAnnotations(ITextSelection selection) {//, CompilationUnit astRoot) {
+ protected void updateOccurrenceAnnotations(ITextSelection selection) {// ,
+ // CompilationUnit
+ // astRoot)
+ // {
if (fOccurrencesFinderJob != null)
fOccurrencesFinderJob.cancel();
@@ -5575,7 +5629,7 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
if (!fMarkOccurrenceAnnotations)
return;
-// if (astRoot == null || selection == null)
+ // if (astRoot == null || selection == null)
if (selection == null)
return;
@@ -5583,6 +5637,7 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
if (document == null)
return;
+ fMarkOccurrenceTargetRegion = null;
if (document instanceof IDocumentExtension4) {
int offset = selection.getOffset();
long currentModificationStamp = ((IDocumentExtension4) document).getModificationStamp();
@@ -5595,6 +5650,10 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
fMarkOccurrenceModificationStamp = currentModificationStamp;
}
+ if (fMarkOccurrenceTargetRegion == null || fMarkOccurrenceTargetRegion.getLength() == 0) {
+ return;
+ }
+
List matches = null;
if (matches == null) {
@@ -5604,32 +5663,37 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
Scanner fScanner = new Scanner();
fScanner.setSource(document.get().toCharArray());
fScanner.setPHPMode(false);
+ String wordStr;
char[] word;
- word = document.get(fMarkOccurrenceTargetRegion.getOffset(), fMarkOccurrenceTargetRegion.getLength()).toCharArray();
-
- int fToken = ITerminalSymbols.TokenNameEOF;
- try {
- fToken = fScanner.getNextToken();
- while (fToken != ITerminalSymbols.TokenNameEOF) { // && fToken !=
- // TokenNameERROR) {
- if (fToken == ITerminalSymbols.TokenNameVariable || fToken == ITerminalSymbols.TokenNameIdentifier) {
- // global variable
- if (fScanner.equalsCurrentTokenSource(word)) {
- matches.add(new Region(fScanner.getCurrentTokenStartPosition(), fScanner.getCurrentTokenEndPosition()
- - fScanner.getCurrentTokenStartPosition()+1));
+ wordStr = document.get(fMarkOccurrenceTargetRegion.getOffset(), fMarkOccurrenceTargetRegion.getLength());
+ if (wordStr != null) {
+ word = wordStr.toCharArray();
+ int fToken = ITerminalSymbols.TokenNameEOF;
+ try {
+ fToken = fScanner.getNextToken();
+ while (fToken != ITerminalSymbols.TokenNameEOF) { // && fToken !=
+ // TokenNameERROR) {
+ if (fToken == ITerminalSymbols.TokenNameVariable || fToken == ITerminalSymbols.TokenNameIdentifier) {
+ // global variable
+ if (fScanner.equalsCurrentTokenSource(word)) {
+ matches.add(new Region(fScanner.getCurrentTokenStartPosition(), fScanner.getCurrentTokenEndPosition()
+ - fScanner.getCurrentTokenStartPosition() + 1));
+ }
}
+ fToken = fScanner.getNextToken();
}
- fToken = fScanner.getNextToken();
+ } catch (InvalidInputException e) {
+ // ignore errors
+ } catch (SyntaxError e) {
+ // ignore errors
}
- } catch (InvalidInputException e) {
- // ignore errors
- } catch (SyntaxError e) {
- // ignore errors
}
-
} catch (BadLocationException e1) {
// ignore errors
+ } catch (Exception e) {
+ e.printStackTrace();
+ // ignore errors
}
}
@@ -5658,8 +5722,11 @@ public abstract class PHPEditor extends AbstractDecoratedTextEditor implements I
fMarkOccurrenceAnnotations = true;
fPostSelectionListenerWithAST = new ISelectionListenerWithAST() {
- public void selectionChanged(IEditorPart part, ITextSelection selection) { //, CompilationUnit astRoot) {
- updateOccurrenceAnnotations(selection);//, astRoot);
+ public void selectionChanged(IEditorPart part, ITextSelection selection) { // ,
+ // CompilationUnit
+ // astRoot)
+ // {
+ updateOccurrenceAnnotations(selection);// , astRoot);
}
};
SelectionListenerWithASTManager.getDefault().addListener(this, fPostSelectionListenerWithAST);