package com.akjava.lib.common.tag;
import java.util.ArrayList;
import java.util.List;
import com.google.common.collect.Lists;
public class LabelAndValue {
public LabelAndValue(String value){
this(null,value,false);
}
public LabelAndValue(String label,String value){
this(label,value,false);
}
public LabelAndValue(String label, String value,boolean selected) {
this.label=label;
this.value=value;
this.selected=selected;
}
private boolean selected;
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
private String label;
private String value;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getPrintValue(){
if(label==null){
return value;
}else{
return label;
}
}
public String toString(){
String out="";
if(label!=null){
out=label+":"+value;
}else{
out=value;
}
if(selected){
if(out.indexOf(":")==-1){
out+=":"+out;
/**
* avoid problem.
* when label==null & selected,maybe 'true' would be parsed as value.
*/
}
out+=":"+true;
}
return out;
}
public static void selectValues(List<LabelAndValue> lvalues,String value,String splitValue){
if(value==null){
return;
}
List<String> multipleValue=null;
if(splitValue==null){
multipleValue=new ArrayList<String>();
multipleValue.add(value);
}else{
multipleValue= Lists.newArrayList(value.split(splitValue));
}
//unselect all
for (LabelAndValue lv : lvalues) {
lv.setSelected(false);
}
for (LabelAndValue lv : lvalues) {
for (String v : multipleValue) {
if (lv.getValue().equals(v)) {
lv.setSelected(true);
}
}
}
}
public String toOption(){
String option="<option";
String outValue=value;
String selectValue="";
if(selected){
selectValue=" selected";
}
if(outValue.indexOf('"')!=-1){
outValue=outValue.replace("\"", """);
}
if(label!=null){
option+=" value=\""+outValue+"\"";
option+=selectValue+">";
option+=label;
}else{
option+=selectValue+">"+value;
}
return option;
}
//for edit
public LabelAndValue clone(){
return new LabelAndValue(label,value,selected);
}
}