Skip to content

Commit 99e2423

Browse files
committed
updates
1 parent 9780e4d commit 99e2423

File tree

7 files changed

+136
-7
lines changed

7 files changed

+136
-7
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="src"/>
4+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
5+
<classpathentry kind="output" path="bin"/>
6+
</classpath>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>com.vogella.java.designpattern.observer</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
</buildSpec>
14+
<natures>
15+
<nature>org.eclipse.jdt.core.javanature</nature>
16+
</natures>
17+
</projectDescription>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
eclipse.preferences.version=1
2+
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
4+
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5+
org.eclipse.jdt.core.compiler.compliance=1.7
6+
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7+
org.eclipse.jdt.core.compiler.debug.localVariable=generate
8+
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9+
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10+
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11+
org.eclipse.jdt.core.compiler.source=1.7
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.vogella.java.designpattern.observer;
2+
3+
import com.vogella.java.designpattern.observer.MyModel.Person;
4+
5+
public class Main {
6+
7+
8+
public static void main(String[] args) {
9+
MyModel model = new MyModel();
10+
// We change the last name of the person, observer will get notified
11+
for (Person person : model.getPersons()) {
12+
person.setLastName(person.getLastName() + "new");
13+
}
14+
// We change the first name of the person, observer will get notified
15+
for (Person person : model.getPersons()) {
16+
person.setLastName(person.getFirstName() + "new");
17+
}
18+
}
19+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.vogella.java.designpattern.observer;
2+
3+
import java.beans.PropertyChangeListener;
4+
import java.util.ArrayList;
5+
import java.util.Iterator;
6+
import java.util.List;
7+
8+
public class MyModel {
9+
10+
private List<Person> persons = new ArrayList<Person>();
11+
private List<PropertyChangeListener> listener = new ArrayList<PropertyChangeListener>();
12+
13+
public class Person {
14+
15+
private String firstName;
16+
17+
private String lastName;
18+
19+
public Person(String firstName, String lastName) {
20+
this.firstName = firstName;
21+
this.lastName = lastName;
22+
}
23+
24+
public String getFirstName() {
25+
26+
return firstName;
27+
}
28+
29+
public void setFirstName(String firstName) {
30+
this.firstName = firstName;
31+
notifyListeners();
32+
}
33+
34+
public String getLastName() {
35+
return lastName;
36+
}
37+
38+
public void setLastName(String lastName) {
39+
this.lastName = lastName;
40+
notifyListeners();
41+
}
42+
}
43+
44+
public List<Person> getPersons() {
45+
return persons;
46+
}
47+
48+
public MyModel() {
49+
// Just for testing we hard-code the persons here:
50+
persons.add(new Person("Lars", "Vogel"));
51+
persons.add(new Person("Jim", "Knopf"));
52+
}
53+
54+
private void notifyListeners() {
55+
for (PropertyChangeListener name : listener) {
56+
name.propertyChange(null);
57+
}
58+
}
59+
60+
public void addChangeListener(PropertyChangeListener newListener) {
61+
listener.add(newListener);
62+
}
63+
64+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.vogella.java.designpattern.observer;
2+
3+
import java.beans.PropertyChangeEvent;
4+
import java.beans.PropertyChangeListener;
5+
6+
public class MyObserver implements PropertyChangeListener {
7+
public MyObserver(MyModel model) {
8+
model.addChangeListener(this);
9+
}
10+
11+
@Override
12+
public void propertyChange(PropertyChangeEvent arg0) {
13+
System.out.println("Things are changing...");
14+
}
15+
}

de.vogella.databinding.windowbuilder.example/src/phonebook/PhoneBook.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public class PhoneBook {
5858
private Button newPersonButton;
5959
private Button deletePersonButton;
6060
private DataBindingContext m_bindingContext;
61+
private Label label;
6162

6263
/**
6364
* Launch the application
@@ -289,7 +290,7 @@ public void widgetSelected(SelectionEvent e) {
289290
descriptionLabel.setText("Description:");
290291
new Label(detailComposite, SWT.NONE);
291292

292-
final Label label = new Label(detailComposite, SWT.NONE);
293+
label = new Label(detailComposite, SWT.NONE);
293294
label.setText("Name:");
294295

295296
m_nameText = new Text(detailComposite, SWT.BORDER);
@@ -338,17 +339,13 @@ protected DataBindingContext initDataBindings() {
338339
//
339340
IObservableList groupsGroupsObserveList = BeanProperties.list("groups").observe(m_groups);
340341
m_groupViewer.setInput(groupsGroupsObserveList);
341-
//
342-
ObservableListContentProvider listContentProvider_1 = new ObservableListContentProvider();
343-
IObservableMap[] observeMaps = BeansObservables.observeMaps(listContentProvider_1.getKnownElements(), Person.class, new String[]{"name", "phone", "mobilePhone2", "mobilePhone1", "email"});
344-
m_personViewer.setLabelProvider(new ObservableMapLabelProvider(observeMaps));
345-
m_personViewer.setContentProvider(listContentProvider_1);
342+
346343
//
347344
IObservableValue observeSingleSelectionGroupViewer = ViewerProperties.singleSelection().observe(m_groupViewer);
348345
IObservableList groupViewerPersonsObserveDetailList = BeanProperties.list(PhoneGroup.class, "persons", Person.class).observeDetail(observeSingleSelectionGroupViewer);
349346
m_personViewer.setInput(groupViewerPersonsObserveDetailList);
350347
//
351-
IObservableValue observeTextNameTextObserveWidget = WidgetProperties.text(SWT.Modify).observe(m_nameText);
348+
IObservableValue observeTextNameTextObserveWidget = WidgetProperties.text(SWT.Modify).observeDelayed(2000, m_nameText);
352349
IObservableValue observeSingleSelectionPersonViewer = ViewerProperties.singleSelection().observe(m_personViewer);
353350
IObservableValue personViewerNameObserveDetailValue = BeanProperties.value(Person.class, "name", String.class).observeDetail(observeSingleSelectionPersonViewer);
354351
bindingContext.bindValue(observeTextNameTextObserveWidget, personViewerNameObserveDetailValue, null, null);

0 commit comments

Comments
 (0)