Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 213623
Collapse All | Expand All

(-)src/org/eclipse/jface/databinding/viewers/ViewersObservables.java (+44 lines)
Lines 18-23 Link Here
18
import org.eclipse.jface.internal.databinding.internal.viewers.SelectionProviderSingleSelectionObservableValue;
18
import org.eclipse.jface.internal.databinding.internal.viewers.SelectionProviderSingleSelectionObservableValue;
19
import org.eclipse.jface.viewers.ISelectionProvider;
19
import org.eclipse.jface.viewers.ISelectionProvider;
20
import org.eclipse.jface.viewers.IStructuredSelection;
20
import org.eclipse.jface.viewers.IStructuredSelection;
21
import org.eclipse.jface.viewers.Viewer;
21
import org.eclipse.swt.widgets.Display;
22
import org.eclipse.swt.widgets.Display;
22
23
23
/**
24
/**
Lines 70-73 Link Here
70
				selectionProvider, Object.class);
71
				selectionProvider, Object.class);
71
	}
72
	}
72
73
74
	/**
75
	 * Returns an observable value that tracks the current selection of the
76
	 * given viewer. The IViewerObservableValue exposes the viewer. If the
77
	 * selection provider provides selections of type
78
	 * {@link IStructuredSelection}, the observable value will be the first
79
	 * element of the structured selection as returned by
80
	 * {@link IStructuredSelection#getFirstElement()}.
81
	 * 
82
	 * @param viewer
83
	 * @return the observable value tracking the (single) selection of the given
84
	 *         selection provider
85
	 */
86
	public static IViewerObservableValue observeSingleSelection(Viewer viewer) {
87
		return new SelectionProviderSingleSelectionObservableValue(
88
				SWTObservables.getRealm(Display.getDefault()), viewer);
89
	}
90
91
	/**
92
	 * Returns an observable value that tracks the current selection of the
93
	 * given viewer. The IViewerObservableList exposes the viewer. Assumes that
94
	 * the selection provider provides selections of type
95
	 * {@link IStructuredSelection}. Note that the observable list will not
96
	 * honor the full contract of <code>java.util.List</code> in that it may
97
	 * delete or reorder elements based on what the selection provider returns
98
	 * from {@link ISelectionProvider#getSelection()} after having called
99
	 * {@link ISelectionProvider#setSelection(org.eclipse.jface.viewers.ISelection)}
100
	 * based on the requested change to the observable list. The affected
101
	 * methods are <code>add</code>, <code>addAll</code>, and
102
	 * <code>set</code>.
103
	 * 
104
	 * @param viewer
105
	 * @return the observable value tracking the (multi) selection of the given
106
	 *         selection provider
107
	 * 
108
	 * @since 1.2
109
	 */
110
	public static IViewerObservableList observeMultiSelection(
111
			Viewer viewer) {
112
		return new SelectionProviderMultipleSelectionObservableList(
113
				SWTObservables.getRealm(Display.getDefault()), viewer,
114
				Object.class);
115
	}
116
73
}
117
}
(-)src/org/eclipse/jface/internal/databinding/internal/viewers/SelectionProviderSingleSelectionObservableValue.java (-1 / +15 lines)
Lines 18-23 Link Here
18
import org.eclipse.core.databinding.observable.Diffs;
18
import org.eclipse.core.databinding.observable.Diffs;
19
import org.eclipse.core.databinding.observable.Realm;
19
import org.eclipse.core.databinding.observable.Realm;
20
import org.eclipse.core.databinding.observable.value.AbstractObservableValue;
20
import org.eclipse.core.databinding.observable.value.AbstractObservableValue;
21
import org.eclipse.jface.databinding.viewers.IViewerObservableValue;
21
import org.eclipse.jface.util.Util;
22
import org.eclipse.jface.util.Util;
22
import org.eclipse.jface.viewers.ISelection;
23
import org.eclipse.jface.viewers.ISelection;
23
import org.eclipse.jface.viewers.ISelectionChangedListener;
24
import org.eclipse.jface.viewers.ISelectionChangedListener;
Lines 25-30 Link Here
25
import org.eclipse.jface.viewers.IStructuredSelection;
26
import org.eclipse.jface.viewers.IStructuredSelection;
26
import org.eclipse.jface.viewers.SelectionChangedEvent;
27
import org.eclipse.jface.viewers.SelectionChangedEvent;
27
import org.eclipse.jface.viewers.StructuredSelection;
28
import org.eclipse.jface.viewers.StructuredSelection;
29
import org.eclipse.jface.viewers.StructuredViewer;
30
import org.eclipse.jface.viewers.Viewer;
28
31
29
/**
32
/**
30
 * Observes single selection of an <code>ISelectionProvider</code>.
33
 * Observes single selection of an <code>ISelectionProvider</code>.
Lines 32-38 Link Here
32
 * @since 1.1
35
 * @since 1.1
33
 */
36
 */
34
public class SelectionProviderSingleSelectionObservableValue extends
37
public class SelectionProviderSingleSelectionObservableValue extends
35
		AbstractObservableValue {
38
		AbstractObservableValue implements IViewerObservableValue{
36
39
37
	private final ISelectionProvider selectionProvider;
40
	private final ISelectionProvider selectionProvider;
38
41
Lines 144-147 Link Here
144
				.removeSelectionChangedListener(selectionChangedListener);
147
				.removeSelectionChangedListener(selectionChangedListener);
145
		super.dispose();
148
		super.dispose();
146
	}
149
	}
150
	/**
151
	 * Gets the Viewer this Observable is bound to.
152
	 * @return the viewer this value is bound to. returns null if the selection provider is not a StructuredViewer
153
	 */
154
	public Viewer getViewer(){
155
		if(selectionProvider instanceof StructuredViewer){
156
			return (Viewer)selectionProvider;
157
		}
158
		// TODO what to do now ?
159
		return null;
160
	}
147
}
161
}
(-)src/org/eclipse/jface/internal/databinding/internal/viewers/SelectionProviderMultipleSelectionObservableList.java (-1 / +16 lines)
Lines 19-30 Link Here
19
import org.eclipse.core.databinding.observable.Realm;
19
import org.eclipse.core.databinding.observable.Realm;
20
import org.eclipse.core.databinding.observable.list.ListDiff;
20
import org.eclipse.core.databinding.observable.list.ListDiff;
21
import org.eclipse.core.databinding.observable.list.WritableList;
21
import org.eclipse.core.databinding.observable.list.WritableList;
22
import org.eclipse.jface.databinding.viewers.IViewerObservableList;
22
import org.eclipse.jface.viewers.ISelection;
23
import org.eclipse.jface.viewers.ISelection;
23
import org.eclipse.jface.viewers.ISelectionChangedListener;
24
import org.eclipse.jface.viewers.ISelectionChangedListener;
24
import org.eclipse.jface.viewers.ISelectionProvider;
25
import org.eclipse.jface.viewers.ISelectionProvider;
25
import org.eclipse.jface.viewers.IStructuredSelection;
26
import org.eclipse.jface.viewers.IStructuredSelection;
26
import org.eclipse.jface.viewers.SelectionChangedEvent;
27
import org.eclipse.jface.viewers.SelectionChangedEvent;
27
import org.eclipse.jface.viewers.StructuredSelection;
28
import org.eclipse.jface.viewers.StructuredSelection;
29
import org.eclipse.jface.viewers.StructuredViewer;
30
import org.eclipse.jface.viewers.Viewer;
28
31
29
/**
32
/**
30
 * Observes multiple-selection of an {@link ISelectionProvider}.
33
 * Observes multiple-selection of an {@link ISelectionProvider}.
Lines 32-38 Link Here
32
 * @since 1.2
35
 * @since 1.2
33
 */
36
 */
34
public class SelectionProviderMultipleSelectionObservableList extends
37
public class SelectionProviderMultipleSelectionObservableList extends
35
		WritableList {
38
		WritableList implements IViewerObservableList{
36
39
37
	protected ISelectionProvider selectionProvider;
40
	protected ISelectionProvider selectionProvider;
38
	protected boolean handlingSelection;
41
	protected boolean handlingSelection;
Lines 108-111 Link Here
108
		selectionProvider = null;
111
		selectionProvider = null;
109
		super.dispose();
112
		super.dispose();
110
	}
113
	}
114
	/**
115
	 * Gets the Viewer this Observable is bound to.
116
	 * @return the viewer this list is bound to (if it exists)
117
	 * 
118
	 */
119
	public Viewer getViewer(){
120
		if(selectionProvider instanceof StructuredViewer){
121
			return (Viewer)selectionProvider;
122
		}
123
		// TODO what to do now ?
124
		return null;
125
	}
111
}
126
}
(-)src/org/eclipse/jface/databinding/viewers/IViewerObservableValue.java (+29 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 ******************************************************************************/
11
12
package org.eclipse.jface.databinding.viewers;
13
14
import org.eclipse.core.databinding.observable.value.IObservableValue;
15
import org.eclipse.jface.viewers.Viewer;
16
17
/**
18
 * @since 3.3
19
 *
20
 */
21
public interface IViewerObservableValue extends IObservableValue {
22
	
23
	/** 
24
	 * Gets the Viewer this Observable is bound to.
25
	 * @return the viewer this observable. returns null if the selection provider is not a Viewer
26
	 */
27
	public Viewer getViewer();
28
29
}
(-)src/org/eclipse/jface/databinding/viewers/IViewerObservableList.java (+28 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 ******************************************************************************/
11
12
package org.eclipse.jface.databinding.viewers;
13
14
import org.eclipse.core.databinding.observable.list.IObservableList;
15
import org.eclipse.jface.viewers.Viewer;
16
17
/**
18
 * @since 3.3
19
 *
20
 */
21
public interface IViewerObservableList extends IObservableList {
22
	/** 
23
	 * Gets the Viewer this Observable is bound to.
24
	 * @return the viewer this observable is bound to. returns null if the selection provider is not a Viewer
25
	 */
26
	public Viewer getViewer();
27
28
}
(-)src/org/eclipse/jface/tests/internal/databinding/internal/viewers/SelectionProviderSingleSelectionObservableValueTest.java (+9 lines)
Lines 127-132 Link Here
127
		selectionProvider.setSelection(new StructuredSelection(model[1]));
127
		selectionProvider.setSelection(new StructuredSelection(model[1]));
128
		assertEquals(1, listener.count);
128
		assertEquals(1, listener.count);
129
	}
129
	}
130
	
131
	/** tests if the viewer is returned */ 
132
	public void testIViewerObservable() {
133
		SelectionProviderSingleSelectionObservableValue observable = new SelectionProviderSingleSelectionObservableValue(
134
				SWTObservables.getRealm(Display.getDefault()),
135
				selectionProvider);
136
		assertNotNull(observable.getViewer());
137
		assertEquals(selectionProvider, observable.getViewer());
138
	}
130
139
131
	private class ContentProvider implements IStructuredContentProvider {
140
	private class ContentProvider implements IStructuredContentProvider {
132
		public void dispose() {
141
		public void dispose() {
(-)src/org/eclipse/jface/tests/internal/databinding/internal/viewers/SelectionProviderMultiSelectionObservableListTest.java (+11 lines)
Lines 138-143 Link Here
138
		assertEquals(observable, listener.event.getObservableList());
138
		assertEquals(observable, listener.event.getObservableList());
139
		assertEquals(0, ((IStructuredSelection)viewer.getSelection()).size());
139
		assertEquals(0, ((IStructuredSelection)viewer.getSelection()).size());
140
}
140
}
141
	
142
	/** tests if the viewer is returned */ 
143
	public void testIViewerObservable() {
144
		SelectionProviderMultipleSelectionObservableList observable = new SelectionProviderMultipleSelectionObservableList(
145
			SWTObservables.getRealm(Display.getDefault()),
146
			selectionProvider, Object.class);
147
		assertNotNull(observable.getViewer());
148
		assertEquals(selectionProvider, observable.getViewer());
149
	}
141
150
142
	/**
151
	/**
143
	 * @param diffEntry
152
	 * @param diffEntry
Lines 151-156 Link Here
151
		assertEquals(position, diffEntry.getPosition());
160
		assertEquals(position, diffEntry.getPosition());
152
		assertEquals(element, diffEntry.getElement());
161
		assertEquals(element, diffEntry.getElement());
153
	}
162
	}
163
	
164
	
154
165
155
	private class ContentProvider implements IStructuredContentProvider {
166
	private class ContentProvider implements IStructuredContentProvider {
156
		public void dispose() {
167
		public void dispose() {

Return to bug 213623