Improved "project.index" file for PHPdoc TextHover information
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / PHPeclipsePlugin.java
index ba2252a..70785ae 100644 (file)
@@ -466,19 +466,17 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
       fImageDescriptorRegistry = new ImageDescriptorRegistry();
     return fImageDescriptorRegistry;
   }
-
   /**
        * Open a file in the Workbench that may or may not exist in the workspace.
        * Must be run on the UI thread.
        * @param filename
-       * @param line
        * @throws CoreException
        */
-  public void openFileInTextEditor(String filename, int line, String findString) throws CoreException {
+  public ITextEditor openFileInTextEditor(String filename) throws CoreException {
 
-    // reject directories
+    // reject directories
     if (new File(filename).isDirectory())
-      return;
+      return null;
 
     IWorkbench workbench = PlatformUI.getWorkbench();
     IWorkbenchWindow window = workbench.getWorkbenchWindows()[0];
@@ -495,7 +493,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
     } else {
       // Otherwise open the stream directly
       if (page == null)
-        return;
+        return null;
       FileStorage storage = new FileStorage(path);
       IEditorRegistry registry = getWorkbench().getEditorRegistry();
       IEditorDescriptor desc = registry.getDefaultEditor(filename);
@@ -514,6 +512,18 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
         }
       }
     }
+    return textEditor;
+  }
+  /**
+       * Open a file in the Workbench that may or may not exist in the workspace.
+       * Must be run on the UI thread.
+       * @param filename
+       * @param line
+       * @throws CoreException
+       */
+  public void openFileAndGotoLine(String filename, int line) throws CoreException {
+
+    ITextEditor textEditor = openFileInTextEditor(filename);
     if (textEditor != null) {
       // If a line number was given, go to it
       if (line > 0) {
@@ -526,6 +536,32 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
           // invalid text position -> do nothing
         }
       }
+    }
+  }
+
+  /**
+       * Open a file in the Workbench that may or may not exist in the workspace.
+       * Must be run on the UI thread.
+       * @param filename
+       * @param offset
+       * @throws CoreException
+       */
+  public void openFileAndGotoOffset(String filename, int offset, int length) throws CoreException {
+
+    ITextEditor textEditor = openFileInTextEditor(filename);
+    if (textEditor != null) {
+      // If a line number was given, go to it
+      if (offset >= 0) {
+        IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
+        textEditor.selectAndReveal(offset, length);
+      }
+    }
+  }
+
+  public void openFileAndFindString(String filename, String findString) throws CoreException {
+
+    ITextEditor textEditor = openFileInTextEditor(filename);
+    if (textEditor != null) {
       //               If a string was given, go to it
       if (findString != null) {
         try {
@@ -540,7 +576,6 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
       }
     }
   }
-
   public void setLastEditorFile(IFile textEditor) {
     this.fLastEditorFile = textEditor;
   }
@@ -549,8 +584,8 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
    * @see org.eclipse.ui.plugin.AbstractUIPlugin#shutdown()
    */
   public void shutdown() throws CoreException {
-               super.shutdown();
-               
+    super.shutdown();
+
     //  externalTools.shutDown();
     ColorManager.getDefault().dispose();
 
@@ -562,7 +597,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
       indexManager = (IdentifierIndexManager) iterator.next();
       indexManager.writeFile();
     }
-    
+
   }
 
   public void startup() throws CoreException {