Mercurial > projects > dwt2
annotate 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 |
rev | line source |
---|---|
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1 /******************************************************************************* |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2 * Copyright (c) 2008 Matthew Hall and others. |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 * which accompanies this distribution, and is available at |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 * http://www.eclipse.org/legal/epl-v10.html |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 * |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 * Contributors: |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 * Matthew Hall - initial API and implementation (bug 124684) |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
10 * Matthew Hall - bugs 260329, 260337 |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 ******************************************************************************/ |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
13 module org.eclipse.jface.examples.databinding.snippets.Snippet018CheckboxTableViewerCheckedSelection; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
14 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
15 import java.lang.all; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
16 |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 import java.beans.PropertyChangeListener; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 import java.beans.PropertyChangeSupport; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 import java.util.ArrayList; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 import java.util.Arrays; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 import java.util.HashSet; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 import java.util.List; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 import java.util.Set; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 import org.eclipse.core.databinding.DataBindingContext; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 import org.eclipse.core.databinding.beans.BeanProperties; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 import org.eclipse.core.databinding.beans.BeansObservables; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 import org.eclipse.core.databinding.observable.Realm; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 import org.eclipse.core.databinding.observable.list.IObservableList; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 import org.eclipse.core.databinding.observable.value.ComputedValue; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 import org.eclipse.core.databinding.observable.value.IObservableValue; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 import org.eclipse.jface.databinding.swt.SWTObservables; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 import org.eclipse.jface.databinding.viewers.ViewerSupport; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 import org.eclipse.jface.databinding.viewers.ViewersObservables; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
35 import org.eclipse.jface.dialogs.IInputValidator; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
36 import org.eclipse.jface.dialogs.InputDialog; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
37 import org.eclipse.jface.dialogs.MessageDialog; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 import org.eclipse.jface.layout.GridDataFactory; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 import org.eclipse.jface.layout.GridLayoutFactory; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 import org.eclipse.jface.layout.TableColumnLayout; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 import org.eclipse.jface.viewers.CheckboxTableViewer; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 import org.eclipse.jface.viewers.ColumnWeightData; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 import org.eclipse.jface.viewers.IStructuredSelection; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
44 import org.eclipse.jface.viewers.StructuredSelection; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
45 import org.eclipse.jface.viewers.TableViewer; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 import org.eclipse.jface.window.Window; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 import org.eclipse.swt.SWT; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 import org.eclipse.swt.layout.GridLayout; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
49 import org.eclipse.swt.widgets.Button; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 import org.eclipse.swt.widgets.Composite; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
51 import org.eclipse.swt.widgets.Display; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
52 import org.eclipse.swt.widgets.Event; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
53 import org.eclipse.swt.widgets.Label; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 import org.eclipse.swt.widgets.Listener; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
55 import org.eclipse.swt.widgets.Shell; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
56 import org.eclipse.swt.widgets.Table; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
57 import org.eclipse.swt.widgets.TableColumn; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
58 import org.eclipse.swt.widgets.Text; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
59 |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
60 /** |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 * Snippet 018: Binding to the checked elements in a CheckboxTableViewer. |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
62 */ |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
63 public class Snippet018CheckboxTableViewerCheckedSelection { |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
64 public static void main(String[] args) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
65 // The SWT event loop |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
66 final Display display = Display.getDefault(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
67 Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
68 public void run() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
69 ViewModel viewModel = createSampleModel(); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
71 Shell shell = new View(viewModel).createShell(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
72 shell.open(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
73 while (!shell.isDisposed()) |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
74 if (!display.readAndDispatch()) |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
75 display.sleep(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
76 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
77 }); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
78 display.dispose(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
79 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
80 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
81 private static ViewModel createSampleModel() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
82 ViewModel viewModel = new ViewModel(); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
83 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
84 Person stan = createPerson("Stan"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
85 Person kyle = createPerson("Kyle"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
86 Person eric = createPerson("Eric"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
87 Person kenny = createPerson("Kenny"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
88 Person wendy = createPerson("Wendy"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
89 Person butters = createPerson("Butters"); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
90 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
91 setFriends(stan, new Person[] { kyle, eric, kenny, wendy }); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
92 setFriends(kyle, new Person[] { stan, eric, kenny }); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
93 setFriends(eric, new Person[] { eric }); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
94 setFriends(kenny, new Person[] { stan, kyle, eric }); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
95 setFriends(wendy, new Person[] { stan }); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
96 setFriends(butters, new Person[0]); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
97 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
98 Person[] people = new Person[] { stan, kyle, eric, kenny, wendy, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
99 butters }; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
100 viewModel.setPeople(Arrays.asList(people)); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
101 return viewModel; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
102 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
103 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
104 private static Person createPerson(String name) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
105 Person person = new Person(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
106 person.setName(name); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
107 return person; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
108 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
109 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
110 private static void setFriends(Person person, Person[] friends) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
111 person.setFriends(new HashSet(Arrays.asList(friends))); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
112 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
113 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
114 // Minimal JavaBeans support |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
115 public static abstract class AbstractModelObject { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
116 private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport( |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
117 this); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
119 public void addPropertyChangeListener(PropertyChangeListener listener) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
120 propertyChangeSupport.addPropertyChangeListener(listener); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
121 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
123 public void addPropertyChangeListener(String propertyName, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
124 PropertyChangeListener listener) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
125 propertyChangeSupport.addPropertyChangeListener(propertyName, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
126 listener); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
127 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
128 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
129 public void removePropertyChangeListener(PropertyChangeListener listener) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
130 propertyChangeSupport.removePropertyChangeListener(listener); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
131 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
132 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
133 public void removePropertyChangeListener(String propertyName, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
134 PropertyChangeListener listener) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
135 propertyChangeSupport.removePropertyChangeListener(propertyName, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
136 listener); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
137 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
138 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
139 protected void firePropertyChange(String propertyName, Object oldValue, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
140 Object newValue) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
141 propertyChangeSupport.firePropertyChange(propertyName, oldValue, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
142 newValue); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
143 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
144 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
145 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
146 // The data model class. |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
147 static class Person extends AbstractModelObject { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
148 private String name; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
149 private Set friends = new HashSet(); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
150 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
151 public String getName() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
152 return name; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
153 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
154 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
155 public void setName(String name) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
156 firePropertyChange("name", this.name, this.name = name); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
157 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
158 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
159 public Set getFriends() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
160 return new HashSet(friends); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
161 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
162 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
163 public void setFriends(Set friends) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
164 firePropertyChange("friends", this.friends, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
165 this.friends = new HashSet(friends)); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
166 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
167 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
168 public String toString() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
169 return name; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
170 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
171 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
172 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
173 // The View's model--the root of our Model graph for this particular GUI. |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
174 // |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
175 // Typically each View class has a corresponding ViewModel class. |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
176 // |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
177 // The ViewModel is responsible for getting the objects to edit from the |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
178 // data access tier. Since this snippet doesn't have any persistent objects |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
179 // to retrieve, this ViewModel just instantiates a model object to edit. |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
180 static class ViewModel extends AbstractModelObject { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
181 private List people = new ArrayList(); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
182 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
183 public List getPeople() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
184 return new ArrayList(people); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
185 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
186 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
187 public void setPeople(List people) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
188 firePropertyChange("people", this.people, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
189 this.people = new ArrayList(people)); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
190 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
191 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
192 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
193 // The GUI view |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
194 static class View { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
195 private ViewModel viewModel; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
196 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
197 private Shell shell; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
198 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
199 private Button addPersonButton; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
200 private Button removePersonButton; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
201 private TableViewer peopleViewer; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
202 private Text personName; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
203 private CheckboxTableViewer friendsViewer; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
204 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
205 public View(ViewModel viewModel) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
206 this.viewModel = viewModel; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
207 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
208 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
209 public Shell createShell() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
210 // Build a UI |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
211 final Display display = Display.getCurrent(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
212 shell = new Shell(display); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
213 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
214 createUI(shell); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
215 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
216 // Bind UI |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
217 bindUI(); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
218 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
219 // Open and return the Shell |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
220 shell.setSize(shell.computeSize(400, SWT.DEFAULT)); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
221 shell.open(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
222 return shell; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
223 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
224 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
225 private void createUI(Shell shell) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
226 shell.setText("Binding checked elements in CheckboxTableViewer"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
227 shell.setLayout(new GridLayout(2, false)); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
228 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
229 new Label(shell, SWT.NONE).setText("People"); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
230 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
231 Composite buttons = new Composite(shell, SWT.NONE); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
232 GridDataFactory.swtDefaults().align(SWT.RIGHT, SWT.CENTER).applyTo( |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
233 buttons); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
234 GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(true) |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
235 .applyTo(buttons); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
236 addPersonButton = new Button(buttons, SWT.PUSH); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
237 addPersonButton.setText("Add"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
238 GridDataFactory.fillDefaults().applyTo(addPersonButton); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
239 removePersonButton = new Button(buttons, SWT.PUSH); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
240 removePersonButton.setText("Remove"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
241 GridDataFactory.fillDefaults().applyTo(removePersonButton); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
242 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
243 Composite peopleComposite = new Composite(shell, SWT.NONE); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
244 GridDataFactory.fillDefaults().grab(true, true).span(2, 1).applyTo( |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
245 peopleComposite); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
246 TableColumnLayout peopleColumnLayout = new TableColumnLayout(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
247 peopleComposite.setLayout(peopleColumnLayout); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
248 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
249 peopleViewer = new TableViewer(peopleComposite, SWT.SINGLE |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
250 | SWT.BORDER | SWT.FULL_SELECTION); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
251 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
252 Table peopleTable = peopleViewer.getTable(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
253 peopleTable.setHeaderVisible(true); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
254 peopleTable.setLinesVisible(true); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
255 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
256 TableColumn nameColumn = new TableColumn(peopleTable, SWT.NONE); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
257 nameColumn.setText("Name"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
258 peopleColumnLayout.setColumnData(nameColumn, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
259 new ColumnWeightData(1)); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
260 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
261 TableColumn friendsColumn = new TableColumn(peopleTable, SWT.NONE); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
262 friendsColumn.setText("Friends"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
263 peopleColumnLayout.setColumnData(friendsColumn, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
264 new ColumnWeightData(3)); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
265 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
266 new Label(shell, SWT.NONE).setText("Name"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
267 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
268 personName = new Text(shell, SWT.BORDER); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
269 GridDataFactory.fillDefaults().grab(true, false) |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
270 .applyTo(personName); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
271 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
272 new Label(shell, SWT.NONE).setText("Friends"); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
273 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
274 Composite friendsComposite = new Composite(shell, SWT.NONE); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
275 GridDataFactory.fillDefaults().grab(true, true).applyTo( |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
276 friendsComposite); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
277 TableColumnLayout friendsColumnLayout = new TableColumnLayout(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
278 friendsComposite.setLayout(friendsColumnLayout); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
279 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
280 friendsViewer = CheckboxTableViewer.newCheckList(friendsComposite, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
281 SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
282 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
283 Table friendsTable = friendsViewer.getTable(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
284 friendsTable.setHeaderVisible(true); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
285 friendsTable.setLinesVisible(true); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
286 TableColumn friendNameColumn = new TableColumn(friendsTable, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
287 SWT.NONE); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
288 friendNameColumn.setText("Name"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
289 friendsColumnLayout.setColumnData(friendNameColumn, |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
290 new ColumnWeightData(1)); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
291 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
292 GridDataFactory.fillDefaults().grab(true, true).applyTo( |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
293 friendsViewer.getTable()); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
294 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
295 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
296 private void bindUI() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
297 DataBindingContext dbc = new DataBindingContext(); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
298 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
299 final IObservableList people = BeansObservables.observeList(Realm |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
300 .getDefault(), viewModel, "people"); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
301 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
302 addPersonButton.addListener(SWT.Selection, new Listener() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
303 public void handleEvent(Event event) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
304 InputDialog dlg = new InputDialog(shell, "Add Person", |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
305 "Enter name:", "<Name>", new IInputValidator() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
306 public String isValid(String newText) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
307 if (newText == null |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
308 || newText.length() == 0) |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
309 return "Name cannot be empty"; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
310 return null; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
311 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
312 }); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
313 if (dlg.open() == Window.OK) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
314 Person person = new Person(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
315 person.setName(dlg.getValue()); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
316 people.add(person); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
317 peopleViewer.setSelection(new StructuredSelection( |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
318 person)); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
319 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
320 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
321 }); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
322 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
323 removePersonButton.addListener(SWT.Selection, new Listener() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
324 public void handleEvent(Event event) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
325 IStructuredSelection selected = (IStructuredSelection) peopleViewer |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
326 .getSelection(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
327 if (selected.isEmpty()) |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
328 return; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
329 Person person = (Person) selected.getFirstElement(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
330 if (MessageDialog.openConfirm(shell, "Remove person", |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
331 "Remove " + person.getName() + "?")) |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
332 people.remove(person); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
333 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
334 }); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
335 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
336 ViewerSupport.bind(peopleViewer, people, BeanProperties.values( |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
337 Person.class, new String[] { "name", "friends" })); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
338 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
339 final IObservableValue selectedPerson = ViewersObservables |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
340 .observeSingleSelection(peopleViewer); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
341 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
342 IObservableValue personSelected = new ComputedValue(bool.TYPE) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
343 protected Object calculate() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
344 return bool.valueOf(selectedPerson.getValue() != null); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
345 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
346 }; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
347 dbc.bindValue(SWTObservables.observeEnabled(removePersonButton), |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
348 personSelected); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
349 dbc.bindValue(SWTObservables.observeEnabled(friendsViewer |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
350 .getTable()), personSelected); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
351 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
352 dbc.bindValue(SWTObservables.observeText(personName, SWT.Modify), |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
353 BeansObservables.observeDetailValue(selectedPerson, "name", |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
354 String.class)); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
355 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
356 ViewerSupport.bind(friendsViewer, people, BeanProperties.value( |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
357 Person.class, "name")); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
358 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
359 dbc.bindSet(ViewersObservables.observeCheckedElements( |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
360 friendsViewer, Person.class), BeansObservables |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
361 .observeDetailSet(selectedPerson, "friends", Person.class)); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
362 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
363 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
364 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
365 void main( String[] args ){ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
366 Snippet018CheckboxTableViewerCheckedSelection.main(args); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
367 } |