/*
* Copyright Javelin Software, All rights reserved.
*/
package com.javelin.swinglets.plaf.html;
import java.awt.*;
import java.util.*;
import java.io.*;
import com.javelin.swinglets.*;
import com.javelin.swinglets.plaf.*;
/**
* HTMLIconUI defines a look and feel for default HTML.
*
* @author Robin Sharp
*/
public class HTMLIconUI extends HTMLComponentUI implements SIconUI
{
/**
* Render the UI on the PrintWriter
*/
public void update( PrintWriter out, SComponent c )
{
if( !c.isVisible() ) return;
SIcon icon = (SIcon)c;
if( icon.getAreaCount() > 0 )
{
out.print( "<MAP NAME=\"" );
out.print( icon.getName() );
out.println( "MAP\" >" );
for( Enumeration areas = icon.getAreas(); areas.hasMoreElements(); )
{
SArea area = (SArea)areas.nextElement();
out.print( "<AREA" );
out.print( " SHAPE=\"" );
out.print( area.getShape() );
out.print( "\"" );
if( area.getLink() != null )
{
out.print( " HREF=\"" );
if( area.getLink().getUrl() != null )
{
out.print( area.getLink().getUrl() );
}
else
{
out.print( icon.getComponentUrl() );
}
out.print( "\"" );
if( area.getLink().getTarget() != null )
{
if( area.getLink().getTarget().equals( SFrame.NEW ) )
out.print( " target=\"_blank\"" );
else
if( area.getLink().getTarget().equals( SFrame.SELF ) )
out.print( " target=\"_self\"" );
else
if( area.getLink().getTarget().equals( SFrame.PARENT ) )
out.print( " target=\"_parent\"" );
else
if( area.getLink().getTarget().equals( SFrame.TOP ) )
out.print( " target=\"_top\"" );
else
{
out.print( " target=\"" );
out.print( area.getLink().getTarget() );
out.print( "\"" );
}
}
}
if( area.getText() != null )
{
out.print( " ALT=\"" );
out.print( area.getText() );
out.print( "\"" );
}
out.print( " COORDS=\"" );
if( area.getShape() == SArea.RECTANGLE )
{
if( area.getRectangle().x >= 0 )
{
out.print( area.getRectangle().x );
out.print( "," );
out.print( area.getRectangle().y );
out.print( "," );
out.print( ( area.getRectangle().x + area.getRectangle().width ) );
out.print( "," );
out.print( ( area.getRectangle().y + area.getRectangle().height ) );
}
else
{
out.print( area.getRectangle().x );
out.print( "%," );
out.print( area.getRectangle().y );
out.print( "%," );
out.print( ( area.getRectangle().x + area.getRectangle().width ) );
out.print( "%," );
out.print( ( area.getRectangle().y + area.getRectangle().height ) );
out.print( "%" );
}
}
else
if( area.getShape() == SArea.CIRCLE )
{
if( area.getPoint().x >= 0 )
{
out.print( area.getPoint().x );
out.print( "," );
out.print( area.getPoint().y );
out.print( "," );
out.print( area.getRadius() );
}
else
{
out.print( area.getPoint().x );
out.print( "%," );
out.print( area.getPoint().y );
out.print( "%," );
out.print( area.getRadius() );
}
}
else
if( area.getShape() == SArea.POLYGON )
{
for( int index = 0; index < area.getPolygon().npoints; index++ )
{
if( index > 0 )
{
out.print( "," );
}
if( area.getPolygon().xpoints[index] >= 0 )
{
out.print( area.getPolygon().xpoints[index] );
out.print( "," );
out.print( area.getPolygon().ypoints[index] );
}
else
{
out.print( area.getPolygon().xpoints[index] );
out.print( "%," );
out.print( area.getPolygon().ypoints[index] );
out.print( "%" );
}
}
}
out.println( "\" >" );
}
out.println( "</MAP>" );
}
if( icon.getLink() != null )
{
out.print( "<A HREF=\"" );
if( icon.getLink().getUrl() != null )
{
out.print( icon.getLink().getUrl() );
}
else
{
out.print( icon.getComponentUrl() );
}
out.print( "\"" );
HTMLUtility.setMouseOverStatusText(out, c.getToolTipText());
updateLinkScript( out, c );
if( icon.getLink().getTarget() != null )
{
if( icon.getLink().getTarget().equals( SFrame.NEW ) )
out.print( " target=\"_blank\"" );
else
if( icon.getLink().getTarget().equals( SFrame.SELF ) )
out.print( " target=\"_self\"" );
else
if( icon.getLink().getTarget().equals( SFrame.PARENT ) )
out.print( " target=\"_parent\"" );
else
if( icon.getLink().getTarget().equals( SFrame.TOP ) )
out.print( " target=\"_top\"" );
else
{
out.print( " target=\"" );
out.print( icon.getLink().getTarget() );
out.print( "\"" );
}
}
out.print( ">" );
}
if( icon.getUrl() != null )
{
out.print( "<IMG NAME=\"");
out.print( icon.getName() );
out.print( "\"" );
HTMLUtility.setSrc(out,icon);
if( icon.getBorder() == null )
{
out.print( " BORDER=0" );
}
//SET THE HEIGHT
if( icon.getSize().height > 0 )
{
out.print( " HEIGHT=" );
out.print( icon.getSize().height );
}
else
if( icon.getSize().height < 0 )
{
out.print( " HEIGHT=" );
out.print( 0-icon.getSize().height );
out.print( "%" );
}
//SET THE WIDTH
if( icon.getSize().width > 0 )
{
out.print( " WIDTH=" );
out.print( icon.getSize().width );
}
else
if( icon.getSize().width < 0 )
{
out.print( " WIDTH=" );
out.print( 0-icon.getSize().width );
out.print( "%" );
}
if( icon.getAreaCount() > 0 )
{
out.print( " USEMAP=\"#" );
out.print( icon.getName() );
out.print( "MAP\"" );
}
updateEvent( out, c );
out.print( ">" );
}
if( icon.getLink() != null ) out.print( "</A>" );
}
/**
* Render the script on the output, in the body part of the web page
*/
public void updateLinkScript( Object out, SComponent c )
{
updateLinkScript( (PrintWriter)out, c );
}
/**
* Render the script on the PrintWriter, in the body part of the web page
*/
public void updateLinkScript( PrintWriter out, SComponent c ){}
}
|