annotate org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet010MasterDetail.d @ 125:c43718956f21 default tip

Updated the snippets status.
author Jacob Carlborg <doob@me.com>
date Thu, 11 Aug 2011 19:55:14 +0200
parents e884642ad36e
children
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) 2007 Brad Reynolds 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 * Brad Reynolds - initial API and implementation
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Matthew Hall - bug 260329
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.Snippet010MasterDetail;
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.UpdateValueStrategy;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import org.eclipse.core.databinding.beans.BeansObservables;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import org.eclipse.core.databinding.observable.Realm;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import org.eclipse.core.databinding.observable.value.IObservableValue;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import org.eclipse.jface.databinding.swt.SWTObservables;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import org.eclipse.jface.databinding.viewers.ViewersObservables;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import org.eclipse.jface.viewers.ArrayContentProvider;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import org.eclipse.jface.viewers.ListViewer;
100
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
29 import org.eclipse.jface.viewers.Viewer;
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import org.eclipse.swt.SWT;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import org.eclipse.swt.layout.GridLayout;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 import org.eclipse.swt.widgets.Display;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 import org.eclipse.swt.widgets.Shell;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 import org.eclipse.swt.widgets.Text;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 /**
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 * Snippet that displays a simple master detail use case. A list of persons is
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 * displayed in a list and upon selection the name of the selected person will
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * be displayed in a Text widget.
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 */
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 public class Snippet010MasterDetail {
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
42 public static void main(String[] args) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
43 final Display display = new Display();
100
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
44 Realm.runWithDefault(SWTObservables.getRealm(display), dgRunnable(() {
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
45 Shell shell = new Shell(display);
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
46 shell.setLayout(new GridLayout());
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47
100
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
48 Person[] persons = [ new Person("Me"),
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
49 new Person("Myself"), new Person("I") ];
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50
100
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
51 ListViewer viewer = new ListViewer(shell);
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
52 viewer.setContentProvider(new ArrayContentProvider!(Object)());
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
53 viewer.setInput(new ArrayWrapperObject(persons));
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54
100
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
55 Text name = new Text(shell, SWT.BORDER | SWT.READ_ONLY);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56
100
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
57 // 1. Observe changes in selection.
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
58 IObservableValue selection = ViewersObservables
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
59 .observeSingleSelection(cast(Viewer)viewer);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60
100
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
61 // 2. Observe the name property of the current selection.
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
62 IObservableValue detailObservable = BeansObservables
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
63 .observeDetailValue(SWTObservables.getRealm(display), selection, "name", Class.fromType!(String));
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64
100
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
65 // 3. Bind the Text widget to the name detail (selection's
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
66 // name).
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
67 (new DataBindingContext()).bindValue(SWTObservables.observeText(
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
68 name, SWT.None), detailObservable,
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
69 new UpdateValueStrategy(false,
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
70 UpdateValueStrategy.POLICY_NEVER), null);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71
100
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
72 shell.open();
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
73 while (!shell.isDisposed()) {
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
74 if (!display.readAndDispatch())
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
75 display.sleep();
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
76 }
100
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
77 }));
99
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 public static class Person {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
82 private String name;
100
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
83 private PropertyChangeSupport changeSupport;
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84
100
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
85 this(String name) {
e884642ad36e more work on examples
Frank Benoit <benoit@tionex.de>
parents: 99
diff changeset
86 changeSupport = new PropertyChangeSupport(this);
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
87 this.name = name;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
88 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
90 public void addPropertyChangeListener(PropertyChangeListener listener) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
91 changeSupport.addPropertyChangeListener(listener);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
92 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
93
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
94 public void removePropertyChangeListener(PropertyChangeListener listener) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
95 changeSupport.removePropertyChangeListener(listener);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
96 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
97
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
98 /**
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
99 * @return Returns the name.
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
100 */
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
101 public String getName() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
102 return name;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
103 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
105 public String toString() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
106 return name;
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 }
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 void main( String[] args ){
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
111 Snippet010MasterDetail.main(args);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
112 }