package com.hundsun.ares.studio.jres.basicdata.ui.editor;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.eclipse.swt.SWT;
import org.eclipse.ui.forms.widgets.FormToolkit;
import com.hundsun.ares.studio.core.IARESProjectProperty;
import com.hundsun.ares.studio.jres.basicdata.constant.IBasicDataEpacakgeConstant;
import com.hundsun.ares.studio.jres.basicdata.logic.epackage.extensionpoint.EpackageFactoryItem;
import com.hundsun.ares.studio.jres.basicdata.logic.epackage.extensionpoint.EpackageFactoryManager;
import com.hundsun.ares.studio.ui.control.ComboAdaptor;
import com.hundsun.ares.studio.ui.editor.ExtensionFieldEditor;
import com.hundsun.ares.studio.ui.util.ImporveControlWithDitryStateContext;
public class BasicDataTypeFieldEditor extends ExtensionFieldEditor {
private IARESProjectProperty properties;
ComboAdaptor comboAdapter;
//��������������
List<EpackageFactoryItem>factoryList = EpackageFactoryManager.getInstance().getFactoryList();
List<String> nameList = new ArrayList<String>();
@Override
public void setEditable(boolean editable) {
if (comboAdapter != null){
comboAdapter.setEditable(editable);
}
}
@Override
public void init(IARESProjectProperty properties) {
this.properties = properties;
nameList.clear();
for(EpackageFactoryItem factoryItem : factoryList){
nameList.add(factoryItem.name);
}
}
@Override
public void createControls(FormToolkit toolkit,
ImporveControlWithDitryStateContext context) {
comboAdapter = new ComboAdaptor("������������", SWT.READ_ONLY, context, nameList.toArray(new String[0])){
@Override
public void syncControl() {
String content = StringUtils.defaultString(properties.getString(IBasicDataEpacakgeConstant.Property_Basic_Data_type_ID));
control.select(getIndex(content));
}
@Override
public void syncModel() {
properties.setValue(IBasicDataEpacakgeConstant.Property_Basic_Data_type_ID,
factoryList.get(control.getSelectionIndex()).id);
}
};
comboAdapter.syncControl();
context.getDirtyStatus().setValue(false);
}
/**
* ��ȡ��������
* @param content
* @return
*/
private int getIndex(String content){
for(int i = 0; i < factoryList.size();i++){
if(StringUtils.equals(factoryList.get(i).id, content)){
return i;
}
}
return -1;
}
@Override
public void refresh() {
}
}