【问题标题】:How to insert MasterDetailsBlock into View (ViewPart)?如何将 MasterDetailsBlock 插入视图(ViewPart)?
【发布时间】:2026-02-17 06:00:01
【问题描述】:

通常将 Master details 块插入到 Formpage 中,如以下代码。

    public class UnitConfigurationEditorPage extends FormPage {  

        @Override
        Protected void createFormContent(IManagedForm managedForm) {
          FormToolkit toolkit = managedForm.getToolkit();
          form = managedForm.getForm();
          form.setText("Unit Configuration");

          unitConfigurationMasterDetailsBlock = new UnitConfigurationMasterDetailsBlock(this,prepMasterProject);

          unitConfigurationMasterDetailsBlock.createContent(managedForm);
        }
   }

但我不期待编辑,我想显示为一个视图。所以我想将 MasterDetailsBlock 添加到 View(ViewPart) 而不是 FormPage 中。

我已尝试以下代码,但收到此错误。

  Error: "java.lang.ClassCastException: org.eclipse.ui.forms.widgets.ScrolledForm cannot be cast to org.eclipse.ui.forms.IManagedForm" 
  public class MasterBlockView extends ViewPart {
        @Override
        public void createPartControl(Composite parent) {

            Composite composite = formToolkit.createComposite(parent, SWT.NONE);
            formToolkit.paintBordersFor(composite);
            composite.setLayout(new GridLayout(1, false));

            ScrolledForm scrldfrmNewScrolledform = formToolkit.createScrolledForm(composite);
            scrldfrmNewScrolledform.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
            formToolkit.paintBordersFor(scrldfrmNewScrolledform);
            scrldfrmNewScrolledform.setText("New ScrolledForm");        

            JobMasterDetailsBlock jobMasterDetailsBlock = new JobMasterDetailsBlock(this);
            jobMasterDetailsBlock.createContent((IManagedForm) scrldfrmNewScrolledform);
       }        
  }

请帮我解决这个问题。

【问题讨论】:

    标签: eclipse eclipse-plugin eclipse-rcp


    【解决方案1】:

    不支持。 FormPage 期望成为FormEditor 的一部分,或者至少包含在实现IManagedForm 的东西中。 IManagedForm 的唯一现有实现是在表单编辑器代码中。

    【讨论】:

    • 你能指导我像查看器一样显示主详细信息页面吗?