2017-01-12 19 views
8

Mevcut veya geçerli editör olabilir yeniden açın editör pencerede aç aynı editörü ancak aynı editör ismi gibi bazı sorun var (eşleşmeleri göstermek için Yeniden editörleri. ) editör penceresindeEclipse RCP: i başarılı bir şekilde açılması birden editörü oluşturmak duyuyorum</p> <p>Tutulma rcp3 kullanarak aynı editör penceresinde

i mevcut veya geçerli editör üzerinde SetFocus gibi got üzerinde görüntüleyebilir ve aynı editör adını editör penceresinde gösteremez.

paket adı: rcp_demo.Editor

sınıf adı: UserCommand.java, UserEditor.java ve UserEditorInput.java

sınıf adı: EmpCommand.java, EmployeeEditor.java ve EmployeeEditorInput. java

package rcp_demo.Editor; 

import org.eclipse.core.commands.AbstractHandler; 
import org.eclipse.core.commands.ExecutionEvent; 
import org.eclipse.core.commands.ExecutionException; 
import org.eclipse.ui.IWorkbenchPage; 
import org.eclipse.ui.IWorkbenchWindow; 
import org.eclipse.ui.PartInitException; 
import org.eclipse.ui.handlers.HandlerUtil; 

public class UserCommand extends AbstractHandler{ 

    public static final String ID = "rcp_demo.Editor.UserCommand"; 

    @Override 
    public Object execute(ExecutionEvent event) throws ExecutionException { 

     IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event); 
      IWorkbenchPage page = window.getActivePage(); 
      UserEditorInput input = new UserEditorInput(); 
      try { 
       if(page.getActivePart().getTitle().toString().equals("Student_Editor")) 
       { 
        page.findEditor(input); 
        System.out.println("Student Editor exist.........."); 
       } 
       else 
       { 
        page.openEditor(input, UserEditor.ID); 
        System.out.println("Student Editor open"); 
       } 
      } catch (PartInitException e) { 
       System.out.println("Error:" + this.getClass().getName() + ":" + e); 
       e.printStackTrace(); 
       throw new ExecutionException("Error open UserEditor"); 
      } 
     return null; 
    } 
} 

plugin.xml

Editör liste

<extension 
     point="org.eclipse.ui.editors"> 
     <editor 
      class="rcp_demo.Editor.UserEditor" 
      default="false" 
      id="rcp_demo.Editor.user" 
      name="Student_Editor"> 
     </editor> 
     <editor 
      class="rcp_demo.Editor.EmployeeEditor" 
      default="false" 
      id="rcp_demo.Editor.emp" 
      name="Employee_Editor"> 
     </editor> 
    </extension> 

Komut listesi

<extension 
     point="org.eclipse.ui.commands"> 
     <command 
      defaultHandler="rcp_demo.Editor.UserCommand" 
      id="rcp_demo.Editor.UserCommand" 
      name="Call UserEditor"> 
     </command> 
     <command 
      defaultHandler="rcp_demo.Editor.EmpCommand" 
      id="rcp_demo.Editor.EmpCommand" 
      name="call EmpEditor"> 
     </command> 
    </extension> 

önce çıkış

01 açık

Öğrenci Editör açık

Çalışan Editör açık

Öğrenci Editör açık

Çalışan Editör


(Sonra) My Gerekli çıkış


Öğrenci Editör açık

Öğrenci Editör mevcut açık Çalışan Editör ..........

Çalışan Editör var .........

Öğrenci Editör var ..........

Çalışan Editör var .........


tüm hazır açık editör olamaz ikinci kez açık ...

+0

Üzgünüm ama ne soran anlamıyorum. –

+0

tekrar teşekkürler ... Bu soru tam olarak anlatılır .. –

+0

Üzgünüm ama hala sorunun ne olduğunu tam olarak anlamadım. Başka bir editör açmak isterseniz neden bölüm başlığını kontrol ediyorsunuz? –

cevap

2

ben bu soruyu


paket adı çözmek vardır: rcp_demo.Editor

sınıf adı: EmpCommand.java, EmployeeEditor.ja va ve EmployeeEditorInput.java

package rcp_demo.Editor; 

import org.eclipse.core.commands.AbstractHandler; 
import org.eclipse.core.commands.ExecutionEvent; 
import org.eclipse.core.commands.ExecutionException; 
import org.eclipse.ui.IEditorReference; 
import org.eclipse.ui.IWorkbenchPage; 
import org.eclipse.ui.IWorkbenchWindow; 
import org.eclipse.ui.PartInitException; 
import org.eclipse.ui.handlers.HandlerUtil; 

public class EmpCommand extends AbstractHandler { 
    public static final String Id = "rcp_demo.Editor.EmpCommand"; 

    @Override 
    public Object execute(ExecutionEvent event) throws ExecutionException { 

     IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event); 
      IWorkbenchPage page = window.getActivePage(); 
      IEditorReference[] editors = page.getEditorReferences(); 
      EmployeeEditorInput input = new EmployeeEditorInput(); 

      //All Comments are easily understand 
      //public class EmployeeEditorInput implements IEditorInput{} 

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

      //List out all Exist editor 
      //compare with EmployeeEditor.Id="rcp_demo.Editor.emp"; 

       if (editors[i].getId().equals(EmployeeEditor.Id)) { 

       //public class EmployeeEditor extends EditorPart 
       //{ 
       // public static final String Id="rcp_demo.Editor.emp"; 
       //  public void createPartControl(Composite parent) {.....} 
       //} 

        page.activate(editors[i].getEditor(true)); 
        System.out.println("set focus an existing editor(Employee)"); 
        return null; 
       } 
      } 
      try { 

       //open new Editor like EmployeeEditor.Id="rcp_demo.Editor.emp"; 
       page.openEditor(input,EmployeeEditor.Id); 
       System.out.println("open Editor(Employee) "); 
      } catch (PartInitException e) { 
       e.printStackTrace(); 
      } 
     return null; 
    } 
} 
İlgili konular