X-Git-Url: http://git.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 5c0e7b1..4e3bb91 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSourceViewerConfiguration.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSourceViewerConfiguration.java @@ -13,13 +13,17 @@ package net.sourceforge.phpeclipse.phpeditor; import java.util.Vector; +import net.sourceforge.phpdt.internal.ui.text.java.JavaFormattingStrategy; +import net.sourceforge.phpdt.internal.ui.text.phpdoc.PHPDocCompletionProcessor; import net.sourceforge.phpeclipse.PHPeclipsePlugin; +import net.sourceforge.phpeclipse.phpeditor.html.HTMLFormattingStrategy; import net.sourceforge.phpeclipse.phpeditor.php.HTMLCompletionProcessor; +import net.sourceforge.phpeclipse.phpeditor.php.IPHPPartitionScannerConstants; 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.preference.IPreferenceStore; import org.eclipse.jface.text.DefaultAutoIndentStrategy; import org.eclipse.jface.text.IAutoIndentStrategy; @@ -29,10 +33,14 @@ 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.formatter.ContentFormatter; +import org.eclipse.jface.text.formatter.IContentFormatter; +import org.eclipse.jface.text.formatter.IFormattingStrategy; 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.DefaultPartitioner; import org.eclipse.jface.text.rules.Token; import org.eclipse.jface.text.source.IAnnotationHover; import org.eclipse.jface.text.source.ISourceViewer; @@ -40,10 +48,16 @@ import org.eclipse.jface.text.source.SourceViewerConfiguration; import org.eclipse.swt.graphics.RGB; /** - * Configuration for an SourceViewer which shows PHP code. + * Configuration for an SourceViewer which shows PHP code. */ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { + public static final String HTML_DEFAULT = IDocument.DEFAULT_CONTENT_TYPE; + + private PHPEditor fEditor; + + private ContentFormatter fFormatter; + private HTMLFormattingStrategy fFormattingStrategy; /** * Single token scanner. */ @@ -56,9 +70,63 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { /** * Default constructor. */ - public PHPSourceViewerConfiguration() { + public PHPSourceViewerConfiguration(PHPEditor editor) { + fEditor = editor; } + /* + * @see SourceViewerConfiguration#getContentFormatter(ISourceViewer) + */ + public IContentFormatter getContentFormatter(ISourceViewer sourceViewer) { +// if (fFormatter == null) { +// fFormatter = new ContentFormatter(); +// fFormattingStrategy = new HTMLFormattingStrategy(this, sourceViewer); +// fFormatter.setFormattingStrategy(fFormattingStrategy, HTML_DEFAULT); +// fFormatter.enablePartitionAwareFormatting(false); +// fFormatter.setPartitionManagingPositionCategories(getConfiguredContentTypes(null)); +// } +// return fFormatter; + + if (fFormatter == null) { + //ContentFormatter + fFormatter= new ContentFormatter(); + IFormattingStrategy strategy= new JavaFormattingStrategy(sourceViewer); + + fFormatter.setFormattingStrategy(strategy, IDocument.DEFAULT_CONTENT_TYPE); + fFormatter.enablePartitionAwareFormatting(false); + fFormatter.setPartitionManagingPositionCategories(getPartitionManagingPositionCategories()); + } + return fFormatter; + } + + /** + * Returns the names of the document position categories used by the document + * partitioners created by this object to manage their partition information. + * If the partitioners don't use document position categories, the returned + * result is null. + * + * @return the partition managing position categories or null + * if there is none + */ + public String[] getPartitionManagingPositionCategories() { + return new String[] { DefaultPartitioner.CONTENT_TYPES_CATEGORY }; + } +// /** +// * Returns the names of the document position categories used by the document +// * partitioners created by this object to manage their partition information. +// * If the partitioners don't use document position categories, the returned +// * result is null. +// * +// * @return the partition managing position categories or null +// * if there is none +// */ +// private String[] getPartitionManagingPositionCategories() { +// return new String[] { DefaultPartitioner.CONTENT_TYPES_CATEGORY }; +// } + + public PHPEditor getEditor() { + return fEditor; + } /* (non-Javadoc) * Method declared on SourceViewerConfiguration */ @@ -73,29 +141,38 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { 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 String[] getConfiguredContentTypes(ISourceViewer sourceViewer) +{ + return new String[] { + IDocument.DEFAULT_CONTENT_TYPE, + IPHPPartitionScannerConstants.PHP, + IPHPPartitionScannerConstants.PHP_MULTILINE_COMMENT, + IPHPPartitionScannerConstants.HTML, + IPHPPartitionScannerConstants.HTML_MULTILINE_COMMENT, + IPHPPartitionScannerConstants.CSS, + IPHPPartitionScannerConstants.CSS_MULTILINE_COMMENT, + IPHPPartitionScannerConstants.JAVASCRIPT, + IPHPPartitionScannerConstants.JS_MULTILINE_COMMENT + }; } - /* (non-Javadoc) + /* (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.setContentAssistProcessor(new PHPCompletionProcessor(), IPHPPartitionScannerConstants.PHP); + assistant.setContentAssistProcessor(new PHPDocCompletionProcessor(), IPHPPartitionScannerConstants.PHP_MULTILINE_COMMENT); + assistant.enableAutoActivation(true); assistant.setAutoActivationDelay(500); - assistant.setProposalPopupOrientation(assistant.PROPOSAL_OVERLAY); - assistant.setContextInformationPopupOrientation(assistant.CONTEXT_INFO_ABOVE); + assistant.setProposalPopupOrientation(ContentAssistant.PROPOSAL_OVERLAY); + assistant.setContextInformationPopupOrientation(ContentAssistant.CONTEXT_INFO_ABOVE); assistant.setContextInformationPopupBackground(PHPEditorEnvironment.getPHPColorProvider().getColor(new RGB(150, 150, 0))); return assistant; @@ -186,16 +263,20 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { // reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); dr = new DefaultDamagerRepairer(PHPEditorEnvironment.getPHPCodeScanner()); - reconciler.setDamager(dr, PHPPartitionScanner.PHP); - reconciler.setRepairer(dr, PHPPartitionScanner.PHP); + reconciler.setDamager(dr, IPHPPartitionScannerConstants.PHP); + reconciler.setRepairer(dr, IPHPPartitionScannerConstants.PHP); + dr = new DefaultDamagerRepairer(PHPEditorEnvironment.getPHPDocCodeScanner()); + reconciler.setDamager(dr, IPHPPartitionScannerConstants.PHP_MULTILINE_COMMENT); + reconciler.setRepairer(dr, IPHPPartitionScannerConstants.PHP_MULTILINE_COMMENT); + // 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); + dr = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(provider.getColor(PHPColorProvider.MULTI_LINE_COMMENT)))); + reconciler.setDamager(dr, IPHPPartitionScannerConstants.HTML_MULTILINE_COMMENT); + reconciler.setRepairer(dr, IPHPPartitionScannerConstants.HTML_MULTILINE_COMMENT); return reconciler; }