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;
+ // }
+ // }
+
+}