|
Lines 7-20
Link Here
|
| 7 |
* |
7 |
* |
| 8 |
* Contributors: |
8 |
* Contributors: |
| 9 |
* Matthew Hall - initial API and implementation (bug 175735) |
9 |
* Matthew Hall - initial API and implementation (bug 175735) |
|
|
10 |
* Matthew Hall - bug 262407 |
| 10 |
******************************************************************************/ |
11 |
******************************************************************************/ |
| 11 |
|
12 |
|
| 12 |
package org.eclipse.jface.examples.databinding.snippets; |
13 |
package org.eclipse.jface.examples.databinding.snippets; |
| 13 |
|
14 |
|
| 14 |
import java.beans.PropertyChangeListener; |
15 |
import java.beans.PropertyChangeListener; |
| 15 |
import java.beans.PropertyChangeSupport; |
16 |
import java.beans.PropertyChangeSupport; |
| 16 |
import java.util.Collection; |
|
|
| 17 |
import java.util.Iterator; |
| 18 |
|
17 |
|
| 19 |
import org.eclipse.core.databinding.DataBindingContext; |
18 |
import org.eclipse.core.databinding.DataBindingContext; |
| 20 |
import org.eclipse.core.databinding.beans.BeanProperties; |
19 |
import org.eclipse.core.databinding.beans.BeanProperties; |
|
Lines 28-34
Link Here
|
| 28 |
import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; |
27 |
import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; |
| 29 |
import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; |
28 |
import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; |
| 30 |
import org.eclipse.jface.databinding.viewers.ViewerProperties; |
29 |
import org.eclipse.jface.databinding.viewers.ViewerProperties; |
| 31 |
import org.eclipse.jface.util.Util; |
|
|
| 32 |
import org.eclipse.jface.viewers.StructuredSelection; |
30 |
import org.eclipse.jface.viewers.StructuredSelection; |
| 33 |
import org.eclipse.jface.viewers.TableViewer; |
31 |
import org.eclipse.jface.viewers.TableViewer; |
| 34 |
import org.eclipse.swt.SWT; |
32 |
import org.eclipse.swt.SWT; |
|
Lines 286-321
Link Here
|
| 286 |
IObservableList selections = ViewerProperties.multipleSelection() |
284 |
IObservableList selections = ViewerProperties.multipleSelection() |
| 287 |
.observe(viewer); |
285 |
.observe(viewer); |
| 288 |
dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(title), |
286 |
dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(title), |
| 289 |
new StringDuplexingObservableValue(BeanProperties |
287 |
DuplexingObservableValue.withDefaults(BeanProperties.value( |
| 290 |
.value("title").observeDetail(selections))); |
288 |
"title").observeDetail(selections), "", |
|
|
289 |
"<Multiple titles>")); |
| 291 |
dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(releaseDate), |
290 |
dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(releaseDate), |
| 292 |
new StringDuplexingObservableValue(BeanProperties.value( |
291 |
DuplexingObservableValue.withDefaults(BeanProperties.value( |
| 293 |
"releaseDate").observeDetail(selections))); |
292 |
"releaseDate").observeDetail(selections), "", |
|
|
293 |
"<Multiple dates>")); |
| 294 |
dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(director), |
294 |
dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(director), |
| 295 |
new StringDuplexingObservableValue(BeanProperties.value( |
295 |
DuplexingObservableValue.withDefaults(BeanProperties.value( |
| 296 |
"director").observeDetail(selections))); |
296 |
"director").observeDetail(selections), "", |
|
|
297 |
"<Multiple directors>")); |
| 297 |
dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(writer), |
298 |
dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(writer), |
| 298 |
new StringDuplexingObservableValue(BeanProperties.value( |
299 |
DuplexingObservableValue.withDefaults(BeanProperties.value( |
| 299 |
"writer").observeDetail(selections))); |
300 |
"writer").observeDetail(selections), "", |
| 300 |
} |
301 |
"<Multiple writers>")); |
| 301 |
|
|
|
| 302 |
private static class StringDuplexingObservableValue extends |
| 303 |
DuplexingObservableValue { |
| 304 |
|
| 305 |
public StringDuplexingObservableValue(IObservableList target) { |
| 306 |
super(target); |
| 307 |
} |
| 308 |
|
| 309 |
protected Object coalesceElements(Collection elements) { |
| 310 |
Iterator it = elements.iterator(); |
| 311 |
if (!it.hasNext()) |
| 312 |
return ""; |
| 313 |
Object first = it.next(); |
| 314 |
while (it.hasNext()) { |
| 315 |
if (!Util.equals(first, it.next())) |
| 316 |
return "<Multiple values>"; |
| 317 |
} |
| 318 |
return first; |
| 319 |
} |
| 320 |
} |
302 |
} |
| 321 |
} |
303 |
} |