2013-06-19 5 views
1

Я пытаюсь написать плагин eclipse, где мне нужно найти путь текущего выбранного проекта
. Одним из важных моментов является то, что это проект C или C++, а не проект Java, который я должен выбрать. Я пробовал некоторые коды:Как найти путь к текущему выбранному проекту в плагине eclipse

 File currDir = new File("."); 
     String path = currDir.getAbsolutePath(); 
     path = path.substring(0, path.length()-1); 
     System.out.println(path); 

Но этот путь дает путь к каталогу плагина eclipse не текущего проекта.

 IWorkspace workspace = ResourcesPlugin.getWorkspace(); 
     IWorkspaceRoot root = workspace.getRoot(); 
     IProject[] projects = root.getProjects(); 
     for (IProject project : projects) { 
     try { 
      printProjectInfo(project);  
      } catch (CoreException e) { 
       e.printStackTrace(); 
      } 
     } 


     private void printPackageInfos(IJavaProject javaProject) 
     throws JavaModelException { 
      IPackageFragment[] packages = javaProject.getPackageFragments(); 
      for (IPackageFragment mypackage : packages) { 

       if (mypackage.getKind() == IPackageFragmentRoot.K_SOURCE) 
        {     
         printICompilationUnitInfo(mypackage); 
        } 
       } 
       } 

Но этот вариант выбирает только проект java.

Так есть ли способ сделать это .....

ответ

8
public static IProject getCurrentProject(){  
     ISelectionService selectionService =  
      Workbench.getInstance().getActiveWorkbenchWindow().getSelectionService();  

     ISelection selection = selectionService.getSelection();  

     IProject project = null;  
     if(selection instanceof IStructuredSelection) {  
      Object element = ((IStructuredSelection)selection).getFirstElement();  

      if (element instanceof IResource) {  
       project= ((IResource)element).getProject();  
      } else if (element instanceof PackageFragmentRootContainer) {  
       IJavaProject jProject =  
        ((PackageFragmentRootContainer)element).getJavaProject();  
       project = jProject.getProject();  
      } else if (element instanceof IJavaElement) {  
       IJavaProject jProject= ((IJavaElement)element).getJavaProject();  
       project = jProject.getProject();  
      }  
     }  
     return project;  
    } 

Надеется, что это работает :-)

+0

Спасибо г-н Сэм, для меня PackageFragmentRootContainer не работало, я использовал PackageFragmentRoot. Это дает мне название выбранного проекта, но я искал абсолютный путь этого проекта. Там в любом случае... – DEV

Смежные вопросы