Mercurial > projects > dwt2
diff org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet009TableViewer.d @ 100:e884642ad36e
more work on examples
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Thu, 23 Apr 2009 00:02:38 +0200 |
parents | 5d5bd660917f |
children |
line wrap: on
line diff
--- a/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet009TableViewer.d Wed Apr 22 18:59:26 2009 +0200 +++ b/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet009TableViewer.d Thu Apr 23 00:02:38 2009 +0200 @@ -19,11 +19,16 @@ import java.util.LinkedList; import java.util.List; -import org.eclipse.core.databinding.beans.BeanProperties; +//import org.eclipse.core.databinding.beans.BeanProperties; +import org.eclipse.core.databinding.DataBindingContext; +import org.eclipse.core.databinding.beans.BeansObservables; import org.eclipse.core.databinding.observable.Realm; import org.eclipse.core.databinding.observable.list.WritableList; +import org.eclipse.core.databinding.observable.map.IObservableMap; import org.eclipse.jface.databinding.swt.SWTObservables; -import org.eclipse.jface.databinding.viewers.ViewerSupport; +//import org.eclipse.jface.databinding.viewers.ViewerSupport; +import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; +import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; @@ -42,26 +47,27 @@ // In an RCP application, the threading Realm will be set for you // automatically by the Workbench. In an SWT application, you can do // this once, wrpping your binding method call. - Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() { - public void run() { + Realm.runWithDefault(SWTObservables.getRealm(display), dgRunnable(() { - ViewModel viewModel = new ViewModel(); - Shell shell = new View(viewModel).createShell(); + ViewModel viewModel = new ViewModel(); + Shell shell = (new View(viewModel)).createShell(); - // The SWT event loop - while (!shell.isDisposed()) { - if (!display.readAndDispatch()) { - display.sleep(); - } + // The SWT event loop + while (!shell.isDisposed()) { + if (!display.readAndDispatch()) { + display.sleep(); } } - }); + })); } // Minimal JavaBeans support public static abstract class AbstractModelObject { - private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport( + private PropertyChangeSupport propertyChangeSupport; + this(){ + propertyChangeSupport = new PropertyChangeSupport( this); + } public void addPropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.addPropertyChangeListener(listener); @@ -91,11 +97,11 @@ } // The data model class. This is normally a persistent class of some sort. - static class Person extends AbstractModelObject { + static class Person : AbstractModelObject { // A property... String name = "John Smith"; - public Person(String name) { + public this(String name) { this.name = name; } @@ -106,7 +112,7 @@ public void setName(String name) { String oldValue = this.name; this.name = name; - firePropertyChange("name", oldValue, name); + firePropertyChange("name", stringcast(oldValue), stringcast(name)); } } @@ -118,8 +124,9 @@ // ro retrieve, this ViewModel just instantiates a model object to edit. static class ViewModel { // The model to bind - private List people = new LinkedList(); - { + private List people; + this(){ + people = new LinkedList(); people.add(new Person("Steve Northover")); people.add(new Person("Grant Gayed")); people.add(new Person("Veronika Irvine")); @@ -139,7 +146,7 @@ private ViewModel viewModel; private Table committers; - public View(ViewModel viewModel) { + public this(ViewModel viewModel) { this.viewModel = viewModel; } @@ -154,9 +161,24 @@ // Set up data binding. TableViewer peopleViewer = new TableViewer(committers); - ViewerSupport.bind(peopleViewer, new WritableList(viewModel - .getPeople(), Person.class), BeanProperties.value( - Person.class, "name")); + + ///ViewerSupport.bind(peopleViewer, new WritableList(viewModel + /// .getPeople(), Class.fromType!(Person)), BeanProperties.value( + /// Class.fromType!(Person), "name")); + + // Create a standard content provider + ObservableListContentProvider peopleViewerContentProvider = + new ObservableListContentProvider(); + peopleViewer.setContentProvider(peopleViewerContentProvider); + + // And a standard label provider that maps columns + IObservableMap[] attributeMaps = BeansObservables.observeMaps( + peopleViewerContentProvider.getKnownElements(), Class.fromType!(Person), + [ "name" ]); + peopleViewer.setLabelProvider(new ObservableMapLabelProvider(attributeMaps)); + + // Now set the Viewer's input + peopleViewer.setInput(new WritableList(viewModel.getPeople(), Class.fromType!(Person))); column.pack();