Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
JFace Data Binding/DOM
JFace Data Binding |
Home |
How to Contribute |
FAQ |
Snippets |
Concepts |
Binding |
Converter |
Observable |
Realm |
Target
Work is underway to support binding to w3c DOM node. See (for the moment) TK-UI SVN - you can find two plug-in project that provides DOM-based observables :
- org.eclipse.core.databinding.dom : DOM binding source.
- org.eclipse.core.examples.databinding.dom : DOM binding samples.
DOM binding sample
The TestHTMLInputText DOM binding sample explains how bind this XHTML content :
<html> <title>DOM Bindings - HTML Input Text Sample.</title> <label>This sample bind : * CharacterData of DOM Element title with Text property of SWT Shell. * CharacterData of DOM Element label with Text property of SWT Label. * Attribute value of DOM Element input with Text property of SWT Text. * DOM Document content with Text property of SWT Text (Area).</label> <input type="text" value="bla bla bla" /> </html>
with several SWT UI widgets :
This screen show the result of binding between the XHTMl DOM Document and SWT UI widgets.
This sample is DOM IObservableValue implementation. It bind:
- CharacterData of DOM Element title with Text property of SWT Shell.
- CharacterData of DOM Element label with Text property of SWT Label.
- Attribute value of DOM Element input with Text property of SWT Text.
- DOM Document content with Text property of SWT Text (Area).
DOMObservables is used to create IObservableValue or IObservableList DOM Node implementation to manage DOM binding.
Here the code used to bind attribute value of DOM Element input with Text property of SWT Text :
// Get input element Element textElement = (Element) documentElement.getElementsByTagName("input").item(0); // HTML : <input value="bla bla bla"... > // Bind Attribute value of DOM Element input with Text property of // SWT Text. Text text = new Text(composite, SWT.BORDER); context.bindValue(SWTObservables.observeText(text, SWT.Modify), DOMObservables.observeAttrValue(realm, textElement, "value"),null, null);
You can see that in this sample the observed Node is retrieved with getElementsByTagName methods. You can use XPath to retrieve Node to observe. To do that you must use DOMXPathObservables DOM observables factory.
Text text = new Text(composite, SWT.BORDER); context.bindValue(SWTObservables.observeText(text, SWT.Modify), DOMXPathObservables.observeAttrValue(realm, document, "value", "//input", null), null, null);