import net.sourceforge.phpdt.internal.ui.text.JavaOutlineInformationControl;
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.JavaStringAutoIndentStrategyDQ;
import net.sourceforge.phpdt.internal.ui.text.java.JavaStringAutoIndentStrategySQ;
import net.sourceforge.phpdt.ui.PreferenceConstants;
import net.sourceforge.phpeclipse.IPreferenceConstants;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
-import net.sourceforge.phpeclipse.phpeditor.html.HTMLFormattingStrategy;
import net.sourceforge.phpeclipse.phpeditor.php.HTMLCompletionProcessor;
import net.sourceforge.phpeclipse.phpeditor.php.PHPAutoIndentStrategy;
import net.sourceforge.phpeclipse.phpeditor.php.PHPCodeScanner;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.text.DefaultAutoIndentStrategy;
+import org.eclipse.jface.text.DefaultIndentLineAutoEditStrategy;
import org.eclipse.jface.text.DefaultInformationControl;
-import org.eclipse.jface.text.IAutoIndentStrategy;
+import org.eclipse.jface.text.IAutoEditStrategy;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IInformationControl;
import org.eclipse.jface.text.IInformationControlCreator;
import org.eclipse.jface.text.source.IAnnotationHover;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
-import org.eclipse.jface.util.Assert;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.editors.text.EditorsUI;
-import org.eclipse.ui.texteditor.ChainedPreferenceStore;
import org.eclipse.ui.texteditor.ITextEditor;
/**
public class PHPSourceViewerConfiguration extends SourceViewerConfiguration {
/**
* Preference key used to look up display tab width.
- *
+ *
* @since 2.0
*/
public final static String PREFERENCE_TAB_WIDTH = PreferenceConstants.EDITOR_TAB_WIDTH;
/**
* Preference key for inserting spaces rather than tabs.
- *
+ *
* @since 2.0
*/
public final static String SPACES_FOR_TABS = PreferenceConstants.EDITOR_SPACES_FOR_TABS;
// public static final String HTML_DEFAULT =
// IPHPPartitionScannerConstants.HTML;
//IDocument.DEFAULT_CONTENT_TYPE;
- private JavaTextTools fJavaTextTools;
+// private JavaTextTools fJavaTextTools;
private ITextEditor fTextEditor;
/**
* The document partitioning.
- *
+ *
* @since 3.0
*/
private String fDocumentPartitioning;
private ContentFormatter fFormatter;
- private HTMLFormattingStrategy fFormattingStrategy;
-
/**
* Single token scanner.
*/
/**
* The document partitioning.
- *
+ *
* @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 PHP single quoted string scanner
*/
private AbstractJavaScanner fStringSQScanner;
-
+
/**
* The Javadoc scanner
- *
+ *
* @since 3.0
*/
private AbstractJavaScanner fJavaDocScanner;
/**
* The preference store, can be read-only
- *
+ *
* @since 3.0
*/
private IPreferenceStore fPreferenceStore;
/**
* The color manager
- *
+ *
* @since 3.0
*/
private IColorManager fColorManager;
* {@link JavaSourceViewerConfiguration#handlePropertyChangeEvent(PropertyChangeEvent)}and disallowed to call
* {@link JavaSourceViewerConfiguration#getPreferenceStore()}on the resulting Java source viewer configuration.
* </p>
- *
+ *
* @param colorManager
* the color manager
* @param preferenceStore
/**
* 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
// }
/**
* Returns the color manager for this configuration.
- *
+ *
* @return the color manager
*/
protected IColorManager getColorManager() {
/**
* Initializes the scanners.
- *
+ *
* @since 3.0
*/
private void initializeScanners() {
- Assert.isTrue(isNewSetup());
+// Assert.isTrue(isNewSetup());
fCodeScanner = new PHPCodeScanner(getColorManager(), fPreferenceStore);
fMultilineCommentScanner = new SingleTokenPHPScanner(getColorManager(), fPreferenceStore,
IPreferenceConstants.PHP_MULTILINE_COMMENT);
/**
* 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 <code>true</code> if event causes a behavioral change
* <p>
* Clients are not allowed to call this method if the old setup with text tools is in use.
* </p>
- *
+ *
* @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());
+// Assert.isTrue(isNewSetup());
if (fCodeScanner.affectsBehavior(event))
fCodeScanner.adaptToPreferenceChange(event);
if (fMultilineCommentScanner.affectsBehavior(event))
/**
* Returns the names of the document position categories used by the document partitioners created by this object to manage their
* partition information. If the partitioners don't use document position categories, the returned result is <code>null</code>.
- *
+ *
* @return the partition managing position categories or <code>null</code> if there is none
*/
public String[] getPartitionManagingPositionCategories() {
/**
* Returns the preference store used by this configuration to initialize the individual bits and pieces.
- *
+ *
* @return the preference store used to initialize this configuration
- *
+ *
* @since 2.0
*/
protected IPreferenceStore getPreferenceStore() {
/*
* (non-Javadoc) Method declared on SourceViewerConfiguration
*/
- public IAutoIndentStrategy getAutoIndentStrategy(ISourceViewer sourceViewer, String contentType) {
- if (IPHPPartitions.PHP_PHPDOC_COMMENT.equals(contentType)
+ 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 (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());
+ : new DefaultIndentLineAutoEditStrategy());
}
/**
* Returns the PHP source code scanner for this configuration.
- *
+ *
* @return the PHP source code scanner
*/
protected RuleBasedScanner getCodeScanner() {
/**
* Returns the Java multi-line comment scanner for this configuration.
- *
+ *
* @return the Java multi-line comment scanner
* @since 2.0
*/
/**
* Returns the Java single-line comment scanner for this configuration.
- *
+ *
* @return the Java single-line comment scanner
* @since 2.0
*/
/**
* Returns the PHP double quoted string scanner for this configuration.
- *
+ *
* @return the PHP double quoted string scanner
*/
protected RuleBasedScanner getStringDQScanner() {
/**
* Returns the PHP single quoted string scanner for this configuration.
- *
+ *
* @return the PHP single quoted string scanner
*/
protected RuleBasedScanner getStringSQScanner() {
}
/**
* Returns the HTML source code scanner for this configuration.
- *
+ *
* @return the HTML source code scanner
*/
// protected RuleBasedScanner getHTMLScanner() {
// }
/**
* Returns the Smarty source code scanner for this configuration.
- *
+ *
* @return the Smarty source code scanner
*/
// protected RuleBasedScanner getSmartyScanner() {
/**
* Returns the SmartyDoc source code scanner for this configuration.
- *
+ *
* @return the SmartyDoc source code scanner
*/
// protected RuleBasedScanner getSmartyDocScanner() {
// }
/**
* Returns the PHPDoc source code scanner for this configuration.
- *
+ *
* @return the PHPDoc source code scanner
*/
protected RuleBasedScanner getPHPDocScanner() {
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.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,
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.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, };
}
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);
/**
* @return <code>true</code> iff the new setup without text tools is in use.
- *
+ *
* @since 3.0
*/
- private boolean isNewSetup() {
- return fJavaTextTools == null;
- }
+// 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 });
- }
+// 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
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);
+ 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);
PresentationReconciler reconciler = new PresentationReconciler();
reconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
//
- JavaTextTools jspTextTools = PHPeclipsePlugin.getDefault().getJavaTextTools();
+// 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);
/**
* Returns the information presenter control creator. The creator is a factory creating the presenter controls for the given
* source viewer. This implementation always returns a creator for <code>DefaultInformationControl</code> instances.
- *
+ *
* @param sourceViewer
* the source viewer to be configured by this configuration
* @return an information control creator
/**
* Returns the outline presenter control creator. The creator is a factory creating outline presenter controls for the given
* source viewer. This implementation always returns a creator for <code>JavaOutlineInformationControl</code> instances.
- *
+ *
* @param sourceViewer
* the source viewer to be configured by this configuration
* @return an information control creator
/**
* Returns the outline presenter which will determine and shown information requested for the current cursor position.
- *
+ *
* @param sourceViewer
* the source viewer to be configured by this configuration
* @param doCodeResolve