X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/template/php/HTMLUnitContext.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/template/php/HTMLUnitContext.java new file mode 100644 index 0000000..e459ce2 --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/template/php/HTMLUnitContext.java @@ -0,0 +1,155 @@ +/* + * (c) Copyright IBM Corp. 2000, 2001. + * All Rights Reserved. + */ +package net.sourceforge.phpdt.internal.corext.template.php; + +import net.sourceforge.phpdt.internal.corext.template.ContextType; +import net.sourceforge.phpdt.internal.corext.template.DocumentTemplateContext; +import net.sourceforge.phpdt.internal.corext.template.Template; +import net.sourceforge.phpdt.internal.corext.template.TemplateBuffer; +import net.sourceforge.phpdt.internal.corext.template.TemplateTranslator; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; + +/** + * A compilation unit context. + */ +public class HTMLUnitContext extends DocumentTemplateContext { + + /** The platform default line delimiter. */ + private static final String PLATFORM_LINE_DELIMITER = System.getProperty("line.separator"); //$NON-NLS-1$ + + private static final String specialChars = "$&<"; + /** The compilation unit, may be null. */ + // private final ICompilationUnit fCompilationUnit; + + /** + * Creates a compilation unit context. + * + * @param type the context type. + * @param document the document. + * @param completionPosition the completion position within the document. + * @param compilationUnit the compilation unit (may be null). + */ + protected HTMLUnitContext(ContextType type, IDocument document, int completionPosition) + //,ICompilationUnit compilationUnit) + { + super(type, document, completionPosition); + // fCompilationUnit= compilationUnit; + } + + /* + * @see TemplateContext#canEvaluate(Template templates) + */ + public boolean canEvaluate(Template template) { + // return fForceEvaluation || + return template.matches(getKey(), getContextType().getName()); + } + + /** + * Returns true if template matches the prefix and context, + * false otherwise. + */ + public boolean canEvaluate(String identifier) { + String prefix = getKey(); + return + // fEnabled && + // fContextTypeName.equals(contextTypeName) && + (prefix.length() != 0) && identifier.toLowerCase().startsWith(prefix.toLowerCase()); + } + + /* + * @see TemplateContext#evaluate(Template template) + */ + public TemplateBuffer evaluate(Template template) throws CoreException { + if (!canEvaluate(template)) + return null; + + TemplateTranslator translator = new TemplateTranslator(); + TemplateBuffer buffer = translator.translate(template.getPattern()); + + getContextType().edit(buffer, this); + + String lineDelimiter = null; + try { + lineDelimiter = getDocument().getLineDelimiter(0); + } catch (BadLocationException e) { + } + + if (lineDelimiter == null) + lineDelimiter = PLATFORM_LINE_DELIMITER; + + // ITemplateEditor formatter= new JavaFormatter(lineDelimiter); + // formatter.edit(buffer, this); + + return buffer; + } + + /* + * @see DocumentTemplateContext#getCompletionPosition(); + */ + public int getStart() { + IDocument document = getDocument(); + try { + int start = getCompletionPosition(); + + while (((start != 0) && Character.isUnicodeIdentifierPart(document.getChar(start - 1))) + || ((start != 0) && specialChars.indexOf(document.getChar(start - 1)) != (-1) )) { + start--; + } + + if (((start != 0) && Character.isUnicodeIdentifierStart(document.getChar(start - 1))) + || ((start != 0) && specialChars.indexOf(document.getChar(start - 1)) != (-1) )) { + start--; + } + + return start; + + } catch (BadLocationException e) { + return getCompletionPosition(); + } + } + + /** + * Returns the character before start position of completion. + */ + public char getCharacterBeforeStart() { + int start = getStart(); + + try { + return start == 0 ? ' ' : getDocument().getChar(start - 1); + + } catch (BadLocationException e) { + return ' '; + } + } + /** + * Returns the compilation unit if one is associated with this context, null otherwise. + */ + // public final ICompilationUnit getCompilationUnit() { + // return fCompilationUnit; + // } + + /** + * Returns the enclosing element of a particular element type, null + * if no enclosing element of that type exists. + */ + // public IJavaElement findEnclosingElement(int elementType) { + // if (fCompilationUnit == null) + // return null; + // + // try { + // IJavaElement element= fCompilationUnit.getElementAt(getStart()); + // while (element != null && element.getElementType() != elementType) + // element= element.getParent(); + // + // return element; + // + // } catch (JavaModelException e) { + // return null; + // } + // } + +}