package com.rcpcompany.uibindings.bindings.xtext;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.core.runtime.Assert;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Widget;
import com.google.inject.Module;
import com.rcpcompany.uibindings.IBindingContext;
import com.rcpcompany.uibindings.IValueBinding;
import com.rcpcompany.uibindings.uiAttributes.VirtualUIAttribute;
import com.rcpcompany.uibindings.utils.IFormCreator;
/**
* Various utility methods for use with XText editors.
*
* @author Tonny Madsen, The RCP Company
*/
public class UIBXtextUtils {
/**
* Private constructor to prevent construction...
*/
private UIBXtextUtils() {
}
public static IValueBinding createEditorBinding(IFormCreator form, String spec, Module module) {
final IValueBinding binding = createEditorBinding(form.getContext(), form.addComposite(true, true),
form.getObservableValue(spec), module);
return binding;
}
public static IValueBinding createEditorBinding(IBindingContext context, final Composite parent,
IObservableValue observable, Module module) {
Assert.isNotNull(module);
final VirtualUIAttribute attribute = new VirtualUIAttribute(String.class) {
@Override
public Widget getWidget() {
return parent;
}
};
final IValueBinding binding = context.addBinding().model(observable).ui(attribute).type("xtext")
.arg(UIBXTextContants.ARG_XTEXT_INJECTOR_MODULE, module);
return binding;
}
}