/********************************************************************** Copyright (c) 2000, 2002 IBM Corp. and others. All rights reserved. This program and the accompanying materials are made available under the terms of 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 **********************************************************************/ package net.sourceforge.phpeclipse.phpeditor; import net.sourceforge.phpeclipse.phpeditor.php.HTMLCompletionProcessor; 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.php.PHPPartitionScanner; import net.sourceforge.phpeclipse.phpeditor.util.PHPColorProvider; import org.eclipse.jface.text.DefaultAutoIndentStrategy; import org.eclipse.jface.text.IAutoIndentStrategy; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.ITextDoubleClickStrategy; import org.eclipse.jface.text.ITextHover; import org.eclipse.jface.text.TextAttribute; import org.eclipse.jface.text.contentassist.ContentAssistant; import org.eclipse.jface.text.contentassist.IContentAssistant; import org.eclipse.jface.text.presentation.IPresentationReconciler; import org.eclipse.jface.text.presentation.PresentationReconciler; import org.eclipse.jface.text.rules.BufferedRuleBasedScanner; import org.eclipse.jface.text.rules.DefaultDamagerRepairer; 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.swt.graphics.RGB; /** * Configuration for an SourceViewer which shows PHP code. */ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { /** * Single token scanner. */ static class SingleTokenScanner extends BufferedRuleBasedScanner { public SingleTokenScanner(TextAttribute attribute) { setDefaultReturnToken(new Token(attribute)); } }; /** * Default constructor. */ public PHPSourceViewerConfiguration() { } /* (non-Javadoc) * Method declared on SourceViewerConfiguration */ public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) { return new PHPAnnotationHover(); } /* (non-Javadoc) * Method declared on SourceViewerConfiguration */ public IAutoIndentStrategy getAutoIndentStrategy(ISourceViewer sourceViewer, String contentType) { return (IDocument.DEFAULT_CONTENT_TYPE.equals(contentType) ? new PHPAutoIndentStrategy() : new DefaultAutoIndentStrategy()); } /* (non-Javadoc) * Method declared on SourceViewerConfiguration */ public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) { return new String[] { IDocument.DEFAULT_CONTENT_TYPE, PHPPartitionScanner.PHP, // PHPPartitionScanner.JAVA_DOC, PHPPartitionScanner.HTML_MULTILINE_COMMENT }; } /* (non-Javadoc) * Method declared on SourceViewerConfiguration */ public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) { ContentAssistant assistant = new ContentAssistant(); assistant.setContentAssistProcessor(new HTMLCompletionProcessor(), IDocument.DEFAULT_CONTENT_TYPE); assistant.setContentAssistProcessor(new PHPCompletionProcessor(), PHPPartitionScanner.PHP); //assistant.setContentAssistProcessor(new PHPCompletionProcessor(), PHPPartitionScanner.HTML); assistant.enableAutoActivation(true); assistant.setAutoActivationDelay(500); assistant.setProposalPopupOrientation(assistant.PROPOSAL_OVERLAY); assistant.setContextInformationPopupOrientation(assistant.CONTEXT_INFO_ABOVE); assistant.setContextInformationPopupBackground(PHPEditorEnvironment.getPHPColorProvider().getColor(new RGB(150, 150, 0))); return assistant; } /* (non-Javadoc) * Method declared on SourceViewerConfiguration */ public String getDefaultPrefix(ISourceViewer sourceViewer, String contentType) { return (PHPPartitionScanner.PHP.equals(contentType) ? "//" : null); //$NON-NLS-1$ // return (IDocument.DEFAULT_CONTENT_TYPE.equals(contentType) ? "//" : null); //$NON-NLS-1$ } /* (non-Javadoc) * Method declared on SourceViewerConfiguration */ public ITextDoubleClickStrategy getDoubleClickStrategy(ISourceViewer sourceViewer, String contentType) { return new PHPDoubleClickSelector(); } /* (non-Javadoc) * Method declared on SourceViewerConfiguration */ public String[] getIndentPrefixes(ISourceViewer sourceViewer, String contentType) { return new String[] { "\t", " " }; //$NON-NLS-1$ //$NON-NLS-2$ } /* (non-Javadoc) * Method declared on SourceViewerConfiguration */ public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) { PHPColorProvider provider = PHPEditorEnvironment.getPHPColorProvider(); PresentationReconciler reconciler = new PresentationReconciler(); DefaultDamagerRepairer dr= new DefaultDamagerRepairer(PHPEditorEnvironment.getHTMLCodeScanner()); reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE); reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); // dr = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(provider.getColor(provider.HTML_DEFAULT)))); // reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE); // reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); dr = new DefaultDamagerRepairer(PHPEditorEnvironment.getPHPCodeScanner()); reconciler.setDamager(dr, PHPPartitionScanner.PHP); reconciler.setRepairer(dr, PHPPartitionScanner.PHP); // dr = new DefaultDamagerRepairer(PHPEditorEnvironment.getHTMLCodeScanner()); // reconciler.setDamager(dr, PHPPartitionScanner.HTML); // reconciler.setRepairer(dr, PHPPartitionScanner.HTML); dr = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(provider.getColor(provider.MULTI_LINE_COMMENT)))); reconciler.setDamager(dr, PHPPartitionScanner.HTML_MULTILINE_COMMENT); reconciler.setRepairer(dr, PHPPartitionScanner.HTML_MULTILINE_COMMENT); return reconciler; } /* (non-Javadoc) * Method declared on SourceViewerConfiguration */ public int getTabWidth(ISourceViewer sourceViewer) { return 4; } /* (non-Javadoc) * Method declared on SourceViewerConfiguration */ public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) { return new PHPTextHover(); } }