/*
* $Id: ImageTag.java 471754 2006-11-06 14:55:09Z husted $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.struts.taglib.html;
import org.apache.struts.Globals;
import org.apache.struts.config.ModuleConfig;
import org.apache.struts.taglib.TagUtils;
import org.apache.struts.util.ModuleUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
/**
* Tag for input fields of type "image".
*
* @version $Rev: 471754 $ $Date: 2005-04-26 20:11:47 -0400 (Tue, 26 Apr 2005)
* $
*/
public class ImageTag extends SubmitTag {
// ------------------------------------------------------------- Properties
/**
* The alignment for this image.
*/
protected String align = null;
/**
* The border size around the image.
*/
protected String border = null;
/**
* The module-relative URI of the image.
*/
protected String page = null;
/**
* The message resources key of the module-relative URI of the image.
*/
protected String pageKey = null;
/**
* The URL of this image.
*/
protected String src = null;
/**
* The message resources key for the URL of this image.
*/
protected String srcKey = null;
/**
* The module prefix (beginning with a slash) which will be used to find
* the action for this link.
*/
protected String module = null;
// --------------------------------------------------------- Constructor
public ImageTag() {
super();
property = "";
}
/**
* @deprecated Align attribute is deprecated in HTML 4.x.
*/
public String getAlign() {
return (this.align);
}
/**
* @deprecated Align attribute is deprecated in HTML 4.x.
*/
public void setAlign(String align) {
this.align = align;
}
public String getBorder() {
return (this.border);
}
public void setBorder(String border) {
this.border = border;
}
public String getPage() {
return (this.page);
}
public void setPage(String page) {
this.page = page;
}
public String getPageKey() {
return (this.pageKey);
}
public void setPageKey(String pageKey) {
this.pageKey = pageKey;
}
public String getSrc() {
return (this.src);
}
public void setSrc(String src) {
this.src = src;
}
public String getSrcKey() {
return (this.srcKey);
}
public void setSrcKey(String srcKey) {
this.srcKey = srcKey;
}
public String getModule() {
return (this.module);
}
public void setModule(String module) {
this.module = module;
}
// --------------------------------------------------------- Protected Methods
/**
* Render the opening element.
*
* @return The opening part of the element.
*/
protected String getElementOpen() {
return "<input type=\"image\"";
}
/**
* Render the button attributes
*
* @param results The StringBuffer that output will be appended to.
*/
protected void prepareButtonAttributes(StringBuffer results)
throws JspException {
String tmp = src();
if (tmp != null) {
HttpServletResponse response =
(HttpServletResponse) pageContext.getResponse();
prepareAttribute(results, "src", response.encodeURL(tmp));
}
prepareAttribute(results, "align", getAlign());
prepareAttribute(results, "border", getBorder());
prepareAttribute(results, "value", getValue());
prepareAttribute(results, "accesskey", getAccesskey());
prepareAttribute(results, "tabindex", getTabindex());
}
/**
* Release any acquired resources.
*/
public void release() {
super.release();
page = null;
pageKey = null;
property = "";
src = null;
srcKey = null;
}
// ------------------------------------------------------ Protected Methods
/**
* Return the base source URL that will be rendered in the
* <code>src</code> property for this generated element, or
* <code>null</code> if there is no such URL.
*
* @throws JspException if an error occurs
*/
protected String src() throws JspException {
// Deal with a direct context-relative page that has been specified
if (this.page != null) {
if ((this.src != null) || (this.srcKey != null)
|| (this.pageKey != null)) {
JspException e =
new JspException(messages.getMessage("imgTag.src"));
TagUtils.getInstance().saveException(pageContext, e);
throw e;
}
HttpServletRequest request =
(HttpServletRequest) pageContext.getRequest();
ModuleConfig config =
ModuleUtils.getInstance().getModuleConfig(this.module,
request, pageContext.getServletContext());
String pageValue = this.page;
if (config != null) {
pageValue =
TagUtils.getInstance().pageURL(request, this.page, config);
}
return (request.getContextPath() + pageValue);
}
// Deal with an indirect context-relative page that has been specified
if (this.pageKey != null) {
if ((this.src != null) || (this.srcKey != null)) {
JspException e =
new JspException(messages.getMessage("imgTag.src"));
TagUtils.getInstance().saveException(pageContext, e);
throw e;
}
HttpServletRequest request =
(HttpServletRequest) pageContext.getRequest();
ModuleConfig config =
ModuleUtils.getInstance().getModuleConfig(this.module,
request, pageContext.getServletContext());
String pageValue =
TagUtils.getInstance().message(pageContext, getBundle(),
getLocale(), this.pageKey);
if (config != null) {
pageValue =
TagUtils.getInstance().pageURL(request, pageValue, config);
}
return (request.getContextPath() + pageValue);
}
// Deal with an absolute source that has been specified
if (this.src != null) {
if (this.srcKey != null) {
JspException e =
new JspException(messages.getMessage("imgTag.src"));
TagUtils.getInstance().saveException(pageContext, e);
throw e;
}
return (this.src);
}
// Deal with an indirect source that has been specified
if (this.srcKey == null) {
JspException e =
new JspException(messages.getMessage("imgTag.src"));
TagUtils.getInstance().saveException(pageContext, e);
throw e;
}
return TagUtils.getInstance().message(pageContext, getBundle(),
getLocale(), this.srcKey);
}
}