a little bug fixed in the switch labels
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / actions / PHPOpenDeclarationEditorActon.java
index babeffc..a84c8bf 100644 (file)
@@ -27,12 +27,16 @@ import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.ITextSelection;
 import org.eclipse.jface.text.TextSelection;
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.window.Window;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.ui.IEditorActionDelegate;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IFileEditorInput;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.actions.ActionDelegate;
+import org.eclipse.ui.dialogs.ListSelectionDialog;
+import org.eclipse.ui.internal.dialogs.ListContentProvider;
 
 public class PHPOpenDeclarationEditorActon extends ActionDelegate implements IEditorActionDelegate {
 
@@ -68,30 +72,58 @@ public class PHPOpenDeclarationEditorActon extends ActionDelegate implements IEd
       // determine the current Project from a (file-based) Editor
       IFile f = ((IFileEditorInput) fEditor.getEditorInput()).getFile();
       fProject = f.getProject();
-//      System.out.println(fProject.toString());
+      //      System.out.println(fProject.toString());
 
       ITextSelection selection = (ITextSelection) fEditor.getSelectionProvider().getSelection();
       IDocument doc = fEditor.getDocumentProvider().getDocument(fEditor.getEditorInput());
       int pos = selection.getOffset();
       String word = getPHPIdentifier(doc, pos);
       //      System.out.println(word);
-      if (word!=null && ! word.equals("")) {
-                               IdentifierIndexManager indexManager = PHPeclipsePlugin.getDefault().getIndexManager(fProject);
-                               List list = indexManager.getLocations(word);
-                               if (list!=null && list.size()>0) {
-                                       String workspaceLocation = PHPeclipsePlugin.getWorkspace().getRoot().getLocation().toString();
-                                       // TODO show all entries of the list in a dialog box
-                                       // at the moment allways the first entry will be opened
-                                       PHPIdentifierLocation location = (PHPIdentifierLocation)list.get(0);
-                                       String filename = workspaceLocation + location.getFilename();
-//                                     System.out.println(filename);
-                                       try {
-            PHPeclipsePlugin.getDefault().openFileInTextEditor(filename, 0, word);
-          } catch (CoreException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
+      if (word != null && !word.equals("")) {
+        IdentifierIndexManager indexManager = PHPeclipsePlugin.getDefault().getIndexManager(fProject);
+        List list = indexManager.getLocations(word);
+        if (list != null && list.size() > 0) {
+          String workspaceLocation = PHPeclipsePlugin.getWorkspace().getRoot().getLocation().toString();
+          // TODO show all entries of the list in a dialog box
+          // at the moment always the first entry will be opened
+          if (list.size() > 1) {
+            ListSelectionDialog listSelectionDialog =
+              new ListSelectionDialog(
+                PHPeclipsePlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell(),
+                list,
+                new ListContentProvider(),
+                new LabelProvider(),
+                "Select the resources to open.");
+                                               listSelectionDialog.setTitle("Multiple declarations found");
+            if (listSelectionDialog.open() == Window.OK) {
+              Object[] locations = listSelectionDialog.getResult();
+              if (locations != null) {
+                try {
+                  for (int i = 0; i < locations.length; i++) {
+                    PHPIdentifierLocation location = (PHPIdentifierLocation) locations[i];
+                    String filename = workspaceLocation + location.getFilename();
+                    //                                 System.out.println(filename);
+                    PHPeclipsePlugin.getDefault().openFileInTextEditor(filename, 0, word);
+                  }
+                } catch (CoreException e) {
+                  // TODO Auto-generated catch block
+                  e.printStackTrace();
+                }
+              }
+            }
+          } else {
+            try {
+              PHPIdentifierLocation location = (PHPIdentifierLocation) list.get(0);
+              String filename = workspaceLocation + location.getFilename();
+              //                                       System.out.println(filename);
+              PHPeclipsePlugin.getDefault().openFileInTextEditor(filename, 0, word);
+
+            } catch (CoreException e) {
+              // TODO Auto-generated catch block
+              e.printStackTrace();
+            }
           }
-                               }
+        }
       }
     }
   }