// Path: src/main/java/de/jformchecker/FormCheckerElement.java
// public interface FormCheckerElement {
// 
// 	// RFE: check, if some methods can be protected
// 
// 	// get internal name of this input-element
// 	public String getName();
// 	
// 	// set internal name
// 	public void setName(String name);
// 
// 
// 	// get the value that the user entered
// 	public String getValue();
// 
// 	// get the value that the user entered, but html-encoded
// 	@Deprecated
// 	public String getValueHtmlEncoded();
// 
// 	public void setValue(String value);
// 
// 	public String getPreSetValue();
// 
// 	// set an initial value to the element, before the user edited it.
// 	public <T extends FormCheckerElement> T setPreSetValue(String value);
// 
// 	public <T extends FormCheckerElement> T setTabIndex(int tabIndex);
// 
// 	public int getTabIndex();
// 
// 	public int getLastTabIndex();
// 
// 	// set the test in the label (builder pattern)
// 	
// 	public <T extends FormCheckerElement> T setDescription(String desc);
// 
// 	// as "setDescription" but does not return anything (no builder pattern)
// 	public void changeDescription(String desc);
// 
// 	public String getDescription();
// 
// 	// returns true if element is valid
// 	public boolean isValid();
// 
// 	public void setInvalid();
// 
// 	// inits the value with the current http-request
// 	public void init(Request req, boolean firstrun, Validator validator);
// 
// 	public ValidationResult getValidationResult();
// 
// 	public void setValidationResult(ValidationResult validationResult);
// 
// 	public String getInputTag();
// 
// 	public String getInputTag(Map<String, String> attributes, MessageSource messageSource, boolean html5Validation);
// 	
// 	@Deprecated
// 	public String getInputTag(Map<String, String> attributes);
// 
// 	public boolean isRequired();
// 
// 	public <T extends FormCheckerElement> T setRequired();
// 
// 	public List<Criterion> getCriteria();
// 
// 	public void setFormChecker(FormChecker fc);
// 
// 	// returns the complete label-html tag
// 	public String getLabel();
// 
// 	// returns the label-html and the input-html
// 	public String getCompleteInput(); // RFE: Perhaps toString makes this even
// 										// more convenient?!
// 
// 	public String getHelpText();
// 
// 	// sets the size attribute
// 	public <T extends FormCheckerElement> T setSize(int size);
// 
// 	public String getType();
// 
// }
// 
// Path: src/main/java/de/jformchecker/TagAttributes.java
// public class TagAttributes {
// 	
// 	// conveniance methods
// 	public static TagAttributes of(String key, String value) {
// 		return new TagAttributes(key, value);
// 	}
// 	
// 	public static TagAttributes of(Map<String, String> attribs) {
// 		return new TagAttributes(attribs);
// 	}
// 	
// 	LinkedHashMap<String, String> attributes;
// 
// 	public TagAttributes(Map<String, String> attribs) {
// 		attributes = new LinkedHashMap<>(attribs);
// 	}
// 
// 	public TagAttributes(LinkedHashMap<String, String> attribs) {
// 		attributes = attribs;
// 	}
// 
// 	public TagAttributes() {
// 		this(new LinkedHashMap<>());
// 	}
// 
// 	public TagAttributes(String key, String value) {
// 		this();
// 		this.put(key, value);
// 	}
// 
// 	public TagAttributes put(String key, String value) {
// 		attributes.put(key, value);
// 		return this;
// 	}
// 
// 	public String get(String key) {
// 		return attributes.get(key);
// 	}
// 
// 	public void addToAttribute(String key, String value) {
// 		if (!attributes.containsKey(key)) {
// 			attributes.put(key, value);
// 		} else {
// 			attributes.put(key, attributes.get(key) + value);
// 		}
// 	}
// 
// 	public Set<String> keySet() {
// 		return attributes.keySet();
// 	}
// 	
// 	public Map<String, String> getAttributes() {
// 		return attributes;
// 	}
// 
// 	public void add(TagAttributes formAttributes) {
// 		if (formAttributes != null) {
// 			formAttributes.attributes.forEach((key, value) -> this.addToAttribute(key, value));
// 		}
// 	}
// 
// 	public void add(LinkedHashMap<String, String> attribs) {
// 		if (attribs != null) {
// 			attribs.forEach((key, value) -> this.addToAttribute(key, value));
// 		}
// 	}
// 
// }
// 
// Path: src/main/java/de/jformchecker/Wrapper.java
// public class Wrapper {
// 	public final String start;
// 	public final String end;
// 
// 	public static Wrapper of(String start, String end) {
// 		return new Wrapper(start, end);
// 	}
// 	
// 	public Wrapper(String start, String end) {
// 		this.start = start;
// 		this.end = end;
// 	}
// 
// 	public String getStart() {
// 		return start;
// 	}
// 
// 	public String getEnd() {
// 		return end;
// 	}
// 	
// 	public String wrap(String content) {
// 		return new StringBuffer(start).append(content).append(end).toString();
// 	}
// 
// 	public static Wrapper empty() {
// 		return Wrapper.of("", "");
// 	}
// 	
// 	public static Wrapper ofTag(String tagName) {
// 		return Wrapper.of("<" + tagName + ">", "</" + tagName + ">");
// 	}
// 	
// }


import de.jformchecker.FormCheckerElement;
import de.jformchecker.TagAttributes;
import de.jformchecker.Wrapper;
package de.jformchecker.themes;


public class TwoColumnBootstrapFormBuilder extends BasicFormBuilder {
	public TagAttributes getLabelAttributes(FormCheckerElement elem) {
		TagAttributes attributes = new TagAttributes();
		attributes.put("class", "col-sm-2 control-label");
		return attributes;
	}

	public Wrapper getWrapperForInput(FormCheckerElement elem) {
// Path: src/main/java/de/jformchecker/FormCheckerElement.java
// public interface FormCheckerElement {
// 
// 	// RFE: check, if some methods can be protected
// 
// 	// get internal name of this input-element
// 	public String getName();
// 	
// 	// set internal name
// 	public void setName(String name);
// 
// 
// 	// get the value that the user entered
// 	public String getValue();
// 
// 	// get the value that the user entered, but html-encoded
// 	@Deprecated
// 	public String getValueHtmlEncoded();
// 
// 	public void setValue(String value);
// 
// 	public String getPreSetValue();
// 
// 	// set an initial value to the element, before the user edited it.
// 	public <T extends FormCheckerElement> T setPreSetValue(String value);
// 
// 	public <T extends FormCheckerElement> T setTabIndex(int tabIndex);
// 
// 	public int getTabIndex();
// 
// 	public int getLastTabIndex();
// 
// 	// set the test in the label (builder pattern)
// 	
// 	public <T extends FormCheckerElement> T setDescription(String desc);
// 
// 	// as "setDescription" but does not return anything (no builder pattern)
// 	public void changeDescription(String desc);
// 
// 	public String getDescription();
// 
// 	// returns true if element is valid
// 	public boolean isValid();
// 
// 	public void setInvalid();
// 
// 	// inits the value with the current http-request
// 	public void init(Request req, boolean firstrun, Validator validator);
// 
// 	public ValidationResult getValidationResult();
// 
// 	public void setValidationResult(ValidationResult validationResult);
// 
// 	public String getInputTag();
// 
// 	public String getInputTag(Map<String, String> attributes, MessageSource messageSource, boolean html5Validation);
// 	
// 	@Deprecated
// 	public String getInputTag(Map<String, String> attributes);
// 
// 	public boolean isRequired();
// 
// 	public <T extends FormCheckerElement> T setRequired();
// 
// 	public List<Criterion> getCriteria();
// 
// 	public void setFormChecker(FormChecker fc);
// 
// 	// returns the complete label-html tag
// 	public String getLabel();
// 
// 	// returns the label-html and the input-html
// 	public String getCompleteInput(); // RFE: Perhaps toString makes this even
// 										// more convenient?!
// 
// 	public String getHelpText();
// 
// 	// sets the size attribute
// 	public <T extends FormCheckerElement> T setSize(int size);
// 
// 	public String getType();
// 
// }
// 
// Path: src/main/java/de/jformchecker/TagAttributes.java
// public class TagAttributes {
// 	
// 	// conveniance methods
// 	public static TagAttributes of(String key, String value) {
// 		return new TagAttributes(key, value);
// 	}
// 	
// 	public static TagAttributes of(Map<String, String> attribs) {
// 		return new TagAttributes(attribs);
// 	}
// 	
// 	LinkedHashMap<String, String> attributes;
// 
// 	public TagAttributes(Map<String, String> attribs) {
// 		attributes = new LinkedHashMap<>(attribs);
// 	}
// 
// 	public TagAttributes(LinkedHashMap<String, String> attribs) {
// 		attributes = attribs;
// 	}
// 
// 	public TagAttributes() {
// 		this(new LinkedHashMap<>());
// 	}
// 
// 	public TagAttributes(String key, String value) {
// 		this();
// 		this.put(key, value);
// 	}
// 
// 	public TagAttributes put(String key, String value) {
// 		attributes.put(key, value);
// 		return this;
// 	}
// 
// 	public String get(String key) {
// 		return attributes.get(key);
// 	}
// 
// 	public void addToAttribute(String key, String value) {
// 		if (!attributes.containsKey(key)) {
// 			attributes.put(key, value);
// 		} else {
// 			attributes.put(key, attributes.get(key) + value);
// 		}
// 	}
// 
// 	public Set<String> keySet() {
// 		return attributes.keySet();
// 	}
// 	
// 	public Map<String, String> getAttributes() {
// 		return attributes;
// 	}
// 
// 	public void add(TagAttributes formAttributes) {
// 		if (formAttributes != null) {
// 			formAttributes.attributes.forEach((key, value) -> this.addToAttribute(key, value));
// 		}
// 	}
// 
// 	public void add(LinkedHashMap<String, String> attribs) {
// 		if (attribs != null) {
// 			attribs.forEach((key, value) -> this.addToAttribute(key, value));
// 		}
// 	}
// 
// }
// 
// Path: src/main/java/de/jformchecker/Wrapper.java
// public class Wrapper {
// 	public final String start;
// 	public final String end;
// 
// 	public static Wrapper of(String start, String end) {
// 		return new Wrapper(start, end);
// 	}
// 	
// 	public Wrapper(String start, String end) {
// 		this.start = start;
// 		this.end = end;
// 	}
// 
// 	public String getStart() {
// 		return start;
// 	}
// 
// 	public String getEnd() {
// 		return end;
// 	}
// 	
// 	public String wrap(String content) {
// 		return new StringBuffer(start).append(content).append(end).toString();
// 	}
// 
// 	public static Wrapper empty() {
// 		return Wrapper.of("", "");
// 	}
// 	
// 	public static Wrapper ofTag(String tagName) {
// 		return Wrapper.of("<" + tagName + ">", "</" + tagName + ">");
// 	}
// 	
// }


// Path: src/main/java/de/jformchecker/themes/TwoColumnBootstrapFormBuilder.java
import de.jformchecker.FormCheckerElement;
import de.jformchecker.TagAttributes;
import de.jformchecker.Wrapper;

package de.jformchecker.themes;


public class TwoColumnBootstrapFormBuilder extends BasicFormBuilder {
	public TagAttributes getLabelAttributes(FormCheckerElement elem) {
		TagAttributes attributes = new TagAttributes();
		attributes.put("class", "col-sm-2 control-label");
		return attributes;
	}

	public Wrapper getWrapperForInput(FormCheckerElement elem) {
		return new Wrapper("<div class=\"col-sm-10\">", "</div>");