package de.urszeidler.shr5.ecp.editor.pages; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; 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.util.AdapterFactoryUtil; import de.urszeidler.eclipse.shr5Management.GruntGroup; import de.urszeidler.eclipse.shr5Management.GruntMembers; import de.urszeidler.eclipse.shr5Management.Shr5managementFactory; import de.urszeidler.eclipse.shr5Management.Shr5managementPackage; import de.urszeidler.emf.commons.ui.util.EmfFormBuilder; import de.urszeidler.emf.commons.ui.util.EmfFormBuilder.ReferenceManager; import de.urszeidler.shr5.ecp.editor.widgets.BeschreibbarWidget; import de.urszeidler.shr5.ecp.editor.widgets.TreeTableWidget; public class GruntGroupPage extends AbstractShr5Page<GruntGroup> { private GruntGroup object; private EditingDomain editingDomain; private DataBindingContext m_bindingContext; private Composite detail; private Composite composite_detail; // private Table table; // private TableViewer tableViewer; /** * Create the form page. * * @param id * @param title */ public GruntGroupPage(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 GruntGroupPage(FormEditor editor, String id, String title) { super(editor, id, title); this.object = Shr5managementFactory.eINSTANCE.createGruntGroup(); } public GruntGroupPage(FormEditor editor, String id, String title, GruntGroup 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) { final FormToolkit toolkit = managedForm.getToolkit(); ScrolledForm form = managedForm.getForm(); form.setText(AdapterFactoryUtil.getInstance().getLabelProvider().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); GridData gd_beschreibbarWidget = new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1); beschreibbarWidget.setLayoutData(gd_beschreibbarWidget); managedForm.getToolkit().adapt(beschreibbarWidget); managedForm.getToolkit().paintBordersFor(beschreibbarWidget); Composite composite_professional_rating = new Composite(managedForm.getForm().getBody(), SWT.NONE); composite_professional_rating.setLayout(new GridLayout(3, false)); composite_professional_rating.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); managedForm.getToolkit().adapt(composite_professional_rating); managedForm.getToolkit().paintBordersFor(composite_professional_rating); Group grpLeader = new Group(managedForm.getForm().getBody(), SWT.NONE); grpLeader.setLayout(new FillLayout(SWT.HORIZONTAL)); grpLeader.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); grpLeader.setText("Leader"); managedForm.getToolkit().adapt(grpLeader); managedForm.getToolkit().paintBordersFor(grpLeader); if (object.getLeader() == null) { object.setLeader(Shr5managementFactory.eINSTANCE.createGruntMembers()); } Composite composite_grunt_groups = new Composite(managedForm.getForm().getBody(), SWT.NONE); composite_grunt_groups.setLayout(new GridLayout(2, true)); composite_grunt_groups.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true, 1, 1)); managedForm.getToolkit().adapt(composite_grunt_groups); managedForm.getToolkit().paintBordersFor(composite_grunt_groups); ISelectionChangedListener selectionChange = new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { Object element = ((IStructuredSelection)event.getSelection()).getFirstElement(); if (element != null) { if (detail != null) { detail.dispose(); } detail = createDetail(composite_detail, toolkit, (GruntMembers)element); composite_detail.getParent().layout(true, true); detail.layout(true, true); } } }; TreeTableWidget treeTableWidget = new TreeTableWidget(composite_grunt_groups, "Grunts Members", SWT.NONE, object, Shr5managementPackage.Literals.GRUNT_GROUP__MEMBERS, toolkit, mananger, editingDomain, selectionChange, this); treeTableWidget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); managedForm.getToolkit().adapt(treeTableWidget); managedForm.getToolkit().paintBordersFor(treeTableWidget); Composite composite = managedForm.getToolkit().createComposite(composite_grunt_groups, SWT.NONE); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1)); composite.setLayout(new GridLayout(1, false)); managedForm.getToolkit().paintBordersFor(composite); composite_detail = managedForm.getToolkit().createComposite(composite, SWT.NONE); composite_detail.setLayout(new FillLayout(SWT.HORIZONTAL)); composite_detail.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); managedForm.getToolkit().paintBordersFor(composite_detail); m_bindingContext = initDataBindings(); ownBinding(m_bindingContext); createDetail(grpLeader, managedForm.getToolkit(), object.getLeader()); createFormBuilder(managedForm); emfFormBuilder.addTextEntry(Shr5managementPackage.Literals.GRUNT_GROUP__PROFESSIONAL_RATING, composite_professional_rating); emfFormBuilder.buildinComposite(m_bindingContext, managedForm.getForm().getBody(), object); managedForm.reflow(true); } private Composite createDetail(Composite composite, FormToolkit formToolkit, GruntMembers gruntMenbers) { Composite composite_detail = formToolkit.createComposite(composite, SWT.NONE); composite_detail.setLayout(new GridLayout(3, false)); formToolkit.paintBordersFor(composite_detail); EmfFormBuilder builder = new EmfFormBuilder(formToolkit, AdapterFactoryUtil.getInstance().getItemDelegator(), AdapterFactoryUtil .getInstance().getLabelProvider(), editingDomain); builder.setBorderStyle(SWT.NONE); builder.addAllEntries(Shr5managementPackage.Literals.GRUNT_MEMBERS); builder.buildinComposite(m_bindingContext, composite_detail, gruntMenbers); composite.layout(true, true); return composite_detail; } @Override protected EditingDomain getEditingDomain() { return editingDomain; } /** * @param bindingContext */ private void ownBinding(DataBindingContext bindingContext) { } protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); // return bindingContext; } }