1 29 30 package nextapp.echo2.webcontainer.syncpeer; 31 32 import nextapp.echo2.app.Component; 33 import nextapp.echo2.app.PasswordField; 34 import nextapp.echo2.app.TextField; 35 import nextapp.echo2.app.update.ServerComponentUpdate; 36 import nextapp.echo2.webcontainer.ContainerInstance; 37 import nextapp.echo2.webcontainer.DomUpdateSupport; 38 import nextapp.echo2.webcontainer.RenderContext; 39 import nextapp.echo2.webrender.ServerMessage; 40 import nextapp.echo2.webrender.output.CssStyle; 41 42 import org.w3c.dom.Element ; 43 import org.w3c.dom.Node ; 44 45 51 public class TextFieldPeer extends TextComponentPeer 52 implements DomUpdateSupport { 53 54 58 public void renderHtml(RenderContext rc, ServerComponentUpdate addUpdate, Node parentNode, Component component) { 59 TextField textField = (TextField) component; 60 String elementId = ContainerInstance.getElementId(textField); 61 62 ServerMessage serverMessage = rc.getServerMessage(); 63 serverMessage.addLibrary(TEXT_COMPONENT_SERVICE.getId()); 64 65 Element inputElement = parentNode.getOwnerDocument().createElement("input"); 66 inputElement.setAttribute("id", elementId); 67 if (textField instanceof PasswordField) { 68 inputElement.setAttribute("type", "password"); 69 } else { 70 inputElement.setAttribute("type", "text"); 71 } 72 String value = textField.getText(); 73 if (value != null) { 74 inputElement.setAttribute("value", value); 75 } 76 77 if (textField.isFocusTraversalParticipant()) { 78 inputElement.setAttribute("tabindex", Integer.toString(textField.getFocusTraversalIndex())); 79 } else { 80 inputElement.setAttribute("tabindex", "-1"); 81 } 82 83 String toolTipText = (String ) textField.getRenderProperty(TextField.PROPERTY_TOOL_TIP_TEXT); 84 if (toolTipText != null) { 85 inputElement.setAttribute("title", toolTipText); 86 } 87 88 Integer maximumLength = (Integer ) textField.getRenderProperty(TextField.PROPERTY_MAXIMUM_LENGTH); 89 if (maximumLength != null) { 90 inputElement.setAttribute("maxlength", maximumLength.toString()); 91 } 92 93 CssStyle cssStyle = createBaseCssStyle(rc, textField); 94 if (cssStyle.hasAttributes()) { 95 inputElement.setAttribute("style", cssStyle.renderInline()); 96 } 97 98 parentNode.appendChild(inputElement); 99 100 renderInitDirective(rc, textField); 101 } 102 } 103 | Popular Tags |