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 cbxKeyMap = new HashMap(); private final HashMap cbxValueMap = new HashMap(); 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 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 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 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; } }