package de.urszeidler.shr5.runtime.ui.editor.pages; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; 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.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import de.urszeidler.eclipse.shr5.Beschreibbar; import de.urszeidler.eclipse.shr5.runtime.GruntTeam; import de.urszeidler.eclipse.shr5.runtime.RuntimePackage; import de.urszeidler.eclipse.shr5.util.AdapterFactoryUtil; import de.urszeidler.emf.commons.ui.util.EmfFormBuilder.ReferenceManager; import de.urszeidler.shr5.ecp.editor.pages.AbstractShr5Page; import de.urszeidler.shr5.ecp.editor.widgets.BeschreibbarWidget; import de.urszeidler.shr5.ecp.editor.widgets.TreeTableWidget; import de.urszeidler.shr5.scripting.ScriptingFactory; /** * Used for several light objects, like {@link GruntTeam}, * @author urs * */ public class VariousPage extends AbstractShr5Page<Beschreibbar> { private Beschreibbar object; private EditingDomain editingDomain; protected DataBindingContext m_bindingContext; /** * Create the form page. * * @param id * @param title */ public VariousPage(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 VariousPage(FormEditor editor, String id, String title) { super(editor, id, title); this.object = ScriptingFactory.eINSTANCE.createScript(); } public VariousPage(FormEditor editor, String id, String title, Beschreibbar object, EditingDomain editingDomain, ReferenceManager manager) { super(editor, id, title, manager); this.object = object; this.editingDomain = editingDomain; } /** * Create contents of the form. * * @param managedForm */ @Override protected void createFormContent(IManagedForm managedForm) { FormToolkit toolkit = managedForm.getToolkit(); ScrolledForm form = managedForm.getForm(); LabelProvider labelProvider = AdapterFactoryUtil.getInstance().getLabelProvider(); form.setText(labelProvider.getText(object)); Composite body = form.getBody(); toolkit.decorateFormHeading(form.getForm()); toolkit.paintBordersFor(body); managedForm.getForm().getBody().setLayout(new GridLayout(1, false)); BeschreibbarWidget beschreibbarWidget = new BeschreibbarWidget(managedForm.getForm().getBody(), SWT.NONE, object, toolkit, editingDomain); beschreibbarWidget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); managedForm.getToolkit().adapt(beschreibbarWidget); managedForm.getToolkit().paintBordersFor(beschreibbarWidget); Composite composite = managedForm.getToolkit().createComposite(managedForm.getForm().getBody(), SWT.NONE); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); managedForm.getToolkit().paintBordersFor(composite); composite.setLayout(new GridLayout(3, false)); Composite composite_1 = managedForm.getToolkit().createComposite(managedForm.getForm().getBody(), SWT.NONE); composite_1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); managedForm.getToolkit().paintBordersFor(composite_1); composite_1.setLayout(new GridLayout(3, false)); m_bindingContext = initDataBindings(); createFormBuilder(managedForm); if (object instanceof GruntTeam) { emfFormBuilder.addTextEntry(RuntimePackage.Literals.GRUNT_TEAM__GRUNT_GROUP, composite); EReference feature = RuntimePackage.Literals.TEAM__MEMBERS; TreeTableWidget treeTableWidget = new TreeTableWidget(composite_1, labelProvider.getText(feature), SWT.NONE, object, feature, toolkit, mananger, editingDomain,this,true); treeTableWidget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1)); managedForm.getToolkit().adapt(treeTableWidget); managedForm.getToolkit().paintBordersFor(treeTableWidget); } emfFormBuilder.buildinComposite(m_bindingContext, managedForm.getForm().getBody(), object); managedForm.reflow(true); } protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); // return bindingContext; } @Override protected EditingDomain getEditingDomain() { return editingDomain; } }