2012-02-19 36 views
12

Trong plugin Eclipse của tôi, tôi cần biết khi nào trình chỉnh sửa hiển thị trên màn hình đã thay đổi. Tôi hiện đang nhận được biên tập tích cực như sau:Làm thế nào để có được "trình soạn thảo hoạt động" trong plugin Eclipse?

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor() 

này hoạt động cho hầu hết các trường hợp ngoại trừ khi màu xanh lá cây nút Tiếp tục được nhấn:

Debugger buttons

Nếu tôi sử dụng các phím tắt F8 sau đó tích cực trình chỉnh sửa được cập nhật như mong đợi.

Dường như thuộc tính trình chỉnh sửa đang hoạt động không được cập nhật cho đến khi tab trình chỉnh sửa được lấy nét (điều này không xảy ra khi nhấn nút Tiếp tục).

Có tuyến đường nào khác mà tôi có thể thực hiện để nhận "trình chỉnh sửa hiển thị" không?

Xin cảm ơn trước.

Alan

+0

Đưa ra thảo luận bên dưới, tôi giả định trình cắm của bạn là _extension_ cho plugin gỡ lỗi hiện có. Chính xác? –

+0

Nó không phải là một phần mở rộng cho các plugin gỡ lỗi nhưng tôi móc vào các sự kiện gỡ lỗi khác nhau về breakpoint vv –

Trả lời

2
  1. Một biên tập viên đang hoạt động chỉ khi nó đã tập trung, vì vậy những gì bạn đang nhận được là sản phẩm đúng bởi API. Người dùng của plugin của bạn sẽ không được chạy nó trong chế độ gỡ lỗi, vì vậy không phải là một mối quan tâm cho người dùng cuối
  2. Ngoài ra, để có được tất cả các biên tập viên mở bạn có thể làm như sau:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences()

+0

Cảm ơn bạn đã trả lời của bạn. Tôi đã thực sự đề cập đến người dùng đang chạy trình gỡ lỗi trong bản sao Eclipse của họ, vì vậy nó là một vấn đề cho người dùng cuối. –

+0

không chắc rằng việc sử dụng có điểm ngắt trong mã của bạn để việc thực hiện bị dừng tại điểm đó phải không? – codejammer

+0

Tôi đang nói về mã của riêng người dùng. Tôi muốn làm mọi thứ khi người dùng đang bước qua trình gỡ lỗi trong mã của họ. Kịch bản cụ thể này không hoạt động như tôi muốn. Nếu tôi có quyền truy cập vào trình chỉnh sửa hiển thị thì tôi có thể xử lý nó. –

1

Các IWorkbenchPage interface has an isPartVisible() `phương pháp cho biết nếu một phần quy định có thể nhìn thấy. Kết quả không phụ thuộc vào việc phần được chỉ định hiện có đang hoạt động hay không, tức là có tập trung hay không.

Để tìm trình chỉnh sửa hiển thị nhưng hiện không hoạt động, tuy nhiên, có thể không đủ để gọi phương thức này trên trang bàn làm việc đang hoạt động. Thay vào đó, bạn có thể phải lặp qua tất cả các cửa sổ bàn làm việc và kiểm tra khả năng hiển thị của trình soạn thảo của bạn trên trang của mỗi cửa sổ.

0

Câu hỏi này tương tự như câu hỏi được đăng trong liên kết bên dưới. Một cách để đạt được điều này là theo dõi trình soạn thảo nào đã được mở trước đó bằng cách tạo một Trình nghe Phần. Eclipse Plugin - How to get the last worked on editor

1

tích cực biên tập danh sách hiểu thêm chi tiết vui lòng truy cập câu hỏi này:

Eclipse RCP : have the same editor open in editor window


tên gói: rcp_demo.Editor

tên lớp: EmpCommand.java, EmployeeEditor. java và 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; 
    } 
} 
Các vấn đề liên quan