X-Git-Url: http://git.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 index afec8f5..e83cc10 100644 --- 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 @@ -1,91 +1,60 @@ -/* - * (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; +import org.eclipse.jface.text.templates.TemplateContextType; +import org.eclipse.jface.text.templates.Template; +import org.eclipse.jface.text.templates.TemplateBuffer; +import org.eclipse.jface.text.templates.TemplateException; +import org.eclipse.jface.text.templates.TemplateTranslator; + +import net.sourceforge.phpdt.core.ICompilationUnit; /** - * A compilation unit context. + * A context for javadoc. */ -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; +public class HTMLUnitContext extends CompilationUnitContext { + // tags + // private static final char HTML_TAG_BEGIN= '<'; + // private static final char HTML_TAG_END= '>'; + // private static final char JAVADOC_TAG_BEGIN= '@'; /** - * 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). + * special characters '&' for the start of HTML entities ' <' for the start of HTML tags '#' for the start of colour attributes + * '{' for the start of smarty partitions inside HTML code */ - protected HTMLUnitContext(ContextType type, IDocument document, int completionPosition) - //,ICompilationUnit compilationUnit) - { - super(type, document, completionPosition, 0); - // fCompilationUnit= compilationUnit; - } - - /* - * @see TemplateContext#canEvaluate(Template templates) - */ - public boolean canEvaluate(Template template) { - // return fForceEvaluation || - return template.matches(getKey(), getContextType().getName()); - } + private static final String specialChars = "&<#{"; /** - * Returns true if template matches the prefix and context, - * false otherwise. + * Creates a javadoc template context. + * + * @param type + * the context type. + * @param document + * the document. + * @param completionOffset + * the completion offset within the document. + * @param completionLength + * the completion length within the document. + * @param compilationUnit + * the compilation unit (may be null). */ - public boolean canEvaluate(String identifier) { - String prefix = getKey(); - return - // fEnabled && - // fContextTypeName.equals(contextTypeName) && - (prefix.length() != 0) && identifier.toLowerCase().startsWith(prefix.toLowerCase()); + public HTMLUnitContext(TemplateContextType type, IDocument document, int completionOffset, int completionLength, + ICompilationUnit compilationUnit) { + super(type, document, completionOffset, completionLength, compilationUnit); } /* - * @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; + * @see TemplateContext#canEvaluate(Template templates) + */ + public boolean canEvaluate(Template template) { + String key = getKey(); - // ITemplateEditor formatter= new JavaFormatter(lineDelimiter); - // formatter.edit(buffer, this); + if (fForceEvaluation) + return true; - return buffer; + return template.matches(key, getContextType().getId()) && (key.length() != 0) + && template.getName().toLowerCase().startsWith(key.toLowerCase()); } /* @@ -135,44 +104,61 @@ public class HTMLUnitContext extends DocumentTemplateContext { } } - /** - * Returns the character before start position of completion. + /* + * @see net.sourceforge.phpdt.internal.corext.template.DocumentTemplateContext#getEnd() */ - public char getCharacterBeforeStart() { - int start = getStart(); + public int getEnd() { + + if (getCompletionLength() == 0) + return super.getEnd(); try { - return start == 0 ? ' ' : getDocument().getChar(start - 1); + IDocument document = getDocument(); + + int start = getCompletionOffset(); + int end = getCompletionOffset() + getCompletionLength(); + + while (start != end && Character.isWhitespace(document.getChar(end - 1))) + end--; + + return end; } catch (BadLocationException e) { - return ' '; + return super.getEnd(); } } - /** - * Returns the compilation unit if one is associated with this context, null otherwise. + + /* + * @see net.sourceforge.phpdt.internal.corext.template.DocumentTemplateContext#getKey() */ - // public final ICompilationUnit getCompilationUnit() { - // return fCompilationUnit; - // } + public String getKey() { - /** - * Returns the enclosing element of a particular element type, null - * if no enclosing element of that type exists. + if (getCompletionLength() == 0) + return super.getKey(); + + try { + IDocument document = getDocument(); + + int start = getStart(); + int end = getCompletionOffset(); + return start <= end ? document.get(start, end - start) : ""; //$NON-NLS-1$ + + } catch (BadLocationException e) { + return super.getKey(); + } + } + + /* + * @see TemplateContext#evaluate(Template) */ - // 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; - // } - // } + public TemplateBuffer evaluate(Template template) throws BadLocationException, TemplateException { + TemplateTranslator translator = new TemplateTranslator(); + TemplateBuffer buffer = translator.translate(template); + + getContextType().resolve(buffer, this); + + return buffer; + } } +