/** * <p>Copyright: Copyright (c) 2009</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.ui.editor.extend; import org.apache.commons.lang.StringUtils; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ComboBoxCellEditor; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import com.hundsun.ares.studio.core.model.Constants; /** * * @author qinyuan */ public class ComboMapEMPropertyDescriptor extends AbstractMapEMPropertyDescriptor { private String[] items; /** * @param structuralFeature * @param key */ public ComboMapEMPropertyDescriptor(String[] items,EStructuralFeature structuralFeature, Object key) { this(items,structuralFeature, key,Constants.USER_DATA2_KEY); } public ComboMapEMPropertyDescriptor(String[] items,EStructuralFeature structuralFeature, Object key,String extendModelKey) { super(structuralFeature, key,extendModelKey); this.items = items; } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.extend.IExtensibleModelPropertyDescriptor#getLabelProvider() */ @Override public ILabelProvider getLabelProvider() { return new ExtendsLabelProvider((String)getKey(),getStructuralFeature(),getExtendModelKey()); } /* (non-Javadoc) * @see com.hundsun.ares.studio.ui.editor.extend.IExtensibleModelPropertyDescriptor#createPropertyEditor(org.eclipse.swt.widgets.Composite) */ @Override public CellEditor createPropertyEditor(Composite parent) { return new ComboBoxCellEditor(parent, items, SWT.READ_ONLY){ /* (non-Javadoc) * @see org.eclipse.jface.viewers.ComboBoxCellEditor#doGetValue() */ @Override protected Object doGetValue() { int index = (Integer) super.doGetValue(); if(index < 0) { return StringUtils.EMPTY; } return items[index]; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ComboBoxCellEditor#doSetValue(java.lang.Object) */ @Override protected void doSetValue(Object value) { int index = 0; if (value instanceof String) { for (int i = 0; i < items.length; i++) { if(StringUtils.equals((String)value, items[i])){ index = i; break; } } } super.doSetValue(index); } }; } }