2011-08-13 74 views
1

收藏夹 我有一个用户界面,当我选择一个项目(在一棵树),然后按下按钮“添加”,我得到一个新的编辑器。每个项目我都可以得到一位编辑。 (但全部具有相同的ID) 我的目的是仅关闭item1的编辑器,例如,当我按“保存”时。我能够关闭所有编辑器:getSite()。getWorkbenchWindow()。getActivePage()。closeAllEditors(true); 但不仅仅是我需要关闭的那个。下面的解决方案帮助我:如果按下此编辑器中的按钮,关闭编辑器? (RCP eclipse)

// Creating and opening 
MyObject item1 = ... //create item1 
// open editor 
myInput = new MyEditorInput(item1) 
IDE.openEditor(workbenchPage, myInput, MY_EDITOR_ID); 

// Closing 
tmpInput = new MyEditorInput(item1) 
IEditorReference[] editorReferences = PlatformUI.getWorkbench() 
      .getActiveWorkbenchWindow().getActivePage() 
      .getEditorReferences(); 
    List<IEditorReference> relevantEditors = new ArrayList<IEditorReference>(); 
    for (IEditorReference iEditorReference : editorReferences) { 
     if (iEditorReference.getEditorInput().equals(tmpInput)) { 
      relevantEditors.add(iEditorReference); 
     } 
    } 
    PlatformUI 
      .getWorkbench() 
      .getActiveWorkbenchWindow() 
      .getActivePage() 
      .closeEditors(
        (IEditorReference[]) relevantEditors.toArray(new IEditorReference[relevantEditors 
          .size()]), true); 

......但我仍然有一些问题......至于我可以同时打开许多编辑,和他们都具有相同的按钮“保存”,它发生我在编辑器1中按“保存”,但关闭编辑器3 ...其实,我保存最后一个编辑器是开放的(感谢它的“项目”)...这是问题..所以我想知道是否有一种方法以确定按钮存在的编辑器,以便我将其关闭.. 非常感谢我的任何帮助或提示(对不起,如果我的问题看起来很简单,不值得被问及,但我仍然是初学者... )

+0

我希望我的回答是usefull..thanks兄弟... –

回答

3

如果Button在您的IEditorPart实现中呈现,您可以关闭编辑器直接在你的EditorPart中。

button.addListener(SWT.Selection, new Listener() { 

    @Override 
    public void handleEvent(Event event) { 

     PlatformUI.getWorkbench().getActiveWorkbenchWindow() 
       .getActivePage().closeEditor(this, true); 

    } 

}); 
+0

thaks,但“这”虽然按钮在实施的EditorPart呈现不被接受:( – jean24

+0

是的,复制粘贴错误。相反的“这个”,必须有你的editor-class的名称。这是实现IEdtitorPart的类,例如'MyEditorImpl.this' –

0

选择的编辑器中打开或其他编辑器可以使用RCP蚀接近。

在时间选择编辑器打开的多编辑器可以使用RCP eclipse打开或关闭。

IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event); 
    IWorkbenchPage page = window.getActivePage(); 
    EmployeeEditorInput input = new EmployeeEditorInput(); 

    //List out all the editors open 
    IEditorReference[] editors = page.getEditorReferences(); 

    for (int i=0; i<editors.length; i++) { 

     //class : EmployeeEditor 
     //public static final String Id="rcp_demo.Editor.emp"; 

      if (editors[i].getId().equals(EmployeeEditor.Id)) { 
      page.activate(editors[i].getEditor(true)); 

      //or 
      //page.closeEditor(page.getActiveEditor(),true); 
      System.out.println("Employee Editor Exist"); 
      return null; 
      } 
      else 
      { 
      page.closeEditor(page.getActiveEditor(), true); 
      System.out.println("Close other Editor"); 
      } 
    } 
相关问题