fix #774 infinite loop in net.sourceforge.phpeclipse.builder.IdentifierIndexManager...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / text / template / IdentifierProposal.java
index 92d05eb..fcf43cd 100644 (file)
@@ -1,8 +1,5 @@
-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
 package net.sourceforge.phpdt.internal.ui.text.template;
+
 import net.sourceforge.phpdt.internal.corext.template.TemplateMessages;
 import net.sourceforge.phpdt.internal.corext.template.php.JavaContext;
 import net.sourceforge.phpdt.internal.ui.text.link.LinkedPositionManager;
@@ -13,139 +10,84 @@ 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.contentassist.IContextInformation;
 import org.eclipse.jface.text.templates.TemplateContext;
 import org.eclipse.swt.graphics.Image;
-//import org.eclipse.jdt.internal.ui.text.link.LinkedPositionManager;
-//import org.eclipse.jdt.internal.ui.text.link.LinkedPositionUI;
-//import org.eclipse.jdt.internal.ui.util.ExceptionHandler;
+
 /**
  * A PHP identifier proposal.
  */
-public class IdentifierProposal extends AbstractProposal { //implements
-                                                           // IPHPCompletionProposal
-                                                           // {
-  private final TemplateContext fContext;
-  private final Image fImage_fun;
-  private final Image fImage_var;
-  //private TemplateBuffer fTemplateBuffer;
-  private String fOldText;
-  private final IRegion fRegion;
-  //  private IRegion fSelectedRegion; // initialized by apply()
-  private final String fTemplate;
-  //  private final ITextViewer fViewer;
-  /**
-   * Creates a template proposal with a template and its context.
-   * 
-   * @param template
-   *            the template
-   * @param context
-   *            the context in which the template was requested.
-   * @param image
-   *            the icon of the proposal.
-   */
-  public IdentifierProposal(String template, TemplateContext context,
-      IRegion region, ITextViewer viewer, Image image_fun, Image image_var) {
-    super(viewer);
-    fTemplate = template;
-    fContext = context;
-    //    fViewer = viewer;
-    fImage_fun = image_fun;
-    fImage_var = image_var;
-    fRegion = region;
-  }
-  /*
-   * @see ICompletionProposal#apply(IDocument)
-   */
-  public void apply(IDocument document) {
-    try {
-      //                   if (fTemplateBuffer == null)
-      //                               fTemplateBuffer= fContext.evaluate(fTemplate);
-      int start = fRegion.getOffset();
-      int end = fRegion.getOffset() + fRegion.getLength();
-      // insert template string
-      //  String templateString = fTemplate; // fTemplateBuffer.getString();
-      document.replace(start, end - start, fTemplate);
-      // translate positions
-      LinkedPositionManager manager = new LinkedPositionManager(document);
-      //                       TemplatePosition[] variables= fTemplateBuffer.getVariables();
-      //                       for (int i= 0; i != variables.length; i++) {
-      //                               TemplatePosition variable= variables[i];
-      //
-      //                               if (variable.isResolved())
-      //                                       continue;
-      //                               
-      //                               int[] offsets= variable.getOffsets();
-      //                               int length= variable.getLength();
-      //                               
-      //                               for (int j= 0; j != offsets.length; j++)
-      //                                       manager.addPosition(offsets[j] + start, length);
-      //                       }
-      LinkedPositionUI editor = new LinkedPositionUI(fViewer, manager);
-      editor.setFinalCaretOffset(fTemplate.length() + start);
-      //   editor.setFinalCaretOffset(getCaretOffset(fTemplateBuffer) + start);
-      editor.enter();
-      fSelectedRegion = editor.getSelectedRegion();
-    } catch (BadLocationException e) {
-      PHPeclipsePlugin.log(e);
-      openErrorDialog(e);
-    }
-    //      catch (CoreException e) {
-    //                 handleException(e);
-    //     }
-  }
-  /*
-   * @see ICompletionProposal#getAdditionalProposalInfo()
-   */
-  public String getAdditionalProposalInfo() {
-    //     try {
-    //                 if (fTemplateBuffer == null)
-    //                         fTemplateBuffer= fContext.evaluate(fTemplate);
-    return textToHTML(fTemplate); // fTemplateBuffer.getString());
-    //     } catch (CoreException e) {
-    //                 handleException(e);
-    //                 return null;
-    //     }
-  }
-  /*
-   * @see ICompletionProposal#getContextInformation()
-   */
-  public IContextInformation getContextInformation() {
-    return null;
-  }
-  /*
-   * @see ICompletionProposal#getDisplayString()
-   */
-  public String getDisplayString() {
-    return fTemplate + TemplateMessages.getString("TemplateProposal.delimiter") + fTemplate; // $NON-NLS-1$ 
-  }
-  /*
-   * @see ICompletionProposal#getImage()
-   */
-  public Image getImage() {
-    if (fTemplate.charAt(0) == '$') {
-      return fImage_var;
-    }
-    return fImage_fun;
-  }
-  /*
-   * @see IJavaCompletionProposal#getRelevance()
-   */
-  public int getRelevance() {
-    if (fContext instanceof JavaContext) {
-      JavaContext context = (JavaContext) fContext;
-      switch (context.getCharacterBeforeStart()) {
-        // high relevance after whitespace
-        case ' ' :
-        case '\r' :
-        case '\n' :
-        case '\t' :
-          return 50;
-        default :
-          return 0;
-      }
-    } else {
-      return 50;
-    }
-  }
+public class IdentifierProposal extends AbstractProposal {
+       private final TemplateContext fContext;
+
+       private final Image fImage_fun;
+
+       private final Image fImage_var;
+
+       private final IRegion fRegion;
+
+       private final String fTemplate;
+
+       public IdentifierProposal(String template, TemplateContext context,
+                       IRegion region, ITextViewer viewer, Image image_fun, Image image_var) {
+               super(viewer);
+               fTemplate = template;
+               fContext = context;
+
+               fImage_fun = image_fun;
+               fImage_var = image_var;
+               fRegion = region;
+       }
+
+       public void apply(IDocument document) {
+               try {
+                       int start = fRegion.getOffset();
+                       int end = fRegion.getOffset() + fRegion.getLength();
+                       document.replace(start, end - start, fTemplate);
+                       // translate positions
+                       LinkedPositionManager manager = new LinkedPositionManager(document);
+
+                       LinkedPositionUI editor = new LinkedPositionUI(fViewer, manager);
+                       editor.setFinalCaretOffset(fTemplate.length() + start);
+                       editor.enter();
+                       fSelectedRegion = editor.getSelectedRegion();
+               } catch (BadLocationException e) {
+                       PHPeclipsePlugin.log(e);
+                       openErrorDialog(e);
+               }
+       }
+
+       public String getAdditionalProposalInfo() {
+               return textToHTML(fTemplate); 
+       }
+
+       public String getDisplayString() {
+               return fTemplate
+                               + TemplateMessages.getString("TemplateProposal.delimiter")
+                               + fTemplate; // $NON-NLS-1$
+       }
+
+       public Image getImage() {
+               if (fTemplate.charAt(0) == '$') {
+                       return fImage_var;
+               }
+               return fImage_fun;
+       }
+
+       public int getRelevance() {
+               if (fContext instanceof JavaContext) {
+                       JavaContext context = (JavaContext) fContext;
+                       switch (context.getCharacterBeforeStart()) {
+                       // high relevance after whitespace
+                       case ' ':
+                       case '\r':
+                       case '\n':
+                       case '\t':
+                               return 50;
+                       default:
+                               return 0;
+                       }
+               } else {
+                       return 50;
+               }
+       }
 }
\ No newline at end of file