package com.hundsun.ares.studio.jres.metadata.ui.script.control;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import com.hundsun.ares.studio.core.IARESProject;
import com.hundsun.ares.studio.jres.model.metadata.BizPropertyConfig;
import com.hundsun.ares.studio.jres.model.metadata.util.MetadataUtil;
import com.hundsun.ares.studio.jres.script.internal.useroption.IControl;
import com.hundsun.ares.studio.jres.script.internal.useroption.MultiSelectionCheckControl;
import com.hundsun.ares.studio.jres.script.internal.useroption.control.IUserOptionControlProvider;
public class BizPropertyControlProvider implements IUserOptionControlProvider {
@Override
public IControl createControl() {
return new BizPropertyControl();
}
@Override
public Control createUIControl(Composite parent, IControl control, IARESProject project) {
List<BizPropertyConfig> input = MetadataUtil.getBizProperties(project);
MultiSelectionCheckControl uiControl = new MultiSelectionCheckControl(parent, input.toArray(), new LabelProvider() {
@Override
public String getText(Object element) {
if (element instanceof BizPropertyConfig) {
return ((BizPropertyConfig) element).getChineseName();
}
return super.getText(element);
}
});
GridDataFactory.fillDefaults().grab(true, true).applyTo(uiControl);
String defaultValue = control.getDefaultValue();
List<BizPropertyConfig> selectedByDefault = new ArrayList<BizPropertyConfig>();
if (StringUtils.isNotEmpty(defaultValue)) {
String[] ids = StringUtils.split(defaultValue, ',');
for (BizPropertyConfig config : input) {
if (ArrayUtils.contains(ids, config.getName())) {
selectedByDefault.add(config);
}
}
}
uiControl.setSelection(selectedByDefault.toArray());
return uiControl;
}
}