package com.vci.client.uif.engine.client.controls;
|
|
import java.awt.BorderLayout;
|
import java.awt.FlowLayout;
|
import java.util.HashMap;
|
import java.util.Iterator;
|
|
import com.vci.client.omd.provider.ApProvider;
|
import com.vci.client.omd.provider.EnumProvider;
|
import com.vci.client.portal.utility.PRMItem;
|
import com.vci.client.ui.swing.components.VCIJCheckBox;
|
import com.vci.client.ui.swing.components.VCIJPanel;
|
import com.vci.client.ui.swing.components.VCIJScrollPane;
|
import com.vci.corba.omd.atm.AttribItem;
|
import com.vci.corba.omd.etm.EnumChild;
|
import com.vci.corba.omd.etm.EnumItem;
|
|
public class CheckBoxControl extends AbstractCustomControl {
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 1386018173187653248L;
|
private String value = "";
|
private final HashMap<String, VCIJCheckBox> cbxKeyMap = new HashMap<String, VCIJCheckBox>();
|
private final HashMap<String, VCIJCheckBox> cbxValueMap = new HashMap<String, VCIJCheckBox>();
|
|
private boolean required = false;
|
private Object obj = null;
|
|
public CheckBoxControl(PRMItem item, boolean required, boolean editable){
|
super(item);
|
setRequired(required);
|
setEditable(editable);
|
init();
|
}
|
|
private void init(){
|
setLayout(new BorderLayout());
|
|
VCIJScrollPane pp = new VCIJScrollPane(getCheckBoxDataPanel());
|
pp.setBorder(null);
|
add(pp, BorderLayout.CENTER);
|
}
|
|
private VCIJPanel getCheckBoxDataPanel(){
|
|
VCIJPanel pal = new VCIJPanel(new FlowLayout(FlowLayout.LEADING));
|
|
PRMItem item = getPRMItem();
|
|
String field = item.getItemField();
|
String[] fields = field.split("\\.");
|
AttribItem attr = ApProvider.getInstance().getAbItemByName(fields[fields.length - 1]);
|
String enumName = ApProvider.getInstance().getOtherValueByType(attr.other, "enumName");
|
EnumItem enumItem = EnumProvider.getInstance().getEnumByName(enumName);
|
for (EnumChild child : enumItem.children) {
|
VCIJCheckBox cbx = new VCIJCheckBox(child.name);
|
cbx.setRequired(isRequired());
|
cbx.setEnabled(isEditable());
|
cbx.setObj(child);
|
pal.add(cbx);
|
|
cbxKeyMap.put(child.name, cbx);
|
cbxValueMap.put(child.value, cbx);
|
}
|
return pal;
|
}
|
|
private void setCheckBoxValue(String value){
|
clearSelected();
|
String[] values = value.split(";");
|
for(String key : values){
|
VCIJCheckBox cbx = cbxValueMap.get(key);
|
if(cbx != null){
|
cbx.setSelected(true);
|
}
|
}
|
}
|
|
private void clearSelected(){
|
for(Iterator<String> it = cbxValueMap.keySet().iterator(); it.hasNext();){
|
String key = it.next();
|
VCIJCheckBox cbx = cbxValueMap.get(key);
|
selectCheckbox(cbx, false);
|
}
|
}
|
|
private void selectCheckbox(VCIJCheckBox cbx, boolean selected){
|
cbx.setSelected(selected);
|
}
|
|
@Override
|
public String getValue() {
|
StringBuffer sb = new StringBuffer();
|
for(Iterator<String> it = cbxValueMap.keySet().iterator(); it.hasNext();){
|
String key = it.next();
|
VCIJCheckBox cbx = cbxValueMap.get(key);
|
if(cbx.isSelected()){
|
sb.append(key).append(";");
|
}
|
}
|
value = sb.toString();
|
if(value != null && !"".equals(value) && value.endsWith(";")){
|
value = value.substring(0, value.length() - 1);
|
}
|
return value;
|
}
|
|
@Override
|
public void setValue(String value) {
|
if(value == null || "".equals(value)) return;
|
this.value = value;
|
setCheckBoxValue(value);
|
}
|
|
|
@Override
|
public void setEditable(boolean editable) {
|
super.setEditable(editable);
|
for(Iterator<String> it = cbxValueMap.keySet().iterator(); it.hasNext();){
|
String key = it.next();
|
VCIJCheckBox cbx = cbxValueMap.get(key);
|
cbx.setEnabled(editable);
|
}
|
}
|
|
@Override
|
public void setEnabled(boolean enabled) {
|
setEditable(enabled);
|
}
|
|
@Override
|
public boolean isRequired() {
|
return required;
|
}
|
|
public void setRequired(boolean required) {
|
this.required = required;
|
}
|
|
@Override
|
public Object getObj() {
|
return obj;
|
}
|
|
@Override
|
public void setObj(Object obj) {
|
this.obj = obj;
|
}
|
|
}
|