package de.urszeidler.shr5.ecp.editor.pages; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecp.spi.ui.ECPReferenceServiceImpl; import org.eclipse.emf.ecp.ui.view.ECPRendererException; import org.eclipse.emf.ecp.ui.view.swt.ECPSWTView; import org.eclipse.emf.ecp.ui.view.swt.ECPSWTViewRenderer; import org.eclipse.emf.ecp.view.spi.context.ViewModelContext; import org.eclipse.emf.ecp.view.spi.context.ViewModelContextFactory; import org.eclipse.emf.ecp.view.spi.model.VView; import org.eclipse.emf.ecp.view.spi.provider.ViewProviderHelper; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.editor.FormEditor; import org.eclipse.ui.forms.editor.FormPage; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import de.urszeidler.shr5.ecp.Activator; public class DefaultEmfFormsPage extends FormPage { private ECPSWTView ecpView; private EObject object; /** * Create the form page. * * @param id * @param title */ public DefaultEmfFormsPage(String id, String title) { super(id, title); } /** * Create the form page. * * @param editor * @param id * @param title * @wbp.parser.constructor * @wbp.eval.method.parameter id "Some id" * @wbp.eval.method.parameter title "Some title" */ public DefaultEmfFormsPage(FormEditor editor, String id, String title) { super(editor, id, title); } /** * Create the form page. * * @param editor * @param id * @param title * @wbp.parser.constructor * @wbp.eval.method.parameter id "Some id" * @wbp.eval.method.parameter title "Some title" */ public DefaultEmfFormsPage(FormEditor editor, String id, String title, EObject object) { super(editor, id, title); this.object = object; } /** * Create contents of the form. * * @param managedForm */ @Override protected void createFormContent(IManagedForm managedForm) { FormToolkit toolkit = managedForm.getToolkit(); ScrolledForm form = managedForm.getForm(); form.setText("default model page, a simple reflective form allowing generic edit"); Composite body = form.getBody(); body.setLayout(new GridLayout()); toolkit.decorateFormHeading(form.getForm()); toolkit.paintBordersFor(body); final EObject domainObject = object; final VView view = ViewProviderHelper.getView(domainObject,null); final ViewModelContext vmc = ViewModelContextFactory.INSTANCE.createViewModelContext(view, domainObject, new ECPReferenceServiceImpl()); try { ecpView = ECPSWTViewRenderer.INSTANCE.render(body, vmc); } catch (final ECPRendererException ex) { MessageDialog.openError(form.getShell(), ex.getClass().getName(), ex.getMessage()); Activator.logError(ex); } form.pack(); } /** * {@inheritDoc} */ @Override public void dispose() { if (ecpView != null) ecpView.dispose(); super.dispose(); } }