X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/template/contentassist/TemplateEngine.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/template/contentassist/TemplateEngine.java deleted file mode 100644 index 64f1f12..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/template/contentassist/TemplateEngine.java +++ /dev/null @@ -1,168 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation 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 API and implementation - *******************************************************************************/ -package net.sourceforge.phpdt.internal.ui.text.template.contentassist; - -import java.util.ArrayList; - -import net.sourceforge.phpdt.core.ICompilationUnit; -import net.sourceforge.phpdt.internal.corext.Assert; -import net.sourceforge.phpdt.internal.corext.template.php.CompilationUnitContext; -import net.sourceforge.phpdt.internal.corext.template.php.CompilationUnitContextType; -import net.sourceforge.phpdt.internal.ui.PHPUiImages; -import net.sourceforge.phpeclipse.PHPeclipsePlugin; - -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.ITextViewer; -import org.eclipse.jface.text.Region; -import org.eclipse.jface.text.templates.GlobalTemplateVariables; -import org.eclipse.jface.text.templates.Template; -import org.eclipse.jface.text.templates.TemplateContextType; -import org.eclipse.swt.graphics.Point; - -public class TemplateEngine { - - private static final String $_LINE_SELECTION = "${" + GlobalTemplateVariables.LineSelection.NAME + "}"; //$NON-NLS-1$ //$NON-NLS-2$ - - private static final String $_WORD_SELECTION = "${" + GlobalTemplateVariables.WordSelection.NAME + "}"; //$NON-NLS-1$ //$NON-NLS-2$ - - /** The context type. */ - private TemplateContextType fContextType; - - /** The result proposals. */ - private ArrayList fProposals = new ArrayList(); - - /** - * Creates the template engine for a particular context type. See - * TemplateContext for supported context types. - */ - public TemplateEngine(TemplateContextType contextType) { - Assert.isNotNull(contextType); - fContextType = contextType; - } - - /** - * Empties the collector. - */ - public void reset() { - fProposals.clear(); - } - - /** - * Returns the array of matching templates. - */ - public TemplateProposal[] getResults() { - return (TemplateProposal[]) fProposals - .toArray(new TemplateProposal[fProposals.size()]); - } - - /** - * Inspects the context of the compilation unit around - * completionPosition and feeds the collector with proposals. - * - * @param viewer - * the text viewer - * @param completionPosition - * the context position in the document of the text viewer - * @param compilationUnit - * the compilation unit (may be null) - */ - public void complete(ITextViewer viewer, int completionPosition, - ICompilationUnit compilationUnit) { - IDocument document = viewer.getDocument(); - - if (!(fContextType instanceof CompilationUnitContextType)) - return; - - Point selection = viewer.getSelectedRange(); - - // remember selected text - String selectedText = null; - if (selection.y != 0) { - try { - selectedText = document.get(selection.x, selection.y); - } catch (BadLocationException e) { - } - } - - CompilationUnitContext context = ((CompilationUnitContextType) fContextType) - .createContext(document, completionPosition, selection.y, - compilationUnit); - context.setVariable("selection", selectedText); //$NON-NLS-1$ - int start = context.getStart(); - int end = context.getEnd(); - IRegion region = new Region(start, end - start); - - Template[] templates = PHPeclipsePlugin.getDefault().getTemplateStore() - .getTemplates(); - - if (selection.y == 0) { - for (int i = 0; i != templates.length; i++) - if (context.canEvaluate(templates[i])) - fProposals.add(new TemplateProposal(templates[i], context, - region, PHPUiImages - .get(PHPUiImages.IMG_OBJS_TEMPLATE))); - - } else { - - if (context.getKey().length() == 0) - context.setForceEvaluation(true); - - boolean multipleLinesSelected = areMultipleLinesSelected(viewer); - - for (int i = 0; i != templates.length; i++) { - Template template = templates[i]; - if (context.canEvaluate(template) - && template.getContextTypeId().equals( - context.getContextType().getId()) - && (!multipleLinesSelected - && template.getPattern().indexOf( - $_WORD_SELECTION) != -1 || (multipleLinesSelected && template - .getPattern().indexOf($_LINE_SELECTION) != -1))) { - fProposals.add(new TemplateProposal(templates[i], context, - region, PHPUiImages - .get(PHPUiImages.IMG_OBJS_TEMPLATE))); - } - } - } - } - - /** - * Returns true if one line is completely selected or if - * multiple lines are selected. Being completely selected means that all - * characters except the new line characters are selected. - * - * @return true if one or multiple lines are selected - * @since 2.1 - */ - private boolean areMultipleLinesSelected(ITextViewer viewer) { - if (viewer == null) - return false; - - Point s = viewer.getSelectedRange(); - if (s.y == 0) - return false; - - try { - - IDocument document = viewer.getDocument(); - int startLine = document.getLineOfOffset(s.x); - int endLine = document.getLineOfOffset(s.x + s.y); - IRegion line = document.getLineInformation(startLine); - return startLine != endLine - || (s.x == line.getOffset() && s.y == line.getLength()); - - } catch (BadLocationException x) { - return false; - } - } -}