package de.urszeidler.shr5.ecp.editor.pages; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.observable.value.IObservableValue; import org.eclipse.emf.databinding.edit.EMFEditObservables; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.databinding.swt.WidgetProperties; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; 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.util.AdapterFactoryUtil; import de.urszeidler.emf.commons.ui.util.EmfFormBuilder.ReferenceManager; import de.urszeidler.shr5.ecp.editor.widgets.BeschreibbarWidget; import de.urszeidler.shr5.scripting.Handout; import de.urszeidler.shr5.scripting.ScriptingPackage; import de.urszeidler.shr5.scripting.ScriptingPackage.Literals; /** * Use for object that is only a {@link Beschreibbar}. * * @author urs */ public class VariousDescriptionPage extends AbstractShr5Page<Beschreibbar> { private Handout object; private EditingDomain editingDomain; private DataBindingContext m_bindingContext; private Text txtLocationtext; /** * Create the form page. * * @param id * @param title */ public VariousDescriptionPage(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 VariousDescriptionPage(FormEditor editor, String id, String title) { super(editor, id, title); // this.object = Shr5Factory.eINSTANCE.createFertigkeitsGruppe(); } public VariousDescriptionPage(FormEditor editor, String id, String title, Beschreibbar object, EditingDomain editingDomain, ReferenceManager mananger1) { super(editor, id, title, mananger1); this.object = (Handout)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); // gd_beschreibbarWidget.widthHint = 0; beschreibbarWidget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); managedForm.getToolkit().adapt(beschreibbarWidget); managedForm.getToolkit().paintBordersFor(beschreibbarWidget); Group grpGegenstand = new Group(managedForm.getForm().getBody(), SWT.NONE); grpGegenstand.setLayout(new GridLayout(3, false)); grpGegenstand.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); managedForm.getToolkit().adapt(grpGegenstand); managedForm.getToolkit().paintBordersFor(grpGegenstand); Composite composite_Additional = new Composite(managedForm.getForm().getBody(), SWT.NONE); composite_Additional.setLayout(new GridLayout(3, false)); composite_Additional.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1)); managedForm.getToolkit().adapt(composite_Additional); managedForm.getToolkit().paintBordersFor(composite_Additional); Composite composite = new Composite(managedForm.getForm().getBody(), SWT.NONE); composite.setLayout(new FillLayout(SWT.HORIZONTAL)); composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); managedForm.getToolkit().adapt(composite); managedForm.getToolkit().paintBordersFor(composite); // Group grpWert = new Group(composite, SWT.NONE); // grpWert.setText(Messages.ObjectPage_price); // managedForm.getToolkit().adapt(grpWert); // managedForm.getToolkit().paintBordersFor(grpWert); // grpWert.setLayout(new GridLayout(9, false)); if (object instanceof Handout) buildUrlWidget(managedForm, grpGegenstand); m_bindingContext = initDataBindings(); createFormBuilder(managedForm); grpGegenstand.setText(labelProvider.getText(object.eClass())); if (object instanceof Handout) { Handout ho = (Handout)object; emfFormBuilder.addTextEntry(ScriptingPackage.Literals.HANDOUT__TYPE, grpGegenstand); } emfFormBuilder.buildinComposite(m_bindingContext, managedForm.getForm().getBody(), object); managedForm.reflow(true); } /** * @param managedForm * @param grpGegenstand */ private void buildUrlWidget(IManagedForm managedForm, Group grpGegenstand) { Label lblLocation = new Label(grpGegenstand, SWT.NONE); lblLocation.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); managedForm.getToolkit().adapt(lblLocation, true, true); lblLocation.setText("location"); txtLocationtext = new Text(grpGegenstand, SWT.BORDER); txtLocationtext.setText("locationText"); txtLocationtext.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); managedForm.getToolkit().adapt(txtLocationtext, true, true); Button btnSelect = new Button(grpGegenstand, SWT.NONE); btnSelect.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { Handout h = (Handout)object; switch (h.getType()) { case WEBPAGE: break; case IMAGE: case DOCUMENT: String name= new FileDialog(Display.getDefault().getActiveShell(), SWT.OPEN).open(); if (name != null){ Handout ho = (Handout)object; ho.setUrl(name); } break; default: break; } } }); managedForm.getToolkit().adapt(btnSelect, true, true); btnSelect.setText("select"); } @Override protected EditingDomain getEditingDomain() { return editingDomain; } protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); if (object instanceof Handout) { // IObservableValue observeTextTxtLocationtextObserveWidget = WidgetProperties.text(SWT.Modify).observeDelayed(200, txtLocationtext); IObservableValue objectUrlObserveValue = EMFEditObservables.observeValue(editingDomain, object, Literals.HANDOUT__URL); bindingContext.bindValue(observeTextTxtLocationtextObserveWidget, objectUrlObserveValue, null, null); // } return bindingContext; } }