/**
*
*/
package de.urszeidler.shr5.ecp.editor.widgets;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.UpdateValueStrategy;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.emf.databinding.EMFUpdateValueStrategy;
import org.eclipse.emf.databinding.edit.EMFEditObservables;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.databinding.swt.WidgetProperties;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import de.urszeidler.emf.commons.ui.util.EmfFormBuilder;
import de.urszeidler.emf.commons.ui.util.FormbuilderEntry;
import de.urszeidler.emf.commons.ui.util.FormbuilderEntry.EntryFactory;
/**
* @author urs
*/
public class WidgetTools {
public static EntryFactory createLabelExtreyFactory(final EditingDomain editingDomain) {
return new EntryFactory() {
@Override
public void createEntry(Composite container, FormbuilderEntry entry, EObject object, DataBindingContext dbc, EmfFormBuilder emfFormBuilder) {
emfFormBuilder.createConfiguredLable(container, entry, object);
Label label = emfFormBuilder.createLabel(container);
label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
IObservableValue widgetObserver = WidgetProperties.text().observe(label);
IObservableValue objectObserver = EMFEditObservables.observeValue(editingDomain, object, entry.getFeature());
entry.setUiObservable(widgetObserver);
entry.setObservable(objectObserver);
UpdateValueStrategy strategy = new EMFUpdateValueStrategy();
dbc.bindValue(widgetObserver, objectObserver, new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), strategy);
}
};
}
public static GridData createControllGridData(int height) {
GridData controlGridData = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 3);
controlGridData.heightHint = height;
return controlGridData;
}
}