/**************************************************************************** * Copyright (C) 2012 ecsec GmbH. * All rights reserved. * Contact: ecsec GmbH (info@ecsec.de) * * This file is part of the Open eCard App. * * GNU General Public License Usage * This file may be used under the terms of the GNU General Public * License version 3.0 as published by the Free Software Foundation * and appearing in the file LICENSE.GPL included in the packaging of * this file. Please review the following information to ensure the * GNU General Public License version 3.0 requirements will be met: * http://www.gnu.org/copyleft/gpl.html. * * Other Usage * Alternatively, this file may be used in accordance with the terms * and conditions contained in a signed written agreement between * you and ecsec GmbH. * ***************************************************************************/ package org.openecard.gui.definition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Base definition for text fields. * A field can be identified by an ID. * * @see TextField * @see PasswordField * @author Tobias Wich <tobias.wich@ecsec.de> */ public abstract class AbstractTextField extends IDTrait implements InputInfoUnit, OutputInfoUnit { private static final Logger _logger = LoggerFactory.getLogger(AbstractTextField.class); private String description; private String value; private int minLength; private int maxLength; /** * Creates an instance initialized with a given ID. * * @param id The id to initialize the instance with. */ public AbstractTextField(String id) { super(id); this.minLength = 0; this.maxLength = Integer.MAX_VALUE; } /** * Returns the description of the text field. * The description can be used as a label in front of the field. * * @return String describing the text field. */ public String getDescription() { return description; } /** * Sets the description of the text field. * The description can be used as a label in front of the field. * * @param description String describing the text field. */ public void setDescription(String description) { this.description = description; } /** * Gets the value of the text field. * * @return The value of the text field. */ public String getValue() { return value; } /** * Sets the value of the text field. * * @param value The value of the text field. */ public void setValue(String value) { this.value = value; } /** * Gets the minimum length of the text field value. * The length of the value should be checked in the GUI implementation. If the length is wrong, the implementation * can notify the user and let him correct the value. * * @see #setMaxLength(int) * @return The minimum length of the text value. */ public int getMinLength() { return minLength; } /** * Sets the minimum length of the text field value. * The length of the value should be checked in the GUI implementation. If the length is wrong, the implementation * can notify the user and let him correct the value. * * @see #setMaxLength(int) * @param minLength The minimum length of the text value. */ public void setMinLength(int minLength) { this.minLength = minLength; } /** * Gets the maximum length of the text field value. * The length of the value should be checked in the GUI implementation. If the length is wrong, the implementation * can notify the user and let him correct the value. * * @see #getMinLength() * @return The maximum length of the text value. */ public int getMaxLength() { return maxLength; } /** * Sets the maximum length of the text field value. * The length of the value should be checked in the GUI implementation. If the length is wrong, the implementation * can notify the user and let him correct the value. * * @see #setMinLength() * @param maxLength The maximum length of the text value. */ public void setMaxLength(int maxLength) { this.maxLength = maxLength; } /** * {@inheritDoc} * <p><b>NOTE:</b> It is important to override this method in subclasses if additional members are introduced.</p> */ @Override public void copyContentFrom(InfoUnit origin) { if (!(this.getClass().equals(origin.getClass()))) { _logger.warn("Trying to copy content from type {} to type {}.", origin.getClass(), this.getClass()); return; } AbstractTextField other = (AbstractTextField) origin; // do copy this.description = other.description; this.value = other.value; this.minLength = other.minLength; this.maxLength = other.maxLength; } }