X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/editors/PHPConfiguration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/editors/PHPConfiguration.java new file mode 100644 index 0000000..508ae00 --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/editors/PHPConfiguration.java @@ -0,0 +1,81 @@ +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