/* * The contents of this file are subject to the Mozilla Public License Version 1.1 * (the "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at . * * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT * WARRANTY OF ANY KIND, either express or implied. See the License for the specific * language governing rights and limitations under the License. * * The Original Code is the Venice Web Communities System. * * The Initial Developer of the Original Code is Eric J. Bowersox , * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are * Copyright (C) 2002-03 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. * * Contributor(s): */ package com.silverwrist.dynamo.dialog; import java.io.*; import java.util.*; import org.w3c.dom.*; import com.silverwrist.util.*; import com.silverwrist.util.xml.*; import com.silverwrist.dynamo.except.*; import com.silverwrist.dynamo.iface.*; import com.silverwrist.dynamo.util.*; abstract class CommonTextField extends BaseDialogField { /*-------------------------------------------------------------------------------- * Static data members *-------------------------------------------------------------------------------- */ private static final int MINSIZE = 2; /*-------------------------------------------------------------------------------- * Attributes *-------------------------------------------------------------------------------- */ private String m_tagname; private String m_value = null; private int m_size; private int m_maxlength; private int m_real_maxlength; /*-------------------------------------------------------------------------------- * Constructors *-------------------------------------------------------------------------------- */ protected CommonTextField(String tagname, Element elt) throws DialogException { super(false,elt); m_tagname = tagname; XMLLoader loader = XMLLoader.get(); try { // load the "size" attributes for the text field int my_size = loader.getAttributeInt(elt,"size"); DOMElementHelper h = new DOMElementHelper(elt); if (h.hasAttribute("maxlength")) { // get the maxlength and figure it in... m_real_maxlength = loader.getAttributeInt(elt,"maxlength"); m_maxlength = Math.max(m_real_maxlength,MINSIZE); m_size = Math.max(my_size,MINSIZE); } // end if else { // "size" is all we got - maxlength is equal to it m_real_maxlength = my_size; m_maxlength = m_size = Math.max(my_size,MINSIZE); } // end else } // end try catch (XMLLoadException e) { // translate exception here throw new DialogException(e); } // end catch } // end constructor protected CommonTextField(String tagname, int width, Element elt) throws DialogException { super(false,elt); m_tagname = tagname; m_real_maxlength = width; m_maxlength = m_size = Math.max(width,MINSIZE); } // end constructor protected CommonTextField(CommonTextField other) { super(other); m_tagname = other.m_tagname; m_size = other.m_size; m_maxlength = other.m_maxlength; m_real_maxlength = other.m_real_maxlength; } // end constructor /*-------------------------------------------------------------------------------- * Overrides from class BaseDialogField *-------------------------------------------------------------------------------- */ protected boolean isNull(Object value) { return ((value==null) || StringUtils.isEmpty(value.toString())); } // end isNull /*-------------------------------------------------------------------------------- * Abstract implementations from class BaseDialogField *-------------------------------------------------------------------------------- */ protected void renderField(TextRenderControl control, Map render_params) throws IOException, RenderingException { PrintWriter wr = control.getWriter(); wr.write(""); } // end renderField protected void validateContents(Request r, Object data) throws ValidationException { if ((data!=null) && (data.toString().length()>m_real_maxlength)) { // this value is too long ValidationException ve = new ValidationException(CommonTextField.class,"DialogMessages","text.tooLong"); ve.setParameter(0,getCaption()); ve.setParameter(1,String.valueOf(m_real_maxlength)); throw ve; } // end if } // end validateContents public Object getValue() { return m_value; } // end getValue public boolean containsValue() { return StringUtils.isNotEmpty(m_value); } // end containsValue public void setValue(Object obj) { if (obj==null) m_value = null; else m_value = obj.toString(); if ((m_value!=null) && StringUtils.isEmpty(m_value)) m_value = null; } // end setValue public void setValueFrom(Request r) { RequestHelper rh = new RequestHelper(r); m_value = rh.getParameterString(getName()); if ((m_value!=null) && StringUtils.isEmpty(m_value)) m_value = null; } // end setValueFrom public void reset() { m_value = null; } // end reset } // end class CommonTextField