package ilarkesto.form; import ilarkesto.base.Str; import ilarkesto.richtext.RichTextFormatter; public class TextareaFormField extends TextFormField { public TextareaFormField(String name) { super(name); } @Override protected String preProcessValue(String s) { if (s == null) return null; if (!html) return super.preProcessValue(s); if (s.startsWith("<html")) { String plain = Str.removeHtmlTags(s).trim(); if (plain.length() == 0 && !s.toLowerCase().contains("<img")) s = plain; if (s.length() > 0) s = "<html>" + Str.cutHtmlAndHeaderAndBody(s); } return super.preProcessValue(s); } @Override public TextFormField setValue(String value) { if (!html) return super.setValue(value); if (value == null || value.startsWith("<html")) return super.setValue(value); return super.setValue(RichTextFormatter.toHtml(value)); } private int lines = 15; public TextareaFormField setLines(int value) { this.lines = value; return this; } public int getLines() { return lines; } private boolean html = true; public boolean isHtml() { return html; } public TextareaFormField setHtml(boolean html) { this.html = html; return this; } public TextareaFormField setForceHtml(boolean forceHtml) { if (forceHtml) setHtml(true); return this; } public boolean isForceHtml() { return true; // TODO forceHtml; } }