src.com.ibm.as400.util.html.GridLayoutFormPanel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400-jdk9 Show documentation
Show all versions of jt400-jdk9 Show documentation
The Open Source version of the IBM Toolbox for Java
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: GridLayoutFormPanel.java
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2000 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.as400.util.html;
import com.ibm.as400.access.Trace;
import com.ibm.as400.access.ExtendedIllegalArgumentException;
import java.util.Vector;
import java.beans.*;
/**
* The GridLayoutFormPanel class represents a grid layout of HTML form elements.
*
* GridLayoutFormPanel objects generate the following events:
*
* - ElementEvent - The events fired are:
*
* - elementAdded
*
- elementRemoved
*
* - PropertyChangeEvent
*
- VetoableChangeEvent
*
*
*
* This examples creates a GridLayoutFormPanel object with two columns.
*
*
* // Create a text form input element for the system.
* LabelFormElement sysPrompt = new LabelFormElement("System:");
* TextFormInput system = new TextFormInput("System");
*
* // Create a text form input element for the userId.
* LabelFormElement userPrompt = new LabelFormElement("User:");
* TextFormInput user = new TextFormInput("User");
*
* // Create a password form input element for the password.
* LabelFormElement passwordPrompt = new LabelFormElement("Password:");
* PasswordFormInput password = new PasswordFormInput("Password");
*
* // Create the GridLayoutFormPanel object with two columns and add the form elements.
* GridLayoutFormPanel panel = new GridLayoutFormPanel(2);
* panel.addElement(sysPrompt);
* panel.addElement(system);
* panel.addElement(userPrompt);
* panel.addElement(user);
* panel.addElement(passwordPrompt);
* panel.addElement(password);
*
* // Create the submit button to the form.
* SubmitFormInput logonButton = new SubmitFormInput("logon", "Logon");
*
* // Create HTMLForm object and add the panel to it.
* HTMLForm form = new HTMLForm(servletURI);
* form.addElement(panel);
* form.addElement(logonButton);
*
**/
public class GridLayoutFormPanel extends LayoutFormPanel
{
private static final String copyright = "Copyright (C) 1997-2000 International Business Machines Corporation and others.";
private int columns_; // The number of columns in the layout.
private String lang_; // The primary language used to display the tags contents. //$B1A
private String dir_; // The direction of the text interpretation. //$B1A
private String[] columnDir_; // The direction of the text interpretation used on each cell for a given table column.
private String[] columnAlign_; // The alignment used on each cell for a given table column.
private String align_; // The alignment used on the overall table.
/**
* Constructs a default GridLayoutFormPanel with one column.
**/
public GridLayoutFormPanel()
{
super();
columns_ = 1;
columnDir_ = new String[columns_];
columnAlign_ = new String[columns_];
}
/**
* Constructs a GridLayoutFormPanel with the specified number of columns.
* @param columns The number of columns.
**/
public GridLayoutFormPanel(int columns)
{
super();
try
{
setColumns(columns);
}
catch (PropertyVetoException e)
{
}
}
/**
* Adds a PropertyChangeListener. The specified PropertyChangeListener's
* propertyChange method will be called each time the value of any
* bound property is changed.
*
* @see #removePropertyChangeListener
*
* @param listener The PropertyChangeListener.
**/
public void addPropertyChangeListener(PropertyChangeListener listener)
{
if (listener == null)
throw new NullPointerException ("listener");
if (changes_ == null) changes_ = new PropertyChangeSupport(this); //@CRS
changes_.addPropertyChangeListener(listener);
}
/**
* Adds the VetoableChangeListener. The specified VetoableChangeListener's
* vetoableChange method will be called each time the value of any
* constrained property is changed.
*
* @see #removeVetoableChangeListener
*
* @param listener The VetoableChangeListener.
**/
public void addVetoableChangeListener(VetoableChangeListener listener)
{
if (listener == null)
throw new NullPointerException ("listener");
if (vetos_ == null) vetos_ = new VetoableChangeSupport(this); //@CRS
vetos_.addVetoableChangeListener(listener);
}
/**
* Returns the alignment of the text interpretation.
* @return The alignment of the text.
**/
public String getAlignment()
{
return align_;
}
/**
* Returns the alignment attribute tag.
**/
String getAlignmentAttributeTag()
{
if (align_ != null && align_.length() > 0)
{
return " align=\"" + align_ + "\"";
}
return "";
}
/**
* Returns the cell alignment attribute tag for the given column.
**/
String getCellAlignmentAttributeTag(int column)
{
if (columnAlign_[column] != null && columnAlign_[column].length() > 0)
{
return " align=\"" + columnAlign_[column] + "\"";
}
return "";
}
/**
* Returns the cell direction attribute tag for the given column.
**/
String getCellDirectionAttributeTag(int column)
{
if (columnDir_[column] != null && columnDir_[column].length() > 0)
{
return " dir=\"" + columnDir_[column] + "\"";
}
return "";
}
/**
* Returns the alignment of the text that is used for
* elements in a specific column in the grid. Use {@link #getAlignment getAlignment}
* to determine the alignment used for the overall grid.
* @param column The column for which to retrieve the alignment. The column is 0-based.
* @return The alignment of the text, or null if one was not set.
* @see #setColumnAlignment
**/
public String getColumnAlignment(int column)
{
if (column < 0 || column >= columns_)
{
throw new ExtendedIllegalArgumentException("column", ExtendedIllegalArgumentException.RANGE_NOT_VALID);
}
return columnAlign_[column];
}
/**
* Returns the direction of the text interpretation that is
* used for elements in a specific column in the grid. Use {@link #getDirection getDirection}
* to determine the direction used for the overall grid.
* @param column The column for which to retrieve the direction. The column is 0-based.
* @return The direction of the text, or null if one was not set.
* @see #setColumnDirection
**/
public String getColumnDirection(int column)
{
if (column < 0 || column >= columns_)
{
throw new ExtendedIllegalArgumentException("column", ExtendedIllegalArgumentException.RANGE_NOT_VALID);
}
return columnDir_[column];
}
/**
* Returns the number of columns in the layout.
* @return The number of columns.
**/
public int getColumns()
{
return columns_;
}
/**
* Returns the direction of the text interpretation.
* @return The direction of the text.
**/
public String getDirection() //$B1A
{
return dir_;
}
/**
* Returns the direction attribute tag.
* @return The direction tag.
**/
String getDirectionAttributeTag() //$B1A
{
//@C1D
if ((dir_ != null) && (dir_.length() > 0))
return " dir=\"" + dir_ + "\"";
else
return "";
}
/**
* Returns the language of the input element.
* @return The language of the input element.
**/
public String getLanguage() //$B1A
{
return lang_;
}
/**
* Returns the language attribute tag.
* @return The language tag.
**/
String getLanguageAttributeTag() //$B1A
{
//@C1D
if ((lang_ != null) && (lang_.length() > 0))
return " lang=\"" + lang_ + "\"";
else
return "";
}
/**
* Returns a comment tag.
* This method should not be called. There is no XSL-FO support for this class.
* @return The comment tag.
**/
public String getFOTag() //@D1A
{
Trace.log(Trace.ERROR, "Attempting to getFOTag() for an object that doesn't support it.");
return "";
}
/**
* Returns the grid layout panel tag.
* @return The tag.
**/
public String getTag()
{
//@C1D
StringBuffer s = new StringBuffer("\n"); //$B1A
int index = 0;
for (int i=0; i< getSize(); i++)
{
if (index == 0)
s.append("\n");
HTMLTagElement e = getElement(i);
s.append("");
s.append(e.getTag());
s.append(" \n");
index++;
if (index >= columns_)
{
s.append(" \n");
index = 0;
}
}
if (index != 0)
s.append("\n");
s.append("
\n");
return s.toString();
}
/**
* Removes the PropertyChangeListener from the internal list.
* If the PropertyChangeListener is not on the list, nothing is done.
*
* @see #addPropertyChangeListener
*
* @param listener The PropertyChangeListener.
**/
public void removePropertyChangeListener(PropertyChangeListener listener)
{
if (listener == null)
throw new NullPointerException ("listener");
if (changes_ != null) changes_.removePropertyChangeListener(listener); //@CRS
}
/**
* Removes the VetoableChangeListener from the internal list.
* If the VetoableChangeListener is not on the list, nothing is done.
*
* @see #addVetoableChangeListener
* @param listener The VetoableChangeListener.
**/
public void removeVetoableChangeListener(VetoableChangeListener listener)
{
if (listener == null)
throw new NullPointerException ("listener");
if (vetos_ != null) vetos_.removeVetoableChangeListener(listener); //@CRS
}
/**
* Sets the alignment of the text for the grid.
* @param align The alignment. Use one of the following constants
* defined in HTMLConstants: LEFT, RIGHT, or CENTER.
* @see com.ibm.as400.util.html.HTMLConstants
**/
public void setAlignment(String align)
{
if (align == null) throw new NullPointerException("align");
if (!align.equals(HTMLConstants.LEFT) &&
!align.equals(HTMLConstants.RIGHT) &&
!align.equals(HTMLConstants.CENTER))
{
throw new ExtendedIllegalArgumentException("align", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
align_ = align;
}
/**
* Sets the alignment of the text interpretation that is used
* for elements in a specific column in the grid. Use {@link #setAlignment setAlignment}
* to set the alignment for the overall grid.
* @param column The column. This value is 0-based.
* @param align The alignment. One of the following constants
* defined in HTMLConstants: LEFT, RIGHT, or CENTER.
* @see com.ibm.as400.util.html.HTMLConstants
**/
public void setColumnAlignment(int column, String align)
{
if (align == null) throw new NullPointerException("align");
if (column < 0 || column >= columns_)
{
throw new ExtendedIllegalArgumentException("column", ExtendedIllegalArgumentException.RANGE_NOT_VALID);
}
// If direction is not one of the valid HTMLConstants, throw an exception.
if (!align.equals(HTMLConstants.LEFT) &&
!align.equals(HTMLConstants.RIGHT) &&
!align.equals(HTMLConstants.CENTER))
{
throw new ExtendedIllegalArgumentException("align", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
columnAlign_[column] = align;
}
/**
* Sets the direction of the text interpretation that is used
* for elements in a specific column in the grid. Use {@link #setDirection setDirection}
* to set the direction for the overall grid.
* @param column The column. This value is 0-based.
* @param dir The direction. One of the following constants
* defined in HTMLConstants: LTR or RTL.
* @see com.ibm.as400.util.html.HTMLConstants
**/
public void setColumnDirection(int column, String dir)
{
if (dir == null) throw new NullPointerException("dir");
if (column < 0 || column >= columns_)
{
throw new ExtendedIllegalArgumentException("column", ExtendedIllegalArgumentException.RANGE_NOT_VALID);
}
// If direction is not one of the valid HTMLConstants, throw an exception.
if (!dir.equals(HTMLConstants.LTR) && !dir.equals(HTMLConstants.RTL))
{
throw new ExtendedIllegalArgumentException("dir", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
columnDir_[column] = dir;
}
/**
* Sets the number of columns in the layout.
* Note that this will not preserve any column alignment or column direction
* information that was previously set.
* @param columns The number of columns.
*
* @exception PropertyVetoException If a change is vetoed.
**/
public void setColumns(int columns)
throws PropertyVetoException
{
if (columns < 0)
throw new ExtendedIllegalArgumentException("columns", ExtendedIllegalArgumentException.RANGE_NOT_VALID);
int old = columns_;
if (vetos_ != null) vetos_.fireVetoableChange("columns", new Integer(old), new Integer(columns) ); //@CRS
columns_ = columns;
columnDir_ = new String[columns_]; // Don't preserve the old direction info.
columnAlign_ = new String[columns_]; // Don't preserve the old alignment info.
if (changes_ != null) changes_.firePropertyChange("columns", new Integer(old), new Integer(columns) ); //@CRS
}
/**
* Sets the direction of the text interpretation.
* @param dir The direction. One of the following constants
* defined in HTMLConstants: LTR or RTL.
*
* @see com.ibm.as400.util.html.HTMLConstants
*
* @exception PropertyVetoException If a change is vetoed.
**/
public void setDirection(String dir) //$B1A
throws PropertyVetoException
{
if (dir == null)
throw new NullPointerException("dir");
// If direction is not one of the valid HTMLConstants, throw an exception.
if ( !(dir.equals(HTMLConstants.LTR)) && !(dir.equals(HTMLConstants.RTL)) )
{
throw new ExtendedIllegalArgumentException("dir", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
String old = dir_;
if (vetos_ != null) vetos_.fireVetoableChange("dir", old, dir ); //@CRS
dir_ = dir;
if (changes_ != null) changes_.firePropertyChange("dir", old, dir ); //@CRS
}
/**
* Sets the language of the input tag.
* @param lang The language. Example language tags include:
* en and en-US.
*
* @exception PropertyVetoException If a change is vetoed.
**/
public void setLanguage(String lang) //$B1A
throws PropertyVetoException
{
if (lang == null)
throw new NullPointerException("lang");
String old = lang_;
if (vetos_ != null) vetos_.fireVetoableChange("lang", old, lang ); //@CRS
lang_ = lang;
if (changes_ != null) changes_.firePropertyChange("lang", old, lang ); //@CRS
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy