annotate org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet028DuplexingObservableValue.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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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) 2009 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 175735)
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Matthew Hall - bugs 262407, 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.Snippet028DuplexingObservableValue;
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
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import org.eclipse.core.databinding.DataBindingContext;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import org.eclipse.core.databinding.beans.BeanProperties;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import org.eclipse.core.databinding.observable.Realm;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import org.eclipse.core.databinding.observable.list.IObservableList;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import org.eclipse.core.databinding.observable.list.WritableList;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import org.eclipse.core.databinding.observable.value.DuplexingObservableValue;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import org.eclipse.jface.databinding.swt.SWTObservables;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import org.eclipse.jface.databinding.swt.WidgetProperties;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import org.eclipse.jface.databinding.viewers.ViewerSupport;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import org.eclipse.jface.databinding.viewers.ViewerProperties;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import org.eclipse.jface.viewers.StructuredSelection;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import org.eclipse.jface.viewers.TableViewer;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 import org.eclipse.swt.SWT;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 import org.eclipse.swt.layout.GridData;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 import org.eclipse.swt.layout.GridLayout;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 import org.eclipse.swt.widgets.Display;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 import org.eclipse.swt.widgets.Label;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 import org.eclipse.swt.widgets.Shell;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 import org.eclipse.swt.widgets.Table;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 import org.eclipse.swt.widgets.TableColumn;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 import org.eclipse.swt.widgets.Text;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 /**
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * @since 3.2
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 *
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 */
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 public class Snippet028DuplexingObservableValue {
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
47 protected Shell shell;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
48 private TableViewer viewer;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
49 private Table table;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
50 private Text releaseDate;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
51 private Text title;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
52 private Text director;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
53 private Text writer;
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
55 /**
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
56 * Launch the application
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
57 *
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
58 * @param args
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
59 */
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
60 public static void main(String[] args) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
61 try {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
62 Snippet028DuplexingObservableValue window = new Snippet028DuplexingObservableValue();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
63 window.open();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
64 } catch (Exception e) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
65 e.printStackTrace();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
66 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
67 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
69 /**
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
70 * Open the window
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
71 */
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
72 public void open() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
73 final Display display = Display.getDefault();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
74 Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
75 public void run() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
76 createContents();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
77 shell.open();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
78 shell.layout();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
79 while (!shell.isDisposed()) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
80 if (!display.readAndDispatch())
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
81 display.sleep();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
82 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
83 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
84 });
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
85 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
87 protected void createContents() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
88 shell = new Shell();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
89 shell.setSize(509, 375);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
90 shell.setText("Snippet028DuplexingObservableValue.java");
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
91 final GridLayout gridLayout = new GridLayout();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
92 gridLayout.makeColumnsEqualWidth = true;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
93 gridLayout.numColumns = 4;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
94 shell.setLayout(gridLayout);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
96 viewer = new TableViewer(shell, SWT.FULL_SELECTION | SWT.MULTI
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
97 | SWT.BORDER);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
98 table = viewer.getTable();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
99 table.setLinesVisible(true);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
100 table.setHeaderVisible(true);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
101 table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1));
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
103 final TableColumn newColumnTableColumn_1 = new TableColumn(table,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
104 SWT.NONE);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
105 newColumnTableColumn_1.setWidth(120);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
106 newColumnTableColumn_1.setText("Movie");
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
107
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
108 final TableColumn newColumnTableColumn = new TableColumn(table,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
109 SWT.NONE);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
111 newColumnTableColumn.setWidth(120);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
112 newColumnTableColumn.setText("Release Date");
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 final TableColumn newColumnTableColumn_2 = new TableColumn(table,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
115 SWT.NONE);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
116 newColumnTableColumn_2.setWidth(120);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
117 newColumnTableColumn_2.setText("Director");
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 final TableColumn newColumnTableColumn_3 = new TableColumn(table,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
120 SWT.NONE);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
121 newColumnTableColumn_3.setWidth(120);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
122 newColumnTableColumn_3.setText("Writer");
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
124 final Label movieLabel = new Label(shell, SWT.NONE);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
125 movieLabel.setText("Movie");
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
127 final Label directorLabel = new Label(shell, SWT.NONE);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
128 directorLabel.setLayoutData(new GridData());
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
129 directorLabel.setText("Release Date");
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
131 final Label producerLabel = new Label(shell, SWT.NONE);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
132 producerLabel.setText("Director");
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
134 final Label scoreLabel = new Label(shell, SWT.NONE);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
135 scoreLabel.setText("Writer");
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
137 title = new Text(shell, SWT.BORDER);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
138 final GridData gd_title = new GridData(SWT.FILL, SWT.CENTER, true,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
139 false);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
140 title.setLayoutData(gd_title);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
142 releaseDate = new Text(shell, SWT.BORDER);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
143 final GridData gd_releaseDate = new GridData(SWT.FILL, SWT.CENTER,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
144 true, false);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
145 releaseDate.setLayoutData(gd_releaseDate);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
147 director = new Text(shell, SWT.BORDER);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
148 final GridData gd_director = new GridData(SWT.FILL, SWT.CENTER, true,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
149 false);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
150 director.setLayoutData(gd_director);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
152 writer = new Text(shell, SWT.BORDER);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
153 final GridData gd_writer = new GridData(SWT.FILL, SWT.CENTER, true,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
154 false);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
155 writer.setLayoutData(gd_writer);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
157 bindUI();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
158 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
160 // Minimal JavaBeans support
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
161 public static abstract class AbstractModelObject {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
162 private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
163 this);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
165 public void addPropertyChangeListener(PropertyChangeListener listener) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
166 propertyChangeSupport.addPropertyChangeListener(listener);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
167 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
169 public void addPropertyChangeListener(String propertyName,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
170 PropertyChangeListener listener) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
171 propertyChangeSupport.addPropertyChangeListener(propertyName,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
172 listener);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
173 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
175 public void removePropertyChangeListener(PropertyChangeListener listener) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
176 propertyChangeSupport.removePropertyChangeListener(listener);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
177 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
179 public void removePropertyChangeListener(String propertyName,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
180 PropertyChangeListener listener) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
181 propertyChangeSupport.removePropertyChangeListener(propertyName,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
182 listener);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
183 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
185 protected void firePropertyChange(String propertyName, Object oldValue,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
186 Object newValue) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
187 propertyChangeSupport.firePropertyChange(propertyName, oldValue,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
188 newValue);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
189 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
190 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
192 public static class MovieInfo extends AbstractModelObject {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
193 private String title;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
194 private String releaseDate;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
195 private String director;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
196 private String writer;
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
198 public MovieInfo(String title, String releaseDate, String director,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
199 String writer) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
200 this.title = title;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
201 this.releaseDate = releaseDate;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
202 this.director = director;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
203 this.writer = writer;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
204 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
206 public String getTitle() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
207 return title;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
208 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
210 public void setTitle(String title) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
211 firePropertyChange("title", this.title, this.title = title);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
212 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
214 public String getReleaseDate() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
215 return releaseDate;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
216 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
218 public void setReleaseDate(String releaseDate) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
219 firePropertyChange("releaseDate", this.releaseDate,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
220 this.releaseDate = releaseDate);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
221 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
223 public String getDirector() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
224 return director;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
225 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
227 public void setDirector(String director) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
228 firePropertyChange("director", this.director,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
229 this.director = director);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
230 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
231
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
232 public String getWriter() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
233 return writer;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
234 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
236 public void setWriter(String writer) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
237 firePropertyChange("writer", this.writer, this.writer = writer);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
238 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
239 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
241 private void bindUI() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
242 IObservableList movies = new WritableList();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
243 movies.add(new MovieInfo("007: Quantum of Solace", "October 31, 2008",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
244 "Marc Forster", "Robert Wade"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
245 movies.add(new MovieInfo("Batman Begins", "June 15, 2005",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
246 "Christopher Nolan", "David S. Goyer"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
247 movies.add(new MovieInfo("Cloverfield", "January 18, 2008",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
248 "Matt Reeves", "Drew Goddard"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
249 movies.add(new MovieInfo("The Dark Knight", "July 18, 2008",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
250 "Christopher Nolan", "David S. Goyer"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
251 movies.add(new MovieInfo("Finding Nemo", "May 30, 2003",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
252 "Andrew Stanton", "Andrew Stanton"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
253 movies.add(new MovieInfo("Get Smart", "June 20, 2008", "Peter Segal",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
254 "Tom J. Astle"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
255 movies.add(new MovieInfo(
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
256 "Indiana Jones and the Kingdom of the Crystal Skull",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
257 "May 22, 2008", "Steven Spielberg", "Drunken Lemurs"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
258 movies.add(new MovieInfo("Iron Man", "May 2, 2008", "Jon Favreau",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
259 "Mark Fergus"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
260 movies.add(new MovieInfo("Raiders of the Lost Ark", "June 12, 1981",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
261 "Steven Spielberg", "George Lucas"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
262 movies.add(new MovieInfo("Valkyrie", "December 25, 2008",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
263 "Bryan Singer", "Christopher McQuarrie"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
264 movies.add(new MovieInfo("Wall-E", "June 27, 2008", "Andrew Stanton",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
265 "Andrew Stanton"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
266 movies.add(new MovieInfo("Wanted", "June 27, 2008",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
267 "Timur Bekmambetov", "Michael Brandt"));
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
269 ViewerSupport.bind(viewer, movies, BeanProperties.values(
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
270 MovieInfo.class, new String[] { "title", "releaseDate",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
271 "director", "writer" }));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
272
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
273 // Select Batman Begins and The Dark Knight, which have the same
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
274 // director and writer
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
275 viewer.setSelection(new StructuredSelection(new Object[] {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
276 movies.get(1), movies.get(3) }));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
277
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
278 DataBindingContext dbc = new DataBindingContext();
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 IObservableList selections = ViewerProperties.multipleSelection()
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
281 .observe(viewer);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
282 dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(title),
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
283 DuplexingObservableValue.withDefaults(BeanProperties.value(
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
284 "title").observeDetail(selections), "",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
285 "<Multiple titles>"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
286 dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(releaseDate),
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
287 DuplexingObservableValue.withDefaults(BeanProperties.value(
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
288 "releaseDate").observeDetail(selections), "",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
289 "<Multiple dates>"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
290 dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(director),
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
291 DuplexingObservableValue.withDefaults(BeanProperties.value(
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
292 "director").observeDetail(selections), "",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
293 "<Multiple directors>"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
294 dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(writer),
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
295 DuplexingObservableValue.withDefaults(BeanProperties.value(
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
296 "writer").observeDetail(selections), "",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
297 "<Multiple writers>"));
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
298 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 }
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
300 void main( String[] args ){
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
301 Snippet028DuplexingObservableValue.main(args);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
302 }