All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.com.ibm.as400.util.html.HTMLList Maven / Gradle / Ivy

There is a newer version: 11.1
Show newest version
///////////////////////////////////////////////////////////////////////////////
//                                                                             
// 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", new Boolean(old), new Boolean(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 - 2024 Weber Informatics LLC | Privacy Policy