/* * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package net.java.sip.communicator.service.protocol; import java.util.*; /** * The <tt>ChatRoomConfigurationFormField</tt> is contained in the * <tt>ChatRoomConfigurationForm</tt> and represents a configuration property of * a chat room. It's meant to be used by GUI-s to provide access to the user * to chat room configuration. * <br> * The <tt>ChatRoomConfigurationFormField</tt> defines 8 different types of * fields: * <ul> * <li>TYPE_TEXT_FIXED - information text, that could not be changed</li> * <li>TYPE_BOOLEAN - boolean values</li> * <li>TYPE_TEXT_PRIVATE - text, that should not be shown to the user as * clear text</li> * <li>TYPE_TEXT_MULTI - multilines text</li> * <li>TYPE_TEXT_SINGLE - single line text</li> * <li>TYPE_LIST_MULTI - multi choice list</li> * <li>TYPE_LIST_SINGLE - single choice list</li> * <li>TYPE_UNDEFINED - undefined type</li> * </ul> * The type of the field will help the GUI to determine the component to use to * represent the given field. * * @author Yana Stamcheva */ public interface ChatRoomConfigurationFormField { /** * The undefined type is meant to be used by the implementation if they * don't know the type of the configuration property. */ public static final String TYPE_UNDEFINED = "Undefined"; /** * The fixed text type means that the value of this field is a text, that * could not be changed. This type is meant to be used for adding additional * information helping the user to complete the form. */ public static final String TYPE_TEXT_FIXED = "FixedText"; /** * The private text type indicates that the text, contained in this field * should not be shown to the user in clear text, instead if should be * protected by showing '*'. This type is used for passwords. */ public static final String TYPE_TEXT_PRIVATE = "PrivateText"; /** * The boolean type means that the value of this field is of type Boolean. */ public static final String TYPE_BOOLEAN = "Boolean"; /** * The multi lines text type means that the value of this field is a text * represented on multiple lines. */ public static final String TYPE_TEXT_MULTI = "MultipleLinesText"; /** * The single line text type means that the value of this field is a text * represented on one line. */ public static final String TYPE_TEXT_SINGLE = "SingleLineText"; /** * The list multi type means that the value of this field is a list that * allows multiple choice (i.e. multiple lines could be selected at the * same time). */ public static final String TYPE_LIST_MULTI = "ListMultiChoice"; /** * The list single type means that the value of this field is a list that * allows only one line to be selected at a time. */ public static final String TYPE_LIST_SINGLE = "ListSingleChoice"; /** * Returns the name of the field to be filled out. This serves as an * identifier of the field. * * @return the name of the field */ public String getName(); /** * Returns a description that provides extra clarification about the * field. This information could be presented to the user either in * tool-tip,help button, or as a section of text before the question.<p> * * @return description that provides extra clarification about the question. */ public String getDescription(); /** * Returns the label of the field which should give enough information to * the user to fill out the form. * * @return label of the question. */ public String getLabel(); /** * Returns an Iterator for the available options that the user has in order * to answer the question. * * @return Iterator for the available options. */ public Iterator getOptions(); /** * Returns true if the question must be answered in order to complete the * questionnaire * * @return true if the question must be answered in order to complete the * questionnaire. */ public boolean isRequired(); /** * Returns an indicative of the format for the data to answer. The valid * types are all TYPE_XXX constants defined in this class. * * @return format for the data to answer. */ public String getType(); /** * Returns an Iterator for the default values of the field if the * field is part of a form to fill out. Otherwise, returns an Iterator * for the answered values of the field. * * @return an Iterator for the default values or answered values of the * field */ public Iterator getValues(); /** * Adds the given value to the values of this field. * * @param value the value to add */ public void addValue(Object value); /** * Sets the list of values for this field. * * @param newValues the values of this field */ public void setValues(Object[] newValues); }