X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/text/PHPSourceViewerConfiguration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/text/PHPSourceViewerConfiguration.java index 0dcaeed..aa3c70b 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/text/PHPSourceViewerConfiguration.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/text/PHPSourceViewerConfiguration.java @@ -7,13 +7,14 @@ Contributors: IBM Corporation - Initial implementation - Klaus Hartlage - www.eclipseproject.de + www.phpeclipse.de **********************************************************************/ package net.sourceforge.phpdt.ui.text; 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; @@ -25,22 +26,25 @@ import net.sourceforge.phpdt.internal.ui.text.JavaPresentationReconciler; import net.sourceforge.phpdt.internal.ui.text.JavaReconciler; import net.sourceforge.phpdt.internal.ui.text.PreferencesAdapter; import net.sourceforge.phpdt.internal.ui.text.java.JavaFormattingStrategy; -import net.sourceforge.phpdt.internal.ui.text.java.JavaStringAutoIndentStrategy; +import net.sourceforge.phpdt.internal.ui.text.java.JavaStringAutoIndentStrategyDQ; +import net.sourceforge.phpdt.internal.ui.text.java.JavaStringAutoIndentStrategySQ; 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.java.hover.JavaInformationProvider; +import net.sourceforge.phpdt.internal.ui.text.phpdoc.JavaDocAutoIndentStrategy; +import net.sourceforge.phpdt.internal.ui.text.phpdoc.PHPDocCodeScanner; import net.sourceforge.phpdt.internal.ui.text.phpdoc.PHPDocCompletionProcessor; import net.sourceforge.phpdt.ui.PreferenceConstants; +import net.sourceforge.phpeclipse.IPreferenceConstants; import net.sourceforge.phpeclipse.PHPeclipsePlugin; -import net.sourceforge.phpeclipse.phpeditor.PHPEditor; import net.sourceforge.phpeclipse.phpeditor.html.HTMLFormattingStrategy; import net.sourceforge.phpeclipse.phpeditor.php.HTMLCompletionProcessor; import net.sourceforge.phpeclipse.phpeditor.php.PHPAutoIndentStrategy; +import net.sourceforge.phpeclipse.phpeditor.php.PHPCodeScanner; import net.sourceforge.phpeclipse.phpeditor.php.PHPCompletionProcessor; import net.sourceforge.phpeclipse.phpeditor.php.PHPDocumentPartitioner; import net.sourceforge.phpeclipse.phpeditor.php.PHPDoubleClickSelector; import net.sourceforge.phpeclipse.phpeditor.php.PHPPartitionScanner; -import net.sourceforge.phpeclipse.phpeditor.util.PHPColorProvider; import net.sourceforge.phpeclipse.xml.ui.XMLPlugin; import net.sourceforge.phpeclipse.xml.ui.internal.text.XMLConfiguration; import net.sourceforge.phpeclipse.xml.ui.internal.text.XMLPartitionScanner; @@ -112,12 +116,14 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { private JavaTextTools fJavaTextTools; private ITextEditor fTextEditor; + /** - * The document partitioning. - * @since 3.0 - */ + * The document partitioning. + * + * @since 3.0 + */ private String fDocumentPartitioning; - + private ContentFormatter fFormatter; private HTMLFormattingStrategy fFormattingStrategy; @@ -136,42 +142,41 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * * @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; + // 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 @@ -188,7 +193,9 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { private IColorManager fColorManager; private XMLTextTools fXMLTextTools; + private XMLConfiguration xmlConfiguration; + /** * 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. @@ -214,29 +221,104 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { fPreferenceStore = preferenceStore; fTextEditor = editor; fDocumentPartitioning = partitioning; - fJavaTextTools = PHPeclipsePlugin.getDefault().getJavaTextTools(); + // fJavaTextTools = PHPeclipsePlugin.getDefault().getJavaTextTools(); fXMLTextTools = XMLPlugin.getDefault().getXMLTextTools(); xmlConfiguration = new XMLConfiguration(fXMLTextTools); + fColorManager = colorManager; + fPreferenceStore = preferenceStore; + fTextEditor = editor; + fDocumentPartitioning = partitioning; - // initializeScanners(); + initializeScanners(); } /** - * Default constructor. + * Creates a new Java source viewer configuration for viewers in the given editor using the given Java tools. + * + * @param tools + * the Java text tools to be used + * @param editor + * the editor in which the configured viewer(s) will reside + * @see JavaTextTools + * @deprecated As of 3.0, replaced by + * {@link JavaSourceViewerConfiguration#JavaSourceViewerConfiguration(IColorManager, IPreferenceStore, ITextEditor, String)} + */ + // public PHPSourceViewerConfiguration(JavaTextTools tools, PHPEditor editor, String partitioning) { + // fJavaTextTools = tools; + // fColorManager = tools.getColorManager(); + // fPreferenceStore = createPreferenceStore(); + // fDocumentPartitioning = partitioning; + // fCodeScanner = (AbstractJavaScanner) fJavaTextTools.getCodeScanner(); + // fMultilineCommentScanner = (AbstractJavaScanner) fJavaTextTools.getMultilineCommentScanner(); + // fSinglelineCommentScanner = (AbstractJavaScanner) fJavaTextTools.getSinglelineCommentScanner(); + // fStringScanner = (AbstractJavaScanner) fJavaTextTools.getStringScanner(); + // fJavaDocScanner = (AbstractJavaScanner) fJavaTextTools.getJavaDocScanner(); + // fTextEditor = editor; + // fXMLTextTools = XMLPlugin.getDefault().getXMLTextTools(); + // xmlConfiguration = new XMLConfiguration(fXMLTextTools); + // } + /** + * Returns the color manager for this configuration. + * + * @return the color manager */ - public PHPSourceViewerConfiguration(JavaTextTools tools, PHPEditor editor, String partitioning) { - fJavaTextTools= tools; - fColorManager= tools.getColorManager(); - fPreferenceStore= createPreferenceStore(); - fDocumentPartitioning = partitioning; -// fCodeScanner= (AbstractJavaScanner) fJavaTextTools.getCodeScanner(); -// fMultilineCommentScanner= (AbstractJavaScanner) fJavaTextTools.getMultilineCommentScanner(); -// fSinglelineCommentScanner= (AbstractJavaScanner) fJavaTextTools.getSinglelineCommentScanner(); -// fStringScanner= (AbstractJavaScanner) fJavaTextTools.getStringScanner(); -// fJavaDocScanner= (AbstractJavaScanner) fJavaTextTools.getJavaDocScanner(); - fTextEditor= editor; - fXMLTextTools = XMLPlugin.getDefault().getXMLTextTools(); - xmlConfiguration = new XMLConfiguration(fXMLTextTools); + protected IColorManager getColorManager() { + return fColorManager; + } + + /** + * Initializes the scanners. + * + * @since 3.0 + */ + private void initializeScanners() { + Assert.isTrue(isNewSetup()); + fCodeScanner = new PHPCodeScanner(getColorManager(), fPreferenceStore); + fMultilineCommentScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore, + IPreferenceConstants.PHP_MULTILINE_COMMENT); + fSinglelineCommentScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore, + IPreferenceConstants.PHP_SINGLELINE_COMMENT); + fStringScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore, IPreferenceConstants.PHP_STRING); + fJavaDocScanner = new PHPDocCodeScanner(getColorManager(), fPreferenceStore); + } + + /** + * Determines whether the preference change encoded by the given event changes the behavior of one of its contained components. + * + * @param event + * the event to be investigated + * @return true if event causes a behavioral change + * @since 3.0 + */ + public boolean affectsTextPresentation(PropertyChangeEvent event) { + return fCodeScanner.affectsBehavior(event) || fMultilineCommentScanner.affectsBehavior(event) + || fSinglelineCommentScanner.affectsBehavior(event) || fStringScanner.affectsBehavior(event) + || fJavaDocScanner.affectsBehavior(event); + } + + /** + * Adapts the behavior of the contained components to the change encoded in the given event. + *

+ * Clients are not allowed to call this method if the old setup with text tools is in use. + *

+ * + * @param event + * the event to which to adapt + * @see JavaSourceViewerConfiguration#JavaSourceViewerConfiguration(IColorManager, IPreferenceStore, ITextEditor, String) + * @since 3.0 + */ + public void handlePropertyChangeEvent(PropertyChangeEvent event) { + Assert.isTrue(isNewSetup()); + if (fCodeScanner.affectsBehavior(event)) + fCodeScanner.adaptToPreferenceChange(event); + if (fMultilineCommentScanner.affectsBehavior(event)) + fMultilineCommentScanner.adaptToPreferenceChange(event); + if (fSinglelineCommentScanner.affectsBehavior(event)) + fSinglelineCommentScanner.adaptToPreferenceChange(event); + if (fStringScanner.affectsBehavior(event)) + fStringScanner.adaptToPreferenceChange(event); + if (fJavaDocScanner.affectsBehavior(event)) + fJavaDocScanner.adaptToPreferenceChange(event); } /* @@ -329,10 +411,18 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * (non-Javadoc) Method declared on SourceViewerConfiguration */ public IAutoIndentStrategy getAutoIndentStrategy(ISourceViewer sourceViewer, String contentType) { + if (IPHPPartitions.PHP_PHPDOC_COMMENT.equals(contentType) + || IPHPPartitions.PHP_MULTILINE_COMMENT.equals(contentType)) + return new JavaDocAutoIndentStrategy(getConfiguredDocumentPartitioning(sourceViewer)); if (IPHPPartitions.PHP_STRING_DQ.equals(contentType)) - return new JavaStringAutoIndentStrategy(getConfiguredDocumentPartitioning(sourceViewer)); - - return (IPHPPartitions.PHP_PARTITIONING.equals(contentType) ? new PHPAutoIndentStrategy() : new DefaultAutoIndentStrategy()); + return new JavaStringAutoIndentStrategyDQ(getConfiguredDocumentPartitioning(sourceViewer)); + if (IPHPPartitions.PHP_STRING_SQ.equals(contentType)) + return new JavaStringAutoIndentStrategySQ(getConfiguredDocumentPartitioning(sourceViewer)); + + return (PHPDocumentPartitioner.PHP_TEMPLATE_DATA.equals(contentType) + || PHPDocumentPartitioner.PHP_SCRIPT_CODE.equals(contentType) || IDocument.DEFAULT_CONTENT_TYPE.equals(contentType) + || IPHPPartitions.PHP_PARTITIONING.equals(contentType) || PHPPartitionScanner.PHP_SCRIPTING_AREA.equals(contentType) ? new PHPAutoIndentStrategy() + : new DefaultAutoIndentStrategy()); } /** @@ -341,7 +431,37 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @return the PHP source code scanner */ protected RuleBasedScanner getCodeScanner() { - return fJavaTextTools.getCodeScanner(); + return fCodeScanner; //fJavaTextTools.getCodeScanner(); + } + + /** + * Returns the Java multi-line comment scanner for this configuration. + * + * @return the Java multi-line comment scanner + * @since 2.0 + */ + protected RuleBasedScanner getMultilineCommentScanner() { + return fMultilineCommentScanner; + } + + /** + * Returns the Java single-line comment scanner for this configuration. + * + * @return the Java single-line comment scanner + * @since 2.0 + */ + protected RuleBasedScanner getSinglelineCommentScanner() { + return fSinglelineCommentScanner; + } + + /** + * Returns the Java string scanner for this configuration. + * + * @return the Java string scanner + * @since 2.0 + */ + protected RuleBasedScanner getStringScanner() { + return fStringScanner; } /** @@ -349,19 +469,17 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * * @return the HTML source code scanner */ -// protected RuleBasedScanner getHTMLScanner() { -// return fJavaTextTools.getHTMLScanner(); -// } - + // protected RuleBasedScanner getHTMLScanner() { + // return fJavaTextTools.getHTMLScanner(); + // } /** * Returns the Smarty source code scanner for this configuration. * * @return the Smarty source code scanner */ - protected RuleBasedScanner getSmartyScanner() { - return fJavaTextTools.getSmartyScanner(); - } - + // protected RuleBasedScanner getSmartyScanner() { + // return fJavaTextTools.getSmartyScanner(); + // } /* * @see SourceViewerConfiguration#getReconciler(ISourceViewer) */ @@ -463,110 +581,74 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * * @return the SmartyDoc source code scanner */ - protected RuleBasedScanner getSmartyDocScanner() { - return fJavaTextTools.getSmartyDocScanner(); - } - + // protected RuleBasedScanner getSmartyDocScanner() { + // return fJavaTextTools.getSmartyDocScanner(); + // } /** * Returns the PHPDoc source code scanner for this configuration. * * @return the PHPDoc source code scanner */ protected RuleBasedScanner getPHPDocScanner() { - return fJavaTextTools.getJavaDocScanner(); + return fJavaDocScanner; //fJavaTextTools.getJavaDocScanner(); } /* * (non-Javadoc) Method declared on SourceViewerConfiguration */ public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) { - return new String[] { - IDocument.DEFAULT_CONTENT_TYPE, - PHPPartitionScanner.PHP_SCRIPTING_AREA, - - IPHPPartitions.HTML, - IPHPPartitions.HTML_MULTILINE_COMMENT, - IPHPPartitions.PHP_PARTITIONING, - IPHPPartitions.PHP_SINGLELINE_COMMENT, - IPHPPartitions.PHP_MULTILINE_COMMENT, - IPHPPartitions.PHP_PHPDOC_COMMENT, - IPHPPartitions.PHP_STRING_DQ, - IPHPPartitions.PHP_STRING_SQ, - IPHPPartitions.CSS, - IPHPPartitions.CSS_MULTILINE_COMMENT, - IPHPPartitions.JAVASCRIPT, - IPHPPartitions.JS_MULTILINE_COMMENT, - IPHPPartitions.SMARTY, + return new String[] { IDocument.DEFAULT_CONTENT_TYPE, PHPPartitionScanner.PHP_SCRIPTING_AREA, + + IPHPPartitions.HTML, IPHPPartitions.HTML_MULTILINE_COMMENT, IPHPPartitions.PHP_PARTITIONING, + IPHPPartitions.PHP_SINGLELINE_COMMENT, IPHPPartitions.PHP_MULTILINE_COMMENT, IPHPPartitions.PHP_PHPDOC_COMMENT, + IPHPPartitions.PHP_STRING_DQ, IPHPPartitions.PHP_STRING_SQ, IPHPPartitions.CSS, IPHPPartitions.CSS_MULTILINE_COMMENT, + IPHPPartitions.JAVASCRIPT, IPHPPartitions.JS_MULTILINE_COMMENT, IPHPPartitions.SMARTY, IPHPPartitions.SMARTY_MULTILINE_COMMENT, - - XMLPartitionScanner.XML_PI, - XMLPartitionScanner.XML_COMMENT, - XMLPartitionScanner.XML_DECL, - XMLPartitionScanner.XML_TAG, - XMLPartitionScanner.XML_ATTRIBUTE, - XMLPartitionScanner.XML_CDATA, - - XMLPartitionScanner.DTD_INTERNAL, - XMLPartitionScanner.DTD_INTERNAL_PI, - XMLPartitionScanner.DTD_INTERNAL_COMMENT, - XMLPartitionScanner.DTD_INTERNAL_DECL, - - PHPDocumentPartitioner.PHP_TEMPLATE_DATA, - PHPDocumentPartitioner.PHP_SCRIPT_CODE - }; + + XMLPartitionScanner.XML_PI, XMLPartitionScanner.XML_COMMENT, XMLPartitionScanner.XML_DECL, XMLPartitionScanner.XML_TAG, + XMLPartitionScanner.XML_ATTRIBUTE, XMLPartitionScanner.XML_CDATA, + + XMLPartitionScanner.DTD_INTERNAL, XMLPartitionScanner.DTD_INTERNAL_PI, XMLPartitionScanner.DTD_INTERNAL_COMMENT, + XMLPartitionScanner.DTD_INTERNAL_DECL, + + PHPDocumentPartitioner.PHP_TEMPLATE_DATA, PHPDocumentPartitioner.PHP_SCRIPT_CODE }; } public String[] getConfiguredHTMLContentTypes() { - return new String[] { - XMLPartitionScanner.XML_PI, - XMLPartitionScanner.XML_COMMENT, - XMLPartitionScanner.XML_DECL, - XMLPartitionScanner.XML_TAG, - XMLPartitionScanner.XML_ATTRIBUTE, - XMLPartitionScanner.XML_CDATA, - - XMLPartitionScanner.DTD_INTERNAL, - XMLPartitionScanner.DTD_INTERNAL_PI, - XMLPartitionScanner.DTD_INTERNAL_COMMENT, - XMLPartitionScanner.DTD_INTERNAL_DECL, - }; + return new String[] { XMLPartitionScanner.XML_PI, XMLPartitionScanner.XML_COMMENT, XMLPartitionScanner.XML_DECL, + XMLPartitionScanner.XML_TAG, XMLPartitionScanner.XML_ATTRIBUTE, XMLPartitionScanner.XML_CDATA, + + XMLPartitionScanner.DTD_INTERNAL, XMLPartitionScanner.DTD_INTERNAL_PI, XMLPartitionScanner.DTD_INTERNAL_COMMENT, + XMLPartitionScanner.DTD_INTERNAL_DECL, }; } + public String[] getConfiguredPHPContentTypes() { - return new String[] { - IDocument.DEFAULT_CONTENT_TYPE, - IPHPPartitions.PHP_PARTITIONING, - IPHPPartitions.PHP_SINGLELINE_COMMENT, - IPHPPartitions.PHP_MULTILINE_COMMENT, - IPHPPartitions.PHP_PHPDOC_COMMENT, - IPHPPartitions.PHP_STRING_DQ, - IPHPPartitions.PHP_STRING_SQ, - IPHPPartitions.CSS, - IPHPPartitions.CSS_MULTILINE_COMMENT, - IPHPPartitions.JAVASCRIPT, - IPHPPartitions.JS_MULTILINE_COMMENT, - IPHPPartitions.SMARTY, - IPHPPartitions.SMARTY_MULTILINE_COMMENT, - }; - } - /* - * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getConfiguredDocumentPartitioning(org.eclipse.jface.text.source.ISourceViewer) - * @since 3.0 - */ - public String getConfiguredDocumentPartitioning(ISourceViewer sourceViewer) { - if (fDocumentPartitioning != null) - return fDocumentPartitioning; - return super.getConfiguredDocumentPartitioning(sourceViewer); - } + return new String[] { IDocument.DEFAULT_CONTENT_TYPE, IPHPPartitions.PHP_PARTITIONING, IPHPPartitions.PHP_SINGLELINE_COMMENT, + IPHPPartitions.PHP_MULTILINE_COMMENT, IPHPPartitions.PHP_PHPDOC_COMMENT, IPHPPartitions.PHP_STRING_DQ, + IPHPPartitions.PHP_STRING_SQ, IPHPPartitions.CSS, IPHPPartitions.CSS_MULTILINE_COMMENT, IPHPPartitions.JAVASCRIPT, + IPHPPartitions.JS_MULTILINE_COMMENT, IPHPPartitions.SMARTY, IPHPPartitions.SMARTY_MULTILINE_COMMENT, }; + } + + /* + * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getConfiguredDocumentPartitioning(org.eclipse.jface.text.source.ISourceViewer) + * @since 3.0 + */ + public String getConfiguredDocumentPartitioning(ISourceViewer sourceViewer) { + if (fDocumentPartitioning != null) + return fDocumentPartitioning; + return super.getConfiguredDocumentPartitioning(sourceViewer); + } + /* * (non-Javadoc) Method declared on SourceViewerConfiguration */ public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) { ContentAssistant assistant = new ContentAssistant(); - IContentAssistProcessor processor = new HTMLCompletionProcessor(); + IContentAssistProcessor processor = new HTMLCompletionProcessor(getEditor()); assistant.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer)); assistant.setContentAssistProcessor(processor, IPHPPartitions.HTML); assistant.setContentAssistProcessor(processor, IPHPPartitions.HTML_MULTILINE_COMMENT); - + assistant.setContentAssistProcessor(processor, IPHPPartitions.CSS); assistant.setContentAssistProcessor(processor, IPHPPartitions.CSS_MULTILINE_COMMENT); assistant.setContentAssistProcessor(processor, IPHPPartitions.JAVASCRIPT); @@ -574,20 +656,20 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { // TODO define special smarty partition content assist assistant.setContentAssistProcessor(processor, IPHPPartitions.SMARTY); assistant.setContentAssistProcessor(processor, IPHPPartitions.SMARTY_MULTILINE_COMMENT); - + assistant.setContentAssistProcessor(processor, PHPDocumentPartitioner.PHP_TEMPLATE_DATA); String[] htmlTypes = getConfiguredHTMLContentTypes(); for (int i = 0; i < htmlTypes.length; i++) { - assistant.setContentAssistProcessor(processor, htmlTypes[i]); + assistant.setContentAssistProcessor(processor, htmlTypes[i]); } processor = new PHPCompletionProcessor(getEditor()); - + assistant.setContentAssistProcessor(processor, PHPDocumentPartitioner.PHP_SCRIPT_CODE); assistant.setContentAssistProcessor(processor, IPHPPartitions.PHP_PARTITIONING); assistant.setContentAssistProcessor(processor, IPHPPartitions.PHP_STRING_DQ); assistant.setContentAssistProcessor(processor, IPHPPartitions.PHP_STRING_SQ); - - assistant.setContentAssistProcessor(new PHPDocCompletionProcessor(), IPHPPartitions.PHP_PHPDOC_COMMENT); + + assistant.setContentAssistProcessor(new PHPDocCompletionProcessor(getEditor()), IPHPPartitions.PHP_PHPDOC_COMMENT); // assistant.enableAutoActivation(true); // assistant.setAutoActivationDelay(500); // assistant.setProposalPopupOrientation(ContentAssistant.PROPOSAL_OVERLAY); @@ -601,7 +683,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { assistant.setContextInformationPopupOrientation(ContentAssistant.CONTEXT_INFO_ABOVE); assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer)); return assistant; - } + } /* * (non-Javadoc) Method declared on SourceViewerConfiguration @@ -655,29 +737,32 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { vector.add(""); //$NON-NLS-1$ return (String[]) vector.toArray(new String[vector.size()]); } + + /** + * @return true iff the new setup without text tools is in use. + * + * @since 3.0 + */ + private boolean isNewSetup() { + return fJavaTextTools == null; + } + /** - * @return true iff the new setup without text tools is in use. - * - * @since 3.0 - */ - private boolean isNewSetup() { - return fJavaTextTools == null; - } - /** - * Creates and returns a preference store which combines the preference - * stores from the text tools and which is read-only. - * - * @return the read-only preference store - * @since 3.0 - */ - private IPreferenceStore createPreferenceStore() { - Assert.isTrue(!isNewSetup()); - IPreferenceStore generalTextStore= EditorsUI.getPreferenceStore(); - if (fJavaTextTools.getCorePreferenceStore() == null) - return new ChainedPreferenceStore(new IPreferenceStore[] { fJavaTextTools.getPreferenceStore(), generalTextStore}); - - return new ChainedPreferenceStore(new IPreferenceStore[] { fJavaTextTools.getPreferenceStore(), new PreferencesAdapter(fJavaTextTools.getCorePreferenceStore()), generalTextStore }); - } + * Creates and returns a preference store which combines the preference stores from the text tools and which is read-only. + * + * @return the read-only preference store + * @since 3.0 + */ + private IPreferenceStore createPreferenceStore() { + Assert.isTrue(!isNewSetup()); + IPreferenceStore generalTextStore = EditorsUI.getPreferenceStore(); + if (fJavaTextTools.getCorePreferenceStore() == null) + return new ChainedPreferenceStore(new IPreferenceStore[] { fJavaTextTools.getPreferenceStore(), generalTextStore }); + + return new ChainedPreferenceStore(new IPreferenceStore[] { fJavaTextTools.getPreferenceStore(), + new PreferencesAdapter(fJavaTextTools.getCorePreferenceStore()), generalTextStore }); + } + /* * (non-Javadoc) Method declared on SourceViewerConfiguration */ @@ -689,39 +774,39 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { PresentationReconciler phpReconciler = new JavaPresentationReconciler(); phpReconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer)); -// DefaultDamagerRepairer dr = new DefaultDamagerRepairer(getHTMLScanner()); -// reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE); -// reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); -// dr = new DefaultDamagerRepairer(getHTMLScanner()); -// reconciler.setDamager(dr, IPHPPartitions.HTML); -// reconciler.setRepairer(dr, IPHPPartitions.HTML); -// dr = new DefaultDamagerRepairer(getHTMLScanner()); -// reconciler.setDamager(dr, IPHPPartitions.CSS); -// reconciler.setRepairer(dr, IPHPPartitions.CSS); -// dr = new DefaultDamagerRepairer(getHTMLScanner()); -// reconciler.setDamager(dr, IPHPPartitions.CSS_MULTILINE_COMMENT); -// reconciler.setRepairer(dr, IPHPPartitions.CSS_MULTILINE_COMMENT); -// dr = new DefaultDamagerRepairer(getHTMLScanner()); -// reconciler.setDamager(dr, IPHPPartitions.JAVASCRIPT); -// reconciler.setRepairer(dr, IPHPPartitions.JAVASCRIPT); -// dr = new DefaultDamagerRepairer(getHTMLScanner()); -// reconciler.setDamager(dr, IPHPPartitions.JS_MULTILINE_COMMENT); -// reconciler.setRepairer(dr, IPHPPartitions.JS_MULTILINE_COMMENT); - DefaultDamagerRepairer phpDR = new DefaultDamagerRepairer(getSmartyScanner()); - phpReconciler.setDamager(phpDR, IPHPPartitions.SMARTY); - phpReconciler.setRepairer(phpDR, IPHPPartitions.SMARTY); - phpDR = new DefaultDamagerRepairer(getSmartyDocScanner()); - phpReconciler.setDamager(phpDR, IPHPPartitions.SMARTY_MULTILINE_COMMENT); - phpReconciler.setRepairer(phpDR, IPHPPartitions.SMARTY_MULTILINE_COMMENT); -// dr = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor( -// PHPColorProvider.MULTI_LINE_COMMENT)))); -// reconciler.setDamager(dr, IPHPPartitions.HTML_MULTILINE_COMMENT); -// reconciler.setRepairer(dr, IPHPPartitions.HTML_MULTILINE_COMMENT); - - phpDR = new DefaultDamagerRepairer(getCodeScanner()); + // DefaultDamagerRepairer dr = new DefaultDamagerRepairer(getHTMLScanner()); + // reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE); + // reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); + // dr = new DefaultDamagerRepairer(getHTMLScanner()); + // reconciler.setDamager(dr, IPHPPartitions.HTML); + // reconciler.setRepairer(dr, IPHPPartitions.HTML); + // dr = new DefaultDamagerRepairer(getHTMLScanner()); + // reconciler.setDamager(dr, IPHPPartitions.CSS); + // reconciler.setRepairer(dr, IPHPPartitions.CSS); + // dr = new DefaultDamagerRepairer(getHTMLScanner()); + // reconciler.setDamager(dr, IPHPPartitions.CSS_MULTILINE_COMMENT); + // reconciler.setRepairer(dr, IPHPPartitions.CSS_MULTILINE_COMMENT); + // dr = new DefaultDamagerRepairer(getHTMLScanner()); + // reconciler.setDamager(dr, IPHPPartitions.JAVASCRIPT); + // reconciler.setRepairer(dr, IPHPPartitions.JAVASCRIPT); + // dr = new DefaultDamagerRepairer(getHTMLScanner()); + // reconciler.setDamager(dr, IPHPPartitions.JS_MULTILINE_COMMENT); + // reconciler.setRepairer(dr, IPHPPartitions.JS_MULTILINE_COMMENT); + // DefaultDamagerRepairer phpDR = new DefaultDamagerRepairer(getSmartyScanner()); + // phpReconciler.setDamager(phpDR, IPHPPartitions.SMARTY); + // phpReconciler.setRepairer(phpDR, IPHPPartitions.SMARTY); + // phpDR = new DefaultDamagerRepairer(getSmartyDocScanner()); + // phpReconciler.setDamager(phpDR, IPHPPartitions.SMARTY_MULTILINE_COMMENT); + // phpReconciler.setRepairer(phpDR, IPHPPartitions.SMARTY_MULTILINE_COMMENT); + // dr = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor( + // PHPColorProvider.MULTI_LINE_COMMENT)))); + // reconciler.setDamager(dr, IPHPPartitions.HTML_MULTILINE_COMMENT); + // reconciler.setRepairer(dr, IPHPPartitions.HTML_MULTILINE_COMMENT); + + DefaultDamagerRepairer phpDR = new DefaultDamagerRepairer(getCodeScanner()); phpReconciler.setDamager(phpDR, IDocument.DEFAULT_CONTENT_TYPE); phpReconciler.setRepairer(phpDR, IDocument.DEFAULT_CONTENT_TYPE); - + phpDR = new DefaultDamagerRepairer(getCodeScanner()); phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_PARTITIONING); phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_PARTITIONING); @@ -730,72 +815,59 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_PHPDOC_COMMENT); phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_PHPDOC_COMMENT); - phpDR = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor( - PHPColorProvider.STRING)))); + phpDR = new DefaultDamagerRepairer(getStringScanner()); phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_DQ); phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_DQ); - phpDR = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor( - PHPColorProvider.STRING)))); + phpDR = new DefaultDamagerRepairer(getStringScanner()); phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_SQ); phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_SQ); - phpDR = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor( - PHPColorProvider.SINGLE_LINE_COMMENT)))); + phpDR = new DefaultDamagerRepairer(getSinglelineCommentScanner()); phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_SINGLELINE_COMMENT); phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_SINGLELINE_COMMENT); - phpDR = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor( - PHPColorProvider.MULTI_LINE_COMMENT)))); + phpDR = new DefaultDamagerRepairer(getMultilineCommentScanner()); phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_MULTILINE_COMMENT); phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_MULTILINE_COMMENT); - + PresentationReconciler reconciler = new PresentationReconciler(); reconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer)); -// + // JavaTextTools jspTextTools = PHPeclipsePlugin.getDefault().getJavaTextTools(); - DefaultDamagerRepairer dr = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor( - PHPColorProvider.PHPDOC_TAG))));//jspTextTools.getJSPTextScanner()); - reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE); - reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); - -// dr = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor( -// PHPColorProvider.PHPDOC_TAG))));//jspTextTools.getJSPBracketScanner()); -// reconciler.setDamager(dr, JSPScriptScanner.JSP_BRACKET); -// reconciler.setRepairer(dr, JSPScriptScanner.JSP_BRACKET); - + DefaultDamagerRepairer dr = new DefaultDamagerRepairer(getPHPDocScanner());//jspTextTools.getJSPTextScanner()); + reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE); + reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); + + // dr = new DefaultDamagerRepairer(new SingleTokenScanner(new TextAttribute(fJavaTextTools.getColorManager().getColor( + // PHPColorProvider.PHPDOC_TAG))));//jspTextTools.getJSPBracketScanner()); + // reconciler.setDamager(dr, JSPScriptScanner.JSP_BRACKET); + // reconciler.setRepairer(dr, JSPScriptScanner.JSP_BRACKET); + // xml partitions - configureEmbeddedPresentationReconciler(reconciler, - xmlConfiguration.getPresentationReconciler(sourceViewer), - xmlConfiguration.getConfiguredContentTypes(sourceViewer), - PHPDocumentPartitioner.PHP_TEMPLATE_DATA); - - // java partitions - configureEmbeddedPresentationReconciler(reconciler, - phpReconciler, - getConfiguredPHPContentTypes(), - PHPDocumentPartitioner.PHP_SCRIPT_CODE); - + configureEmbeddedPresentationReconciler(reconciler, xmlConfiguration.getPresentationReconciler(sourceViewer), xmlConfiguration + .getConfiguredContentTypes(sourceViewer), PHPDocumentPartitioner.PHP_TEMPLATE_DATA); + + // java partitions + configureEmbeddedPresentationReconciler(reconciler, phpReconciler, getConfiguredPHPContentTypes(), + PHPDocumentPartitioner.PHP_SCRIPT_CODE); + return reconciler; } - - private void configureEmbeddedPresentationReconciler( - PresentationReconciler reconciler, - IPresentationReconciler embedded, - String[] types, - String defaultType - ) { - for (int i = 0; i < types.length; i++) { - String type = types[i]; - IPresentationDamager damager = embedded.getDamager(type); - IPresentationRepairer repairer = embedded.getRepairer(type); + private void configureEmbeddedPresentationReconciler(PresentationReconciler reconciler, IPresentationReconciler embedded, + String[] types, String defaultType) { + for (int i = 0; i < types.length; i++) { + String type = types[i]; - if (type == IDocument.DEFAULT_CONTENT_TYPE) { - type = defaultType; - } + IPresentationDamager damager = embedded.getDamager(type); + IPresentationRepairer repairer = embedded.getRepairer(type); - reconciler.setDamager(damager, type); - reconciler.setRepairer(repairer, type); - } - } + if (type == IDocument.DEFAULT_CONTENT_TYPE) { + type = defaultType; + } + + reconciler.setDamager(damager, type); + reconciler.setRepairer(repairer, type); + } + } /* * (non-Javadoc) Method declared on SourceViewerConfiguration @@ -836,20 +908,21 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { }; } - /* - * @see SourceViewerConfiguration#getInformationPresenter(ISourceViewer) - * @since 2.0 - */ - public IInformationPresenter getInformationPresenter(ISourceViewer sourceViewer) { - InformationPresenter presenter= new InformationPresenter(getInformationPresenterControlCreator(sourceViewer)); - presenter.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer)); - IInformationProvider provider= new JavaInformationProvider(getEditor()); - presenter.setInformationProvider(provider, IDocument.DEFAULT_CONTENT_TYPE); - presenter.setInformationProvider(provider, IPHPPartitions.PHP_PHPDOC_COMMENT); -// presenter.setInformationProvider(provider, IPHPPartitions.JAVA_CHARACTER); - presenter.setSizeConstraints(60, 10, true, true); - return presenter; - } + /* + * @see SourceViewerConfiguration#getInformationPresenter(ISourceViewer) + * @since 2.0 + */ + public IInformationPresenter getInformationPresenter(ISourceViewer sourceViewer) { + InformationPresenter presenter = new InformationPresenter(getInformationPresenterControlCreator(sourceViewer)); + presenter.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer)); + IInformationProvider provider = new JavaInformationProvider(getEditor()); + presenter.setInformationProvider(provider, IDocument.DEFAULT_CONTENT_TYPE); + presenter.setInformationProvider(provider, IPHPPartitions.PHP_PHPDOC_COMMENT); + // presenter.setInformationProvider(provider, IPHPPartitions.JAVA_CHARACTER); + presenter.setSizeConstraints(60, 10, true, true); + return presenter; + } + /* * @see SourceViewerConfiguration#getInformationPresenter(ISourceViewer) * @since 2.0