簡體   English   中英

編輯器初始化失敗的站點在rcp eclipse中不正確

[英]Editor initialization failed site is incorrect in rcp eclipse

請您找到解決方案!

無法創建零件

編輯器ID:rcp_demo.Editor.emp。

編輯器初始化失敗:rcp_demo.Editor.emp。 網站不正確。

軟件包名稱:RCP_Demo.Editor

類名稱:Emp_command.java,Emp_Editor.java,Emp_Editor_input.java

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();
            EmployeeEditorInput input=new EmployeeEditorInput();
            try {
                page.openEditor(input,EmployeeEditor.Id);
            } catch (PartInitException e) {
                System.out.println("Error:" + this.getClass().getName() + ":" + e);
                e.printStackTrace();
                throw new ExecutionException("Error open EmployeeEditor");
            }
        return null;
    }
}
public class EmployeeEditorInput implements IEditorInput{
//IEditorInput implements all methods 

}
public class EmployeeEditor extends EditorPart{
    public static final String Id="rcp_demo.Editor.emp";

    @Override
    public void init(IEditorSite site, IEditorInput input)
            throws PartInitException {
            }
    @Override
    public void createPartControl(Composite parent) {
        parent.setLayout(new RowLayout(SWT.HORIZONTAL));
        }
}

空的init方法對於EditorPart是不可接受的。 init的絕對最小值為:

@Override
public void init(IEditorSite site, IEditorInput input)
        throws PartInitException {
    setSite(site);
    setInput(input);
}

您可以在init方法中執行其他操作,但必須調用setSitesetInput 您的錯誤是因為您沒有調用setSite

簡要描述:編輯器初始化失敗網站不正確。

public class ProductEditor extends EditorPart {

    //initialize editor when assigned its site
    public void init(IEditorSite site, IEditorInput input)
            throws PartInitException {

        //instanceof in java is also known as type comparison operator
        if (!(input instanceof ProductEditorInput)) {
              throw new PartInitException("Invalid Input: Must be "
                      + ProductEditorInput.class.getName());
          }
          setSite(site);
          setInput(input);
    }

    public void createPartControl(Composite parent) {

    parent.setLayout(null);
    Label lblProductEditor = new Label(parent, SWT.NONE);
    lblProductEditor.setFont(SWTResourceManager.getFont("Tahoma", 16, SWT.BOLD));
    lblProductEditor.setBounds(36, 45, 285, 48);
    lblProductEditor.setText("Product Editor");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM