com.ibm.as400.util.html.HTMLList Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400 Show documentation
Show all versions of jt400 Show documentation
The Open Source version of the IBM Toolbox for Java
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: HTMLList.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-2001 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.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
import java.util.*;
/**
* The HTMLList class represents a list. The list can either be an ordered
* list <ol> or an unordered list <ul>.
*
* HTMLList objects generate the following events:
*
* - ElementEvent - The events fired are:
*
* - elementAdded
*
- elementRemoved
*
* - PropertyChangeEvent
*
*
**/
public abstract class HTMLList extends HTMLTagAttributes implements java.io.Serializable // @Z1C
{
private static final String copyright = "Copyright (C) 1997-2001 International Business Machines Corporation and others.";
static final long serialVersionUID = -3017041765887905594L;
private boolean compact_ = false;
private Vector listItems_;
private String lang_; // The primary language used to display the tags contents. //$B1A
private String dir_; // The direction of the text interpretation. //$B1A
private boolean useFO_ = false; // Indicates if XSL-FO tags are outputted. //@D1A
private int value_ = -1; //The number other than the incremented value for the current List Item (LI) //@D1A
transient private Vector elementListeners; // The list of element listeners @CRS
/**
* Constructs a default HTMLList object.
**/
public HTMLList()
{
super();
listItems_ = new Vector();
}
/**
* Constructs an HTMLList object with the specified itemList.
* @param itemList The items in the HTMLList.
**/
public HTMLList(Vector itemList)
{
super();
setItems(itemList);
}
/**
* Adds an HTMLListItem item to the HTMLList.
* @param item The HTMLTagElement.
**/
public void addListItem(HTMLListItem item)
{
//@C1D
if (item == null)
throw new NullPointerException("item");
listItems_.addElement(item);
fireElementEvent(ElementEvent.ELEMENT_ADDED);
}
/**
* Adds an HTML list to the HTMLList.
* @param list The HTMLList.
**/
public void addList(HTMLList list)
{
//@C1D
if (list == null)
throw new NullPointerException("list");
listItems_.addElement(list);
fireElementEvent(ElementEvent.ELEMENT_ADDED);
}
/**
* Adds an ElementListener.
*
* @param listener The ElementListener.
**/
public void addListItemElementListener(ElementListener listener)
{
if (listener == null)
throw new NullPointerException("listener");
if (elementListeners == null) elementListeners = new Vector(); //@CRS
elementListeners.addElement(listener);
}
/**
* Fires the element event.
**/
private void fireElementEvent(int evt)
{
if (elementListeners == null) return; //@CRS
Vector targets;
targets = (Vector) elementListeners.clone();
ElementEvent elementEvt = new ElementEvent(this, evt);
for (int i = 0; i < targets.size(); i++)
{
ElementListener target = (ElementListener)targets.elementAt(i);
if (evt == ElementEvent.ELEMENT_ADDED)
target.elementAdded(elementEvt);
else if (evt == ElementEvent.ELEMENT_REMOVED)
target.elementRemoved(elementEvt);
}
}
/**
* 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
{
if(useFO_) //@D1A
{ //@D1A
if((dir_!=null) && (dir_.length()>0)) //@D1A
{ //@D1A
if(dir_.equals(HTMLConstants.RTL)) //@D1A
return " writing-mode='rl'"; //@D1A
else //@D1A
return " writing-mode='lr'"; //@D1A
} //@D1A
else //@D1A
return ""; //@D1A
} //@D1A
else //@D1A
{ //@D1A
//@C1D
if ((dir_ != null) && (dir_.length() > 0))
{
StringBuffer buffer = new StringBuffer(" dir=\"");
buffer.append(dir_);
buffer.append("\"");
return buffer.toString();
}
else
return "";
} //@D1A
}
/**
* Returns the number of items in the HTMLList.
* @return The number of items.
**/
public int getItemCount()
{
return listItems_.size();
}
/**
* Returns the list of items.
* @return The items.
**/
public Vector getItems()
{
return listItems_;
}
/**
* Returns the item attribute tags.
* @return The item tags.
**/
String getItemAttributeTag()
{
StringBuffer s = new StringBuffer("");
for (int i=0; i < listItems_.size(); i++)
{
HTMLTagElement item = (HTMLTagElement)listItems_.elementAt(i);
s.append(item.getTag());
}
return s.toString();
}
/**
* Returns the item attribute tags.
* @param type The type of numbering or bulleting used as defined in HTMLConstants
* @return The item tags.
**/
String getItemAttributeFOTag(String type) //@D1A
{
String itemType = null;
int listItemCounter = 0;
StringBuffer s = new StringBuffer("");
int size = listItems_.size();
for (int i=0; i < size; i++)
{
s.append("\n");
HTMLTagElement item = (HTMLTagElement)listItems_.elementAt(i);
if(listItems_.elementAt(i) instanceof HTMLListItem)
{
listItemCounter++;
if(listItems_.elementAt(i) instanceof OrderedListItem)
{
OrderedListItem listItem = (OrderedListItem)listItems_.elementAt(i);
//Check to see if the user specified a starting value for the list item
value_ = listItem.getValue();
if(value_ > 0)
listItemCounter = value_;
//Check to see if the user specified a new type for the label
itemType = listItem.getType();
}
else
{
UnorderedListItem listItem = (UnorderedListItem)listItems_.elementAt(i);
//Check to see if the user specified a new type for the label
itemType = listItem.getType();
}
if(itemType == null) //User didn't specify a type for the specific list item, use list's type for label
itemType = type;
HTMLListItem listItem = (HTMLListItem)listItems_.elementAt(i);
s.append(listItem.getTypeAttributeFO(itemType, listItemCounter));
}
s.append(" \n");
s.append(item.getFOTag());
s.append(" \n \n");
}
return s.toString();
}
/**
* 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))
{
StringBuffer buffer = new StringBuffer(" lang=\"");
buffer.append(lang_);
buffer.append("\"");
return buffer.toString();
}
else
return "";
}
/**
* Indicates if the list is initialized to compact.
* @return true if compact; false otherwise.
**/
public boolean isCompact()
{
return compact_;
}
/**
* Returns if Formatting Object tags are outputted.
* The default value is false.
* @return true if the output generated is an XSL formatting object, false if the output generated is HTML.
**/
public boolean isUseFO() //@D1A
{
return useFO_;
}
/**
* Deserializes and initializes transient data.
**/
private void readObject(java.io.ObjectInputStream in)
throws java.io.IOException, ClassNotFoundException
{
in.defaultReadObject();
//@CRS changes_ = new PropertyChangeSupport(this);
//@CRS elementListeners = new Vector();
}
/**
* Removes an HTMLListItem item from the HTMLList.
* @param item The HTMLTagElement.
**/
public void removeListItem(HTMLListItem item)
{
//@C1D
if (item == null)
throw new NullPointerException("item");
if (listItems_.removeElement(item))
fireElementEvent(ElementEvent.ELEMENT_REMOVED);
}
/**
* Removes an HTML list from the HTMLList.
* @param list The HTMLList.
**/
public void removeList(HTMLList list)
{
//@C1D
if (list == null)
throw new NullPointerException("list");
if (listItems_.removeElement(list))
fireElementEvent(ElementEvent.ELEMENT_REMOVED);
}
/**
* Removes this ElementListener.
*
* @param listener The ElementListener.
**/
public void removeListItemElementListener(ElementListener listener)
{
if (listener == null)
throw new NullPointerException("listener");
if (elementListeners != null) elementListeners.removeElement(listener); //@CRS
}
/**
* Sets whether the list is initialized to being compact. The compact attribute
* instructs the browser to reduce the space occupied by the list.
* @param compact true if initialized to compact; false otherwise. The default is false.
*
**/
public void setCompact(boolean compact)
{
//@C1D
boolean old = compact_;
compact_ = compact;
if (changes_ != null) changes_.firePropertyChange("compact", Boolean.valueOf(old), Boolean.valueOf(compact) ); //@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
*
**/
public void setDirection(String dir) //$B1A
{
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_;
dir_ = dir;
if (changes_ != null) changes_.firePropertyChange("dir", old, dir ); //@CRS
}
/**
* Sets the items in the HTMLList.
* @param itemList The list of items.
*
**/
public void setItems(Vector itemList)
{
if (itemList == null)
throw new NullPointerException("items");
//@C1D
Vector old = listItems_;
listItems_ = itemList;
if (changes_ != null) changes_.firePropertyChange("items", old, itemList ); //@CRS
}
/**
* Sets the language of the input tag.
* @param lang The language. Example language tags include:
* en and en-US.
*
**/
public void setLanguage(String lang) //$B1A
{
if (lang == null)
throw new NullPointerException("lang");
String old = lang_;
lang_ = lang;
if (changes_ != null) changes_.firePropertyChange("lang", old, lang ); //@CRS
}
/**
* Sets if Formatting Object tags should be used.
* The default value is false.
* @param useFO - true if output generated is an XSL formatting object, false if the output generated is HTML.
**/
public void setUseFO(boolean useFO) //@D1A
{
boolean old = useFO_;
useFO_ = useFO;
if (changes_ != null) changes_.firePropertyChange("useFO", old, useFO );
}
/**
* Returns a String representation for the HTMLList tag.
* @return The tag.
**/
public String toString()
{
return getTag();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy