/**
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�JRES Studio
*/
package com.hundsun.ares.studio.ui.editor.celleditors;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.ArrayUtils;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EEnumLiteral;
import org.eclipse.jface.viewers.ComboBoxCellEditor;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
/**
* @author gongyf
*
*/
public class EEnumComboBoxCellEditor extends ComboBoxCellEditor {
private List<Enumerator> enumerators;
/**
* @param parent
*/
public EEnumComboBoxCellEditor(Composite parent) {
super(parent, ArrayUtils.EMPTY_STRING_ARRAY, SWT.READ_ONLY);
}
/**
* @param eEnum the eEnum to set
*/
public void setEEnum(EEnum eEnum, ILabelProvider itemLabelProvider) {
enumerators = new ArrayList<Enumerator>();
List<String> lables = new ArrayList<String>();
for (EEnumLiteral eEnumLiteral : eEnum.getELiterals()) {
Enumerator e = eEnumLiteral.getInstance();
enumerators.add(e);
lables.add(itemLabelProvider.getText(e));
}
setItems(lables.toArray(new String[lables.size()]));
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ComboBoxCellEditor#doGetValue()
*/
@Override
protected Object doGetValue() {
int index = (Integer) super.doGetValue();
return enumerators.get(index);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ComboBoxCellEditor#doSetValue(java.lang.Object)
*/
@Override
protected void doSetValue(Object value) {
if (value instanceof Enumerator) {
int index = enumerators.indexOf(value);
if (index < 0) {
index = 0;
}
value = index;
}
super.doSetValue(value);
}
}