src.com.ibm.as400.util.html.HTMLHyperlink Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400-jdk8 Show documentation
Show all versions of jt400-jdk8 Show documentation
The Open Source version of the IBM Toolbox for Java
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: HTMLHyperlink.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.ExtendedIllegalStateException;
import com.ibm.as400.access.ExtendedIllegalArgumentException;
import com.ibm.as400.access.Trace;
import com.ibm.as400.util.servlet.ServletHyperlink;
import java.util.Enumeration;
import java.util.Properties;
import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
import java.beans.PropertyVetoException;
import java.beans.VetoableChangeSupport;
import java.beans.VetoableChangeListener;
/**
* The HTMLHyperlink class represents an HTML hyperlink tag.
*
* This example creates an HTMLHyperlink and displays the HTML tag.
*
* HTMLHyperlink link = new HTMLHyperlink("http://www.myCompany.com", "myCompany Home Page");
* System.out.println(link.getTag());
*
*
* Here is the output of the HTMLHyperlink:
*
* <a href="http://www.myCompany.com">myCompany Home Page</a>
*
*
* This example creates an HTMLHyperlink and sets two properties.
*
* HTMLHyperlink link = new HTMLHyperlink("http://www.myCompany.com", "myCompany Home Page");
* Properties properties = new Properties();
* properties.put("userID", "fred");
* properties.put("employeeID", "01234567");
* link.setProperties(properties);
* System.out.println(link.getTag());
*
*
* Here is the output of the HTMLHyperlink:
*
* <a href="http://www.myCompany.com?userid=fred&employeeID=01234567">myCompany Home Page</a>
*
*
* HTMLHyperlink objects generate the following events:
*
* - PropertyChangeEvent
*
- VetoableChangeEvent
*
**/
public class HTMLHyperlink extends HTMLTagAttributes implements HTMLConstants, java.io.Serializable // @Z1C
{
private static final String copyright = "Copyright (C) 1997-2001 International Business Machines Corporation and others.";
static final long serialVersionUID = 83601853360783566L;
private String bookmarkName_; // The bookmark name.
private String link_; // The network address for the link resource.
private Properties properties_; // Properties associated with the hyperlink. (ie. parameters for URL rewriting)
private String target_; // The target frame for the link resource.
private String text_; // The text to be used to represent the link.
private String title_; // The title for the link resource.
private String location_; // The bookmark location (ie - #location) for the link resource. // $B4A
private String lang_; // The primary language used to display the tags contents. //$B1A
private String dir_; // The direction of the text interpretation. //$B1A
transient VetoableChangeSupport vetos_; //@CRS
/**
* Creates a default HTMLHyperlink object.
**/
public HTMLHyperlink()
{
}
/**
* Creates an HTMLHyperlink object with the specified resource link.
* @param link The Uniform Resource Identifier (URI).
**/
public HTMLHyperlink(String link)
{
if (link == null)
throw new NullPointerException("link");
link_ = link;
}
/**
* Creates an HTMLHyperlink object with the specified resource link
* represented by the specified text.
* @param link The Uniform Resource Identifier (URI).
* @param text The text representation for the resource.
**/
public HTMLHyperlink(String link, String text)
{
this(link);
if (text == null)
throw new NullPointerException("text");
text_ = text;
}
/**
* Creates an HTMLHyperlink object with the specified resource link
* and target frame represented by the specified text.
* @param link The Uniform Resource Identifier (URI).
* @param text The text representation for the resource.
* @param target The target frame.
**/
public HTMLHyperlink(String link, String text, String target)
{
this(link,text);
if (target == null)
throw new NullPointerException("target");
target_ = target;
}
/**
Adds the VetoableChangeListener. The specified
VetoableChangeListener's vetoableChange
method is 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 a copy of the HTMLHyperlink.
*
* @return An HTMLHyperlink.
**/
public Object clone() //$B3A
{
HTMLHyperlink l = new HTMLHyperlink();
try
{
if (location_ != null) //$B4A
l.setLocation(location_); //$B4A
if (properties_ != null) // @B5A
l.setProperties(properties_); // @B5A
if (getAttributes() != null) // @B5A
l.setAttributes(getAttributes()); // @B5A
if (link_ != null)
l.setLink(link_);
if (target_ != null)
l.setTarget(target_);
if (text_ != null)
l.setText(text_);
if (title_ != null)
l.setTitle(title_);
if (dir_ != null)
l.setDirection(dir_);
if (lang_ != null)
l.setLanguage(lang_);
if (bookmarkName_ != null)
l.setName(bookmarkName_);
}
catch (PropertyVetoException e)
{ /* Ignore */
}
return l;
}
/**
* 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 the Uniform Resource Identifier (URI) for the resource link.
* @return The Uniform Resource Identifier.
**/
public String getLink()
{
return link_;
}
/**
* Returns the bookmark locatoin of the resource link.
* @return The location.
**/
public String getLocation()
{
return location_;
}
/**
* Returns the bookmark name.
* @return The name.
**/
public String getName()
{
return bookmarkName_;
}
/**
* Returns the properties associated with the link resource.
* @return The properties.
**/
public Properties getProperties()
{
return properties_;
}
/**
* Returns the target frame for the resource link.
* @return The target frame. a user-defined frame or one
* of the following constants defined in HTMLConstants:
* TARGET_BLANK, TARGET_PARENT, TARGET_SELF, or TARGET_TOP.
* @see com.ibm.as400.util.html.HTMLConstants
**/
public String getTarget()
{
return target_;
}
/**
* Returns the text that represents the resource link.
* This the text that is shown in the HTML document.
* @return The text.
**/
public String getText()
{
return text_;
}
/**
* Returns the title for the resource link.
* @return The title.
**/
public String getTitle()
{
return title_;
}
/**
* 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 HTML tag that represents the resource link.
* @return The HTML tag.
**/
public String getTag()
{
return getTag(text_, properties_);
}
/**
* Returns the HTML tag that represents the resource link
* with the specified text and properties. The original HTMLHyperlink object text
* and properties are not changed/updated.
* @param text The text.
* @param properties The Properties.
* @return The HTML tag.
**/
public String getTag(String text, Properties properties)
{
return getTag(text, bookmarkName_, link_, properties); //$B2C
}
/**
* Returns the HTML tag that represents the resource link
* with the specified text, bookmark name, resource link, and properties.
* The original HTMLHyperlink object text, bookmark name, resource link, and properties
* are not changed/updated.
* @param text The text.
* @param name The bookmark name.
* @param link The Uniform Resource Identifier (URI).
* @param properties The Properties.
* @return The HTML tag.
**/
public String getTag(String text, String name, String link, Properties properties) //$B2A
{
//@C1D
// Verify that the link has been set.
if (link == null)
{
Trace.log(Trace.ERROR, "Attempting to get tag before setting the link.");
throw new ExtendedIllegalStateException("link", ExtendedIllegalStateException.PROPERTY_NOT_SET);
}
// Validate the text parameter.
if (text == null)
throw new NullPointerException("text");
// create the tag.
StringBuffer buffer = new StringBuffer();
buffer.append("");
buffer.append(text);
buffer.append("");
return new String(buffer);
}
/**
* 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 vetos_ = new VetoableChangeSupport(this);
}
/**
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 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
}
/**
* Sets the bookmark location of the resource link within a document. The location
* is denoted with the # symbol at the end of the
* link followed by a location. (ie - http://myPage.html#myBookmarkLocation)
* @param location The location.
**/
public void setLocation(String location) //$B4A
{
if (location == null)
throw new NullPointerException("location");
String old = location_;
location_ = location;
if (changes_ != null) changes_.firePropertyChange("location", old, location); //@CRS
}
/**
* Sets the Uniform Resource Identifier (URI) for the resource link.
* @param link The Uniform Resource Identifier.
* @exception PropertyVetoException If the change is vetoed.
**/
public void setLink(String link) throws PropertyVetoException
{
if (link == null)
throw new NullPointerException("link");
String old = link_;
if (vetos_ != null) vetos_.fireVetoableChange("link", old, link ); //@CRS
link_ = link;
if (changes_ != null) changes_.firePropertyChange("link", old, link ); //@CRS
}
/**
* Sets the bookmark name.
* @param name The bookmark name.
* @exception PropertyVetoException If the change is vetoed.
**/
public void setName(String name) throws PropertyVetoException
{
if (name == null)
throw new NullPointerException("name");
String old = bookmarkName_;
if (vetos_ != null) vetos_.fireVetoableChange("name", old, name); //@CRS
bookmarkName_ = name;
if (changes_ != null) changes_.firePropertyChange("name", old, name); //@CRS
}
/**
* Sets the properties associated with the resource link.
* The properties are the attributes associated with the
* Uniform Resource Identifier.
* @param properties The properties.
* @exception PropertyVetoException If the change is vetoed.
**/
public void setProperties(Properties properties) throws PropertyVetoException
{
if (properties == null)
throw new NullPointerException("properties");
Properties old = properties_;
if (vetos_ != null) vetos_.fireVetoableChange("properties", old, properties); //@CRS
properties_ = properties;
if (changes_ != null) changes_.firePropertyChange("properties", old, properties); //@CRS
}
/**
* Sets the target frame for the resource link.
* @param target The target frame. A user-defined frame or
* one of the following constants defined in HTMLConstants:
* TARGET_BLANK, TARGET_PARENT, TARGET_SELF, or TARGET_TOP.
* @exception PropertyVetoException If the change is vetoed.
* @see com.ibm.as400.util.html.HTMLConstants
**/
public void setTarget(String target) throws PropertyVetoException
{
if (target == null)
throw new NullPointerException("target");
String old = target_;
if (vetos_ != null) vetos_.fireVetoableChange("target", old, target); //@CRS
target_ = target;
if (changes_ != null) changes_.firePropertyChange("target", old, target); //@CRS
}
/**
* Sets the text representation for the resource link.
* This is the text that is shown in the HTML document.
* @param text The text.
* @exception PropertyVetoException If the change is vetoed.
**/
public void setText(String text) throws PropertyVetoException
{
if (text == null)
throw new NullPointerException("text");
String old = text_;
if (vetos_ != null) vetos_.fireVetoableChange("text", old, text); //@CRS
text_ = text;
if (changes_ != null) changes_.firePropertyChange("text", old, text); //@CRS
}
/**
* Sets the title for the resource link.
* @param title The title.
* @exception PropertyVetoException If the change is vetoed.
**/
public void setTitle(String title) throws PropertyVetoException
{
if (title == null)
throw new NullPointerException("title");
String old = title_;
if (vetos_ != null) vetos_.fireVetoableChange("title", old, title); //@CRS
title_ = title;
if (changes_ != null) changes_.firePropertyChange("title", old, title); //@CRS
}
/**
* Returns the HTML tag that represents the resource link.
* @return The HTML tag.
**/
public String toString()
{
return getTag();
}
}