**********************************************************************/
package net.sourceforge.phpeclipse.phpeditor;
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;
import net.sourceforge.phpdt.internal.ui.text.JavaAnnotationHover;
import net.sourceforge.phpdt.internal.ui.text.JavaElementProvider;
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.java.JavaFormattingStrategy;
import net.sourceforge.phpdt.internal.ui.text.java.JavaReconcilingStrategy;
+import net.sourceforge.phpdt.internal.ui.text.java.JavaStringAutoIndentStrategy;
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.phpdoc.PHPDocCompletionProcessor;
import net.sourceforge.phpdt.ui.PreferenceConstants;
+import net.sourceforge.phpdt.ui.text.IColorManager;
import net.sourceforge.phpdt.ui.text.JavaTextTools;
-import net.sourceforge.phpeclipse.PHPCore;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import net.sourceforge.phpeclipse.phpeditor.html.HTMLFormattingStrategy;
import net.sourceforge.phpeclipse.phpeditor.php.HTMLCompletionProcessor;
-import net.sourceforge.phpeclipse.phpeditor.php.IPHPPartitionScannerConstants;
import net.sourceforge.phpeclipse.phpeditor.php.PHPAutoIndentStrategy;
import net.sourceforge.phpeclipse.phpeditor.php.PHPCompletionProcessor;
import net.sourceforge.phpeclipse.phpeditor.php.PHPDoubleClickSelector;
import net.sourceforge.phpeclipse.phpeditor.util.PHPColorProvider;
-import org.eclipse.core.resources.IFile;
+
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.text.DefaultAutoIndentStrategy;
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.PropertyChangeEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.texteditor.ITextEditor;
/**
* Configuration for an <code>SourceViewer</code> which shows PHP code.
*/
// IPHPPartitionScannerConstants.HTML;
//IDocument.DEFAULT_CONTENT_TYPE;
private JavaTextTools fJavaTextTools;
- private PHPEditor fEditor;
+ private ITextEditor fTextEditor;
private ContentFormatter fFormatter;
private HTMLFormattingStrategy fFormattingStrategy;
/**
}
};
/**
+ * 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 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
+ * @since 3.0
+ */
+ private IPreferenceStore fPreferenceStore;
+ /**
+ * The color manager
+ * @since 3.0
+ */
+ private IColorManager fColorManager;
+
+ /**
+ * 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.
+ * <p>
+ * Creates a Java source viewer configuration in the new setup without text tools. Clients are
+ * allowed to call {@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 the preference store, can be read-only
+ * @param editor the editor in which the configured viewer(s) will reside
+ * @param partitioning the document partitioning for this configuration
+ * @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();
+// initializeScanners();
+ }
+
+ /**
* Default constructor.
*/
public PHPSourceViewerConfiguration(JavaTextTools textTools,
PHPEditor editor) {
fJavaTextTools = textTools;
- fEditor = editor;
+ fTextEditor = editor;
}
/*
* @see SourceViewerConfiguration#getContentFormatter(ISourceViewer)
// private String[] getPartitionManagingPositionCategories() {
// return new String[] { DefaultPartitioner.CONTENT_TYPES_CATEGORY };
// }
- public PHPEditor getEditor() {
- return fEditor;
+ public ITextEditor getEditor() {
+ return fTextEditor;
}
/**
* Returns the preference store used by this configuration to initialize
*/
public IAutoIndentStrategy getAutoIndentStrategy(
ISourceViewer sourceViewer, String contentType) {
- return (IPHPPartitionScannerConstants.PHP.equals(contentType)
+ if (IPHPPartitions.PHP_STRING_DQ.equals(contentType))
+ return new JavaStringAutoIndentStrategy(getConfiguredDocumentPartitioning(sourceViewer));
+
+ return (IPHPPartitions.PHP_PARTITIONING.equals(contentType)
? new PHPAutoIndentStrategy()
: new DefaultAutoIndentStrategy());
}
* (non-Javadoc) Method declared on SourceViewerConfiguration
*/
public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) {
- return new String[]{IPHPPartitionScannerConstants.HTML,
- IPHPPartitionScannerConstants.HTML_MULTILINE_COMMENT,
- IPHPPartitionScannerConstants.PHP,
- IPHPPartitionScannerConstants.PHP_MULTILINE_COMMENT,
- IPHPPartitionScannerConstants.CSS,
- IPHPPartitionScannerConstants.CSS_MULTILINE_COMMENT,
- IPHPPartitionScannerConstants.JAVASCRIPT,
- IPHPPartitionScannerConstants.JS_MULTILINE_COMMENT,
- IPHPPartitionScannerConstants.SMARTY,
- IPHPPartitionScannerConstants.SMARTY_MULTILINE_COMMENT,
+ return new String[]{IPHPPartitions.HTML,
+ IPHPPartitions.HTML_MULTILINE_COMMENT,
+ IPHPPartitions.PHP_PARTITIONING,
+ IPHPPartitions.PHP_PHPDOC_COMMENT,
+ IPHPPartitions.CSS,
+ IPHPPartitions.CSS_MULTILINE_COMMENT,
+ IPHPPartitions.JAVASCRIPT,
+ IPHPPartitions.JS_MULTILINE_COMMENT,
+ IPHPPartitions.SMARTY,
+ IPHPPartitions.SMARTY_MULTILINE_COMMENT,
IDocument.DEFAULT_CONTENT_TYPE};
}
/*
ContentAssistant assistant = new ContentAssistant();
IContentAssistProcessor processor = new HTMLCompletionProcessor();
assistant.setContentAssistProcessor(processor,
- IPHPPartitionScannerConstants.HTML);
+ IPHPPartitions.HTML);
assistant.setContentAssistProcessor(processor,
- IPHPPartitionScannerConstants.HTML_MULTILINE_COMMENT);
+ IPHPPartitions.HTML_MULTILINE_COMMENT);
assistant.setContentAssistProcessor(processor,
IDocument.DEFAULT_CONTENT_TYPE);
assistant.setContentAssistProcessor(processor,
- IPHPPartitionScannerConstants.CSS);
+ IPHPPartitions.CSS);
assistant.setContentAssistProcessor(processor,
- IPHPPartitionScannerConstants.CSS_MULTILINE_COMMENT);
+ IPHPPartitions.CSS_MULTILINE_COMMENT);
assistant.setContentAssistProcessor(processor,
- IPHPPartitionScannerConstants.JAVASCRIPT);
+ IPHPPartitions.JAVASCRIPT);
assistant.setContentAssistProcessor(processor,
- IPHPPartitionScannerConstants.JS_MULTILINE_COMMENT);
+ IPHPPartitions.JS_MULTILINE_COMMENT);
// TODO define special smarty partition content assist
assistant.setContentAssistProcessor(processor,
- IPHPPartitionScannerConstants.SMARTY);
+ IPHPPartitions.SMARTY);
assistant.setContentAssistProcessor(processor,
- IPHPPartitionScannerConstants.SMARTY_MULTILINE_COMMENT);
+ IPHPPartitions.SMARTY_MULTILINE_COMMENT);
assistant.setContentAssistProcessor(new PHPCompletionProcessor(),
- IPHPPartitionScannerConstants.PHP);
+ IPHPPartitions.PHP_PARTITIONING);
assistant.setContentAssistProcessor(new PHPDocCompletionProcessor(),
- IPHPPartitionScannerConstants.PHP_MULTILINE_COMMENT);
+ IPHPPartitions.PHP_PHPDOC_COMMENT);
// assistant.enableAutoActivation(true);
// assistant.setAutoActivationDelay(500);
// assistant.setProposalPopupOrientation(ContentAssistant.PROPOSAL_OVERLAY);
// prefix[0] is either '\t' or ' ' x tabWidth, depending on useSpaces
final IPreferenceStore preferences = PHPeclipsePlugin.getDefault()
.getPreferenceStore();
- int tabWidth = preferences.getInt(PHPCore.FORMATTER_TAB_SIZE);
+ 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();
// PHPEditorEnvironment.getPHPColorProvider();
// JavaColorManager provider =
// PHPEditorEnvironment.getPHPColorProvider();
- PresentationReconciler reconciler = new PresentationReconciler();
+ PresentationReconciler reconciler= new JavaPresentationReconciler();
+ reconciler.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, IPHPPartitionScannerConstants.HTML);
- reconciler.setRepairer(dr, IPHPPartitionScannerConstants.HTML);
+ reconciler.setDamager(dr, IPHPPartitions.HTML);
+ reconciler.setRepairer(dr, IPHPPartitions.HTML);
dr = new DefaultDamagerRepairer(getHTMLScanner());
- reconciler.setDamager(dr, IPHPPartitionScannerConstants.CSS);
- reconciler.setRepairer(dr, IPHPPartitionScannerConstants.CSS);
+ reconciler.setDamager(dr, IPHPPartitions.CSS);
+ reconciler.setRepairer(dr, IPHPPartitions.CSS);
dr = new DefaultDamagerRepairer(getHTMLScanner());
reconciler.setDamager(dr,
- IPHPPartitionScannerConstants.CSS_MULTILINE_COMMENT);
+ IPHPPartitions.CSS_MULTILINE_COMMENT);
reconciler.setRepairer(dr,
- IPHPPartitionScannerConstants.CSS_MULTILINE_COMMENT);
+ IPHPPartitions.CSS_MULTILINE_COMMENT);
dr = new DefaultDamagerRepairer(getHTMLScanner());
- reconciler.setDamager(dr, IPHPPartitionScannerConstants.JAVASCRIPT);
- reconciler.setRepairer(dr, IPHPPartitionScannerConstants.JAVASCRIPT);
+ reconciler.setDamager(dr, IPHPPartitions.JAVASCRIPT);
+ reconciler.setRepairer(dr, IPHPPartitions.JAVASCRIPT);
dr = new DefaultDamagerRepairer(getHTMLScanner());
reconciler.setDamager(dr,
- IPHPPartitionScannerConstants.JS_MULTILINE_COMMENT);
+ IPHPPartitions.JS_MULTILINE_COMMENT);
reconciler.setRepairer(dr,
- IPHPPartitionScannerConstants.JS_MULTILINE_COMMENT);
+ IPHPPartitions.JS_MULTILINE_COMMENT);
dr = new DefaultDamagerRepairer(getSmartyScanner());
- reconciler.setDamager(dr, IPHPPartitionScannerConstants.SMARTY);
- reconciler.setRepairer(dr, IPHPPartitionScannerConstants.SMARTY);
+ reconciler.setDamager(dr, IPHPPartitions.SMARTY);
+ reconciler.setRepairer(dr, IPHPPartitions.SMARTY);
dr = new DefaultDamagerRepairer(getSmartyDocScanner());
reconciler.setDamager(dr,
- IPHPPartitionScannerConstants.SMARTY_MULTILINE_COMMENT);
+ IPHPPartitions.SMARTY_MULTILINE_COMMENT);
reconciler.setRepairer(dr,
- IPHPPartitionScannerConstants.SMARTY_MULTILINE_COMMENT);
+ IPHPPartitions.SMARTY_MULTILINE_COMMENT);
dr = new DefaultDamagerRepairer(new SingleTokenScanner(
new TextAttribute(fJavaTextTools.getColorManager().getColor(
PHPColorProvider.MULTI_LINE_COMMENT))));
reconciler.setDamager(dr,
- IPHPPartitionScannerConstants.HTML_MULTILINE_COMMENT);
+ IPHPPartitions.HTML_MULTILINE_COMMENT);
reconciler.setRepairer(dr,
- IPHPPartitionScannerConstants.HTML_MULTILINE_COMMENT);
+ IPHPPartitions.HTML_MULTILINE_COMMENT);
dr = new DefaultDamagerRepairer(getCodeScanner());
- reconciler.setDamager(dr, IPHPPartitionScannerConstants.PHP);
- reconciler.setRepairer(dr, IPHPPartitionScannerConstants.PHP);
+ reconciler.setDamager(dr, IPHPPartitions.PHP_PARTITIONING);
+ reconciler.setRepairer(dr, IPHPPartitions.PHP_PARTITIONING);
dr = new DefaultDamagerRepairer(getPHPDocScanner());
reconciler.setDamager(dr,
- IPHPPartitionScannerConstants.PHP_MULTILINE_COMMENT);
+ IPHPPartitions.PHP_PHPDOC_COMMENT);
reconciler.setRepairer(dr,
- IPHPPartitionScannerConstants.PHP_MULTILINE_COMMENT);
+ IPHPPartitions.PHP_PHPDOC_COMMENT);
return reconciler;
}
/*
presenter.setInformationProvider(provider,
IDocument.DEFAULT_CONTENT_TYPE);
presenter.setInformationProvider(provider,
- IPHPPartitionScannerConstants.PHP);
+ IPHPPartitions.PHP_PARTITIONING);
presenter.setInformationProvider(provider,
- IPHPPartitionScannerConstants.PHP_MULTILINE_COMMENT);
+ IPHPPartitions.PHP_PHPDOC_COMMENT);
presenter.setInformationProvider(provider,
- IPHPPartitionScannerConstants.SMARTY_MULTILINE_COMMENT);
+ IPHPPartitions.SMARTY_MULTILINE_COMMENT);
presenter.setInformationProvider(provider,
- IPHPPartitionScannerConstants.HTML);
+ IPHPPartitions.HTML);
presenter.setInformationProvider(provider,
- IPHPPartitionScannerConstants.HTML_MULTILINE_COMMENT);
+ IPHPPartitions.HTML_MULTILINE_COMMENT);
presenter.setSizeConstraints(40, 20, true, false);
return presenter;
}