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);
+}