/** * */ package de.hannesniederhausen.storynotes.ui.internal.services.ui; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.observable.value.IObservableValue; import org.eclipse.emf.databinding.edit.EMFEditProperties; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.databinding.swt.SWTObservables; 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.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import de.hannesniederhausen.storynotes.model.GenericNote; import de.hannesniederhausen.storynotes.model.StorynotesPackage; import de.hannesniederhausen.storynotes.ui.views.InputMask; /** * @author Hannes Niederhausen * */ public class GenericNoteInputMask extends InputMask { private DataBindingContext m_bindingContext; private GenericNote note; private Text titleText; private Text descriptionText; @Override public void createControl(Composite parent) { Composite comp = new Composite(parent, SWT.NONE); comp.setLayout(new GridLayout(2, false)); Label lblTitle = new Label(comp, SWT.NONE); lblTitle.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblTitle.setText("Title:"); titleText = new Text(comp, SWT.BORDER); titleText.setMessage("Title"); titleText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); Label lblContent = new Label(comp, SWT.NONE); lblContent.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false, 1, 1)); lblContent.setText("Content:"); descriptionText = new Text(comp, SWT.BORDER | SWT.WRAP | SWT.MULTI); descriptionText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); setControl(comp); } @Override public void setModel(EObject model) { if (m_bindingContext!=null) m_bindingContext.dispose(); this.note = (GenericNote) model; m_bindingContext = initDataBindings(); } protected DataBindingContext initDataBindings() { EditingDomain ed = getEclipseContext().get(EditingDomain.class); DataBindingContext bindingContext = new DataBindingContext(); // IObservableValue textObserveTextObserveWidget = SWTObservables.observeDelayedValue(300, SWTObservables.observeText(titleText, SWT.Modify)); IObservableValue noteTitleObserveValue = EMFEditProperties.value(ed, StorynotesPackage.Literals.GENERIC_NOTE__TITLE).observe(note); bindingContext.bindValue(textObserveTextObserveWidget, noteTitleObserveValue, null, null); // IObservableValue text_1ObserveTextObserveWidget = SWTObservables.observeDelayedValue(300, SWTObservables.observeText(descriptionText, SWT.Modify)); IObservableValue noteDescriptionObserveValue = EMFEditProperties.value(ed, StorynotesPackage.Literals.GENERIC_NOTE__DESCRIPTION).observe(note); bindingContext.bindValue(text_1ObserveTextObserveWidget, noteDescriptionObserveValue, null, null); // return bindingContext; } }