X-Git-Url: http://secure.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSourceViewerConfiguration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSourceViewerConfiguration.java
index 038abd3..401ca2c 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSourceViewerConfiguration.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSourceViewerConfiguration.java
@@ -13,19 +13,23 @@ 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;
+import net.sourceforge.phpdt.internal.ui.text.java.JavaStringAutoIndentStrategy;
import net.sourceforge.phpdt.internal.ui.text.java.hover.JavaEditorTextHoverDescriptor;
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;
@@ -34,7 +38,7 @@ import net.sourceforge.phpeclipse.phpeditor.php.PHPAutoIndentStrategy;
import net.sourceforge.phpeclipse.phpeditor.php.PHPCompletionProcessor;
import net.sourceforge.phpeclipse.phpeditor.php.PHPDoubleClickSelector;
import net.sourceforge.phpeclipse.phpeditor.util.PHPColorProvider;
-import org.eclipse.core.resources.IFile;
+
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.text.DefaultAutoIndentStrategy;
@@ -67,10 +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.IEditorInput;
-import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.texteditor.ITextEditor;
/**
* Configuration for an SourceViewer
which shows PHP code.
*/
@@ -91,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;
/**
@@ -103,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.
+ *
+ * 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. + *
+ * + * @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) @@ -164,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 @@ -203,6 +273,9 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { */ public IAutoIndentStrategy getAutoIndentStrategy( ISourceViewer sourceViewer, String contentType) { + if (IPHPPartitions.PHP_STRING_DQ.equals(contentType)) + return new JavaStringAutoIndentStrategy(getConfiguredDocumentPartitioning(sourceViewer)); + return (IPHPPartitions.PHP_PARTITIONING.equals(contentType) ? new PHPAutoIndentStrategy() : new DefaultAutoIndentStrategy()); @@ -336,7 +409,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { return new String[]{IPHPPartitions.HTML, IPHPPartitions.HTML_MULTILINE_COMMENT, IPHPPartitions.PHP_PARTITIONING, - IPHPPartitions.PHP_MULTILINE_COMMENT, + IPHPPartitions.PHP_PHPDOC_COMMENT, IPHPPartitions.CSS, IPHPPartitions.CSS_MULTILINE_COMMENT, IPHPPartitions.JAVASCRIPT, @@ -370,10 +443,10 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { IPHPPartitions.SMARTY); assistant.setContentAssistProcessor(processor, IPHPPartitions.SMARTY_MULTILINE_COMMENT); - assistant.setContentAssistProcessor(new PHPCompletionProcessor(), + assistant.setContentAssistProcessor(new PHPCompletionProcessor(getEditor()), IPHPPartitions.PHP_PARTITIONING); assistant.setContentAssistProcessor(new PHPDocCompletionProcessor(), - IPHPPartitions.PHP_MULTILINE_COMMENT); + IPHPPartitions.PHP_PHPDOC_COMMENT); // assistant.enableAutoActivation(true); // assistant.setAutoActivationDelay(500); // assistant.setProposalPopupOrientation(ContentAssistant.PROPOSAL_OVERLAY); @@ -453,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); @@ -496,9 +571,9 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { reconciler.setRepairer(dr, IPHPPartitions.PHP_PARTITIONING); dr = new DefaultDamagerRepairer(getPHPDocScanner()); reconciler.setDamager(dr, - IPHPPartitions.PHP_MULTILINE_COMMENT); + IPHPPartitions.PHP_PHPDOC_COMMENT); reconciler.setRepairer(dr, - IPHPPartitions.PHP_MULTILINE_COMMENT); + IPHPPartitions.PHP_PHPDOC_COMMENT); return reconciler; } /* @@ -624,7 +699,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { presenter.setInformationProvider(provider, IPHPPartitions.PHP_PARTITIONING); presenter.setInformationProvider(provider, - IPHPPartitions.PHP_MULTILINE_COMMENT); + IPHPPartitions.PHP_PHPDOC_COMMENT); presenter.setInformationProvider(provider, IPHPPartitions.SMARTY_MULTILINE_COMMENT); presenter.setInformationProvider(provider,