misc changes
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / php / PHPCompletionProcessor.java
index 7881cea..84bfadb 100644 (file)
@@ -10,6 +10,7 @@
  Klaus Hartlage - www.eclipseproject.de
  **********************************************************************/
 package net.sourceforge.phpeclipse.phpeditor.php;
+
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
@@ -18,6 +19,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.SortedMap;
+
 import net.sourceforge.phpdt.core.ToolFactory;
 import net.sourceforge.phpdt.core.compiler.ITerminalSymbols;
 import net.sourceforge.phpdt.core.compiler.InvalidInputException;
@@ -34,12 +36,14 @@ import net.sourceforge.phpdt.internal.ui.text.template.DeclarationEngine;
 import net.sourceforge.phpdt.internal.ui.text.template.IdentifierEngine;
 import net.sourceforge.phpdt.internal.ui.text.template.SQLProposal;
 import net.sourceforge.phpdt.internal.ui.text.template.TemplateEngine;
-import net.sourceforge.phpeclipse.IPreferenceConstants;
+import net.sourceforge.phpdt.ui.IWorkingCopyManager;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 import net.sourceforge.phpeclipse.builder.IdentifierIndexManager;
-import net.sourceforge.phpeclipse.overlaypages.Util;
 import net.sourceforge.phpeclipse.phpeditor.PHPEditor;
 import net.sourceforge.phpeclipse.phpeditor.PHPSyntaxRdr;
+import net.sourceforge.phpeclipse.ui.IPreferenceConstants;
+import net.sourceforge.phpeclipse.ui.overlaypages.Util;
+
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.jface.text.BadLocationException;
@@ -57,10 +61,12 @@ import org.eclipse.jface.text.contentassist.IContextInformationValidator;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IFileEditorInput;
+
 import com.quantum.model.Bookmark;
 import com.quantum.model.BookmarkCollection;
 import com.quantum.model.NotConnectedException;
 import com.quantum.util.connection.ConnectionUtil;
+
 /**
  * Example PHP completion processor.
  */
@@ -69,17 +75,17 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
    * Simple content assist tip closer. The tip is valid in a range of 5
    * characters around its popup location.
    */
-  protected static class Validator
-      implements
-        IContextInformationValidator,
-        IContextInformationPresenter {
+  protected static class Validator implements IContextInformationValidator,
+      IContextInformationPresenter {
     protected int fInstallOffset;
+
     /*
      * @see IContextInformationValidator#isContextInformationValid(int)
      */
     public boolean isContextInformationValid(int offset) {
       return Math.abs(fInstallOffset - offset) < 5;
     }
+
     /*
      * @see IContextInformationValidator#install(IContextInformation,
      *      ITextViewer, int)
@@ -87,6 +93,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     public void install(IContextInformation info, ITextViewer viewer, int offset) {
       fInstallOffset = offset;
     }
+
     /*
      * @see org.eclipse.jface.text.contentassist.IContextInformationPresenter#updatePresentation(int,
      *      TextPresentation)
@@ -96,95 +103,121 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
       return false;
     }
   };
-  private static class ContextInformationWrapper
-      implements
-        IContextInformation,
-        IContextInformationExtension {
+
+  private static class ContextInformationWrapper implements
+      IContextInformation, IContextInformationExtension {
     private final IContextInformation fContextInformation;
+
     private int fPosition;
+
     public ContextInformationWrapper(IContextInformation contextInformation) {
       fContextInformation = contextInformation;
     }
+
     /*
      * @see IContextInformation#getContextDisplayString()
      */
     public String getContextDisplayString() {
       return fContextInformation.getContextDisplayString();
     }
+
     /*
      * @see IContextInformation#getImage()
      */
     public Image getImage() {
       return fContextInformation.getImage();
     }
+
     /*
      * @see IContextInformation#getInformationDisplayString()
      */
     public String getInformationDisplayString() {
       return fContextInformation.getInformationDisplayString();
     }
+
     /*
      * @see IContextInformationExtension#getContextInformationPosition()
      */
     public int getContextInformationPosition() {
       return fPosition;
     }
+
     public void setContextInformationPosition(int position) {
       fPosition = position;
     }
   };
+
   private class TableName {
     String fTableName;
+
     TableName() {
       fTableName = null;
     }
+
     /**
      * @return Returns the tableName.
      */
     public String getTableName() {
-      if (fTableName==null) {
+      if (fTableName == null) {
         return "<!--no-table-->";
       }
       return fTableName;
     }
+
     /**
-     * @param tableName The tableName to set.
+     * @param tableName
+     *          The tableName to set.
      */
     public void setTableName(String tableName) {
       fTableName = tableName;
     }
   }
+
   private char[] fProposalAutoActivationSet;
+
   protected IContextInformationValidator fValidator = new Validator();
+
   private TemplateEngine fTemplateEngine;
+
   private PHPCompletionProposalComparator fComparator;
+
   private int fNumberOfComputedResults = 0;
-  public PHPCompletionProcessor() {
+
+  private IEditorPart fEditor;
+
+  protected IWorkingCopyManager fManager;
+
+  public PHPCompletionProcessor(IEditorPart editor) {
+    fEditor = editor;
+    fManager = PHPeclipsePlugin.getDefault().getWorkingCopyManager();
     ContextType contextType = ContextTypeRegistry.getInstance().getContextType(
         "php"); //$NON-NLS-1$
     if (contextType != null)
       fTemplateEngine = new TemplateEngine(contextType);
     fComparator = new PHPCompletionProposalComparator();
   }
+
   /**
    * Tells this processor to order the proposals alphabetically.
    * 
    * @param order
-   *            <code>true</code> if proposals should be ordered.
+   *          <code>true</code> if proposals should be ordered.
    */
   public void orderProposalsAlphabetically(boolean order) {
     fComparator.setOrderAlphabetically(order);
   }
+
   /**
    * Sets this processor's set of characters triggering the activation of the
    * completion proposal computation.
    * 
    * @param activationSet
-   *            the activation set
+   *          the activation set
    */
   public void setCompletionProposalAutoActivationCharacters(char[] activationSet) {
     fProposalAutoActivationSet = activationSet;
   }
+
   /*
    * (non-Javadoc) Method declared on IContentAssistProcessor
    */
@@ -195,6 +228,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     return internalComputeCompletionProposals(viewer, documentOffset,
         contextInformationPosition);
   }
+
   private int getLastToken(ITextViewer viewer, int completionPosition,
       PHPUnitContext context, TableName tableName) {
     IDocument document = viewer.getDocument();
@@ -227,19 +261,31 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
           System.out.println(startText);
         }
         int token = ITerminalSymbols.TokenNameEOF;
-//        token = getLastSQLToken(startText);
+        //        token = getLastSQLToken(startText);
         tableName.setTableName(getLastSQLTableName(startText));
         Scanner scanner = ToolFactory.createScanner(false, false, false);
         scanner.setSource(startText.toCharArray());
         scanner.setPHPMode(true);
         int beforeLastToken = ITerminalSymbols.TokenNameEOF;
         int lastToken = ITerminalSymbols.TokenNameEOF;
+        char[] ident;
         try {
           token = scanner.getNextToken();
           lastToken = token;
           while (token != ITerminalSymbols.TokenNameERROR
               && token != ITerminalSymbols.TokenNameEOF) {
             beforeLastToken = lastToken;
+            if (lastToken==ITerminalSymbols.TokenNameVariable) {
+              ident = scanner.getCurrentTokenSource();
+              if (ident.length==5 &&
+                  ident[0]=='$' &&
+                  ident[1]=='t' &&
+                  ident[2]=='h' &&
+                  ident[3]=='i' &&
+                  ident[4]=='s') {
+                beforeLastToken = ITerminalSymbols.TokenNamethis_PHP_COMPLETION;
+              }
+            }
             lastToken = token;
             //                                                         System.out.println(scanner.toStringAction(lastToken));
             token = scanner.getNextToken();
@@ -247,45 +293,47 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
         } catch (InvalidInputException e1) {
         }
         switch (lastToken) {
-          case ITerminalSymbols.TokenNameMINUS_GREATER :
-            // dereferencing operator '->' found
-            lastSignificantToken = ITerminalSymbols.TokenNameMINUS_GREATER;
-            if (beforeLastToken == ITerminalSymbols.TokenNameVariable) {
-              lastSignificantToken = ITerminalSymbols.TokenNameVariable;
-            }
-            break;
-          case ITerminalSymbols.TokenNamenew :
-            lastSignificantToken = ITerminalSymbols.TokenNamenew;
-            break;
+        case ITerminalSymbols.TokenNameMINUS_GREATER:
+          // dereferencing operator '->' found
+          lastSignificantToken = ITerminalSymbols.TokenNameMINUS_GREATER;
+          if (beforeLastToken == ITerminalSymbols.TokenNameVariable) {
+            lastSignificantToken = ITerminalSymbols.TokenNameVariable;
+          }
+          break;
+        case ITerminalSymbols.TokenNamenew:
+          lastSignificantToken = ITerminalSymbols.TokenNamenew;
+          break;
         }
       }
     } catch (BadLocationException e) {
     }
     return lastSignificantToken;
   }
-  
+
   String getSQLTableName(String sqlText, int start) {
     int tableNameStart = -1;
-    int currentCharacterPosition = start+1;
+    int currentCharacterPosition = start + 1;
     char ch;
     try {
-      while(true) {
-      ch = sqlText.charAt(currentCharacterPosition++);
-      if (tableNameStart==-1 && Character.isJavaIdentifierStart(ch)) {
-        tableNameStart = currentCharacterPosition-1;
-      } else {
-        if (!Character.isJavaIdentifierPart(ch)) {
-          return sqlText.substring(tableNameStart, currentCharacterPosition-1);
-        } 
-      }
+      while (true) {
+        ch = sqlText.charAt(currentCharacterPosition++);
+        if (tableNameStart == -1 && Character.isJavaIdentifierStart(ch)) {
+          tableNameStart = currentCharacterPosition - 1;
+        } else {
+          if (!Character.isJavaIdentifierPart(ch)) {
+            return sqlText.substring(tableNameStart,
+                currentCharacterPosition - 1);
+          }
+        }
       }
     } catch (IndexOutOfBoundsException e) {
-      if (tableNameStart>=0) {
-        return sqlText.substring(tableNameStart, currentCharacterPosition-1);
+      if (tableNameStart >= 0) {
+        return sqlText.substring(tableNameStart, currentCharacterPosition - 1);
       }
     }
     return "";
   }
+
   private String getLastSQLTableName(String startText) {
     int token;
     // scan for sql identifiers
@@ -313,52 +361,52 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
           if (ident.length() >= 4 && ident.length() <= 6) {
             ident = ident.toLowerCase();
             switch (ident.length()) {
-//              case 3 :
-//                if (ident.equals("set")) {
-//                  //                  System.out.println("set");
-//                  token = ITerminalSymbols.TokenNameSQLset;
-//                  return token;
-//                }
-//                break;
-              case 4 :
-                if (ident.equals("from")) {
-                  //                  System.out.println("from");
-                  token = ITerminalSymbols.TokenNameSQLfrom;
-                  return getSQLTableName(startText, identEnd);
-                } else if (ident.equals("into")) {
-                  //                System.out.println("into");
-                  token = ITerminalSymbols.TokenNameSQLinto;
-                  return getSQLTableName(startText, identEnd);
-                }
-                break;
-//              case 5 :
-//                if (ident.equals("where")) {
-//                  //                  System.out.println("where");
-//                  token = ITerminalSymbols.TokenNameSQLwhere;
-//                  return token;
-//                }
-//                break;
-              case 6 :
-//                if (ident.equals("select")) {
-//                  //                  System.out.println("select");
-//                  token = ITerminalSymbols.TokenNameSQLselect;
-//                  return token;
-//                } else if (ident.equals("insert")) {
-//                  //                  System.out.println("insert");
-//                  token = ITerminalSymbols.TokenNameSQLinsert;
-//                  return token;
-//                } else 
-                if (ident.equals("update")) {
-                  //                  System.out.println("update");
-                  token = ITerminalSymbols.TokenNameSQLupdate;
-                  return getSQLTableName(startText, identEnd);
-                } 
-//                else if (ident.equals("values")) {
-//                  //                System.out.println("values");
-//                  token = ITerminalSymbols.TokenNameSQLvalues;
-//                  return token;
-//                }
-                break;
+            //              case 3 :
+            //                if (ident.equals("set")) {
+            //                  // System.out.println("set");
+            //                  token = ITerminalSymbols.TokenNameSQLset;
+            //                  return token;
+            //                }
+            //                break;
+            case 4:
+              if (ident.equals("from")) {
+                //                  System.out.println("from");
+                token = ITerminalSymbols.TokenNameSQLfrom;
+                return getSQLTableName(startText, identEnd);
+              } else if (ident.equals("into")) {
+                //                System.out.println("into");
+                token = ITerminalSymbols.TokenNameSQLinto;
+                return getSQLTableName(startText, identEnd);
+              }
+              break;
+            //              case 5 :
+            //                if (ident.equals("where")) {
+            //                  // System.out.println("where");
+            //                  token = ITerminalSymbols.TokenNameSQLwhere;
+            //                  return token;
+            //                }
+            //                break;
+            case 6:
+              //                if (ident.equals("select")) {
+              //                  // System.out.println("select");
+              //                  token = ITerminalSymbols.TokenNameSQLselect;
+              //                  return token;
+              //                } else if (ident.equals("insert")) {
+              //                  // System.out.println("insert");
+              //                  token = ITerminalSymbols.TokenNameSQLinsert;
+              //                  return token;
+              //                } else
+              if (ident.equals("update")) {
+                //                  System.out.println("update");
+                token = ITerminalSymbols.TokenNameSQLupdate;
+                return getSQLTableName(startText, identEnd);
+              }
+              //                else if (ident.equals("values")) {
+              //                  // System.out.println("values");
+              //                  token = ITerminalSymbols.TokenNameSQLvalues;
+              //                  return token;
+              //                }
+              break;
             }
           }
           whiteSpace = false;
@@ -372,6 +420,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     }
     return "<!--no-table-->";
   }
+
   /**
    * Detect the last significant SQL token in the text before the completion
    * 
@@ -404,51 +453,51 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
           if (ident.length() >= 3 && ident.length() <= 6) {
             ident = ident.toLowerCase();
             switch (ident.length()) {
-              case 3 :
-                if (ident.equals("set")) {
-                  //                  System.out.println("set");
-                  token = ITerminalSymbols.TokenNameSQLset;
-                  return token;
-                }
-                break;
-              case 4 :
-                if (ident.equals("from")) {
-                  //                  System.out.println("from");
-                  token = ITerminalSymbols.TokenNameSQLfrom;
-                  //getSQLTableName();
-                  return token;
-                } else if (ident.equals("into")) {
-                  //                System.out.println("into");
-                  token = ITerminalSymbols.TokenNameSQLinto;
-                  return token;
-                }
-                break;
-              case 5 :
-                if (ident.equals("where")) {
-                  //                  System.out.println("where");
-                  token = ITerminalSymbols.TokenNameSQLwhere;
-                  return token;
-                }
-                break;
-              case 6 :
-                if (ident.equals("select")) {
-                  //                  System.out.println("select");
-                  token = ITerminalSymbols.TokenNameSQLselect;
-                  return token;
-                } else if (ident.equals("insert")) {
-                  //                  System.out.println("insert");
-                  token = ITerminalSymbols.TokenNameSQLinsert;
-                  return token;
-                } else if (ident.equals("update")) {
-                  //                  System.out.println("update");
-                  token = ITerminalSymbols.TokenNameSQLupdate;
-                  return token;
-                } else if (ident.equals("values")) {
-                  //                System.out.println("values");
-                  token = ITerminalSymbols.TokenNameSQLvalues;
-                  return token;
-                }
-                break;
+            case 3:
+              if (ident.equals("set")) {
+                //                  System.out.println("set");
+                token = ITerminalSymbols.TokenNameSQLset;
+                return token;
+              }
+              break;
+            case 4:
+              if (ident.equals("from")) {
+                //                  System.out.println("from");
+                token = ITerminalSymbols.TokenNameSQLfrom;
+                //getSQLTableName();
+                return token;
+              } else if (ident.equals("into")) {
+                //                System.out.println("into");
+                token = ITerminalSymbols.TokenNameSQLinto;
+                return token;
+              }
+              break;
+            case 5:
+              if (ident.equals("where")) {
+                //                  System.out.println("where");
+                token = ITerminalSymbols.TokenNameSQLwhere;
+                return token;
+              }
+              break;
+            case 6:
+              if (ident.equals("select")) {
+                //                  System.out.println("select");
+                token = ITerminalSymbols.TokenNameSQLselect;
+                return token;
+              } else if (ident.equals("insert")) {
+                //                  System.out.println("insert");
+                token = ITerminalSymbols.TokenNameSQLinsert;
+                return token;
+              } else if (ident.equals("update")) {
+                //                  System.out.println("update");
+                token = ITerminalSymbols.TokenNameSQLupdate;
+                return token;
+              } else if (ident.equals("values")) {
+                //                System.out.println("values");
+                token = ITerminalSymbols.TokenNameSQLvalues;
+                return token;
+              }
+              break;
             }
           }
           whiteSpace = false;
@@ -462,19 +511,18 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     }
     return ITerminalSymbols.TokenNameEOF;
   }
+
   private ICompletionProposal[] internalComputeCompletionProposals(
       ITextViewer viewer, int offset, int contextOffset) {
+
     IDocument document = viewer.getDocument();
     Object[] identifiers = null;
     IFile file = null;
     IProject project = null;
     if (offset > 0) {
       PHPEditor editor = null;
-      //      JavaOutlinePage outlinePage = null;
-      IEditorPart targetEditor = PHPeclipsePlugin.getActiveWorkbenchWindow()
-          .getActivePage().getActiveEditor();
-      if (targetEditor != null && (targetEditor instanceof PHPEditor)) {
-        editor = (PHPEditor) targetEditor;
+      if (fEditor != null && (fEditor instanceof PHPEditor)) {
+        editor = (PHPEditor) fEditor;
         file = ((IFileEditorInput) editor.getEditorInput()).getFile();
         project = file.getProject();
         //        outlinePage = editor.getfOutlinePage();
@@ -484,6 +532,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
         //        }
       }
     }
+    
     ContextType phpContextType = ContextTypeRegistry.getInstance()
         .getContextType("php"); //$NON-NLS-1$
     ((CompilationUnitContextType) phpContextType).setContextParameters(
@@ -494,7 +543,8 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     int lastSignificantToken = getLastToken(viewer, offset, context, sqlTable);
     boolean useClassMembers = (lastSignificantToken == ITerminalSymbols.TokenNameMINUS_GREATER)
         || (lastSignificantToken == ITerminalSymbols.TokenNameVariable)
-        || (lastSignificantToken == ITerminalSymbols.TokenNamenew);
+        || (lastSignificantToken == ITerminalSymbols.TokenNamenew)
+        || (lastSignificantToken == ITerminalSymbols.TokenNamethis_PHP_COMPLETION);
     boolean emptyPrefix = prefix == null || prefix.equals("");
     if (fTemplateEngine != null) {
       IPHPCompletionProposal[] templateResults = new IPHPCompletionProposal[0];
@@ -525,7 +575,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
           IdentifierIndexManager indexManager = PHPeclipsePlugin.getDefault()
               .getIndexManager(project);
           SortedMap sortedMap = indexManager.getIdentifierMap();
-          declarationEngine = new DeclarationEngine(contextType,
+          declarationEngine = new DeclarationEngine(project, contextType,
               lastSignificantToken, file);
           declarationEngine.complete(viewer, offset, sortedMap);
           declarationResults = declarationEngine.getResults();
@@ -562,7 +612,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
               try {
                 Connection connection = bookmark.getConnection();
                 DatabaseMetaData metaData = connection.getMetaData();
-                
+
                 if (metaData != null) {
                   int start = context.getStart();
                   int end = context.getEnd();
@@ -576,7 +626,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                     isDollarPrefix = true;
                   }
                   IRegion region = new Region(start, end - start);
-                  ResultSet set; 
+                  ResultSet set;
                   if (!isDollarPrefix) {
                     set = metaData.getTables(null, null, prefixWithoutDollar
                         + "%", null);
@@ -604,9 +654,9 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                     if (tableName != null && tableName.length() > 0
                         && columnName != null && columnName.length() > 0) {
                       if (isDollarPrefix) {
-                        sqlProposal = new SQLProposal(tableName,
-                            "$" + columnName, context, region, viewer,
-                            PHPUiImages.get(PHPUiImages.IMG_COLUMN));
+                        sqlProposal = new SQLProposal(tableName, "$"
+                            + columnName, context, region, viewer, PHPUiImages
+                            .get(PHPUiImages.IMG_COLUMN));
                       } else {
                         sqlProposal = new SQLProposal(tableName, columnName,
                             context, region, viewer, PHPUiImages
@@ -614,7 +664,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                       }
                       if (tableName.equals(foundSQLTableName)) {
                         sqlProposal.setRelevance(90);
-                      } else if (tableName.indexOf(foundSQLTableName)>=0) {
+                      } else if (tableName.indexOf(foundSQLTableName) >= 0) {
                         sqlProposal.setRelevance(75);
                       }
                       sqlList.add(sqlProposal);
@@ -661,6 +711,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     }
     return new IPHPCompletionProposal[0];
   }
+
   private int guessContextInformationPosition(ITextViewer viewer, int offset) {
     int contextPosition = offset;
     IDocument document = viewer.getDocument();
@@ -693,6 +744,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     //    }
     return contextPosition;
   }
+
   /*
    * (non-Javadoc) Method declared on IContentAssistProcessor
    */
@@ -720,6 +772,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     return (IContextInformation[]) result
         .toArray(new IContextInformation[result.size()]);
   }
+
   private List addContextInformations(ITextViewer viewer, int offset) {
     ICompletionProposal[] proposals = internalComputeCompletionProposals(
         viewer, offset, -1);
@@ -736,6 +789,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     }
     return result;
   }
+
   /**
    * Order the given proposals.
    */
@@ -743,6 +797,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     Arrays.sort(proposals, fComparator);
     return proposals;
   }
+
   /*
    * (non-Javadoc) Method declared on IContentAssistProcessor
    */
@@ -750,22 +805,25 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     return fProposalAutoActivationSet;
     //    return null; // new char[] { '$' };
   }
+
   /*
    * (non-Javadoc) Method declared on IContentAssistProcessor
    */
   public char[] getContextInformationAutoActivationCharacters() {
-    return new char[]{};
+    return new char[] {};
   }
+
   /*
    * (non-Javadoc) Method declared on IContentAssistProcessor
    */
   public IContextInformationValidator getContextInformationValidator() {
     return fValidator;
   }
+
   /*
    * (non-Javadoc) Method declared on IContentAssistProcessor
    */
   public String getErrorMessage() {
     return null;
   }
-}
+}
\ No newline at end of file