From c918112af17f2dd52280e7f130a67be7e8d0df2c Mon Sep 17 00:00:00 2001 From: bananeweizen Date: Tue, 24 Jan 2006 18:40:50 +0000 Subject: [PATCH] bugfix 1413452, migration to 3.1 API had a typo, so all indentation strategies didn't overwrite default implementation --- .../text/java/JavaStringAutoIndentStrategyDQ.java | 8 +- .../text/java/JavaStringAutoIndentStrategySQ.java | 8 +- .../ui/text/phpdoc/JavaDocAutoIndentStrategy.java | 26 +- .../ui/text/PHPSourceViewerConfiguration.java | 736 ++++++++++---------- .../phpeditor/php/PHPAutoIndentStrategy.java | 30 +- 5 files changed, 409 insertions(+), 399 deletions(-) diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/java/JavaStringAutoIndentStrategyDQ.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/java/JavaStringAutoIndentStrategyDQ.java index 1e4ebe5..1b59ee6 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/java/JavaStringAutoIndentStrategyDQ.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/java/JavaStringAutoIndentStrategyDQ.java @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials + * 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 API and implementation *******************************************************************************/ @@ -35,7 +35,7 @@ public class JavaStringAutoIndentStrategyDQ extends DefaultIndentLineAutoEditStr /** * The input string doesn't contain any line delimiter. - * + * * @param inputString the given input string * @return the displayable string. */ @@ -113,7 +113,7 @@ public class JavaStringAutoIndentStrategyDQ extends DefaultIndentLineAutoEditStr /** * Creates a new Java string auto indent strategy for the given document partitioning. - * + * * @param partitioning the document partitioning */ public JavaStringAutoIndentStrategyDQ(String partitioning) { diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/java/JavaStringAutoIndentStrategySQ.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/java/JavaStringAutoIndentStrategySQ.java index 5741824..3cc2044 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/java/JavaStringAutoIndentStrategySQ.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/java/JavaStringAutoIndentStrategySQ.java @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials + * 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 API and implementation *******************************************************************************/ @@ -35,7 +35,7 @@ public class JavaStringAutoIndentStrategySQ extends DefaultIndentLineAutoEditStr /** * The input string doesn't contain any line delimiter. - * + * * @param inputString the given input string * @return the displayable string. */ @@ -113,7 +113,7 @@ public class JavaStringAutoIndentStrategySQ extends DefaultIndentLineAutoEditStr /** * Creates a new Java string auto indent strategy for the given document partitioning. - * + * * @param partitioning the document partitioning */ public JavaStringAutoIndentStrategySQ(String partitioning) { diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/phpdoc/JavaDocAutoIndentStrategy.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/phpdoc/JavaDocAutoIndentStrategy.java index a8b6374..2f5d8b7 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/phpdoc/JavaDocAutoIndentStrategy.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/phpdoc/JavaDocAutoIndentStrategy.java @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials + * 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 API and implementation *******************************************************************************/ @@ -52,7 +52,7 @@ public class JavaDocAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy /** * Creates a new Javadoc auto indent strategy for the given document partitioning. - * + * * @param partitioning the document partitioning */ public JavaDocAutoIndentStrategy(String partitioning) { @@ -414,7 +414,7 @@ public class JavaDocAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy /** * Method jdocWrapParagraphFromLine. - * + * * @param document * @param line * @param always @@ -479,7 +479,7 @@ public class JavaDocAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy } /** - * Line break iterator to handle whitespaces as first class citizens. + * Line break iterator to handle whitespaces as first class citizens. */ private static class LineBreakIterator { @@ -533,8 +533,8 @@ public class JavaDocAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy } /** - * Formats a paragraph, using break iterator. - * + * Formats a paragraph, using break iterator. + * * @param offset an offset within the paragraph, which will be updated with respect to formatting. */ private static String formatParagraph(String paragraph, int[] offset, String prefix, String lineDelimiter, int margin) { @@ -548,9 +548,9 @@ public class JavaDocAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy int index= offset[0]; int indexBuffer= -1; - // line delimiter could be null - if (lineDelimiter == null) - lineDelimiter= ""; //$NON-NLS-1$ + // line delimiter could be null + if (lineDelimiter == null) + lineDelimiter= ""; //$NON-NLS-1$ for (int start= iterator.first(), end= iterator.next(); end != BreakIterator.DONE; start= end, end= iterator.next()) { @@ -659,9 +659,9 @@ public class JavaDocAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy private String getLineContents(IDocument d, int line) throws BadLocationException { int offset = d.getLineOffset(line); int length = d.getLineLength(line); - String lineDelimiter= d.getLineDelimiter(line); - if (lineDelimiter != null) - length= length - lineDelimiter.length(); + String lineDelimiter= d.getLineDelimiter(line); + if (lineDelimiter != null) + length= length - lineDelimiter.length(); String lineContents = d.get(offset, length); int trim = jdocExtractLinePrefix(d, line).length(); return lineContents.substring(trim); 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 9973c82..e6bfa94 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 @@ -125,9 +125,9 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * Single token scanner. */ static class SingleTokenScanner extends BufferedRuleBasedScanner { - public SingleTokenScanner(TextAttribute attribute) { - setDefaultReturnToken(new Token(attribute)); - } + public SingleTokenScanner(TextAttribute attribute) { + setDefaultReturnToken(new Token(attribute)); + } }; /** @@ -211,20 +211,20 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 3.0 */ public PHPSourceViewerConfiguration(IColorManager colorManager, IPreferenceStore preferenceStore, ITextEditor editor, - String partitioning) { - fColorManager = colorManager; - fPreferenceStore = preferenceStore; - fTextEditor = editor; - fDocumentPartitioning = partitioning; - // fJavaTextTools = PHPeclipsePlugin.getDefault().getJavaTextTools(); - fXMLTextTools = XMLPlugin.getDefault().getXMLTextTools(); - xmlConfiguration = new XMLConfiguration(fXMLTextTools); - fColorManager = colorManager; - fPreferenceStore = preferenceStore; - fTextEditor = editor; - fDocumentPartitioning = partitioning; + String partitioning) { + fColorManager = colorManager; + fPreferenceStore = preferenceStore; + fTextEditor = editor; + fDocumentPartitioning = partitioning; + // fJavaTextTools = PHPeclipsePlugin.getDefault().getJavaTextTools(); + fXMLTextTools = XMLPlugin.getDefault().getXMLTextTools(); + xmlConfiguration = new XMLConfiguration(fXMLTextTools); + fColorManager = colorManager; + fPreferenceStore = preferenceStore; + fTextEditor = editor; + fDocumentPartitioning = partitioning; - initializeScanners(); + initializeScanners(); } /** @@ -258,7 +258,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @return the color manager */ protected IColorManager getColorManager() { - return fColorManager; + return fColorManager; } /** @@ -268,15 +268,15 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { */ 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); + fCodeScanner = new PHPCodeScanner(getColorManager(), fPreferenceStore); + fMultilineCommentScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore, + IPreferenceConstants.PHP_MULTILINE_COMMENT); + fSinglelineCommentScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore, + IPreferenceConstants.PHP_SINGLELINE_COMMENT); // fStringDQScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore, IPreferenceConstants.PHP_STRING_DQ); - fStringDQScanner = new PHPStringDQCodeScanner(getColorManager(), fPreferenceStore); - fStringSQScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore, IPreferenceConstants.PHP_STRING_SQ); - fJavaDocScanner = new PHPDocCodeScanner(getColorManager(), fPreferenceStore); + fStringDQScanner = new PHPStringDQCodeScanner(getColorManager(), fPreferenceStore); + fStringSQScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore, IPreferenceConstants.PHP_STRING_SQ); + fJavaDocScanner = new PHPDocCodeScanner(getColorManager(), fPreferenceStore); } /** @@ -288,9 +288,9 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 3.0 */ public boolean affectsTextPresentation(PropertyChangeEvent event) { - return fCodeScanner.affectsBehavior(event) || fMultilineCommentScanner.affectsBehavior(event) - || fSinglelineCommentScanner.affectsBehavior(event) || fStringDQScanner.affectsBehavior(event)|| fStringSQScanner.affectsBehavior(event) - || fJavaDocScanner.affectsBehavior(event); + return fCodeScanner.affectsBehavior(event) || fMultilineCommentScanner.affectsBehavior(event) + || fSinglelineCommentScanner.affectsBehavior(event) || fStringDQScanner.affectsBehavior(event)|| fStringSQScanner.affectsBehavior(event) + || fJavaDocScanner.affectsBehavior(event); } /** @@ -306,42 +306,42 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { */ 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 (fStringDQScanner.affectsBehavior(event)) - fStringDQScanner.adaptToPreferenceChange(event); - if (fStringSQScanner.affectsBehavior(event)) - fStringSQScanner.adaptToPreferenceChange(event); - if (fJavaDocScanner.affectsBehavior(event)) - fJavaDocScanner.adaptToPreferenceChange(event); + if (fCodeScanner.affectsBehavior(event)) + fCodeScanner.adaptToPreferenceChange(event); + if (fMultilineCommentScanner.affectsBehavior(event)) + fMultilineCommentScanner.adaptToPreferenceChange(event); + if (fSinglelineCommentScanner.affectsBehavior(event)) + fSinglelineCommentScanner.adaptToPreferenceChange(event); + if (fStringDQScanner.affectsBehavior(event)) + fStringDQScanner.adaptToPreferenceChange(event); + if (fStringSQScanner.affectsBehavior(event)) + fStringSQScanner.adaptToPreferenceChange(event); + if (fJavaDocScanner.affectsBehavior(event)) + fJavaDocScanner.adaptToPreferenceChange(event); } /* * @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; + // 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; } /** @@ -351,7 +351,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @return the partition managing position categories or null if there is none */ public String[] getPartitionManagingPositionCategories() { - return new String[] { DefaultPartitioner.CONTENT_TYPES_CATEGORY }; + return new String[] { DefaultPartitioner.CONTENT_TYPES_CATEGORY }; } // /** @@ -371,7 +371,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { // return new String[] { DefaultPartitioner.CONTENT_TYPES_CATEGORY }; // } public ITextEditor getEditor() { - return fTextEditor; + return fTextEditor; } /** @@ -382,7 +382,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 2.0 */ protected IPreferenceStore getPreferenceStore() { - return PHPeclipsePlugin.getDefault().getPreferenceStore(); + return PHPeclipsePlugin.getDefault().getPreferenceStore(); } // /* (non-Javadoc) @@ -395,7 +395,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @see SourceViewerConfiguration#getAnnotationHover(ISourceViewer) */ public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) { - return new JavaAnnotationHover(JavaAnnotationHover.VERTICAL_RULER_HOVER); + return new JavaAnnotationHover(JavaAnnotationHover.VERTICAL_RULER_HOVER); } /* @@ -403,26 +403,36 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 3.0 */ public IAnnotationHover getOverviewRulerAnnotationHover(ISourceViewer sourceViewer) { - return new JavaAnnotationHover(JavaAnnotationHover.OVERVIEW_RULER_HOVER); - } - - /* - * (non-Javadoc) Method declared on SourceViewerConfiguration - */ - public IAutoEditStrategy getAutoEditStrategy(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 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 DefaultIndentLineAutoEditStrategy()); - } + return new JavaAnnotationHover(JavaAnnotationHover.OVERVIEW_RULER_HOVER); + } + + public IAutoEditStrategy[] getAutoEditStrategies( + ISourceViewer sourceViewer, String contentType) { + IAutoEditStrategy strategy = new DefaultIndentLineAutoEditStrategy(); + if (IPHPPartitions.PHP_PHPDOC_COMMENT.equals(contentType) + || IPHPPartitions.PHP_MULTILINE_COMMENT.equals(contentType)) + strategy = new JavaDocAutoIndentStrategy( + getConfiguredDocumentPartitioning(sourceViewer)); + else if (IPHPPartitions.PHP_STRING_DQ.equals(contentType)) + strategy = new JavaStringAutoIndentStrategyDQ( + getConfiguredDocumentPartitioning(sourceViewer)); + else if (IPHPPartitions.PHP_STRING_SQ.equals(contentType)) + strategy = new JavaStringAutoIndentStrategySQ( + getConfiguredDocumentPartitioning(sourceViewer)); + else + strategy = (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 DefaultIndentLineAutoEditStrategy()); + IAutoEditStrategy[] result = new IAutoEditStrategy[1]; + result[0] = strategy; + return result; + } /** * Returns the PHP source code scanner for this configuration. @@ -430,7 +440,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @return the PHP source code scanner */ protected RuleBasedScanner getCodeScanner() { - return fCodeScanner; //fJavaTextTools.getCodeScanner(); + return fCodeScanner; //fJavaTextTools.getCodeScanner(); } /** @@ -440,7 +450,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 2.0 */ protected RuleBasedScanner getMultilineCommentScanner() { - return fMultilineCommentScanner; + return fMultilineCommentScanner; } /** @@ -450,7 +460,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 2.0 */ protected RuleBasedScanner getSinglelineCommentScanner() { - return fSinglelineCommentScanner; + return fSinglelineCommentScanner; } /** @@ -459,7 +469,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @return the PHP double quoted string scanner */ protected RuleBasedScanner getStringDQScanner() { - return fStringDQScanner; + return fStringDQScanner; } /** @@ -468,7 +478,7 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @return the PHP single quoted string scanner */ protected RuleBasedScanner getStringSQScanner() { - return fStringSQScanner; + return fStringSQScanner; } /** * Returns the HTML source code scanner for this configuration. @@ -494,19 +504,19 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { */ public IReconciler getReconciler(ISourceViewer sourceViewer) { - final ITextEditor editor = getEditor(); - if (editor != null && editor.isEditable()) { + final ITextEditor editor = getEditor(); + if (editor != null && editor.isEditable()) { - JavaCompositeReconcilingStrategy strategy = new JavaCompositeReconcilingStrategy(editor, - getConfiguredDocumentPartitioning(sourceViewer)); - JavaReconciler reconciler = new JavaReconciler(editor, strategy, false); - reconciler.setIsIncrementalReconciler(false); - reconciler.setProgressMonitor(new NullProgressMonitor()); - reconciler.setDelay(500); + JavaCompositeReconcilingStrategy strategy = new JavaCompositeReconcilingStrategy(editor, + getConfiguredDocumentPartitioning(sourceViewer)); + JavaReconciler reconciler = new JavaReconciler(editor, strategy, false); + reconciler.setIsIncrementalReconciler(false); + reconciler.setProgressMonitor(new NullProgressMonitor()); + reconciler.setDelay(500); - return reconciler; - } - return null; + return reconciler; + } + return null; } /* @@ -514,27 +524,27 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 2.1 */ public int[] getConfiguredTextHoverStateMasks(ISourceViewer sourceViewer, String contentType) { - JavaEditorTextHoverDescriptor[] hoverDescs = PHPeclipsePlugin.getDefault().getJavaEditorTextHoverDescriptors(); - int stateMasks[] = new int[hoverDescs.length]; - int stateMasksLength = 0; - for (int i = 0; i < hoverDescs.length; i++) { - if (hoverDescs[i].isEnabled()) { - int j = 0; - int stateMask = hoverDescs[i].getStateMask(); - while (j < stateMasksLength) { - if (stateMasks[j] == stateMask) - break; - j++; - } - if (j == stateMasksLength) - stateMasks[stateMasksLength++] = stateMask; - } - } - if (stateMasksLength == hoverDescs.length) - return stateMasks; - int[] shortenedStateMasks = new int[stateMasksLength]; - System.arraycopy(stateMasks, 0, shortenedStateMasks, 0, stateMasksLength); - return shortenedStateMasks; + JavaEditorTextHoverDescriptor[] hoverDescs = PHPeclipsePlugin.getDefault().getJavaEditorTextHoverDescriptors(); + int stateMasks[] = new int[hoverDescs.length]; + int stateMasksLength = 0; + for (int i = 0; i < hoverDescs.length; i++) { + if (hoverDescs[i].isEnabled()) { + int j = 0; + int stateMask = hoverDescs[i].getStateMask(); + while (j < stateMasksLength) { + if (stateMasks[j] == stateMask) + break; + j++; + } + if (j == stateMasksLength) + stateMasks[stateMasksLength++] = stateMask; + } + } + if (stateMasksLength == hoverDescs.length) + return stateMasks; + int[] shortenedStateMasks = new int[stateMasksLength]; + System.arraycopy(stateMasks, 0, shortenedStateMasks, 0, stateMasksLength); + return shortenedStateMasks; } /* @@ -542,34 +552,34 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 2.1 */ public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType, int stateMask) { - JavaEditorTextHoverDescriptor[] hoverDescs = PHPeclipsePlugin.getDefault().getJavaEditorTextHoverDescriptors(); - int i = 0; - while (i < hoverDescs.length) { - if (hoverDescs[i].isEnabled() && hoverDescs[i].getStateMask() == stateMask) - return new JavaEditorTextHoverProxy(hoverDescs[i], getEditor()); - i++; - } - return null; - // if (fEditor != null) { - // IEditorInput editorInput = fEditor.getEditorInput(); - // if (editorInput instanceof IFileEditorInput) { - // try { - // IFile f = ((IFileEditorInput) editorInput).getFile(); - // return new PHPTextHover(f.getProject()); - // } catch (NullPointerException e) { - // // this exception occurs, if getTextHover is called by - // // preference pages ! - // } - // } - // } - // return new PHPTextHover(null); + JavaEditorTextHoverDescriptor[] hoverDescs = PHPeclipsePlugin.getDefault().getJavaEditorTextHoverDescriptors(); + int i = 0; + while (i < hoverDescs.length) { + if (hoverDescs[i].isEnabled() && hoverDescs[i].getStateMask() == stateMask) + return new JavaEditorTextHoverProxy(hoverDescs[i], getEditor()); + i++; + } + return null; + // if (fEditor != null) { + // IEditorInput editorInput = fEditor.getEditorInput(); + // if (editorInput instanceof IFileEditorInput) { + // try { + // IFile f = ((IFileEditorInput) editorInput).getFile(); + // return new PHPTextHover(f.getProject()); + // } catch (NullPointerException e) { + // // this exception occurs, if getTextHover is called by + // // preference pages ! + // } + // } + // } + // return new PHPTextHover(null); } /* * @see SourceViewerConfiguration#getTextHover(ISourceViewer, String) */ public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) { - return getTextHover(sourceViewer, contentType, ITextViewerExtension2.DEFAULT_HOVER_STATE_MASK); + return getTextHover(sourceViewer, contentType, ITextViewerExtension2.DEFAULT_HOVER_STATE_MASK); } /** @@ -586,43 +596,43 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @return the PHPDoc source code scanner */ protected RuleBasedScanner getPHPDocScanner() { - return fJavaDocScanner; //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, + 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.PHP_STRING_HEREDOC, IPHPPartitions.CSS, IPHPPartitions.CSS_MULTILINE_COMMENT, - IPHPPartitions.JAVASCRIPT, IPHPPartitions.JS_MULTILINE_COMMENT, IPHPPartitions.SMARTY, - IPHPPartitions.SMARTY_MULTILINE_COMMENT, + 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.PHP_STRING_HEREDOC, 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.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, + XMLPartitionScanner.DTD_INTERNAL, XMLPartitionScanner.DTD_INTERNAL_PI, XMLPartitionScanner.DTD_INTERNAL_COMMENT, + XMLPartitionScanner.DTD_INTERNAL_DECL, - PHPDocumentPartitioner.PHP_TEMPLATE_DATA, PHPDocumentPartitioner.PHP_SCRIPT_CODE }; + 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, + 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, }; + 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.PHP_STRING_HEREDOC, IPHPPartitions.CSS, IPHPPartitions.CSS_MULTILINE_COMMENT, IPHPPartitions.JAVASCRIPT, - IPHPPartitions.JS_MULTILINE_COMMENT, IPHPPartitions.SMARTY, IPHPPartitions.SMARTY_MULTILINE_COMMENT, }; + 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.PHP_STRING_HEREDOC, IPHPPartitions.CSS, IPHPPartitions.CSS_MULTILINE_COMMENT, IPHPPartitions.JAVASCRIPT, + IPHPPartitions.JS_MULTILINE_COMMENT, IPHPPartitions.SMARTY, IPHPPartitions.SMARTY_MULTILINE_COMMENT, }; } /* @@ -630,56 +640,56 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 3.0 */ public String getConfiguredDocumentPartitioning(ISourceViewer sourceViewer) { - if (fDocumentPartitioning != null) - return fDocumentPartitioning; - return super.getConfiguredDocumentPartitioning(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(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); - assistant.setContentAssistProcessor(processor, IPHPPartitions.JS_MULTILINE_COMMENT); - // 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]); - } - 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(processor, IPHPPartitions.PHP_STRING_HEREDOC); - - assistant.setContentAssistProcessor(new PHPDocCompletionProcessor(getEditor()), IPHPPartitions.PHP_PHPDOC_COMMENT); - // assistant.enableAutoActivation(true); - // assistant.setAutoActivationDelay(500); - // assistant.setProposalPopupOrientation(ContentAssistant.PROPOSAL_OVERLAY); - // ContentAssistPreference.configure(assistant, getPreferenceStore()); - // assistant.setContextInformationPopupOrientation( - // ContentAssistant.CONTEXT_INFO_ABOVE); - // assistant.setContextInformationPopupBackground( - // PHPEditorEnvironment.getPHPColorProvider().getColor( - // new RGB(150, 150, 0))); - ContentAssistPreference.configure(assistant, getPreferenceStore()); - assistant.setContextInformationPopupOrientation(ContentAssistant.CONTEXT_INFO_ABOVE); - assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer)); - return assistant; + ContentAssistant assistant = new ContentAssistant(); + 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); + assistant.setContentAssistProcessor(processor, IPHPPartitions.JS_MULTILINE_COMMENT); + // 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]); + } + 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(processor, IPHPPartitions.PHP_STRING_HEREDOC); + + assistant.setContentAssistProcessor(new PHPDocCompletionProcessor(getEditor()), IPHPPartitions.PHP_PHPDOC_COMMENT); + // assistant.enableAutoActivation(true); + // assistant.setAutoActivationDelay(500); + // assistant.setProposalPopupOrientation(ContentAssistant.PROPOSAL_OVERLAY); + // ContentAssistPreference.configure(assistant, getPreferenceStore()); + // assistant.setContextInformationPopupOrientation( + // ContentAssistant.CONTEXT_INFO_ABOVE); + // assistant.setContextInformationPopupBackground( + // PHPEditorEnvironment.getPHPColorProvider().getColor( + // new RGB(150, 150, 0))); + ContentAssistPreference.configure(assistant, getPreferenceStore()); + assistant.setContextInformationPopupOrientation(ContentAssistant.CONTEXT_INFO_ABOVE); + assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer)); + return assistant; } /* @@ -697,42 +707,42 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 2.0 */ public String[] getDefaultPrefixes(ISourceViewer sourceViewer, String contentType) { - return new String[] { "//", "" }; //$NON-NLS-1$ //$NON-NLS-2$ + return new String[] { "//", "" }; //$NON-NLS-1$ //$NON-NLS-2$ } /* * (non-Javadoc) Method declared on SourceViewerConfiguration */ public ITextDoubleClickStrategy getDoubleClickStrategy(ISourceViewer sourceViewer, String contentType) { - return new PHPDoubleClickSelector(); + return new PHPDoubleClickSelector(); } /* * @see SourceViewerConfiguration#getIndentPrefixes(ISourceViewer, String) */ public String[] getIndentPrefixes(ISourceViewer sourceViewer, String contentType) { - Vector vector = new Vector(); - // prefix[0] is either '\t' or ' ' x tabWidth, depending on useSpaces - final IPreferenceStore preferences = PHPeclipsePlugin.getDefault().getPreferenceStore(); - int tabWidth = preferences.getInt(JavaCore.FORMATTER_TAB_SIZE); - boolean useSpaces = getPreferenceStore().getBoolean(SPACES_FOR_TABS); - for (int i = 0; i <= tabWidth; i++) { - StringBuffer prefix = new StringBuffer(); - if (useSpaces) { - for (int j = 0; j + i < tabWidth; j++) - prefix.append(' '); - if (i != 0) - prefix.append('\t'); - } else { - for (int j = 0; j < i; j++) - prefix.append(' '); - if (i != tabWidth) - prefix.append('\t'); - } - vector.add(prefix.toString()); - } - vector.add(""); //$NON-NLS-1$ - return (String[]) vector.toArray(new String[vector.size()]); + Vector vector = new Vector(); + // prefix[0] is either '\t' or ' ' x tabWidth, depending on useSpaces + final IPreferenceStore preferences = PHPeclipsePlugin.getDefault().getPreferenceStore(); + int tabWidth = preferences.getInt(JavaCore.FORMATTER_TAB_SIZE); + boolean useSpaces = getPreferenceStore().getBoolean(SPACES_FOR_TABS); + for (int i = 0; i <= tabWidth; i++) { + StringBuffer prefix = new StringBuffer(); + if (useSpaces) { + for (int j = 0; j + i < tabWidth; j++) + prefix.append(' '); + if (i != 0) + prefix.append('\t'); + } else { + for (int j = 0; j < i; j++) + prefix.append(' '); + if (i != tabWidth) + prefix.append('\t'); + } + vector.add(prefix.toString()); + } + vector.add(""); //$NON-NLS-1$ + return (String[]) vector.toArray(new String[vector.size()]); } /** @@ -764,116 +774,116 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * (non-Javadoc) Method declared on SourceViewerConfiguration */ public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) { - // PHPColorProvider provider = - // PHPEditorEnvironment.getPHPColorProvider(); - // JavaColorManager provider = - // PHPEditorEnvironment.getPHPColorProvider(); - 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); - - 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); - - phpDR = new DefaultDamagerRepairer(getPHPDocScanner()); - phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_PHPDOC_COMMENT); - phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_PHPDOC_COMMENT); - - phpDR = new DefaultDamagerRepairer(getStringDQScanner()); - phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_DQ); - phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_DQ); - phpDR = new DefaultDamagerRepairer(getStringSQScanner()); - phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_SQ); - phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_SQ); - phpDR = new DefaultDamagerRepairer(getStringDQScanner()); - phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_HEREDOC); - phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_HEREDOC); - phpDR = new DefaultDamagerRepairer(getSinglelineCommentScanner()); - phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_SINGLELINE_COMMENT); - phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_SINGLELINE_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)); - // + // PHPColorProvider provider = + // PHPEditorEnvironment.getPHPColorProvider(); + // JavaColorManager provider = + // PHPEditorEnvironment.getPHPColorProvider(); + 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); + + 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); + + phpDR = new DefaultDamagerRepairer(getPHPDocScanner()); + phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_PHPDOC_COMMENT); + phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_PHPDOC_COMMENT); + + phpDR = new DefaultDamagerRepairer(getStringDQScanner()); + phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_DQ); + phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_DQ); + phpDR = new DefaultDamagerRepairer(getStringSQScanner()); + phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_SQ); + phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_SQ); + phpDR = new DefaultDamagerRepairer(getStringDQScanner()); + phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_STRING_HEREDOC); + phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_STRING_HEREDOC); + phpDR = new DefaultDamagerRepairer(getSinglelineCommentScanner()); + phpReconciler.setDamager(phpDR, IPHPPartitions.PHP_SINGLELINE_COMMENT); + phpReconciler.setRepairer(phpDR, IPHPPartitions.PHP_SINGLELINE_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(getPHPDocScanner());//jspTextTools.getJSPTextScanner()); - reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE); - reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); + 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); + // 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); + // xml partitions + configureEmbeddedPresentationReconciler(reconciler, xmlConfiguration.getPresentationReconciler(sourceViewer), xmlConfiguration + .getConfiguredContentTypes(sourceViewer), PHPDocumentPartitioner.PHP_TEMPLATE_DATA); - // java partitions - configureEmbeddedPresentationReconciler(reconciler, phpReconciler, getConfiguredPHPContentTypes(), - PHPDocumentPartitioner.PHP_SCRIPT_CODE); + // java partitions + configureEmbeddedPresentationReconciler(reconciler, phpReconciler, getConfiguredPHPContentTypes(), + PHPDocumentPartitioner.PHP_SCRIPT_CODE); - return reconciler; + 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]; + 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); + IPresentationDamager damager = embedded.getDamager(type); + IPresentationRepairer repairer = embedded.getRepairer(type); - if (type == IDocument.DEFAULT_CONTENT_TYPE) { - type = defaultType; - } + if (type == IDocument.DEFAULT_CONTENT_TYPE) { + type = defaultType; + } - reconciler.setDamager(damager, type); - reconciler.setRepairer(repairer, type); - } + reconciler.setDamager(damager, type); + reconciler.setRepairer(repairer, type); + } } /* * (non-Javadoc) Method declared on SourceViewerConfiguration */ public int getTabWidth(ISourceViewer sourceViewer) { - return getPreferenceStore().getInt(PREFERENCE_TAB_WIDTH); + return getPreferenceStore().getInt(PREFERENCE_TAB_WIDTH); } /* @@ -900,12 +910,12 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 2.0 */ public IInformationControlCreator getInformationControlCreator(ISourceViewer sourceViewer) { - return new IInformationControlCreator() { - public IInformationControl createInformationControl(Shell parent) { - return new DefaultInformationControl(parent, SWT.NONE, new HTMLTextPresenter(true)); - // return new HoverBrowserControl(parent); - } - }; + return new IInformationControlCreator() { + public IInformationControl createInformationControl(Shell parent) { + return new DefaultInformationControl(parent, SWT.NONE, new HTMLTextPresenter(true)); + // return new HoverBrowserControl(parent); + } + }; } /* @@ -913,14 +923,14 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @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; + 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; } /* @@ -948,14 +958,14 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 2.1 */ private IInformationControlCreator getInformationPresenterControlCreator(ISourceViewer sourceViewer) { - return new IInformationControlCreator() { - public IInformationControl createInformationControl(Shell parent) { - int shellStyle = SWT.RESIZE; - int style = SWT.V_SCROLL | SWT.H_SCROLL; - return new DefaultInformationControl(parent, shellStyle, style, new HTMLTextPresenter(false)); - // return new HoverBrowserControl(parent); - } - }; + return new IInformationControlCreator() { + public IInformationControl createInformationControl(Shell parent) { + int shellStyle = SWT.RESIZE; + int style = SWT.V_SCROLL | SWT.H_SCROLL; + return new DefaultInformationControl(parent, shellStyle, style, new HTMLTextPresenter(false)); + // return new HoverBrowserControl(parent); + } + }; } /** @@ -968,13 +978,13 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 2.1 */ private IInformationControlCreator getOutlinePresenterControlCreator(ISourceViewer sourceViewer) { - return new IInformationControlCreator() { - public IInformationControl createInformationControl(Shell parent) { - int shellStyle = SWT.RESIZE; - int treeStyle = SWT.V_SCROLL | SWT.H_SCROLL; - return new JavaOutlineInformationControl(parent, shellStyle, treeStyle); - } - }; + return new IInformationControlCreator() { + public IInformationControl createInformationControl(Shell parent) { + int shellStyle = SWT.RESIZE; + int treeStyle = SWT.V_SCROLL | SWT.H_SCROLL; + return new JavaOutlineInformationControl(parent, shellStyle, treeStyle); + } + }; } /** @@ -988,17 +998,17 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { * @since 2.1 */ public IInformationPresenter getOutlinePresenter(ISourceViewer sourceViewer, boolean doCodeResolve) { - InformationPresenter presenter = new InformationPresenter(getOutlinePresenterControlCreator(sourceViewer)); - presenter.setAnchor(InformationPresenter.ANCHOR_GLOBAL); - IInformationProvider provider = new JavaElementProvider(getEditor(), doCodeResolve); - presenter.setInformationProvider(provider, IDocument.DEFAULT_CONTENT_TYPE); - presenter.setInformationProvider(provider, PHPDocumentPartitioner.PHP_SCRIPT_CODE); - presenter.setInformationProvider(provider, IPHPPartitions.PHP_PARTITIONING); - presenter.setInformationProvider(provider, IPHPPartitions.PHP_PHPDOC_COMMENT); - presenter.setInformationProvider(provider, IPHPPartitions.SMARTY_MULTILINE_COMMENT); - presenter.setInformationProvider(provider, IPHPPartitions.HTML); - presenter.setInformationProvider(provider, IPHPPartitions.HTML_MULTILINE_COMMENT); - presenter.setSizeConstraints(40, 20, true, false); - return presenter; + InformationPresenter presenter = new InformationPresenter(getOutlinePresenterControlCreator(sourceViewer)); + presenter.setAnchor(InformationPresenter.ANCHOR_GLOBAL); + IInformationProvider provider = new JavaElementProvider(getEditor(), doCodeResolve); + presenter.setInformationProvider(provider, IDocument.DEFAULT_CONTENT_TYPE); + presenter.setInformationProvider(provider, PHPDocumentPartitioner.PHP_SCRIPT_CODE); + presenter.setInformationProvider(provider, IPHPPartitions.PHP_PARTITIONING); + presenter.setInformationProvider(provider, IPHPPartitions.PHP_PHPDOC_COMMENT); + presenter.setInformationProvider(provider, IPHPPartitions.SMARTY_MULTILINE_COMMENT); + presenter.setInformationProvider(provider, IPHPPartitions.HTML); + presenter.setInformationProvider(provider, IPHPPartitions.HTML_MULTILINE_COMMENT); + presenter.setSizeConstraints(40, 20, true, false); + return presenter; } } \ No newline at end of file diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPAutoIndentStrategy.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPAutoIndentStrategy.java index 8096bb0..5647b5b 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPAutoIndentStrategy.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPAutoIndentStrategy.java @@ -12,29 +12,29 @@ Contributors: package net.sourceforge.phpeclipse.phpeditor.php; import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.DefaultIndentLineAutoEditStrategy; +import org.eclipse.jface.text.DefaultAutoIndentStrategy; import org.eclipse.jface.text.DocumentCommand; import org.eclipse.jface.text.IDocument; /** * Auto indent strategy sensitive to brackets. */ -public class PHPAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy { +public class PHPAutoIndentStrategy extends DefaultAutoIndentStrategy { public PHPAutoIndentStrategy() { } - + /* (non-Javadoc) * Method declared on IAutoIndentStrategy */ public void customizeDocumentCommand(IDocument d, DocumentCommand c) { if (c.length == 0 && c.text != null && endsWithDelimiter(d, c.text)) smartIndentAfterNewLine(d, c); - else if ("}".equals(c.text)) { + else if ("}".equals(c.text)) { smartInsertAfterBracket(d, c); } } - + /** * Returns whether or not the text ends with one of the given search strings. */ @@ -49,7 +49,7 @@ public class PHPAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy { return false; } - + /** * Returns the line number of the next bracket after end. * @returns the line number of the next matching bracket after end @@ -63,7 +63,7 @@ public class PHPAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy { int start= document.getLineOffset(line); int brackcount= getBracketCount(document, start, end, false) - closingBracketIncrease; - // sum up the brackets counts of each line (closing brackets count negative, + // sum up the brackets counts of each line (closing brackets count negative, // opening positive) until we find a line the brings the count to zero while (brackcount < 0) { line--; @@ -76,9 +76,9 @@ public class PHPAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy { } return line; } - + /** - * Returns the bracket value of a section of text. Closing brackets have a value of -1 and + * Returns the bracket value of a section of text. Closing brackets have a value of -1 and * open brackets have a value of 1. * @returns the line number of the next matching bracket after end * @param document - the document being parsed @@ -101,7 +101,7 @@ public class PHPAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy { // a comment starts, advance to the comment end begin= getCommentEnd(document, begin + 1, end); } else if (next == '/') { - // '//'-comment: nothing to do anymore on this line + // '//'-comment: nothing to do anymore on this line begin= end; } } @@ -134,7 +134,7 @@ public class PHPAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy { } return bracketcount; } - + /** * Returns the end position a comment starting at pos. * @returns the end position a comment starting at pos @@ -155,7 +155,7 @@ public class PHPAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy { } return end; } - + /** * Returns the String at line with the leading whitespace removed. * @returns the String at line with the leading whitespace removed. @@ -172,7 +172,7 @@ public class PHPAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy { return ""; //$NON-NLS-1$ } } - + /** * Returns the position of the character in the document after position. * @returns the next location of character. @@ -195,7 +195,7 @@ public class PHPAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy { } return end; } - + /** * Set the indent of a new line based on the command provided in the supplied document. * @param document - the document being parsed @@ -239,7 +239,7 @@ public class PHPAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy { System.out.println(PHPEditorMessages.getString("AutoIndent.error.bad_location_1")); //$NON-NLS-1$ } } - + /** * Set the indent of a bracket based on the command provided in the supplied document. * @param document - the document being parsed -- 1.7.1