2014-12-08 2 views
1

나는 JFace를 사용하여 TreeViewer을 만들었지 만 노드에 마우스 오른쪽 버튼 수신기를 추가해야합니다. 오른쪽 클릭이 완료되면이 같은 메뉴를 보여주고 있습니다jface 트리 뷰어에 마우스 오른쪽 클릭 메뉴를 만드는 방법

  1. 뭔가
  2. 수행 아무것도
  3. 나는 다음과 같이이 작업을 수행하려고

삭제를 수행하지만 던지고 널 포인터 예외.

MenuManager menuMgr = new MenuManager(); 
     menuMgr.setRemoveAllWhenShown(true); 

     menuMgr.addMenuListener(new IMenuListener() { 
      @Override 
      public void menuAboutToShow(IMenuManager menuManager) { 

       IContributionManager menu = null; 
       MenuItem[] items = (MenuItem[]) menu.getItems(); 
       for (int i = 0; i < items.length; i++) 
        items[i].dispose(); 

       MenuItem itemCollectionFolder = new MenuItem((Menu) menu, SWT.NONE); 
       itemCollectionFolder.setText("Add Something"); 

       MenuItem itemNewTestCase = new MenuItem((Menu) menu, SWT.NONE); 
       itemNewTestCase.setText("Do Nothing"); 

      } 
     }); 

     Control tree = treeViewer.getControl(); 

     Menu menu = menuMgr.createContextMenu(tree); 

     tree.setMenu(menu); 

답변

3

이 시도, 전화하는 것을 잊지 마세요 : createContextMenu (뷰어); IWorkbenchActionConstants의 수입 패키지에 내가 org.eclipse.ui를 가져올 때

IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); 
selection.getFirstElement(); 
selection.toList(); // or if you handle multi selection 
+0

을하고 어떤 응용 프로그램 ID와 같은 오류가 발생합니다 코드를 실행 :

/** * Creates the context menu * * @param viewer */ protected void createContextMenu(Viewer viewer) { MenuManager contextMenu = new MenuManager("#ViewerMenu"); //$NON-NLS-1$ contextMenu.setRemoveAllWhenShown(true); contextMenu.addMenuListener(new IMenuListener() { @Override public void menuAboutToShow(IMenuManager mgr) { fillContextMenu(mgr); } }); Menu menu = contextMenu.createContextMenu(viewer.getControl()); viewer.getControl().setMenu(menu); } /** * Fill dynamic context menu * * @param contextMenu */ protected void fillContextMenu(IMenuManager contextMenu) { contextMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); contextMenu.add(new Action("Do Something") { @Override public void run() { // implement this } }); contextMenu.add(new Action("Do Nothing") { @Override public void run() { // don't do anything here } }); contextMenu.add(new Action("Delete") { @Override public void run() { // implement this } }); } 

이 treeviewer의 선택된 요소를 얻으려면 이렇게 그래서 내가 e4 응용 프로그램 @ flavio.donze를 사용하여 적합한 패키지입니다 그래서 –

+0

당신은 실제로이 라인을 삭제할 수 있습니다, 그것은 확장 포인트를 통해 작업/명령 메뉴를 확장하는 데 사용됩니다. 이 기능이 필요 없다고 생각합니다. –

+0

이 컨텍스트 메뉴에 대한 하위 컨텍스트 메뉴를 추가 할 수있는 방법과 그 하위 컨텍스트 메뉴에 사용자가 어떤 값을 입력 할 수있는 방법을 보여 주실 수 있습니까? 어떻게 할 수 있습니까? @ flavio.donze –