improved PHP parser
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / PHPUnitEditor.java
index 5aa3cca..49f7d5f 100644 (file)
@@ -17,7 +17,10 @@ import net.sourceforge.phpdt.core.JavaCore;
 import net.sourceforge.phpdt.core.JavaModelException;
 import net.sourceforge.phpdt.core.dom.CompilationUnit;
 import net.sourceforge.phpdt.internal.compiler.parser.Scanner;
+import net.sourceforge.phpdt.internal.ui.actions.AddBlockCommentAction;
 import net.sourceforge.phpdt.internal.ui.actions.CompositeActionGroup;
+import net.sourceforge.phpdt.internal.ui.actions.IndentAction;
+import net.sourceforge.phpdt.internal.ui.actions.RemoveBlockCommentAction;
 import net.sourceforge.phpdt.internal.ui.text.ContentAssistPreference;
 import net.sourceforge.phpdt.internal.ui.text.IPHPPartitions;
 import net.sourceforge.phpdt.internal.ui.text.PHPPairMatcher;
@@ -104,8 +107,8 @@ import org.eclipse.ui.texteditor.TextOperationAction;
  * 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 implementation Klaus Hartlage -
- * www.eclipseproject.de
+ * Contributors: IBM Corporation - Initial implementation 
+ * www.phpeclipse.de
  ******************************************************************************/
 /**
  * PHP specific text editor.
@@ -1305,7 +1308,7 @@ public class PHPUnitEditor extends PHPEditor { //implements
   private final static String CLOSE_STRINGS_SQ_PHP = PreferenceConstants.EDITOR_CLOSE_STRINGS_SQ_PHP;
 
   /** Preference key for automatically wrapping Java strings */
-  private final static String WRAP_STRINGS = PreferenceConstants.EDITOR_WRAP_STRINGS;
+//  private final static String WRAP_STRINGS = PreferenceConstants.EDITOR_WRAP_STRINGS_DQ;
 
   /** Preference key for automatically closing brackets and parenthesis */
   private final static String CLOSE_BRACKETS_PHP = PreferenceConstants.EDITOR_CLOSE_BRACKETS_PHP;
@@ -1317,7 +1320,7 @@ public class PHPUnitEditor extends PHPEditor { //implements
   private final static String ADD_JAVADOC_TAGS = PreferenceConstants.EDITOR_ADD_JAVADOC_TAGS;
 
   /** Preference key for automatically formatting phpdocs */
-  private final static String FORMAT_JAVADOCS = PreferenceConstants.EDITOR_FORMAT_JAVADOCS;
+//  private final static String FORMAT_JAVADOCS = PreferenceConstants.EDITOR_FORMAT_JAVADOCS;
 
   /** Preference key for automatically closing strings */
   private final static String CLOSE_STRINGS_HTML = PreferenceConstants.EDITOR_CLOSE_STRINGS_HTML;
@@ -1515,21 +1518,51 @@ public class PHPUnitEditor extends PHPEditor { //implements
     //         markAsStateDependentAction("IndentOnTab", true); //$NON-NLS-1$
     //         markAsSelectionDependentAction("IndentOnTab", true); //$NON-NLS-1$
     //         
+    
+    action= new AddBlockCommentAction(PHPEditorMessages.getResourceBundle(), "AddBlockComment.", this);  //$NON-NLS-1$
+       action.setActionDefinitionId(PHPEditorActionDefinitionIds.ADD_BLOCK_COMMENT);           
+       setAction("AddBlockComment", action); //$NON-NLS-1$
+       markAsStateDependentAction("AddBlockComment", true); //$NON-NLS-1$
+       markAsSelectionDependentAction("AddBlockComment", true); //$NON-NLS-1$          
+//     WorkbenchHelp.setHelp(action, IJavaHelpContextIds.ADD_BLOCK_COMMENT_ACTION);
+
+       action= new RemoveBlockCommentAction(PHPEditorMessages.getResourceBundle(), "RemoveBlockComment.", this);  //$NON-NLS-1$
+       action.setActionDefinitionId(PHPEditorActionDefinitionIds.REMOVE_BLOCK_COMMENT);                
+       setAction("RemoveBlockComment", action); //$NON-NLS-1$
+       markAsStateDependentAction("RemoveBlockComment", true); //$NON-NLS-1$
+       markAsSelectionDependentAction("RemoveBlockComment", true); //$NON-NLS-1$               
+//     WorkbenchHelp.setHelp(action, IJavaHelpContextIds.REMOVE_BLOCK_COMMENT_ACTION);
+       
+//     action= new IndentAction(PHPEditorMessages.getResourceBundle(), "Indent.", this, false); //$NON-NLS-1$
+//     action.setActionDefinitionId(PHPEditorActionDefinitionIds.INDENT);              
+//     setAction("Indent", action); //$NON-NLS-1$
+//     markAsStateDependentAction("Indent", true); //$NON-NLS-1$
+//     markAsSelectionDependentAction("Indent", true); //$NON-NLS-1$
+////   WorkbenchHelp.setHelp(action, IJavaHelpContextIds.INDENT_ACTION);
+//     
+       action= new IndentAction(PHPEditorMessages.getResourceBundle(), "Indent.", this, true); //$NON-NLS-1$
+       setAction("IndentOnTab", action); //$NON-NLS-1$
+       markAsStateDependentAction("IndentOnTab", true); //$NON-NLS-1$
+       markAsSelectionDependentAction("IndentOnTab", true); //$NON-NLS-1$
+       
     if (getPreferenceStore().getBoolean(PreferenceConstants.EDITOR_SMART_TAB)) {
       // don't replace Shift Right - have to make sure their enablement is
       // mutually exclusive
       //                       removeActionActivationCode(ITextEditorActionConstants.SHIFT_RIGHT);
       setActionActivationCode("IndentOnTab", '\t', -1, SWT.NONE); //$NON-NLS-1$
     }
-    fGenerateActionGroup = new GenerateActionGroup(this, ITextEditorActionConstants.GROUP_EDIT);
-    fActionGroups = new CompositeActionGroup(new ActionGroup[] { fGenerateActionGroup });
-    //   We have to keep the context menu group separate to have better
-    // control
-    // over positioning
-    fContextMenuGroup = new CompositeActionGroup(new ActionGroup[] { fGenerateActionGroup });
-    //      rg,
-    //      new LocalHistoryActionGroup(this,
-    // ITextEditorActionConstants.GROUP_EDIT)});
+    fGenerateActionGroup= new GenerateActionGroup(this, ITextEditorActionConstants.GROUP_EDIT);
+//    ActionGroup rg= new RefactorActionGroup(this, ITextEditorActionConstants.GROUP_EDIT);
+       
+//     fActionGroups.addGroup(rg);
+       fActionGroups.addGroup(fGenerateActionGroup);
+       
+       // We have to keep the context menu group separate to have better control over positioning
+       fContextMenuGroup= new CompositeActionGroup(new ActionGroup[] {
+               fGenerateActionGroup
+//             rg, 
+//             new LocalHistoryActionGroup(this, ITextEditorActionConstants.GROUP_EDIT)
+               });
 
   }
 
@@ -1714,78 +1747,6 @@ public class PHPUnitEditor extends PHPEditor { //implements
 //    return store.getBoolean(PRINT_MARGIN);
 //  }
 
-  //  private void startAnnotationIndication(AnnotationType annotationType) {
-  //    if (fProblemPainter == null) {
-  //      fProblemPainter = new ProblemPainter(this, getSourceViewer());
-  //// fPaintManager.addPainter(fProblemPainter);
-  //    }
-  //    fProblemPainter.setColor(annotationType, getColor(annotationType));
-  //    fProblemPainter.paintAnnotations(annotationType, true);
-  //    fProblemPainter.paint(IPainter.CONFIGURATION);
-  //  }
-  //
-  //  private void shutdownAnnotationIndication() {
-  //    if (fProblemPainter != null) {
-  //
-  //      if (!fProblemPainter.isPaintingAnnotations()) {
-  //// fPaintManager.removePainter(fProblemPainter);
-  //        fProblemPainter.deactivate(true);
-  //        fProblemPainter.dispose();
-  //        fProblemPainter = null;
-  //      } else {
-  //        fProblemPainter.paint(IPainter.CONFIGURATION);
-  //      }
-  //    }
-  //  }
-  //
-  //  private void stopAnnotationIndication(AnnotationType annotationType) {
-  //    if (fProblemPainter != null) {
-  //      fProblemPainter.paintAnnotations(annotationType, false);
-  //      shutdownAnnotationIndication();
-  //    }
-  //  }
-  //
-  //  private boolean isAnnotationIndicationEnabled(AnnotationType
-  // annotationType) {
-  //    IPreferenceStore store = getPreferenceStore();
-  //    AnnotationInfo info = (AnnotationInfo)
-  // ANNOTATION_MAP.get(annotationType);
-  //    if (info != null)
-  //      return store.getBoolean(info.fEditorPreference);
-  //    return false;
-  //  }
-  //
-  //  private boolean
-  // isAnnotationIndicationInOverviewRulerEnabled(AnnotationType
-  // annotationType) {
-  //    IPreferenceStore store = getPreferenceStore();
-  //    AnnotationInfo info = (AnnotationInfo)
-  // ANNOTATION_MAP.get(annotationType);
-  //    if (info != null)
-  //      return store.getBoolean(info.fOverviewRulerPreference);
-  //    return false;
-  //  }
-  //
-  //  private void showAnnotationIndicationInOverviewRuler(AnnotationType
-  // annotationType, boolean show) {
-  //    AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer();
-  //    OverviewRuler ruler = asv.getOverviewRuler();
-  //    if (ruler != null) {
-  //      ruler.setColor(annotationType, getColor(annotationType));
-  //      ruler.showAnnotation(annotationType, show);
-  //      ruler.update();
-  //    }
-  //  }
-  //
-  //  private void setColorInOverviewRuler(AnnotationType annotationType, Color
-  // color) {
-  //    AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer();
-  //    OverviewRuler ruler = asv.getOverviewRuler();
-  //    if (ruler != null) {
-  //      ruler.setColor(annotationType, color);
-  //      ruler.update();
-  //    }
-  //  }
 
   private int getTabSize() {
     Preferences preferences = PHPeclipsePlugin.getDefault().getPluginPreferences();
@@ -1797,30 +1758,6 @@ public class PHPUnitEditor extends PHPEditor { //implements
     return store.getBoolean(SPACES_FOR_TABS);
   }
 
-  //  private void showOverviewRuler() {
-  //    AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer();
-  //    asv.showOverviewRuler();
-  //
-  //    OverviewRuler overviewRuler = asv.getOverviewRuler();
-  //    if (overviewRuler != null) {
-  //      for (int i = 0; i < ANNOTATION_LAYERS.length; i++) {
-  //        AnnotationType type = ANNOTATION_LAYERS[i];
-  //        overviewRuler.setLayer(type, i);
-  //        if (isAnnotationIndicationInOverviewRulerEnabled(type))
-  //          showAnnotationIndicationInOverviewRuler(type, true);
-  //      }
-  //    }
-  //  }
-  //
-  //  private void hideOverviewRuler() {
-  //    AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer();
-  //    asv.hideOverviewRuler();
-  //  }
-  //
-  //  private boolean isOverviewRulerVisible() {
-  //    IPreferenceStore store = getPreferenceStore();
-  //    return store.getBoolean(OVERVIEW_RULER);
-  //  }
   private Color getColor(String key) {
     RGB rgb = PreferenceConverter.getColor(getPreferenceStore(), key);
     return getColor(rgb);
@@ -2005,7 +1942,7 @@ public class PHPUnitEditor extends PHPEditor { //implements
   }
 
   /*
-   * @see org.eclipse.jdt.internal.ui.javaeditor.JavaEditor#handlePreferencePropertyChanged(org.eclipse.core.runtime.Preferences.PropertyChangeEvent)
+   * @see net.sourceforge.phpdt.internal.ui.javaeditor.JavaEditor#handlePreferencePropertyChanged(org.eclipse.core.runtime.Preferences.PropertyChangeEvent)
    */
   protected void handlePreferencePropertyChanged(org.eclipse.core.runtime.Preferences.PropertyChangeEvent event) {
     AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer();
@@ -2041,7 +1978,7 @@ public class PHPUnitEditor extends PHPEditor { //implements
   //    }
   //  }
   /*
-   * @see org.eclipse.jdt.internal.ui.javaeditor.JavaEditor#createJavaSourceViewer(org.eclipse.swt.widgets.Composite,
+   * @see net.sourceforge.phpdt.internal.ui.javaeditor.JavaEditor#createJavaSourceViewer(org.eclipse.swt.widgets.Composite,
    *      org.eclipse.jface.text.source.IVerticalRuler, org.eclipse.jface.text.source.IOverviewRuler, boolean, int)
    */
   protected ISourceViewer createJavaSourceViewer(Composite parent, IVerticalRuler verticalRuler, IOverviewRuler overviewRuler,
@@ -2067,7 +2004,7 @@ public class PHPUnitEditor extends PHPEditor { //implements
   }
 
   /*
-   * @see org.eclipse.jdt.internal.ui.javaeditor.JavaEditor#getInputElement()
+   * @see net.sourceforge.phpdt.internal.ui.javaeditor.JavaEditor#getInputElement()
    */
   protected IJavaElement getInputJavaElement() {
     return PHPeclipsePlugin.getDefault().getWorkingCopyManager().getWorkingCopy(getEditorInput());
@@ -2255,7 +2192,7 @@ public class PHPUnitEditor extends PHPEditor { //implements
 
   //   /*
   //    * @see
-  // org.eclipse.jdt.internal.ui.javaeditor.JavaEditor#installOverrideIndicator(boolean)
+  // net.sourceforge.phpdt.internal.ui.javaeditor.JavaEditor#installOverrideIndicator(boolean)
   //    * @since 3.0
   //    */
   //   protected void installOverrideIndicator(boolean waitForReconcilation) {
@@ -2277,7 +2214,7 @@ public class PHPUnitEditor extends PHPEditor { //implements
   //   
   //   /*
   //    * @see
-  // org.eclipse.jdt.internal.ui.javaeditor.JavaEditor#uninstallOverrideIndicator()
+  // net.sourceforge.phpdt.internal.ui.javaeditor.JavaEditor#uninstallOverrideIndicator()
   //    * @since 3.0
   //    */
   //   protected void uninstallOverrideIndicator() {
@@ -2300,16 +2237,24 @@ public class PHPUnitEditor extends PHPEditor { //implements
     }
   }
 
-  private void configureTabConverter() {
-    if (fTabConverter != null) {
-      IDocumentProvider provider = getDocumentProvider();
-      if (provider instanceof PHPDocumentProvider) {
-        PHPDocumentProvider cup = (PHPDocumentProvider) provider;
-        fTabConverter.setLineTracker(cup.createLineTracker(getEditorInput()));
-      }
-    }
-  }
-
+  //  private void configureTabConverter() {
+  //    if (fTabConverter != null) {
+  //      IDocumentProvider provider = getDocumentProvider();
+  //      if (provider instanceof PHPDocumentProvider) {
+  //        PHPDocumentProvider cup = (PHPDocumentProvider) provider;
+  //        fTabConverter.setLineTracker(cup.createLineTracker(getEditorInput()));
+  //      }
+  //    }
+  //  }
+       private void configureTabConverter() {
+               if (fTabConverter != null) {
+                       IDocumentProvider provider= getDocumentProvider();
+                       if (provider instanceof ICompilationUnitDocumentProvider) {
+                               ICompilationUnitDocumentProvider cup= (ICompilationUnitDocumentProvider) provider;
+                               fTabConverter.setLineTracker(cup.createLineTracker(getEditorInput()));
+                       }
+               }
+       }
   private void startTabConversion() {
     if (fTabConverter == null) {
       fTabConverter = new TabConverter();
@@ -2336,19 +2281,33 @@ public class PHPUnitEditor extends PHPEditor { //implements
    * @see org.eclipse.ui.texteditor.AbstractTextEditor#performSave(boolean, org.eclipse.core.runtime.IProgressMonitor)
    */
   protected void performSave(boolean overwrite, IProgressMonitor progressMonitor) {
-    IDocumentProvider p = getDocumentProvider();
-    if (p instanceof PHPDocumentProvider) {
-      PHPDocumentProvider cp = (PHPDocumentProvider) p;
-      cp.setSavePolicy(fSavePolicy);
-    }
-    try {
-      super.performSave(overwrite, progressMonitor);
-    } finally {
-      if (p instanceof PHPDocumentProvider) {
-        PHPDocumentProvider cp = (PHPDocumentProvider) p;
-        cp.setSavePolicy(null);
-      }
-    }
+//    IDocumentProvider p = getDocumentProvider();
+//    if (p instanceof PHPDocumentProvider) {
+//      PHPDocumentProvider cp = (PHPDocumentProvider) p;
+//      cp.setSavePolicy(fSavePolicy);
+//    }
+//    try {
+//      super.performSave(overwrite, progressMonitor);
+//    } finally {
+//      if (p instanceof PHPDocumentProvider) {
+//        PHPDocumentProvider cp = (PHPDocumentProvider) p;
+//        cp.setSavePolicy(null);
+//      }
+//    }
+    
+    IDocumentProvider p= getDocumentProvider();
+       if (p instanceof ICompilationUnitDocumentProvider) {
+               ICompilationUnitDocumentProvider cp= (ICompilationUnitDocumentProvider) p;
+               cp.setSavePolicy(fSavePolicy);
+       }
+       try {
+               super.performSave(overwrite, progressMonitor);
+       } finally {
+               if (p instanceof ICompilationUnitDocumentProvider) {
+                       ICompilationUnitDocumentProvider cp= (ICompilationUnitDocumentProvider) p;
+                       cp.setSavePolicy(null);
+               }
+       }
   }
 
   /*
@@ -2389,7 +2348,7 @@ public class PHPUnitEditor extends PHPEditor { //implements
   }
 
   /*
-   * @see org.eclipse.jdt.internal.ui.text.java.IJavaReconcilingListener#aboutToBeReconciled()
+   * @see net.sourceforge.phpdt.internal.ui.text.java.IJavaReconcilingListener#aboutToBeReconciled()
    * @since 3.0
    */
   public void aboutToBeReconciled() {
@@ -2404,7 +2363,7 @@ public class PHPUnitEditor extends PHPEditor { //implements
   }
 
   /*
-   * @see org.eclipse.jdt.internal.ui.text.java.IJavaReconcilingListener#reconciled(CompilationUnit, boolean, IProgressMonitor)
+   * @see net.sourceforge.phpdt.internal.ui.text.java.IJavaReconcilingListener#reconciled(CompilationUnit, boolean, IProgressMonitor)
    * @since 3.0
    */
   public void reconciled(CompilationUnit ast, boolean forced, IProgressMonitor progressMonitor) {
@@ -2430,10 +2389,6 @@ public class PHPUnitEditor extends PHPEditor { //implements
     }
   }
 
-  private boolean synchronizeOutlineOnCursorMove() {
-    return PreferenceConstants.getPreferenceStore().getBoolean(PreferenceConstants.EDITOR_SYNC_OUTLINE_ON_CURSOR_MOVE);
-  }
-
   /**
    * Returns the updated java element for the old java element.
    */
@@ -2591,7 +2546,7 @@ public class PHPUnitEditor extends PHPEditor { //implements
   }
 
   /*
-   * @see org.eclipse.jdt.internal.ui.javaeditor.JavaEditor#getAdapter(java.lang.Class)
+   * @see net.sourceforge.phpdt.internal.ui.javaeditor.JavaEditor#getAdapter(java.lang.Class)
    */
   public Object getAdapter(Class required) {
     if (SmartBackspaceManager.class.equals(required)) {