--- /dev/null
+package net.sourceforge.phpeclipse.editors;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextDoubleClickStrategy;
+import org.eclipse.jface.text.TextAttribute;
+import org.eclipse.jface.text.presentation.IPresentationReconciler;
+import org.eclipse.jface.text.presentation.PresentationReconciler;
+import org.eclipse.jface.text.rules.DefaultDamagerRepairer;
+import org.eclipse.jface.text.rules.Token;
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.jface.text.source.SourceViewerConfiguration;
+
+public class PHPConfiguration extends SourceViewerConfiguration {
+ private PHPDoubleClickStrategy doubleClickStrategy;
+ private PHPTagScanner tagScanner;
+ private PHPScanner scanner;
+ private ColorManager colorManager;
+
+ public PHPConfiguration(ColorManager colorManager) {
+ this.colorManager = colorManager;
+ }
+ public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) {
+ return new String[] {
+ IDocument.DEFAULT_CONTENT_TYPE,
+ PHPPartitionScanner.HTML_COMMENT,
+ PHPPartitionScanner.HTML_TAG };
+ }
+ public ITextDoubleClickStrategy getDoubleClickStrategy(
+ ISourceViewer sourceViewer,
+ String contentType) {
+ if (doubleClickStrategy == null)
+ doubleClickStrategy = new PHPDoubleClickStrategy();
+ return doubleClickStrategy;
+ }
+
+ protected PHPScanner getXMLScanner() {
+ if (scanner == null) {
+ scanner = new PHPScanner(colorManager);
+ scanner.setDefaultReturnToken(
+ new Token(
+ new TextAttribute(
+ colorManager.getColor(IPHPColorConstants.DEFAULT))));
+ }
+ return scanner;
+
+ }
+
+ protected PHPTagScanner getXMLTagScanner() {
+ if (tagScanner == null) {
+ tagScanner = new PHPTagScanner(colorManager);
+ tagScanner.setDefaultReturnToken(
+ new Token(
+ new TextAttribute(
+ colorManager.getColor(IPHPColorConstants.PHP_TAG))));
+ }
+ return tagScanner;
+ }
+
+ public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) {
+ PresentationReconciler reconciler = new PresentationReconciler();
+
+ DefaultDamagerRepairer dr =
+ new DefaultDamagerRepairer(getXMLTagScanner());
+ reconciler.setDamager(dr, PHPPartitionScanner.HTML_TAG);
+ reconciler.setRepairer(dr, PHPPartitionScanner.HTML_TAG);
+
+ dr = new DefaultDamagerRepairer(getXMLScanner());
+ reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
+ reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
+
+ NonRuleBasedDamagerRepairer ndr =
+ new NonRuleBasedDamagerRepairer(
+ new TextAttribute(
+ colorManager.getColor(IPHPColorConstants.XML_COMMENT)));
+ reconciler.setDamager(ndr, PHPPartitionScanner.HTML_COMMENT);
+ reconciler.setRepairer(ndr, PHPPartitionScanner.HTML_COMMENT);
+
+ return reconciler;
+ }
+
+}
\ No newline at end of file