package de.urszeidler.shr5.ecp.editor.pages; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.edit.domain.EditingDomain; 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.ShrList; import de.urszeidler.eclipse.shr5.util.AdapterFactoryUtil; import de.urszeidler.eclipse.shr5Management.CharacterGroup; import de.urszeidler.eclipse.shr5Management.Shr5managementFactory; import de.urszeidler.emf.commons.ui.util.EmfFormBuilder.ReferenceManager; import de.urszeidler.shr5.ecp.editor.actions.ActionM2TDialog; import de.urszeidler.shr5.ecp.editor.actions.ExportObjectAction; import de.urszeidler.shr5.ecp.editor.actions.ImportChummerAction; import de.urszeidler.shr5.ecp.editor.actions.ImportObjectAction; import de.urszeidler.shr5.ecp.editor.widgets.BeschreibbarWidget; import de.urszeidler.shr5.ecp.editor.widgets.TreeTableWidget; public class BeschreibbarContainterPage extends AbstractShr5Page<Beschreibbar> { private Beschreibbar object; private EditingDomain editingDomain; private DataBindingContext m_bindingContext; private EReference eReference; private String titel; private EReference[] eReferences = null; /** * Create the form page. * * @param id * @param title */ public BeschreibbarContainterPage(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 BeschreibbarContainterPage(FormEditor editor, String id, String title) { super(editor, id, title); this.object = Shr5managementFactory.eINSTANCE.createCharacterGroup(); } public BeschreibbarContainterPage(FormEditor editor, String id, String title, Beschreibbar object, EditingDomain editingDomain, ReferenceManager manager, EReference ref, String refTitel) { super(editor, id, title); this.object = object; this.editingDomain = editingDomain; this.mananger = manager; this.eReference = ref; this.titel = refTitel; } public BeschreibbarContainterPage(FormEditor editor, String id, String title, Beschreibbar object, EditingDomain editingDomain, ReferenceManager manager, EReference... ref) { super(editor, id, title); this.object = object; this.editingDomain = editingDomain; this.mananger = manager; this.eReferences = ref; } /** * Create contents of the form. * * @param managedForm */ @Override protected void createFormContent(IManagedForm managedForm) { 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); form.getToolBarManager().add(new ActionM2TDialog(form.getShell(), object)); form.getToolBarManager().add(new ExportObjectAction(form.getShell(), object)); form.getToolBarManager().add(new ImportObjectAction(form.getShell(), object)); if (object instanceof CharacterGroup) { form.getToolBarManager().add(new ImportChummerAction(form.getShell(), object)); } addValidationResult(form.getToolBarManager(), object); form.getToolBarManager().update(true); 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 composite1 = null; if (object instanceof ShrList) { composite1 = new Composite(managedForm.getForm().getBody(), SWT.NONE); composite1.setLayout(new GridLayout(3, false)); composite1.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1)); managedForm.getToolkit().adapt(composite1); managedForm.getToolkit().paintBordersFor(composite1); } if (eReferences == null) { TreeTableWidget treeTableWidget = new TreeTableWidget(managedForm.getForm().getBody(), titel, SWT.NONE, object, eReference, toolkit, mananger, editingDomain, this,this); treeTableWidget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true, 1, 1)); managedForm.getToolkit().adapt(treeTableWidget); managedForm.getToolkit().paintBordersFor(treeTableWidget); } else { Composite composite = new Composite(managedForm.getForm().getBody(), SWT.NONE); composite.setLayout(new GridLayout(eReferences.length == 1 ? 1 : 2, true)); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); managedForm.getToolkit().adapt(composite); managedForm.getToolkit().paintBordersFor(composite); for (EReference ref : eReferences) { String refname = AdapterFactoryUtil.getInstance().getLabelProvider().getText(ref); TreeTableWidget treeTableWidget = new TreeTableWidget(composite, refname, SWT.NONE, object, ref, toolkit, mananger, editingDomain, this,this); treeTableWidget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); managedForm.getToolkit().adapt(treeTableWidget); managedForm.getToolkit().paintBordersFor(treeTableWidget); if (object instanceof ShrList) { if(composite1!=null) createFilterWidgets(managedForm, composite1, treeTableWidget); } } } m_bindingContext = initDataBindings(); } protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); // return bindingContext; } @Override protected EditingDomain getEditingDomain() { return editingDomain; } }