Mercurial > projects > dwt2
diff org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet018CheckboxTableViewerCheckedSelection.d @ 99:5d5bd660917f
build some databind snippets
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Wed, 22 Apr 2009 18:59:26 +0200 |
parents | 6086085e153d |
children | e884642ad36e |
line wrap: on
line diff
--- a/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet018CheckboxTableViewerCheckedSelection.d Wed Apr 22 07:30:21 2009 +0200 +++ b/org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet018CheckboxTableViewerCheckedSelection.d Wed Apr 22 18:59:26 2009 +0200 @@ -10,7 +10,9 @@ * Matthew Hall - bugs 260329, 260337 ******************************************************************************/ -package org.eclipse.jface.examples.databinding.snippets; +module org.eclipse.jface.examples.databinding.snippets.Snippet018CheckboxTableViewerCheckedSelection; + +import java.lang.all; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; @@ -59,304 +61,307 @@ * Snippet 018: Binding to the checked elements in a CheckboxTableViewer. */ public class Snippet018CheckboxTableViewerCheckedSelection { - public static void main(String[] args) { - // The SWT event loop - final Display display = Display.getDefault(); - Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() { - public void run() { - ViewModel viewModel = createSampleModel(); + public static void main(String[] args) { + // The SWT event loop + final Display display = Display.getDefault(); + Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() { + public void run() { + ViewModel viewModel = createSampleModel(); - Shell shell = new View(viewModel).createShell(); - shell.open(); - while (!shell.isDisposed()) - if (!display.readAndDispatch()) - display.sleep(); - } - }); - display.dispose(); - } + Shell shell = new View(viewModel).createShell(); + shell.open(); + while (!shell.isDisposed()) + if (!display.readAndDispatch()) + display.sleep(); + } + }); + display.dispose(); + } - private static ViewModel createSampleModel() { - ViewModel viewModel = new ViewModel(); + private static ViewModel createSampleModel() { + ViewModel viewModel = new ViewModel(); - Person stan = createPerson("Stan"); - Person kyle = createPerson("Kyle"); - Person eric = createPerson("Eric"); - Person kenny = createPerson("Kenny"); - Person wendy = createPerson("Wendy"); - Person butters = createPerson("Butters"); + Person stan = createPerson("Stan"); + Person kyle = createPerson("Kyle"); + Person eric = createPerson("Eric"); + Person kenny = createPerson("Kenny"); + Person wendy = createPerson("Wendy"); + Person butters = createPerson("Butters"); - setFriends(stan, new Person[] { kyle, eric, kenny, wendy }); - setFriends(kyle, new Person[] { stan, eric, kenny }); - setFriends(eric, new Person[] { eric }); - setFriends(kenny, new Person[] { stan, kyle, eric }); - setFriends(wendy, new Person[] { stan }); - setFriends(butters, new Person[0]); + setFriends(stan, new Person[] { kyle, eric, kenny, wendy }); + setFriends(kyle, new Person[] { stan, eric, kenny }); + setFriends(eric, new Person[] { eric }); + setFriends(kenny, new Person[] { stan, kyle, eric }); + setFriends(wendy, new Person[] { stan }); + setFriends(butters, new Person[0]); - Person[] people = new Person[] { stan, kyle, eric, kenny, wendy, - butters }; - viewModel.setPeople(Arrays.asList(people)); - return viewModel; - } + Person[] people = new Person[] { stan, kyle, eric, kenny, wendy, + butters }; + viewModel.setPeople(Arrays.asList(people)); + return viewModel; + } - private static Person createPerson(String name) { - Person person = new Person(); - person.setName(name); - return person; - } + private static Person createPerson(String name) { + Person person = new Person(); + person.setName(name); + return person; + } - private static void setFriends(Person person, Person[] friends) { - person.setFriends(new HashSet(Arrays.asList(friends))); - } + private static void setFriends(Person person, Person[] friends) { + person.setFriends(new HashSet(Arrays.asList(friends))); + } - // Minimal JavaBeans support - public static abstract class AbstractModelObject { - private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport( - this); + // Minimal JavaBeans support + public static abstract class AbstractModelObject { + private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport( + this); - public void addPropertyChangeListener(PropertyChangeListener listener) { - propertyChangeSupport.addPropertyChangeListener(listener); - } + public void addPropertyChangeListener(PropertyChangeListener listener) { + propertyChangeSupport.addPropertyChangeListener(listener); + } - public void addPropertyChangeListener(String propertyName, - PropertyChangeListener listener) { - propertyChangeSupport.addPropertyChangeListener(propertyName, - listener); - } + public void addPropertyChangeListener(String propertyName, + PropertyChangeListener listener) { + propertyChangeSupport.addPropertyChangeListener(propertyName, + listener); + } - public void removePropertyChangeListener(PropertyChangeListener listener) { - propertyChangeSupport.removePropertyChangeListener(listener); - } + public void removePropertyChangeListener(PropertyChangeListener listener) { + propertyChangeSupport.removePropertyChangeListener(listener); + } - public void removePropertyChangeListener(String propertyName, - PropertyChangeListener listener) { - propertyChangeSupport.removePropertyChangeListener(propertyName, - listener); - } + public void removePropertyChangeListener(String propertyName, + PropertyChangeListener listener) { + propertyChangeSupport.removePropertyChangeListener(propertyName, + listener); + } - protected void firePropertyChange(String propertyName, Object oldValue, - Object newValue) { - propertyChangeSupport.firePropertyChange(propertyName, oldValue, - newValue); - } - } + protected void firePropertyChange(String propertyName, Object oldValue, + Object newValue) { + propertyChangeSupport.firePropertyChange(propertyName, oldValue, + newValue); + } + } - // The data model class. - static class Person extends AbstractModelObject { - private String name; - private Set friends = new HashSet(); + // The data model class. + static class Person extends AbstractModelObject { + private String name; + private Set friends = new HashSet(); - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - firePropertyChange("name", this.name, this.name = name); - } + public void setName(String name) { + firePropertyChange("name", this.name, this.name = name); + } - public Set getFriends() { - return new HashSet(friends); - } + public Set getFriends() { + return new HashSet(friends); + } - public void setFriends(Set friends) { - firePropertyChange("friends", this.friends, - this.friends = new HashSet(friends)); - } + public void setFriends(Set friends) { + firePropertyChange("friends", this.friends, + this.friends = new HashSet(friends)); + } - public String toString() { - return name; - } - } + public String toString() { + return name; + } + } - // The View's model--the root of our Model graph for this particular GUI. - // - // Typically each View class has a corresponding ViewModel class. - // - // The ViewModel is responsible for getting the objects to edit from the - // data access tier. Since this snippet doesn't have any persistent objects - // to retrieve, this ViewModel just instantiates a model object to edit. - static class ViewModel extends AbstractModelObject { - private List people = new ArrayList(); + // The View's model--the root of our Model graph for this particular GUI. + // + // Typically each View class has a corresponding ViewModel class. + // + // The ViewModel is responsible for getting the objects to edit from the + // data access tier. Since this snippet doesn't have any persistent objects + // to retrieve, this ViewModel just instantiates a model object to edit. + static class ViewModel extends AbstractModelObject { + private List people = new ArrayList(); - public List getPeople() { - return new ArrayList(people); - } + public List getPeople() { + return new ArrayList(people); + } - public void setPeople(List people) { - firePropertyChange("people", this.people, - this.people = new ArrayList(people)); - } - } + public void setPeople(List people) { + firePropertyChange("people", this.people, + this.people = new ArrayList(people)); + } + } - // The GUI view - static class View { - private ViewModel viewModel; + // The GUI view + static class View { + private ViewModel viewModel; - private Shell shell; + private Shell shell; - private Button addPersonButton; - private Button removePersonButton; - private TableViewer peopleViewer; - private Text personName; - private CheckboxTableViewer friendsViewer; + private Button addPersonButton; + private Button removePersonButton; + private TableViewer peopleViewer; + private Text personName; + private CheckboxTableViewer friendsViewer; - public View(ViewModel viewModel) { - this.viewModel = viewModel; - } + public View(ViewModel viewModel) { + this.viewModel = viewModel; + } - public Shell createShell() { - // Build a UI - final Display display = Display.getCurrent(); - shell = new Shell(display); + public Shell createShell() { + // Build a UI + final Display display = Display.getCurrent(); + shell = new Shell(display); + + createUI(shell); - createUI(shell); - - // Bind UI - bindUI(); + // Bind UI + bindUI(); - // Open and return the Shell - shell.setSize(shell.computeSize(400, SWT.DEFAULT)); - shell.open(); - return shell; - } + // Open and return the Shell + shell.setSize(shell.computeSize(400, SWT.DEFAULT)); + shell.open(); + return shell; + } + + private void createUI(Shell shell) { + shell.setText("Binding checked elements in CheckboxTableViewer"); + shell.setLayout(new GridLayout(2, false)); + + new Label(shell, SWT.NONE).setText("People"); - private void createUI(Shell shell) { - shell.setText("Binding checked elements in CheckboxTableViewer"); - shell.setLayout(new GridLayout(2, false)); - - new Label(shell, SWT.NONE).setText("People"); + Composite buttons = new Composite(shell, SWT.NONE); + GridDataFactory.swtDefaults().align(SWT.RIGHT, SWT.CENTER).applyTo( + buttons); + GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(true) + .applyTo(buttons); + addPersonButton = new Button(buttons, SWT.PUSH); + addPersonButton.setText("Add"); + GridDataFactory.fillDefaults().applyTo(addPersonButton); + removePersonButton = new Button(buttons, SWT.PUSH); + removePersonButton.setText("Remove"); + GridDataFactory.fillDefaults().applyTo(removePersonButton); - Composite buttons = new Composite(shell, SWT.NONE); - GridDataFactory.swtDefaults().align(SWT.RIGHT, SWT.CENTER).applyTo( - buttons); - GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(true) - .applyTo(buttons); - addPersonButton = new Button(buttons, SWT.PUSH); - addPersonButton.setText("Add"); - GridDataFactory.fillDefaults().applyTo(addPersonButton); - removePersonButton = new Button(buttons, SWT.PUSH); - removePersonButton.setText("Remove"); - GridDataFactory.fillDefaults().applyTo(removePersonButton); + Composite peopleComposite = new Composite(shell, SWT.NONE); + GridDataFactory.fillDefaults().grab(true, true).span(2, 1).applyTo( + peopleComposite); + TableColumnLayout peopleColumnLayout = new TableColumnLayout(); + peopleComposite.setLayout(peopleColumnLayout); + + peopleViewer = new TableViewer(peopleComposite, SWT.SINGLE + | SWT.BORDER | SWT.FULL_SELECTION); - Composite peopleComposite = new Composite(shell, SWT.NONE); - GridDataFactory.fillDefaults().grab(true, true).span(2, 1).applyTo( - peopleComposite); - TableColumnLayout peopleColumnLayout = new TableColumnLayout(); - peopleComposite.setLayout(peopleColumnLayout); + Table peopleTable = peopleViewer.getTable(); + peopleTable.setHeaderVisible(true); + peopleTable.setLinesVisible(true); - peopleViewer = new TableViewer(peopleComposite, SWT.SINGLE - | SWT.BORDER | SWT.FULL_SELECTION); + TableColumn nameColumn = new TableColumn(peopleTable, SWT.NONE); + nameColumn.setText("Name"); + peopleColumnLayout.setColumnData(nameColumn, + new ColumnWeightData(1)); - Table peopleTable = peopleViewer.getTable(); - peopleTable.setHeaderVisible(true); - peopleTable.setLinesVisible(true); + TableColumn friendsColumn = new TableColumn(peopleTable, SWT.NONE); + friendsColumn.setText("Friends"); + peopleColumnLayout.setColumnData(friendsColumn, + new ColumnWeightData(3)); - TableColumn nameColumn = new TableColumn(peopleTable, SWT.NONE); - nameColumn.setText("Name"); - peopleColumnLayout.setColumnData(nameColumn, - new ColumnWeightData(1)); + new Label(shell, SWT.NONE).setText("Name"); + + personName = new Text(shell, SWT.BORDER); + GridDataFactory.fillDefaults().grab(true, false) + .applyTo(personName); - TableColumn friendsColumn = new TableColumn(peopleTable, SWT.NONE); - friendsColumn.setText("Friends"); - peopleColumnLayout.setColumnData(friendsColumn, - new ColumnWeightData(3)); + new Label(shell, SWT.NONE).setText("Friends"); - new Label(shell, SWT.NONE).setText("Name"); - - personName = new Text(shell, SWT.BORDER); - GridDataFactory.fillDefaults().grab(true, false) - .applyTo(personName); + Composite friendsComposite = new Composite(shell, SWT.NONE); + GridDataFactory.fillDefaults().grab(true, true).applyTo( + friendsComposite); + TableColumnLayout friendsColumnLayout = new TableColumnLayout(); + friendsComposite.setLayout(friendsColumnLayout); - new Label(shell, SWT.NONE).setText("Friends"); + friendsViewer = CheckboxTableViewer.newCheckList(friendsComposite, + SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION); - Composite friendsComposite = new Composite(shell, SWT.NONE); - GridDataFactory.fillDefaults().grab(true, true).applyTo( - friendsComposite); - TableColumnLayout friendsColumnLayout = new TableColumnLayout(); - friendsComposite.setLayout(friendsColumnLayout); - - friendsViewer = CheckboxTableViewer.newCheckList(friendsComposite, - SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION); + Table friendsTable = friendsViewer.getTable(); + friendsTable.setHeaderVisible(true); + friendsTable.setLinesVisible(true); + TableColumn friendNameColumn = new TableColumn(friendsTable, + SWT.NONE); + friendNameColumn.setText("Name"); + friendsColumnLayout.setColumnData(friendNameColumn, + new ColumnWeightData(1)); - Table friendsTable = friendsViewer.getTable(); - friendsTable.setHeaderVisible(true); - friendsTable.setLinesVisible(true); - TableColumn friendNameColumn = new TableColumn(friendsTable, - SWT.NONE); - friendNameColumn.setText("Name"); - friendsColumnLayout.setColumnData(friendNameColumn, - new ColumnWeightData(1)); + GridDataFactory.fillDefaults().grab(true, true).applyTo( + friendsViewer.getTable()); + } - GridDataFactory.fillDefaults().grab(true, true).applyTo( - friendsViewer.getTable()); - } + private void bindUI() { + DataBindingContext dbc = new DataBindingContext(); - private void bindUI() { - DataBindingContext dbc = new DataBindingContext(); - - final IObservableList people = BeansObservables.observeList(Realm - .getDefault(), viewModel, "people"); + final IObservableList people = BeansObservables.observeList(Realm + .getDefault(), viewModel, "people"); - addPersonButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - InputDialog dlg = new InputDialog(shell, "Add Person", - "Enter name:", "<Name>", new IInputValidator() { - public String isValid(String newText) { - if (newText == null - || newText.length() == 0) - return "Name cannot be empty"; - return null; - } - }); - if (dlg.open() == Window.OK) { - Person person = new Person(); - person.setName(dlg.getValue()); - people.add(person); - peopleViewer.setSelection(new StructuredSelection( - person)); - } - } - }); + addPersonButton.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event event) { + InputDialog dlg = new InputDialog(shell, "Add Person", + "Enter name:", "<Name>", new IInputValidator() { + public String isValid(String newText) { + if (newText == null + || newText.length() == 0) + return "Name cannot be empty"; + return null; + } + }); + if (dlg.open() == Window.OK) { + Person person = new Person(); + person.setName(dlg.getValue()); + people.add(person); + peopleViewer.setSelection(new StructuredSelection( + person)); + } + } + }); - removePersonButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - IStructuredSelection selected = (IStructuredSelection) peopleViewer - .getSelection(); - if (selected.isEmpty()) - return; - Person person = (Person) selected.getFirstElement(); - if (MessageDialog.openConfirm(shell, "Remove person", - "Remove " + person.getName() + "?")) - people.remove(person); - } - }); + removePersonButton.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event event) { + IStructuredSelection selected = (IStructuredSelection) peopleViewer + .getSelection(); + if (selected.isEmpty()) + return; + Person person = (Person) selected.getFirstElement(); + if (MessageDialog.openConfirm(shell, "Remove person", + "Remove " + person.getName() + "?")) + people.remove(person); + } + }); - ViewerSupport.bind(peopleViewer, people, BeanProperties.values( - Person.class, new String[] { "name", "friends" })); + ViewerSupport.bind(peopleViewer, people, BeanProperties.values( + Person.class, new String[] { "name", "friends" })); - final IObservableValue selectedPerson = ViewersObservables - .observeSingleSelection(peopleViewer); + final IObservableValue selectedPerson = ViewersObservables + .observeSingleSelection(peopleViewer); - IObservableValue personSelected = new ComputedValue(Boolean.TYPE) { - protected Object calculate() { - return Boolean.valueOf(selectedPerson.getValue() != null); - } - }; - dbc.bindValue(SWTObservables.observeEnabled(removePersonButton), - personSelected); - dbc.bindValue(SWTObservables.observeEnabled(friendsViewer - .getTable()), personSelected); + IObservableValue personSelected = new ComputedValue(bool.TYPE) { + protected Object calculate() { + return bool.valueOf(selectedPerson.getValue() != null); + } + }; + dbc.bindValue(SWTObservables.observeEnabled(removePersonButton), + personSelected); + dbc.bindValue(SWTObservables.observeEnabled(friendsViewer + .getTable()), personSelected); - dbc.bindValue(SWTObservables.observeText(personName, SWT.Modify), - BeansObservables.observeDetailValue(selectedPerson, "name", - String.class)); + dbc.bindValue(SWTObservables.observeText(personName, SWT.Modify), + BeansObservables.observeDetailValue(selectedPerson, "name", + String.class)); - ViewerSupport.bind(friendsViewer, people, BeanProperties.value( - Person.class, "name")); + ViewerSupport.bind(friendsViewer, people, BeanProperties.value( + Person.class, "name")); - dbc.bindSet(ViewersObservables.observeCheckedElements( - friendsViewer, Person.class), BeansObservables - .observeDetailSet(selectedPerson, "friends", Person.class)); - } - } -} \ No newline at end of file + dbc.bindSet(ViewersObservables.observeCheckedElements( + friendsViewer, Person.class), BeansObservables + .observeDetailSet(selectedPerson, "friends", Person.class)); + } + } +} +void main( String[] args ){ + Snippet018CheckboxTableViewerCheckedSelection.main(args); +}