/* * Copyright 2004-2005 Revolution Systems Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.revolsys.util; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.xml.namespace.QName; import com.revolsys.record.io.format.xml.XmlWriter; public final class HtmlUtil { public static void elementWithId(final XmlWriter writer, final QName tag, final String id, final Object content) { writer.startTag(tag); if (Property.hasValue(id)) { writer.attribute(HtmlAttr.ID, id.replaceAll("[^A-Za-z0-9\\-:.]", "_")); } writer.text(content); writer.endTag(tag); } public static void serializeA(final XmlWriter out, final String cssClass, final Object url, final Object content) { if (url != null) { out.startTag(HtmlElem.A); if (cssClass != null) { out.attribute(HtmlAttr.CLASS, cssClass); } out.attribute(HtmlAttr.HREF, url); } out.text(content); if (url != null) { out.endTag(HtmlElem.A); } } public static void serializeB(final XmlWriter out, final String content) { out.startTag(HtmlElem.B); out.text(content); out.endTag(HtmlElem.B); } public static void serializeButton(final XmlWriter out, final String name, final String type, final Object value, final String text, final String cssClass) { out.startTag(HtmlElem.BUTTON); out.attribute(HtmlAttr.NAME, name); out.attribute(HtmlAttr.TYPE, type); out.attribute(HtmlAttr.VALUE, value); out.attribute(HtmlAttr.CLASS, cssClass); if (Property.hasValue(text)) { out.text(text); } out.endTag(HtmlElem.BUTTON); } public static void serializeButtonInput(final XmlWriter out, final String value, final String onClick) { out.startTag(HtmlElem.INPUT); out.attribute(HtmlAttr.TYPE, "button"); out.attribute(HtmlAttr.VALUE, value); out.attribute(HtmlAttr.ON_CLICK, onClick); out.endTag(HtmlElem.INPUT); } public static void serializeCheckBox(final XmlWriter out, final String name, final String value, final boolean selected, final String onClick) { out.startTag(HtmlElem.INPUT); out.attribute(HtmlAttr.ID, name); out.attribute(HtmlAttr.NAME, name); out.attribute(HtmlAttr.TYPE, "checkbox"); out.attribute(HtmlAttr.CLASS, "input-sm"); if (selected) { out.attribute(HtmlAttr.CHECKED, "checked"); } if (value != null) { out.attribute(HtmlAttr.VALUE, value); } if (onClick != null) { out.attribute(HtmlAttr.ON_CLICK, onClick); } out.endTag(HtmlElem.INPUT); } public static void serializeCss(final XmlWriter writer, final Iterable<String> urls) { for (final String url : urls) { serializeCss(writer, url); } } public static void serializeCss(final XmlWriter writer, final String... urls) { for (final String url : urls) { serializeCss(writer, url); } } public static void serializeCss(final XmlWriter out, final String url) { out.startTag(HtmlElem.LINK); out.attribute(HtmlAttr.HREF, url); out.attribute(HtmlAttr.REL, "stylesheet"); out.attribute(HtmlAttr.TYPE, "text/css"); out.endTagLn(HtmlElem.LINK); } public static void serializeDiv(final XmlWriter out, final String cssClass, final Object content) { if (content != null) { final String text = content.toString().trim(); if (text.length() > 0) { out.startTag(HtmlElem.DIV); if (cssClass != null) { out.attribute(HtmlAttr.CLASS, cssClass); } out.text(text); out.endTag(HtmlElem.DIV); } } } public static void serializeFileInput(final XmlWriter out, final String name) { out.startTag(HtmlElem.INPUT); out.attribute(HtmlAttr.NAME, name); out.attribute(HtmlAttr.TYPE, "file"); out.attribute(HtmlAttr.CLASS, "form-control input-sm"); out.endTag(HtmlElem.INPUT); } public static void serializeFileInput(final XmlWriter out, final String name, final Object value) { out.startTag(HtmlElem.INPUT); out.attribute(HtmlAttr.NAME, name); out.attribute(HtmlAttr.TYPE, "file"); out.attribute(HtmlAttr.CLASS, "form-control input-sm"); if (value != null) { out.attribute(HtmlAttr.VALUE, value); } out.endTag(HtmlElem.INPUT); } public static void serializeHiddenInput(final XmlWriter out, final String name, final Object value) { String stringValue = null; if (value != null) { stringValue = value.toString(); } serializeHiddenInput(out, name, stringValue); } public static void serializeHiddenInput(final XmlWriter out, final String name, final String value) { out.startTag(HtmlElem.INPUT); out.attribute(HtmlAttr.NAME, name); out.attribute(HtmlAttr.TYPE, "hidden"); if (value != null) { out.attribute(HtmlAttr.VALUE, value); } out.endTag(HtmlElem.INPUT); } public static void serializeImage(final XmlWriter out, final String src, final String title) { if (Property.hasValue(src)) { out.startTag(HtmlElem.IMG); out.attribute(HtmlAttr.SRC, src); out.attribute(HtmlAttr.ALT, title); out.attribute(HtmlAttr.TITLE, title); out.endTag(); } } public static void serializeImage(final XmlWriter out, final String src, final String title, final String cssClass) { if (Property.hasValue(src)) { out.startTag(HtmlElem.IMG); out.attribute(HtmlAttr.SRC, src); if (title != null) { out.attribute(HtmlAttr.ALT, title); out.attribute(HtmlAttr.TITLE, title); } out.attribute(HtmlAttr.CLASS, cssClass); out.endTag(); } } public static void serializeP(final XmlWriter out, final String cssClass, final String text) { if (Property.hasValue(text)) { out.startTag(HtmlElem.P); out.attribute(HtmlAttr.CLASS, cssClass); out.text(text); out.endTag(HtmlElem.P); } } public static void serializePre(final XmlWriter out, final String text) { out.startTag(HtmlElem.PRE); out.text(text); out.endTag(HtmlElem.PRE); } public static void serializeScript(final XmlWriter out, final String script) { out.startTag(HtmlElem.SCRIPT); out.attribute(HtmlAttr.TYPE, "text/javascript"); out.closeStartTagLn(); out.text(script); out.endTagLn(HtmlElem.SCRIPT); } public static void serializeScriptLink(final XmlWriter writer, final String... urls) { for (final String url : urls) { serializeScriptLink(writer, url); } } public static void serializeScriptLink(final XmlWriter out, final String url) { out.startTag(HtmlElem.SCRIPT); out.attribute(HtmlAttr.TYPE, "text/javascript"); out.attribute(HtmlAttr.SRC, url); out.closeStartTagLn(); out.endTagLn(HtmlElem.SCRIPT); } public static void serializeSelect(final XmlWriter out, final String name, final Object selectedValue, final boolean optional, final List<? extends Object> values) { out.startTag(HtmlElem.SELECT); out.attribute(HtmlAttr.NAME, name); out.attribute(HtmlAttr.CLASS, "form-control input-sm"); if (optional) { out.startTag(HtmlElem.OPTION); out.attribute(HtmlAttr.VALUE, ""); out.text("-"); out.endTag(HtmlElem.OPTION); } if (values != null) { for (final Object value : values) { out.startTag(HtmlElem.OPTION); if (selectedValue != null && selectedValue.equals(value)) { out.attribute(HtmlAttr.SELECTED, "true"); } out.text(value); out.endTag(HtmlElem.OPTION); } } out.endTag(HtmlElem.SELECT); } public static void serializeSelect(final XmlWriter out, final String name, final Object selectedValue, final boolean optional, final Map<?, ?> values) { out.startTag(HtmlElem.SELECT); out.attribute(HtmlAttr.NAME, name); out.attribute(HtmlAttr.CLASS, "form-control input-sm"); if (optional) { out.startTag(HtmlElem.OPTION); out.attribute(HtmlAttr.VALUE, ""); out.text("-"); out.endTag(HtmlElem.OPTION); } if (values != null) { for (final Entry<?, ?> entry : values.entrySet()) { final Object value = entry.getKey(); final Object text = entry.getValue(); out.startTag(HtmlElem.OPTION); if (selectedValue != null && selectedValue.equals(value)) { out.attribute(HtmlAttr.SELECTED, "true"); } out.attribute(HtmlAttr.VALUE, value); out.text(text); out.endTag(HtmlElem.OPTION); } } out.endTag(HtmlElem.SELECT); } public static void serializeSelect(final XmlWriter out, final String name, final Object selectedValue, final boolean optional, final Object... values) { serializeSelect(out, name, selectedValue, false, Arrays.asList(values)); } public static void serializeSpan(final XmlWriter out, final String cssClass, final Object content) { if (content != null) { final String text = content.toString().trim(); if (text.length() > 0) { out.startTag(HtmlElem.SPAN); if (cssClass != null) { out.attribute(HtmlAttr.CLASS, cssClass); } out.text(text); out.endTag(HtmlElem.SPAN); } } } public static void serializeStyle(final XmlWriter out, final String style) { out.startTag(HtmlElem.STYLE); out.attribute(HtmlAttr.TYPE, "text/css"); out.newLine(); out.text(style); out.endTagLn(HtmlElem.STYLE); } public static void serializeStyleLink(final XmlWriter out, final String url) { out.startTag(HtmlElem.LINK); out.attribute(HtmlAttr.REL, "stylesheet"); out.attribute(HtmlAttr.TYPE, "text/css"); out.attribute(HtmlAttr.HREF, url); out.endTag(HtmlElem.LINK); } public static void serializeSubmitInput(final XmlWriter out, final String name, final Object value) { out.startTag(HtmlElem.INPUT); out.attribute(HtmlAttr.NAME, name); out.attribute(HtmlAttr.TYPE, "submit"); if (value != null) { out.attribute(HtmlAttr.VALUE, value); } out.endTag(HtmlElem.INPUT); } public static void serializeTag(final XmlWriter out, final QName tag, final String content) { out.startTag(tag); out.text(content); out.endTag(tag); } public static void serializeTextInput(final XmlWriter out, final String name, final Object value, final int size, final int maxLength) { out.startTag(HtmlElem.INPUT); out.attribute(HtmlAttr.NAME, name); out.attribute(HtmlAttr.TYPE, "text"); out.attribute(HtmlAttr.CLASS, "form-control input-sm"); out.attribute(HtmlAttr.SIZE, size); out.attribute(HtmlAttr.MAX_LENGTH, maxLength); if (value != null) { out.attribute(HtmlAttr.VALUE, value); } out.endTag(HtmlElem.INPUT); } /** * Construct a new HtmlUtil. */ private HtmlUtil() { } }