<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Radek's Tech Blog &#187; jface</title>
	<atom:link href="http://urbas.tk/index.php/tag/jface/feed/" rel="self" type="application/rss+xml" />
	<link>http://urbas.tk</link>
	<description>Radoslaw H. Urbas homepage / blog</description>
	<lastBuildDate>Tue, 01 Jun 2010 20:31:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>JFace Binding</title>
		<link>http://urbas.tk/index.php/2008/07/22/jface-binding/</link>
		<comments>http://urbas.tk/index.php/2008/07/22/jface-binding/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 23:55:52 +0000</pubDate>
		<dc:creator>Radoslaw Urbas</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[binding]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jface]]></category>
		<category><![CDATA[swt]]></category>

		<guid isPermaLink="false">http://urbas.tk/?p=38</guid>
		<description><![CDATA[Recently I have started using JFace Binding. Unfortunately there are not many resources available on the web with non-trivial examples. Let present example of master-detail view: a drop-down list and two text fields which display some details regarding option chosen from the list. POJO Category. It contains two fields: name and description which will be [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I have started using JFace Binding. Unfortunately there are not many resources available on the web with non-trivial examples.</p>
<p>Let present example of master-detail view: a drop-down list and two text fields which display some details regarding option chosen from the list.</p>
<p>POJO Category. It contains two fields: name and description which will be displayed as details of the object chosen from the drop-down list:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.beans.PropertyChangeListener</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.Serializable</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* Domain object representing category
*
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Category <span style="color: #000000; font-weight: bold;">implements</span> <span style="color: #003399;">Serializable</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">long</span> serialVersionUID <span style="color: #339933;">=</span> <span style="color: #339933;">-</span>5542167952605551865L<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> name<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> description<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* Default constructor
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> Category<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">// Do nothing</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* Constructor
*
* @param name
*            name of a category
* @param description
*            description of a category
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> Category<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> name, <span style="color: #003399;">String</span> description<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">name</span> <span style="color: #339933;">=</span> name<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">description</span> <span style="color: #339933;">=</span> description<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* @return the name
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getName<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">return</span> name<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* @param name the name to set
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setName<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> name<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">name</span> <span style="color: #339933;">=</span> name<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* @return the description
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getDescription<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">return</span> description<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* @param description the description to set
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setDescription<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> description<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">description</span> <span style="color: #339933;">=</span> description<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Class of model that will be used to bind the data to the view:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.List</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* Model for displaying categories
*
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CategoriesModel <span style="color: #000000; font-weight: bold;">extends</span> AbstractModelObject <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">private</span> List<span style="color: #339933;">&lt;</span>Category<span style="color: #339933;">&gt;</span> categories<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> IDataManager dataManager<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> Category category<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* The constructor
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> CategoriesModel<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">dataManager</span> <span style="color: #339933;">=</span> <span style="color: #003399;">Activator</span>.<span style="color: #006633;">getDataManager</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">categories</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">dataManager</span>.<span style="color: #006633;">getAllCategories</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* @return the category
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> Category getCategory<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">category</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* @param category
*            the category to set
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setCategory<span style="color: #009900;">&#40;</span>Category category<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">category</span> <span style="color: #339933;">=</span> category<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* @return the categories
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> List<span style="color: #339933;">&lt;</span>Category<span style="color: #339933;">&gt;</span> getCategories<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">return</span> categories<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* @param categories the categories to set
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setCategories<span style="color: #009900;">&#40;</span>List<span style="color: #339933;">&lt;</span>Category<span style="color: #339933;">&gt;</span> categories<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">categories</span> <span style="color: #339933;">=</span> categories<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Class of view (in this case it is Eclipse View containing managed form):</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.logging.Logger</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.core.databinding.DataBindingContext</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.core.databinding.UpdateValueStrategy</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.core.databinding.beans.BeansObservables</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.core.databinding.observable.Realm</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.core.databinding.observable.list.WritableList</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.core.databinding.observable.map.IObservableMap</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.core.databinding.observable.value.IObservableValue</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.jface.databinding.swt.SWTObservables</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.jface.databinding.viewers.ObservableListContentProvider</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.jface.databinding.viewers.ViewersObservables</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.jface.viewers.ComboViewer</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.swt.SWT</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.swt.layout.GridData</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.swt.layout.GridLayout</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.swt.widgets.Composite</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.swt.widgets.Text</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.forms.ManagedForm</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.forms.widgets.FormToolkit</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.forms.widgets.ScrolledForm</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.eclipse.ui.part.ViewPart</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* Allows to view list of categories and their details
*
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CategoryView <span style="color: #000000; font-weight: bold;">extends</span> ViewPart <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">private</span> Logger logger <span style="color: #339933;">=</span> Logger.<span style="color: #006633;">getLogger</span><span style="color: #009900;">&#40;</span>CategoryView.<span style="color: #000000; font-weight: bold;">class</span>.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span> FORM_TITLE <span style="color: #339933;">=</span> Messages
.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;category.view.form.title&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">private</span> FormToolkit formToolkit<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">private</span> CategoriesModel model<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> Text nameText<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> Text descriptionText<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> ComboViewer categoriesComboViewer<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> DataBindingContext dbc<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* {@inheritDoc}
*/</span>
@Override
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> createPartControl<span style="color: #009900;">&#40;</span><span style="color: #003399;">Composite</span> parent<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
model <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> CategoriesModel<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
ManagedForm mForm <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ManagedForm<span style="color: #009900;">&#40;</span>parent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
ScrolledForm scrolledForm <span style="color: #339933;">=</span> mForm.<span style="color: #006633;">getForm</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
FormToolkit formToolkit <span style="color: #339933;">=</span> mForm.<span style="color: #006633;">getToolkit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">Composite</span> formBody <span style="color: #339933;">=</span> scrolledForm.<span style="color: #006633;">getBody</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
formToolkit.<span style="color: #006633;">decorateFormHeading</span><span style="color: #009900;">&#40;</span>scrolledForm.<span style="color: #006633;">getForm</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
scrolledForm.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span>FORM_TITLE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
formBody.<span style="color: #006633;">setLayout</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">GridLayout</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span>, <span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
categoriesComboViewer <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ComboViewer<span style="color: #009900;">&#40;</span>formBody, SWT.<span style="color: #006633;">DROP_DOWN</span>
<span style="color: #339933;">|</span> SWT.<span style="color: #006633;">READ_ONLY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
GridData comboGridData <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> GridData<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
comboGridData.<span style="color: #006633;">horizontalSpan</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
comboGridData.<span style="color: #006633;">horizontalAlignment</span> <span style="color: #339933;">=</span> GridData.<span style="color: #006633;">FILL</span><span style="color: #339933;">;</span>
categoriesComboViewer.<span style="color: #006633;">getCombo</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">setLayoutData</span><span style="color: #009900;">&#40;</span>comboGridData<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
nameText <span style="color: #339933;">=</span> formToolkit.<span style="color: #006633;">createText</span><span style="color: #009900;">&#40;</span>formBody, <span style="color: #0000ff;">&quot;&quot;</span>, SWT.<span style="color: #006633;">NONE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
GridData nameGridData <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> GridData<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
nameGridData.<span style="color: #006633;">horizontalSpan</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
nameGridData.<span style="color: #006633;">horizontalAlignment</span> <span style="color: #339933;">=</span> GridData.<span style="color: #006633;">FILL</span><span style="color: #339933;">;</span>
nameText.<span style="color: #006633;">setLayoutData</span><span style="color: #009900;">&#40;</span>nameGridData<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
descriptionText <span style="color: #339933;">=</span> formToolkit.<span style="color: #006633;">createText</span><span style="color: #009900;">&#40;</span>formBody, <span style="color: #0000ff;">&quot;&quot;</span>, SWT.<span style="color: #006633;">MULTI</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
GridData textGridData <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> GridData<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
textGridData.<span style="color: #006633;">horizontalSpan</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
textGridData.<span style="color: #006633;">horizontalAlignment</span> <span style="color: #339933;">=</span> GridData.<span style="color: #006633;">FILL</span><span style="color: #339933;">;</span>
textGridData.<span style="color: #006633;">heightHint</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">100</span><span style="color: #339933;">;</span>
descriptionText.<span style="color: #006633;">setLayoutData</span><span style="color: #009900;">&#40;</span>textGridData<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
formToolkit.<span style="color: #006633;">paintBordersFor</span><span style="color: #009900;">&#40;</span>formBody<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
bindData<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* {@inheritDoc}
*/</span>
@Override
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setFocus<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">// Do nothing</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* This method binds the value from UI layer to the model object
*/</span>
<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> bindData<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
dbc <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DataBindingContext<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Seting content provider for combo viewer</span>
ObservableListContentProvider categoryViewerContentProvider <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ObservableListContentProvider<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
categoriesComboViewer.<span style="color: #006633;">setContentProvider</span><span style="color: #009900;">&#40;</span>categoryViewerContentProvider<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
IObservableMap<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> attributeMaps <span style="color: #339933;">=</span> BeansObservables.<span style="color: #006633;">observeMaps</span><span style="color: #009900;">&#40;</span>
categoryViewerContentProvider.<span style="color: #006633;">getKnownElements</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,
Category.<span style="color: #000000; font-weight: bold;">class</span>, <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">&quot;name&quot;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
categoriesComboViewer.<span style="color: #006633;">setLabelProvider</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ObservableMapLabelProvider<span style="color: #009900;">&#40;</span>
attributeMaps<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
categoriesComboViewer.<span style="color: #006633;">setInput</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> WritableList<span style="color: #009900;">&#40;</span>model.<span style="color: #006633;">getCategories</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,
Category.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Observing changes in selection in combo viewer</span>
IObservableValue selection <span style="color: #339933;">=</span> ViewersObservables
.<span style="color: #006633;">observeSingleSelection</span><span style="color: #009900;">&#40;</span>categoriesComboViewer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Observing the properties of the current selection</span>
IObservableValue detailNameObservable <span style="color: #339933;">=</span> BeansObservables
.<span style="color: #006633;">observeDetailValue</span><span style="color: #009900;">&#40;</span>Realm.<span style="color: #006633;">getDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, selection, <span style="color: #0000ff;">&quot;name&quot;</span>,
<span style="color: #003399;">String</span>.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
IObservableValue detailDescriptionObservable <span style="color: #339933;">=</span> BeansObservables
.<span style="color: #006633;">observeDetailValue</span><span style="color: #009900;">&#40;</span>Realm.<span style="color: #006633;">getDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, selection,
<span style="color: #0000ff;">&quot;description&quot;</span>, <span style="color: #003399;">String</span>.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Binding the Text widgets to the name and description details</span>
<span style="color: #666666; font-style: italic;">// (selection's properties).</span>
dbc.<span style="color: #006633;">bindValue</span><span style="color: #009900;">&#40;</span>SWTObservables.<span style="color: #006633;">observeText</span><span style="color: #009900;">&#40;</span>nameText, SWT.<span style="color: #006633;">None</span><span style="color: #009900;">&#41;</span>,
detailNameObservable, <span style="color: #000000; font-weight: bold;">new</span> UpdateValueStrategy<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">false</span>,
UpdateValueStrategy.<span style="color: #006633;">POLICY_NEVER</span><span style="color: #009900;">&#41;</span>, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
dbc.<span style="color: #006633;">bindValue</span><span style="color: #009900;">&#40;</span>SWTObservables.<span style="color: #006633;">observeText</span><span style="color: #009900;">&#40;</span>descriptionText, SWT.<span style="color: #006633;">None</span><span style="color: #009900;">&#41;</span>,
detailDescriptionObservable, <span style="color: #000000; font-weight: bold;">new</span> UpdateValueStrategy<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">false</span>,
UpdateValueStrategy.<span style="color: #006633;">POLICY_NEVER</span><span style="color: #009900;">&#41;</span>, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* {@inheritDoc}
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> dispose<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>formToolkit <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
formToolkit.<span style="color: #006633;">dispose</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">dispose</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>AbstractModelObject which provides methods required by JFace Binding (it&#8217;s not checked on compilation level):</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.beans.PropertyChangeListener</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.beans.PropertyChangeSupport</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* Provides minimal JavaBeans support for model objects
*
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">abstract</span> <span style="color: #000000; font-weight: bold;">class</span> AbstractModelObject <span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">PropertyChangeSupport</span> propertyChangeSupport <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">PropertyChangeSupport</span><span style="color: #009900;">&#40;</span>
<span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* @param listener
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> addPropertyChangeListener<span style="color: #009900;">&#40;</span><span style="color: #003399;">PropertyChangeListener</span> listener<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
propertyChangeSupport.<span style="color: #006633;">addPropertyChangeListener</span><span style="color: #009900;">&#40;</span>listener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* @param propertyName
* @param listener
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> addPropertyChangeListener<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> propertyName,
<span style="color: #003399;">PropertyChangeListener</span> listener<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
propertyChangeSupport.<span style="color: #006633;">addPropertyChangeListener</span><span style="color: #009900;">&#40;</span>propertyName, listener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* @param listener
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> removePropertyChangeListener<span style="color: #009900;">&#40;</span><span style="color: #003399;">PropertyChangeListener</span> listener<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
propertyChangeSupport.<span style="color: #006633;">removePropertyChangeListener</span><span style="color: #009900;">&#40;</span>listener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
* @param propertyName
* @param listener
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> removePropertyChangeListener<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> propertyName,
<span style="color: #003399;">PropertyChangeListener</span> listener<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
propertyChangeSupport.<span style="color: #006633;">removePropertyChangeListener</span><span style="color: #009900;">&#40;</span>propertyName,
listener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
*
* @param propertyName
* @param oldValue
* @param newValue
*/</span>
<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> firePropertyChange<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> propertyName, <span style="color: #003399;">Object</span> oldValue,
<span style="color: #003399;">Object</span> newValue<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
propertyChangeSupport.<span style="color: #006633;">firePropertyChange</span><span style="color: #009900;">&#40;</span>propertyName, oldValue,
newValue<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://urbas.tk/index.php/2008/07/22/jface-binding/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

