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 357871 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/emf/ecp/editor/mecontrols/MEEnumControl.java (-16 / +28 lines)
Lines 7-41 Link Here
7
package org.eclipse.emf.ecp.editor.mecontrols;
7
package org.eclipse.emf.ecp.editor.mecontrols;
8
8
9
import org.eclipse.core.databinding.observable.value.IObservableValue;
9
import org.eclipse.core.databinding.observable.value.IObservableValue;
10
import org.eclipse.emf.common.util.EList;
11
import org.eclipse.emf.databinding.EMFDataBindingContext;
10
import org.eclipse.emf.databinding.EMFDataBindingContext;
12
import org.eclipse.emf.databinding.edit.EMFEditObservables;
11
import org.eclipse.emf.databinding.edit.EMFEditObservables;
13
import org.eclipse.emf.ecore.EAttribute;
12
import org.eclipse.emf.ecore.EAttribute;
14
import org.eclipse.emf.ecore.EEnum;
13
import org.eclipse.emf.ecore.EEnum;
15
import org.eclipse.emf.ecore.EEnumLiteral;
16
import org.eclipse.emf.ecore.EObject;
14
import org.eclipse.emf.ecore.EObject;
15
import org.eclipse.emf.edit.provider.IItemLabelProvider;
17
import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
16
import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
18
import org.eclipse.jface.databinding.swt.SWTObservables;
17
import org.eclipse.jface.databinding.viewers.ViewersObservables;
19
import org.eclipse.swt.SWT;
18
import org.eclipse.jface.viewers.ArrayContentProvider;
20
import org.eclipse.swt.widgets.Combo;
19
import org.eclipse.jface.viewers.ComboViewer;
20
import org.eclipse.jface.viewers.LabelProvider;
21
import org.eclipse.swt.widgets.Composite;
21
import org.eclipse.swt.widgets.Composite;
22
import org.eclipse.swt.widgets.Control;
22
import org.eclipse.swt.widgets.Control;
23
23
24
/**
24
/**
25
 * This is the standard Control to edit boolean values.
25
 * This is the standard Control to enum values.
26
 * 
26
 * 
27
 * @author shterev
27
 * @author shterev
28
 * @author Nikolay Kasyanov
28
 */
29
 */
29
public class MEEnumControl extends AbstractMEControl {
30
public class MEEnumControl extends AbstractMEControl {
30
31
31
	private EAttribute attribute;
32
	private EAttribute attribute;
32
33
33
	private Combo combo;
34
	private ComboViewer combo;
34
35
35
	private static final int PRIORITY = 1;
36
	private static final int PRIORITY = 1;
36
37
37
	/**
38
	/**
38
	 * returns a check button without Label. {@inheritDoc}
39
	 * returns a Combo created by ComboViewer. {@inheritDoc}
39
	 * 
40
	 * 
40
	 * @return Control
41
	 * @return Control
41
	 */
42
	 */
Lines 43-57 Link Here
43
	public Control createControl(Composite parent, int style) {
44
	public Control createControl(Composite parent, int style) {
44
		Object feature = getItemPropertyDescriptor().getFeature(getModelElement());
45
		Object feature = getItemPropertyDescriptor().getFeature(getModelElement());
45
		this.attribute = (EAttribute) feature;
46
		this.attribute = (EAttribute) feature;
46
		combo = new Combo(parent, style | SWT.DROP_DOWN | SWT.READ_ONLY);
47
		
47
		IObservableValue model = EMFEditObservables.observeValue(getEditingDomain(), getModelElement(), attribute);
48
		final IItemLabelProvider labelProvider = getItemPropertyDescriptor().getLabelProvider(getModelElement());
48
		EList<EEnumLiteral> list = ((EEnum) attribute.getEType()).getELiterals();
49
		
49
		for (EEnumLiteral literal : list) {
50
		combo = new ComboViewer(parent);
50
			combo.add(literal.getLiteral());
51
		combo.setContentProvider(new ArrayContentProvider());
51
		}
52
		combo.setLabelProvider(new LabelProvider() {
53
54
			@Override
55
			public String getText(Object element) {
56
				return labelProvider.getText(element);
57
			}
58
			
59
		});
60
		combo.setInput(attribute.getEType().getInstanceClass().getEnumConstants());
61
		
52
		EMFDataBindingContext dbc = new EMFDataBindingContext();
62
		EMFDataBindingContext dbc = new EMFDataBindingContext();
53
		dbc.bindValue(SWTObservables.observeSelection(combo), model, null, null);
63
		IObservableValue model = EMFEditObservables.observeValue(getEditingDomain(), getModelElement(), attribute);
54
		return combo;
64
		IObservableValue comboObservable = ViewersObservables.observeSingleSelection(combo);
65
		dbc.bindValue(comboObservable, model);
66
		return combo.getControl();
55
	}
67
	}
56
68
57
	/**
69
	/**

Return to bug 357871