1


現在選択されているプロジェクトのパスを見つける必要があるEclipseプラグインを作成しようとしています。重要なことの 1 つは、これが Java プロジェクトではなく、C または C++ プロジェクトであることです。私はいくつかのコードを試しました-

      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プロジェクトのみを選択しています。

では、何かいい方法はないでしょうか……。

4

1 に答える 1

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;    
    }

それがうまくいくことを願っています:-)

于 2013-06-19T12:13:58.887 に答える