Changes:
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / text / template / DeclarationProposal.java
index 4d95555..238423d 100644 (file)
@@ -27,7 +27,7 @@ import org.eclipse.swt.graphics.Image;
 /**
  * A PHP identifier proposal.
  */
-public class DeclarationProposal extends AbstractProposal {//implements IPHPCompletionProposal {
+public class DeclarationProposal extends AbstractProposal { //implements IPHPCompletionProposal {
   private final TemplateContext fContext;
   private final PHPIdentifierLocation fLocation;
 
@@ -36,10 +36,10 @@ public class DeclarationProposal extends AbstractProposal {//implements IPHPComp
   //  private final Image fImage_fun;
   //  private final Image fImage_var;
   private final IRegion fRegion;
-//  private IRegion fSelectedRegion; // initialized by apply()
+  //  private IRegion fSelectedRegion; // initialized by apply()
 
-  private final String fTemplate;
-//  private final ITextViewer fViewer;
+  private final String fIdentifierName;
+  //  private final ITextViewer fViewer;
 
   /**
    * Creates a template proposal with a template and its context.
@@ -48,20 +48,17 @@ public class DeclarationProposal extends AbstractProposal {//implements IPHPComp
    * @param image     the icon of the proposal.
    */
   public DeclarationProposal(
-    String template,
+    String identifierName,
     PHPIdentifierLocation location,
     TemplateContext context,
     IRegion region,
     ITextViewer viewer) {
-       super(viewer);
+    super(viewer);
     //    Image image_fun,
     //    Image image_var) {
-    fTemplate = template;
+    fIdentifierName = identifierName;
     fLocation = location;
     fContext = context;
-//    fViewer = viewer;
-    //    fImage_fun = image_fun;
-    //    fImage_var = image_var;
     fRegion = region;
   }
 
@@ -76,9 +73,20 @@ public class DeclarationProposal extends AbstractProposal {//implements IPHPComp
       int start = fRegion.getOffset();
       int end = fRegion.getOffset() + fRegion.getLength();
 
-      // insert template string
-      //  String templateString = fTemplate; // fTemplateBuffer.getString();   
-      document.replace(start, end - start, fTemplate);
+      switch (fLocation.getType()) {
+        case PHPIdentifierLocation.FUNCTION :
+          document.replace(start, end - start, fIdentifierName + "()");
+          break;
+        case PHPIdentifierLocation.CONSTRUCTOR :
+          document.replace(start, end - start, fIdentifierName + "()");
+          break;
+        case PHPIdentifierLocation.METHOD :
+          document.replace(start, end - start, fIdentifierName + "()");
+          break;
+
+        default :
+          document.replace(start, end - start, fIdentifierName);
+      }
 
       // translate positions
       LinkedPositionManager manager = new LinkedPositionManager(document);
@@ -97,8 +105,20 @@ public class DeclarationProposal extends AbstractProposal {//implements IPHPComp
       //                       }
 
       LinkedPositionUI editor = new LinkedPositionUI(fViewer, manager);
-      editor.setFinalCaretOffset(fTemplate.length() + start);
-      //   editor.setFinalCaretOffset(getCaretOffset(fTemplateBuffer) + start);
+      switch (fLocation.getType()) {
+        case PHPIdentifierLocation.FUNCTION :
+          editor.setFinalCaretOffset(fIdentifierName.length() + start + 1);
+          break;
+        case PHPIdentifierLocation.CONSTRUCTOR :
+          editor.setFinalCaretOffset(fIdentifierName.length() + start + 1);
+          break;
+        case PHPIdentifierLocation.METHOD :
+          editor.setFinalCaretOffset(fIdentifierName.length() + start + 1);
+          break;
+
+        default :
+          editor.setFinalCaretOffset(fIdentifierName.length() + start);
+      }
       editor.enter();
 
       fSelectedRegion = editor.getSelectedRegion();
@@ -135,8 +155,9 @@ public class DeclarationProposal extends AbstractProposal {//implements IPHPComp
    * @see ICompletionProposal#getDisplayString()
    */
   public String getDisplayString() {
-    return fTemplate + TemplateMessages.getString("TemplateProposal.delimiter") + fTemplate; // $NON-NLS-1$ //$NON-NLS-1$
-    //         return fTemplate.getName() + ObfuscatorMessages.getString("TemplateProposal.delimiter") + fTemplate.getDescription(); // $NON-NLS-1$ //$NON-NLS-1$
+    String workspaceLocation = PHPeclipsePlugin.getWorkspace().getRoot().getLocation().toString();
+    String filename = workspaceLocation + fLocation.getFilename();
+    return fIdentifierName + TemplateMessages.getString("TemplateProposal.delimiter") + PHPDocUtil.getUsage(filename, fLocation) + TemplateMessages.getString("TemplateProposal.delimiter") + filename; // $NON-NLS-1$ //$NON-NLS-1$
   }
 
   /*
@@ -146,14 +167,16 @@ public class DeclarationProposal extends AbstractProposal {//implements IPHPComp
     switch (fLocation.getType()) {
       case PHPIdentifierLocation.FUNCTION :
         return PHPUiImages.get(PHPUiImages.IMG_FUN);
-                       case PHPIdentifierLocation.CLASS :
-                               return PHPUiImages.get(PHPUiImages.IMG_CLASS);
-                       case PHPIdentifierLocation.METHOD :
-                               return PHPUiImages.get(PHPUiImages.IMG_FUN);
-                       case PHPIdentifierLocation.DEFINE :
-                               return PHPUiImages.get(PHPUiImages.IMG_DEFINE);
-                       case PHPIdentifierLocation.VARIABLE :
-                               return PHPUiImages.get(PHPUiImages.IMG_VAR);
+      case PHPIdentifierLocation.CLASS :
+        return PHPUiImages.get(PHPUiImages.IMG_CLASS);
+      case PHPIdentifierLocation.CONSTRUCTOR :
+        return PHPUiImages.get(PHPUiImages.IMG_CLASS);
+      case PHPIdentifierLocation.METHOD :
+        return PHPUiImages.get(PHPUiImages.IMG_FUN);
+      case PHPIdentifierLocation.DEFINE :
+        return PHPUiImages.get(PHPUiImages.IMG_DEFINE);
+      case PHPIdentifierLocation.VARIABLE :
+        return PHPUiImages.get(PHPUiImages.IMG_VAR);
     }
     return PHPUiImages.get(PHPUiImages.IMG_FUN);
   }
@@ -172,7 +195,9 @@ public class DeclarationProposal extends AbstractProposal {//implements IPHPComp
         case '\n' :
         case '\t' :
           return 90;
-
+        case '>' : // ->
+        case ':' : // ::
+          return 95;
         default :
           return 0;
       }
@@ -181,5 +206,4 @@ public class DeclarationProposal extends AbstractProposal {//implements IPHPComp
     }
   }
 
-
 }
\ No newline at end of file