com.ibm.as400.util.html.HTMLAlign 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: HTMLAlign.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.ExtendedIllegalStateException;
import com.ibm.as400.access.ExtendedIllegalArgumentException;
import java.util.Vector;
import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
/**
* The HTMLAlign class represents a block formatting element, which uses the HTML
* <DIV> tag, within an HTML page. The tag has an implied line break before
* and after the tag.
*
* This example creates a HTMLAlign tag:
*
* // Create an ordered list.
* OrderedList list = new OrderedList(HTMLConstants.LARGE_ROMAN);
* OrderedListItem listItem = new OrderedListItem();
* listItem.setItemData(new HTMLText("my list item"));
* list.addListItem(listItem);
*
* // Align the list.
* HTMLAlign align = new HTMLAlign(list, HTMLConstants.CENTER);
* System.out.println(align);
*
*
* Here is the output of the HTMLAlign tag:
*
* <div align="center">
* <ol type="I">
* <li type="i">my list item</li>
* </ol>
* </div>
*
*
*
* Calling getFOTag() would produce the following:
*
* <fo:block text-align='center'>
* <fo:block-container>
* <fo:list-block>
* <fo:list-item>
* <fo:list-item-label>I.</fo:list-item-label>
* <fo:list-item-body><fo:block-container><fo:block>my list item</fo:block>
* </fo:block-container>
* </fo:list-item-body>
* </fo:list-item>
* </fo:list-block>
* </fo:block-container>
* </fo:block>
*
*
* HTMLAlign objects generate the following events:
*
* - ElementEvent - The events fired are:
*
* - elementAdded
*
- elementRemoved
*
* - PropertyChangeEvent
*
**/
public class HTMLAlign extends HTMLTagAttributes implements java.io.Serializable // @Z1C
{
private static final String copyright = "Copyright (C) 1997-2000 International Business Machines Corporation and others.";
static final long serialVersionUID = -7673670119386729128L;
private String align_ = HTMLConstants.LEFT;
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 Vector list_ = new Vector();
transient private Vector elementListeners; // The list of element listeners @CRS
/**
* Constructs a default HTMLAlign object.
**/
public HTMLAlign()
{
super();
}
/**
* Constructs an HTMLAlign object with the specified data.
* The default alignment is left.
*
* @param data The data to align.
**/
public HTMLAlign(HTMLTagElement data)
{
super();
addItem(data);
}
/**
* Constructs an HTMLAlign object with the specified data and align attribute.
*
* @param data The data to align.
* @param align The type of alignment. One of the following constants
* defined in HTMLConstants: LEFT, RIGHT, or CENTER.
**/
public HTMLAlign(HTMLTagElement data, String align)
{
super();
addItem(data);
setAlign(align);
}
/**
* Adds an HTMLTagElement to the list of tags to align.
*
* @param data The data to align.
**/
public void addItem(HTMLTagElement data)
{
//@C1D
if (data == null)
throw new NullPointerException("data");
list_.addElement(data);
fireElementEvent(ElementEvent.ELEMENT_ADDED);
}
/**
* Adds an ElementListener.
*
* @param listener The ElementListener.
**/
public void addItemElementListener(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;
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 alignment of the HTMLAlign object.
* @return The alignment.
**/
public String getAlign()
{
return align_;
}
/**
* 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 outputting XSL-FO Tags //@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))
return " dir=\"" + dir_ + "\"";
else
return "";
} //@D1A
}
/**
* 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 the tag for the HTML alignment.
* @return The tag.
**/
public String getTag()
{
//@C1D
if(useFO_) //@D1A
return getFOTag(); //@D1A
if (list_.isEmpty())
{
Trace.log(Trace.ERROR, "Attempting to get tag before adding items to list.");
throw new ExtendedIllegalStateException(
"data", ExtendedIllegalStateException.PROPERTY_NOT_SET );
}
StringBuffer s = new StringBuffer("");
if (align_ != null)
{
if (align_.equals(HTMLConstants.LEFT))
s.append("\n"); //$B1C
for (int i=0; i < list_.size(); i++)
{
HTMLTagElement data = (HTMLTagElement)list_.elementAt(i);
s.append(data.getTag());
}
s.append("\n\n");
return s.toString();
}
/**
* Returns the tag for the XSL-FO alignment.
* The language attribute is not supported in XSL-FO.
* @return The tag.
**/
public String getFOTag() //@D1A
{
//Save current useFO_ value
boolean useFO = useFO_;
//Indicate that XSL-FO tags are outputted.
setUseFO(true);
if (list_.isEmpty())
{
Trace.log(Trace.ERROR, "Attempting to get XSL-FO tag before adding items to list.");
throw new ExtendedIllegalStateException(
"data", ExtendedIllegalStateException.PROPERTY_NOT_SET );
}
StringBuffer s = new StringBuffer("");
if (align_ != null)
{
if(align_.equals(HTMLConstants.LEFT))
s.append("\n");
for (int i = 0; i\n");
//Set useFO_ to previous state.
setUseFO(useFO);
return s.toString();
}
/**
* Removes this ElementListener.
*
* @param listener The ElementListener.
**/
public void removeItemElementListener(ElementListener listener)
{
if (listener == null)
throw new NullPointerException("listener");
if (elementListeners != null) elementListeners.removeElement(listener); //@CRS
}
/**
* 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 HTMLTagElement from the list of tags to align.
*
* @param data The data to remove.
**/
public void removeItem(HTMLTagElement data)
{
//@C1D
if (data == null)
throw new NullPointerException("data");
if (list_.removeElement(data))
fireElementEvent(ElementEvent.ELEMENT_REMOVED);
}
/**
* Sets the horizontal alignment for a block of HTML. The default is left alignment.
* @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 setAlign(String align)
{
if (align == null)
throw new NullPointerException("align");
// If align 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);
}
if (Trace.isTraceOn())
Trace.log(Trace.INFORMATION, " Setting alignment for .");
String old = align_;
align_ = align;
if (changes_ != null) changes_.firePropertyChange("align", old, align ); //@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 language of the HTMLAlign 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 HTMLAlign tag.
* @return The tag.
**/
public String toString()
{
return getTag();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy