22
33import org .eclipse .core .databinding .DataBindingContext ;
44import org .eclipse .core .databinding .UpdateValueStrategy ;
5+ import org .eclipse .core .databinding .beans .BeanProperties ;
56import org .eclipse .core .databinding .beans .BeansObservables ;
67import org .eclipse .core .databinding .observable .Realm ;
78import org .eclipse .core .databinding .observable .list .IObservableList ;
89import org .eclipse .core .databinding .observable .map .IObservableMap ;
910import org .eclipse .core .databinding .observable .value .IObservableValue ;
1011import org .eclipse .jface .databinding .swt .SWTObservables ;
12+ import org .eclipse .jface .databinding .swt .WidgetProperties ;
1113import org .eclipse .jface .databinding .viewers .ObservableListContentProvider ;
1214import org .eclipse .jface .databinding .viewers .ObservableMapLabelProvider ;
15+ import org .eclipse .jface .databinding .viewers .ViewerProperties ;
1316import org .eclipse .jface .databinding .viewers .ViewersObservables ;
1417import org .eclipse .jface .dialogs .MessageDialog ;
1518import org .eclipse .jface .viewers .IStructuredSelection ;
3538import phonebook .model .Person ;
3639import phonebook .model .PhoneGroup ;
3740import phonebook .model .PhoneGroups ;
38- import org .eclipse .core .databinding .beans .BeanProperties ;
39- import org .eclipse .jface .databinding .viewers .ViewerProperties ;
40- import org .eclipse .jface .databinding .swt .WidgetProperties ;
41- import org .eclipse .core .databinding .property .Properties ;
4241
4342public class PhoneBook {
4443
@@ -181,7 +180,8 @@ public void widgetSelected(SelectionEvent e) {
181180 IStructuredSelection selection = (IStructuredSelection ) m_groupViewer
182181 .getSelection ();
183182 PhoneGroup group = (PhoneGroup ) selection .getFirstElement ();
184- boolean confirm = MessageDialog .openConfirm (shell ,
183+ boolean confirm = MessageDialog .openConfirm (
184+ shell ,
185185 "Confirm Delete" ,
186186 "Are you sure you want to delete group '"
187187 + group .getName () + "'?" );
@@ -200,7 +200,8 @@ public void widgetSelected(SelectionEvent e) {
200200
201201 final SashForm personSashForm = new SashForm (sashForm , SWT .VERTICAL );
202202
203- final Composite personComposite = new Composite (personSashForm , SWT .BORDER );
203+ final Composite personComposite = new Composite (personSashForm ,
204+ SWT .BORDER );
204205 final GridLayout gridLayout_1 = new GridLayout ();
205206 gridLayout_1 .horizontalSpacing = 0 ;
206207 gridLayout_1 .marginWidth = 0 ;
@@ -217,12 +218,14 @@ public void widgetSelected(SelectionEvent e) {
217218 newPersonButton .addSelectionListener (new SelectionAdapter () {
218219 public void widgetSelected (SelectionEvent e ) {
219220 IStructuredSelection groupSelection = (IStructuredSelection ) m_groupViewer
220- .getSelection ();
221- PhoneGroup group = (PhoneGroup ) groupSelection .getFirstElement ();
221+ .getSelection ();
222+ PhoneGroup group = (PhoneGroup ) groupSelection
223+ .getFirstElement ();
222224 if (group != null ) {
223225 Person person = new Person ();
224226 group .addPerson (person );
225- m_personViewer .setSelection (new StructuredSelection (person ), true );
227+ m_personViewer .setSelection (
228+ new StructuredSelection (person ), true );
226229 m_bindingContext .updateModels ();
227230 }
228231 }
@@ -233,12 +236,14 @@ public void widgetSelected(SelectionEvent e) {
233236 deletePersonButton .addSelectionListener (new SelectionAdapter () {
234237 public void widgetSelected (SelectionEvent e ) {
235238 IStructuredSelection groupSelection = (IStructuredSelection ) m_groupViewer
236- .getSelection ();
239+ .getSelection ();
237240 IStructuredSelection personSelection = (IStructuredSelection ) m_personViewer
238241 .getSelection ();
239- PhoneGroup group = (PhoneGroup ) groupSelection .getFirstElement ();
242+ PhoneGroup group = (PhoneGroup ) groupSelection
243+ .getFirstElement ();
240244 Person person = (Person ) personSelection .getFirstElement ();
241- boolean confirm = MessageDialog .openConfirm (shell ,
245+ boolean confirm = MessageDialog .openConfirm (
246+ shell ,
242247 "Confirm Delete" ,
243248 "Are you sure you want to delete person '"
244249 + person .getName () + "'?" );
@@ -282,7 +287,8 @@ public void widgetSelected(SelectionEvent e) {
282287 newColumnTableColumn_4 .setWidth (100 );
283288 newColumnTableColumn_4 .setText ("Mobile Phone 2" );
284289
285- final Composite detailComposite = new Composite (personSashForm , SWT .BORDER );
290+ final Composite detailComposite = new Composite (personSashForm ,
291+ SWT .BORDER );
286292 final GridLayout gridLayout_2 = new GridLayout ();
287293 gridLayout_2 .numColumns = 2 ;
288294 detailComposite .setLayout (gridLayout_2 );
@@ -295,70 +301,132 @@ public void widgetSelected(SelectionEvent e) {
295301 label .setText ("Name:" );
296302
297303 m_nameText = new Text (detailComposite , SWT .BORDER );
298- m_nameText . setLayoutData ( new GridData ( SWT . FILL , SWT . CENTER , true ,
299- false ));
304+ m_nameText
305+ . setLayoutData ( new GridData ( SWT . FILL , SWT . CENTER , true , false ));
300306
301307 final Label emailLabel = new Label (detailComposite , SWT .NONE );
302308 emailLabel .setText ("E-mail:" );
303309
304310 m_emailText = new Text (detailComposite , SWT .BORDER );
305- m_emailText .setLayoutData (new GridData (SWT .FILL , SWT .CENTER ,
306- true , false ));
311+ m_emailText .setLayoutData (new GridData (SWT .FILL , SWT .CENTER , true ,
312+ false ));
307313
308314 final Label phoneLabel = new Label (detailComposite , SWT .NONE );
309315 phoneLabel .setText ("Phone:" );
310316
311317 m_phoneText = new Text (detailComposite , SWT .BORDER );
312- m_phoneText .setLayoutData (new GridData (SWT .FILL , SWT .CENTER ,
313- true , false ));
318+ m_phoneText .setLayoutData (new GridData (SWT .FILL , SWT .CENTER , true ,
319+ false ));
314320
315321 final Label mobilePhone1Label = new Label (detailComposite , SWT .NONE );
316322 mobilePhone1Label .setText ("Mobile Phone 1:" );
317323
318324 m_mobile1Text = new Text (detailComposite , SWT .BORDER );
319- m_mobile1Text .setLayoutData (new GridData (SWT .FILL , SWT .CENTER ,
320- true , false ));
325+ m_mobile1Text .setLayoutData (new GridData (SWT .FILL , SWT .CENTER , true ,
326+ false ));
321327
322328 final Label mobilePhone2Label = new Label (detailComposite , SWT .NONE );
323329 mobilePhone2Label .setText ("Mobile Phone 2:" );
324330
325331 m_mobile2Text = new Text (detailComposite , SWT .BORDER );
326- m_mobile2Text .setLayoutData (new GridData (SWT .FILL , SWT .CENTER ,
327- true , false ));
332+ m_mobile2Text .setLayoutData (new GridData (SWT .FILL , SWT .CENTER , true ,
333+ false ));
328334 sashForm .setWeights (new int [] { 161 , 617 });
329335 personSashForm .setWeights (new int [] { 1 , 1 });
330336 m_bindingContext = initDataBindings ();
331337 //
332338 }
339+
333340 protected DataBindingContext initDataBindings () {
334341 DataBindingContext bindingContext = new DataBindingContext ();
335342 //
336- ObservableListContentProvider listContentProvider = new ObservableListContentProvider ();
337- IObservableMap observeMap = BeansObservables .observeMap (listContentProvider .getKnownElements (), PhoneGroup .class , "name" );
338- m_groupViewer .setLabelProvider (new ObservableMapLabelProvider (observeMap ));
339- m_groupViewer .setContentProvider (listContentProvider );
343+ IObservableValue table_1SelectionIndexObserveWidget_1 = SWTObservables
344+ .observeSingleSelectionIndex (table_1 );
345+ IObservableValue newGroupButtonEnabledObserveWidget = SWTObservables
346+ .observeEnabled (editGroupButton );
347+ bindingContext .bindValue (table_1SelectionIndexObserveWidget_1 ,
348+ newGroupButtonEnabledObserveWidget ,
349+ new SelectionUpdateValueStrategy (), new UpdateValueStrategy (
350+ UpdateValueStrategy .POLICY_NEVER ));
340351 //
341- IObservableList groupsGroupsObserveList = BeanProperties .list ("groups" ).observe (m_groups );
342- m_groupViewer .setInput (groupsGroupsObserveList );
352+ IObservableValue table_1SelectionIndexObserveWidget = SWTObservables
353+ .observeSingleSelectionIndex (table_1 );
354+ IObservableValue deleteGroupButtonEnabledObserveWidget = SWTObservables
355+ .observeEnabled (deleteGroupButton );
356+ bindingContext .bindValue (table_1SelectionIndexObserveWidget ,
357+ deleteGroupButtonEnabledObserveWidget ,
358+ new SelectionUpdateValueStrategy (), new UpdateValueStrategy (
359+ UpdateValueStrategy .POLICY_NEVER ));
343360 //
344- ObservableListContentProvider listContentProvider_1 = new ObservableListContentProvider ();
345- IObservableMap [] observeMaps = BeansObservables .observeMaps (listContentProvider_1 .getKnownElements (), Person .class , new String []{"name" , "email" , "phone" , "mobilePhone2" , "mobilePhone1" });
346- m_personViewer .setLabelProvider (new ObservableMapLabelProvider (observeMaps ));
347- m_personViewer .setContentProvider (listContentProvider_1 );
361+ IObservableValue tableSelectionIndexObserveWidget = SWTObservables
362+ .observeSingleSelectionIndex (table );
363+ IObservableValue deletePersonButtonEnabledObserveWidget = SWTObservables
364+ .observeEnabled (deletePersonButton );
365+ bindingContext .bindValue (tableSelectionIndexObserveWidget ,
366+ deletePersonButtonEnabledObserveWidget ,
367+ new SelectionUpdateValueStrategy (), new UpdateValueStrategy (
368+ UpdateValueStrategy .POLICY_NEVER ));
348369 //
349- IObservableValue observeSingleSelectionGroupViewer = ViewerProperties .singleSelection ().observe (m_groupViewer );
350- IObservableList groupViewerPersonsObserveDetailList = BeanProperties .list (PhoneGroup .class , "persons" , Person .class ).observeDetail (observeSingleSelectionGroupViewer );
351- m_personViewer .setInput (groupViewerPersonsObserveDetailList );
370+ ObservableListContentProvider m_groupViewerContentProviderList = new ObservableListContentProvider ();
371+ IObservableMap m_groupViewerLabelProviderMaps = BeansObservables
372+ .observeMap (
373+ m_groupViewerContentProviderList .getKnownElements (),
374+ PhoneGroup .class , "name" );
375+ m_groupViewer .setLabelProvider (new ObservableMapLabelProvider (
376+ m_groupViewerLabelProviderMaps ));
377+ m_groupViewer .setContentProvider (m_groupViewerContentProviderList );
352378 //
353- IObservableValue observeTextNameTextObserveWidget = WidgetProperties .text (SWT .Modify ).observe (m_nameText );
354- IObservableValue observeSingleSelectionPersonViewer = ViewerProperties .singleSelection ().observe (m_personViewer );
355- IObservableValue personViewerNameObserveDetailValue = BeanProperties .value (Person .class , "name" , String .class ).observeDetail (observeSingleSelectionPersonViewer );
356- bindingContext .bindValue (observeTextNameTextObserveWidget , personViewerNameObserveDetailValue , null , null );
379+ IObservableList m_groupsGroupsObserveList = BeansObservables
380+ .observeList (Realm .getDefault (), m_groups , "groups" );
381+ m_groupViewer .setInput (m_groupsGroupsObserveList );
382+ //
383+ ObservableListContentProvider m_personViewerContentProviderList = new ObservableListContentProvider ();
384+ IObservableMap [] m_personViewerLabelProviderMaps = BeansObservables
385+ .observeMaps (
386+ m_personViewerContentProviderList .getKnownElements (),
387+ Person .class , new String [] { "name" , "email" , "phone" ,
388+ "mobilePhone1" , "mobilePhone2" });
389+ m_personViewer .setLabelProvider (new ObservableMapLabelProvider (
390+ m_personViewerLabelProviderMaps ));
391+ m_personViewer .setContentProvider (m_personViewerContentProviderList );
392+ //
393+ IObservableValue groupViewerObserveSingleSelection = ViewersObservables
394+ .observeSingleSelection (m_groupViewer );
395+ IObservableList m_groupViewerPersonsObserveDetailList = BeansObservables
396+ .observeDetailList (groupViewerObserveSingleSelection ,
397+ "persons" , Person .class );
398+ m_personViewer .setInput (m_groupViewerPersonsObserveDetailList );
399+ //
400+ IObservableValue observeMessageNameTextObserveWidget = WidgetProperties
401+ .message ().observe (m_nameText );
402+ IObservableValue observeSingleSelectionPersonViewer = ViewerProperties
403+ .singleSelection ().observe (m_personViewer );
404+ IObservableValue personViewerNameObserveDetailValue = BeanProperties
405+ .value (Person .class , "name" , String .class ).observeDetail (
406+ observeSingleSelectionPersonViewer );
407+ bindingContext .bindValue (observeMessageNameTextObserveWidget ,
408+ personViewerNameObserveDetailValue , null , null );
409+ //
410+
411+ IObservableValue observeTextEmailTextObserveWidget = WidgetProperties
412+ .text (SWT .Modify ).observe (m_emailText );
413+ IObservableValue observeSingleSelectionPersonViewer_1 = ViewerProperties
414+ .singleSelection ().observe (m_personViewer );
415+ IObservableValue personViewerEmailObserveDetailValue = BeanProperties
416+ .value (Person .class , "email" , String .class ).observeDetail (
417+ observeSingleSelectionPersonViewer_1 );
418+ bindingContext .bindValue (observeTextEmailTextObserveWidget ,
419+ personViewerEmailObserveDetailValue , null , null );
357420 //
358- IObservableValue observeTextEmailTextObserveWidget = WidgetProperties .text (SWT .Modify ).observe (m_emailText );
359- IObservableValue observeSingleSelectionPersonViewer_1 = ViewerProperties .singleSelection ().observe (m_personViewer );
360- IObservableValue personViewerEmailObserveDetailValue = BeanProperties .value (Person .class , "email" , String .class ).observeDetail (observeSingleSelectionPersonViewer_1 );
361- bindingContext .bindValue (observeTextEmailTextObserveWidget , personViewerEmailObserveDetailValue , null , null );
421+ IObservableValue observeTextPhoneTextObserveWidget = WidgetProperties
422+ .text (SWT .Modify ).observe (m_phoneText );
423+ IObservableValue observeSingleSelectionPersonViewer_2 = ViewerProperties
424+ .singleSelection ().observe (m_personViewer );
425+ IObservableValue personViewerMobilePhone1ObserveDetailValue = BeanProperties
426+ .value (Person .class , "mobilePhone1" , String .class )
427+ .observeDetail (observeSingleSelectionPersonViewer_2 );
428+ bindingContext .bindValue (observeTextPhoneTextObserveWidget ,
429+ personViewerMobilePhone1ObserveDetailValue , null , null );
362430 //
363431 return bindingContext ;
364432 }
0 commit comments