/*
 * 作成日: 2005/03/05
 *
 * この生成されたコメントの挿入されるテンプレートを変更するため
 * ウィンドウ > 設定 > Java > コード生成 > コードとコメント
 */
package org.itscool.weber.tag;

import javax.servlet.jsp.JspException;

import org.itscool.commons.util.JspTagUtil;

/**
 * HTMLの&lt;"img"&gt;タグを生成するタグです。<BR>
 * name,property属性を指定した場合は、name属性で指定されたオブジェクトの
 * メンバ(property)の値がsrc属性にセットされます<BR>
 * name,property属性を指定しない場合はsrcで指定した値をsrc属性にセットします。<BR>
 *<BR>
 *【属性】<BR>
 * <table cellSpacing=0 cellPadding=0 border=1 >
 * <tr>
 *   <td>property（必須）</td>
 *   <td>
 *   サブミット時に送信されるリクエストパラメータ名です。又、サーブレットからフォワード
 *   されたときにnameで指定されたBeanインスタンスに該当するプロパティがセットされます。<br>
 *   name属性が指定されていない場合はpropertyに指定された値をサーバから取得します。<br>
 *   尚、HTMLのname属性にはpropertyに指定した文字列が出力されます。
 *  （ただしoption、link、imgタグは除く）
 *   </td>
 * <tr>
 * <tr>
 *   <td>name</td>
 *   <td>propertyが属するBeanの名前を指定します。</td>
 * </tr>
 * <tr>
 *   <td>style</td>
 *   <td>このコンポーネントのスタイル</td>
 * </tr>
 * <tr>
 *   <td>scope</td>
 *   <td>propertyのスコープ</td>
 * </tr>
 * <tr>
 *   <td>readonly</td>
 *   <td>このコンポーネントの読取属性（trueの場合は読取専用）</td>
 * </tr>
 * <tr>
 *   <td>disabled</td>
 *   <td>このコンポーネントの使用可否属性（falseの場合は使用不可）</td>
 * </tr>
 * <tr>
 *   <td>csclass</td>
 *   <td>このコンポーネントに指定するスタイルシート</td>
 * </tr>
 * <tr>
 *   <td>
 *   onblur<br>
 *   onchange<br>
 *   onclick<br>
 *   ondblclick<br>
 *   onfocus<br>
 *   onkeydown<br>
 *   onkeypress<br>
 *   onkeyup<br>
 *   onmousedown<br>
 *   onmousemove<br>
 *   onmouseout<br>
 *   onmouseover<br>
 *   onmouseup<br>
 *   </td>
 *   <td>
 *    Javaスクリプト
 *   </td>
 * </tr>
 * <tr>
 *   <td>src</td>
 *   <td>
 *     イメージのパス（Ｗｅｂアプリケーションからの相対パスを指定します）<BR>
 *     name,property属性が指定されていない場合は、srcに指定されたパスからイメージを取得します
 *   </td>
 * </tr>
 * <tr>
 *   <td>title</td>
 *   <td>img属性に表示するタイトル文字列</td>
 * </tr>
 * <tr>
 *   <td>height</td>
 *   <td>イメージの高さ</td>
 * </tr>
 * <tr>
 *   <td>width</td>
 *   <td>
 *     イメージの幅
 *   </td>
 * </tr>
 * </table>
 *
 * @author KANO
 * @since jdk1.4.1
 * @version 1.00A 2004/11/1
 */
public class ImgTag extends HtmlTag {
	/** imgタグに表示するタイトル文字列 */
    private String title;
    /** イメージのパス */
    protected String src;
    /** イメージの幅 */
    protected String width;
    /** イメージの高さ */
    protected String height;
    
    /**
     * タイトルを取得します
     * @return タイトル
     */
	public String getTitle(){
		return title;
	}
	
	/**
	 * タイトルをセットします
	 * @param title タイトル
	 */
	public void setTitle(String title){
		this.title = title;
	}

    /**
     * イメージの高さを取得します
     * @return height を戻します。
     */
    public String getHeight() {
        return height;
    }
    
    /**
     * イメージの高さをセットします
     * @param height height を設定。
     */
    public void setHeight(String height) {
        this.height = height;
    }
    /**
     * イメージの幅を取得します
     * @return width を戻します。
     */
    public String getWidth() {
        return width;
    }
    /**
     * イメージの幅をセットします
     * @param width width を設定。
     */
    public void setWidth(String width) {
        this.width = width;
    }
    /**
     * イメージのパスを指定します<BR>
     * パスの指定はＷｅｂアプリケーションからの相対パスを指定して下さい
     * @return イメージのパス
    */
    public String getSrc() {
        return src;
    }

    /**
     * イメージのパスをセットします
     * @param src イメージのパス
    */
    public void setSrc(String src) {
        this.src = src;
    }

    /**
     * HTMLの&lt;img&gt;タグを生成します<br>
     * scopeが指定されていない場合は、次の順序でオブジェクトを検索します。<br>
     * request, session, contextの順
    */
    public int doStartTag() throws JspException {
        String realPath;
        if(property != null ){
        	String imgPath = JspTagUtil.createAttribute( pageContext, name,
        		property, scope, "src", value);
        	realPath = pageContext.getServletContext().getRealPath(imgPath);
        }else{
        	String imgPath = JspTagUtil.createRealPath(pageContext, src);
        	realPath = JspTagUtil.createAttribute("src", imgPath);
        }
        StringBuffer inputTag = new StringBuffer("<img ");
        inputTag.append( realPath );
		inputTag.append(JspTagUtil.createAttribute("width", width));
		inputTag.append(JspTagUtil.createAttribute("height", height));
		inputTag.append(JspTagUtil.createBoolAttribute("class", csClass));
        inputTag.append(JspTagUtil.createAttribute("style", style));
        inputTag.append(this.createJavaScriptTag());
        inputTag.append(">");
        if(title != null){
        	inputTag.append(title);
        }
        inputTag.append("</img>");
        
        try {
            pageContext.getOut().print(inputTag.toString());
        } catch (Exception e) {
            throw new JspException(e.getMessage());
        }

        return SKIP_BODY;
    }

    public int doEndTag() {
        return EVAL_PAGE;
    }
}