2012-09-19 44 views
0

我想在Eclipse中構建一個彈出菜單。其實這個插件有一個彈出的動作,當你右鍵點擊一個文件時會顯示一個新的選項。我需要知道文件名和右鍵單擊的項目名稱。有誰知道該怎麼做?如何在Eclipse中獲取文件名

謝謝。

回答

1
IStructuredSelection currentSelection = (IStructuredSelection)getContext().getSelection(); 

if(!currentSelection.isEmpty() && ResourceSelectionUtil.allResourcesAreOfType(currentSelection, IResource.PROJECT | IResource.FOLDER | IResource.FILE)){ 
    IResource resource = (IResource)currentSelection.getFirstElement(); 
} 
+0

我已經試過了代碼,但Eclipse的不承認「getContext()」行爲。我是否需要在Juno的經典版本4.2中安裝新軟件包。 – user1679709

+0

我認爲經典版本的Juno擁有RCP所需的所有插件。我相信它取決於你調用getContext()方法的地方。當我擴展Eclipse的Action Provider時,遇到了這個問題。你可以參考NewActionProvider.java的fillContextMenu() –

+0

如果你可以把你的代碼放在這裏,我可以查看它並幫助你。 –

0

首先,我們爲PackageExplorer View創建一個彈出式菜單。

<plugin> 
    <extension 
     point="org.eclipse.ui.commands"> 
     <command 
      categoryId="TestPopupMenu.commands.category" 
      id="TestPopupMenu.commands.sampleCommand" 
      name="Sample Command"> 
     </command> 
    </extension> 
    <extension 
     point="org.eclipse.ui.handlers"> 
     <handler 
      class="testpopupmenu.handlers.SampleHandler" 
      commandId="TestPopupMenu.commands.sampleCommand"> 
     </handler> 
    </extension> 

    <extension 
     point="org.eclipse.ui.menus"> 
     <menuContribution 
      locationURI="popup:org.eclipse.jdt.ui.PackageExplorer"> 
      <command 
        commandId="TestPopupMenu.commands.sampleCommand" 
        id="TestPopupMenu.menus.sampleCommand" 
        mnemonic="S"> 

        <visibleWhen> 
          <with variable="activeMenuSelection"> 
          <iterate 
           ifEmpty="false"> 
          <adapt type="org.eclipse.core.resources.IResource"> 
           <test property="org.eclipse.core.resources.name" value="*.*" /> 
          </adapt> 
          </iterate> 
          </with> 
        </visibleWhen> 
      </command> 
     </menuContribution> 
    </extension> 
</plugin> 

然後,將下面的代碼添加到您的處理程序​​方法,它將打印出赦免路徑控制檯:

IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event); 
//get selection service 
ISelectionService service = window.getSelectionService(); 
//get selection 
IStructuredSelection structured = (IStructuredSelection) service 
     .getSelection(); 
//get selected file 
IFile file = (IFile) structured.getFirstElement(); 
//get the path 
IPath path = file.getLocation(); 

System.out.println(path.toPortableString()); 
return null; 

參考:Create popup menu in Package Explorer view

相關問題