+++ /dev/null
-package net.sourceforge.phpeclipse.phpeditor;
-
-/**********************************************************************
-Copyright (c) 2000, 2002 IBM Corp. and others.
-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 implementation
- Klaus Hartlage - www.eclipseproject.de
-**********************************************************************/
-
-import net.sourceforge.phpeclipse.phpeditor.php.IPHPPartitionScannerConstants;
-import net.sourceforge.phpeclipse.phpeditor.php.PHPPartitionScanner;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.DefaultLineTracker;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentPartitioner;
-import org.eclipse.jface.text.ILineTracker;
-import org.eclipse.jface.text.rules.DefaultPartitioner;
-import org.eclipse.ui.editors.text.FileDocumentProvider;
-import org.eclipse.ui.part.FileEditorInput;
-
-/**
- * The PHPDocumentProvider provides the IDocuments used by java editors.
- */
-
-public class PHPDocumentProvider extends FileDocumentProvider {
-
- // private final static String[] TYPES= new String[] { PHPPartitionScanner.PHP, PHPPartitionScanner.JAVA_DOC, PHPPartitionScanner.JAVA_MULTILINE_COMMENT };
- private final static String[] TYPES =
- new String[] {
- IPHPPartitionScannerConstants.PHP,
- IPHPPartitionScannerConstants.PHP_MULTILINE_COMMENT,
- IPHPPartitionScannerConstants.HTML,
- IPHPPartitionScannerConstants.HTML_MULTILINE_COMMENT,
- IPHPPartitionScannerConstants.JAVASCRIPT,
- IPHPPartitionScannerConstants.CSS };
-
- private static PHPPartitionScanner fgScanner = null;
-
- public PHPDocumentProvider() {
- super();
- }
-
- /* (non-Javadoc)
- * Method declared on AbstractDocumentProvider
- */
- protected IDocument createDocument(Object element) throws CoreException {
- IDocument document = super.createDocument(element);
- if (document != null) {
- // int fileType = 0; // PHP
- IDocumentPartitioner partitioner = null;
- if (element instanceof FileEditorInput) {
- IFile file = (IFile) ((FileEditorInput) element).getAdapter(IFile.class);
- String filename = file.getLocation().toString();
- String extension = filename.substring(filename.lastIndexOf("."), filename.length());
- // System.out.println(extension);
- if (extension.equalsIgnoreCase(".html") || extension.equalsIgnoreCase(".htm")) {
- // html
- partitioner = createHTMLPartitioner();
- } else if (extension.equalsIgnoreCase(".xml")) {
- // xml
- partitioner = createXMLPartitioner();
- } else if (extension.equalsIgnoreCase(".js")) {
- // javascript
- partitioner = createJavaScriptPartitioner();
- } else if (extension.equalsIgnoreCase(".css")) {
- // cascading style sheets
- partitioner = createCSSPartitioner();
- } else if (extension.equalsIgnoreCase(".tpl")) {
- // smarty ?
- partitioner = createSmartyPartitioner();
- } else if (extension.equalsIgnoreCase(".inc")) {
- // php include files ?
- partitioner = createIncludePartitioner();
- }
- }
-
- if (partitioner == null) {
- partitioner = createPHPPartitioner();
- }
- document.setDocumentPartitioner(partitioner);
- partitioner.connect(document);
- }
- return document;
- }
-
- /**
- * Return a partitioner for .php files.
- */
- private IDocumentPartitioner createPHPPartitioner() {
- return new DefaultPartitioner(getPHPPartitionScanner(), TYPES);
- }
-
- /**
- * Return a partitioner for .html files.
- */
- private IDocumentPartitioner createHTMLPartitioner() {
- return new DefaultPartitioner(getPHPPartitionScanner(), TYPES);
- }
-
- private IDocumentPartitioner createXMLPartitioner() {
- return new DefaultPartitioner(getPHPPartitionScanner(), TYPES);
- }
-
- private IDocumentPartitioner createJavaScriptPartitioner() {
- return new DefaultPartitioner(getPHPPartitionScanner(), TYPES);
- }
-
- private IDocumentPartitioner createCSSPartitioner() {
- return new DefaultPartitioner(getPHPPartitionScanner(), TYPES);
- }
-
- private IDocumentPartitioner createSmartyPartitioner() {
- return new DefaultPartitioner(getPHPPartitionScanner(), TYPES);
- }
-
- private IDocumentPartitioner createIncludePartitioner() {
- return new DefaultPartitioner(getPHPPartitionScanner(), TYPES);
- }
- /**
- * Return a scanner for creating php partitions.
- */
- private PHPPartitionScanner getPHPPartitionScanner() {
- if (fgScanner == null)
- fgScanner = new PHPPartitionScanner();
- return fgScanner;
- }
-
- /**
- * Creates a line tracker working with the same line delimiters as the document
- * of the given element. Assumes the element to be managed by this document provider.
- *
- * @param element the element serving as blue print
- * @return a line tracker based on the same line delimiters as the element's document
- */
- public ILineTracker createLineTracker(Object element) {
- return new DefaultLineTracker();
- }
-}