package com.hundsun.ares.studio.biz.ui; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.ui.forms.widgets.FormToolkit; import com.hundsun.ares.studio.core.IARESProjectProperty; import com.hundsun.ares.studio.jres.metadata.ui.Language; import com.hundsun.ares.studio.jres.metadata.ui.LanguageRegister; import com.hundsun.ares.studio.ui.editor.SingleExtensionFieldEditor; import com.hundsun.ares.studio.ui.util.ImporveControlWithDitryStateContext; public class RealTypeExtensionFieldEditor extends SingleExtensionFieldEditor { private CCombo combo; public void init(IARESProjectProperty properties) { super.init(properties); setId(BizUIConstants.REAL_TYPE_TO_DISPLAY); } @Override public void setEditable(boolean editable) { combo.setEditable(false); } @Override public void createControls(FormToolkit toolkit, final ImporveControlWithDitryStateContext context) { toolkit.createLabel(context.getParent(), "�ӿڲ����б�����ʾ����ʵ���ͣ�"); combo = new CCombo(context.getParent(), SWT.READ_ONLY | SWT.BORDER); toolkit.adapt(combo, true, true); Language[] languages = LanguageRegister.getInstance().getRegisteredLanguages(); List<String> items = new ArrayList<String>(); for (Language lang : languages) { items.add(lang.getName()); } combo.setItems(items.toArray(new String[0])); { String currentLang = properties.getString(BizUIConstants.REAL_TYPE_TO_DISPLAY); if (currentLang != null) { int index = items.indexOf(currentLang); if (index != -1) { combo.select(index); } } } combo.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { String selectedLang = combo.getText(); String currentLang = properties.getString(BizUIConstants.REAL_TYPE_TO_DISPLAY); if (!StringUtils.equals(selectedLang, currentLang)) { properties.setValue(BizUIConstants.REAL_TYPE_TO_DISPLAY, selectedLang); context.getDirtyStatus().setValue(true); } } }); } @Override public void refresh() { } }