improved include detection
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / PHPSourceViewerConfiguration.java
index 0353b6d..2874885 100644 (file)
@@ -13,12 +13,14 @@ package net.sourceforge.phpeclipse.phpeditor;
 import java.util.Vector;
 
 import net.sourceforge.phpdt.core.JavaCore;
+import net.sourceforge.phpdt.internal.ui.text.AbstractJavaScanner;
 import net.sourceforge.phpdt.internal.ui.text.ContentAssistPreference;
 import net.sourceforge.phpdt.internal.ui.text.HTMLTextPresenter;
 import net.sourceforge.phpdt.internal.ui.text.IPHPPartitions;
 import net.sourceforge.phpdt.internal.ui.text.JavaAnnotationHover;
 import net.sourceforge.phpdt.internal.ui.text.JavaElementProvider;
 import net.sourceforge.phpdt.internal.ui.text.JavaOutlineInformationControl;
+import net.sourceforge.phpdt.internal.ui.text.JavaPresentationReconciler;
 import net.sourceforge.phpdt.internal.ui.text.JavaReconciler;
 import net.sourceforge.phpdt.internal.ui.text.java.JavaFormattingStrategy;
 import net.sourceforge.phpdt.internal.ui.text.java.JavaReconcilingStrategy;
@@ -27,6 +29,7 @@ import net.sourceforge.phpdt.internal.ui.text.java.hover.JavaEditorTextHoverDesc
 import net.sourceforge.phpdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy;
 import net.sourceforge.phpdt.internal.ui.text.phpdoc.PHPDocCompletionProcessor;
 import net.sourceforge.phpdt.ui.PreferenceConstants;
+import net.sourceforge.phpdt.ui.text.IColorManager;
 import net.sourceforge.phpdt.ui.text.JavaTextTools;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 import net.sourceforge.phpeclipse.phpeditor.html.HTMLFormattingStrategy;
@@ -68,8 +71,10 @@ import org.eclipse.jface.text.rules.Token;
 import org.eclipse.jface.text.source.IAnnotationHover;
 import org.eclipse.jface.text.source.ISourceViewer;
 import org.eclipse.jface.text.source.SourceViewerConfiguration;
+import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.texteditor.ITextEditor;
 /**
  * Configuration for an <code>SourceViewer</code> which shows PHP code.
  */
@@ -90,7 +95,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
        // IPHPPartitionScannerConstants.HTML;
        //IDocument.DEFAULT_CONTENT_TYPE;
        private JavaTextTools fJavaTextTools;
-       private PHPEditor fEditor;
+       private ITextEditor fTextEditor;
        private ContentFormatter fFormatter;
        private HTMLFormattingStrategy fFormattingStrategy;
        /**
@@ -102,12 +107,78 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
                }
        };
        /**
+        * The document partitioning.
+        * @since 3.0
+        */
+       private String fDocumentPartitioning;
+       /**
+        * The Java source code scanner
+        * @since 3.0
+        */
+       private AbstractJavaScanner fCodeScanner;
+       /** 
+        * The Java multi-line comment scanner 
+        * @since 3.0
+        */
+       private AbstractJavaScanner fMultilineCommentScanner;
+       /**
+        * The Java single-line comment scanner
+        * @since 3.0
+        */
+       private AbstractJavaScanner fSinglelineCommentScanner;
+       /**
+        * The Java string scanner
+        * @since 3.0
+        */
+       private AbstractJavaScanner fStringScanner;
+       /**
+        * The Javadoc scanner
+        * @since 3.0
+        */
+       private AbstractJavaScanner fJavaDocScanner;
+       /**
+        * The preference store, can be read-only
+        * @since 3.0
+        */
+       private IPreferenceStore fPreferenceStore;
+       /**
+        * The color manager
+        * @since 3.0
+        */
+       private IColorManager fColorManager;
+       
+       /**
+        * Creates a new Java source viewer configuration for viewers in the given editor 
+        * using the given preference store, the color manager and the specified document partitioning.
+        * <p>
+        * Creates a Java source viewer configuration in the new setup without text tools. Clients are
+        * allowed to call {@link JavaSourceViewerConfiguration#handlePropertyChangeEvent(PropertyChangeEvent)}
+        * and disallowed to call {@link JavaSourceViewerConfiguration#getPreferenceStore()} on the resulting
+        * Java source viewer configuration.
+        * </p>
+        *
+        * @param colorManager the color manager
+        * @param preferenceStore the preference store, can be read-only
+        * @param editor the editor in which the configured viewer(s) will reside
+        * @param partitioning the document partitioning for this configuration
+        * @since 3.0
+        */
+       public PHPSourceViewerConfiguration(IColorManager colorManager, IPreferenceStore preferenceStore, ITextEditor editor, String partitioning) {
+               fColorManager= colorManager;
+               fPreferenceStore= preferenceStore;
+               fTextEditor= editor;
+               fDocumentPartitioning= partitioning;
+               fJavaTextTools = PHPeclipsePlugin.getDefault().getJavaTextTools();
+//             initializeScanners();
+       }
+
+       /**
         * Default constructor.
         */
        public PHPSourceViewerConfiguration(JavaTextTools textTools,
                        PHPEditor editor) {
                fJavaTextTools = textTools;
-               fEditor = editor;
+               fTextEditor = editor;
        }
        /*
         * @see SourceViewerConfiguration#getContentFormatter(ISourceViewer)
@@ -163,8 +234,8 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
        //  private String[] getPartitionManagingPositionCategories() {
        //    return new String[] { DefaultPartitioner.CONTENT_TYPES_CATEGORY };
        //  }
-       public PHPEditor getEditor() {
-               return fEditor;
+       public ITextEditor getEditor() {
+               return fTextEditor;
        }
        /**
         * Returns the preference store used by this configuration to initialize
@@ -455,7 +526,9 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
                // PHPEditorEnvironment.getPHPColorProvider();
                //    JavaColorManager provider =
                // PHPEditorEnvironment.getPHPColorProvider();
-               PresentationReconciler reconciler = new PresentationReconciler();
+               PresentationReconciler reconciler= new JavaPresentationReconciler();
+               reconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
+
                DefaultDamagerRepairer dr = new DefaultDamagerRepairer(getHTMLScanner());
                reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
                reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);