<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE taglib PUBLIC
  "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
  "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<!-- 
Copyright 2004-2006 The Apache Software Foundation.
Licensed  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.
-->

<taglib>
  
  <tlibversion>1.0</tlibversion>
  <jspversion>1.1</jspversion>
  <shortname>pluto</shortname>
  <uri>http://portals.apache.org/pluto</uri>

  <!-- Insert the rendering of a portlet -->
  <tag>
    <name>portlet</name>
    <tagclass>org.apache.pluto.driver.tags.PortletTag</tagclass>
    <bodycontent>JSP</bodycontent>
    <attribute>
      <name>portletId</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>

  <tag>
    <name>modeAnchor</name>
    <tagclass>org.apache.pluto.driver.tags.PortletModeAnchorTag</tagclass>
    <bodycontent>empty</bodycontent>
    <attribute>
      <name>portletMode</name>
      <required>true</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>
     
  <tag>
    <name>title</name>
    <tagclass>org.apache.pluto.driver.tags.PortletTitleTag</tagclass>
    <bodycontent>empty</bodycontent>
  </tag>

  <tag>
    <name>url</name>
    <tagclass>org.apache.pluto.driver.tags.PortletPortalURLTag</tagclass>
    <bodycontent>empty</bodycontent>
    <attribute>
      <name>portletMode</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <name>windowState</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>

  <tag>
    <name>render</name>
    <tagclass>org.apache.pluto.driver.tags.PortletRenderTag</tagclass>
    <bodycontent>empty</bodycontent>
  </tag>

    <tag>
        <name>isMaximized</name>
        <tagclass>org.apache.pluto.driver.tags.IsMaximizedTag</tagclass>
        <bodycontent>empty</bodycontent>
        <attribute>
            <name>var</name>
            <required>true</required>
            <rtexprvalue>false</rtexprvalue>
        </attribute>
    </tag>

  <tag>
    <name>message</name>
    <tagclass>org.apache.pluto.driver.tags.PortletUiMessageTag</tagclass>
    <bodycontent>empty</bodycontent>
    <info>
    	Displays a message or one in a resource bundle (properties file) or a message 
    	encapsulated into the PortletUiMessage class and held in a portlet session attribute
    	called 'portlet_msg' (org.apache.pluto.driver.AttributeKeys.PORTLET_MSG).
    	Attributes include:
    	1. message: the message.
    	2. cssClass: the Cascading Stylesheet class name
    	3. bundle: the resource bundle as defined in the java.util.ResourceBundle class
    	The message and cssClass attributes should not be used if the message is in
    	the portlet_msg portlet session attribute.
    </info>
    <attribute>
    	<!-- Message can be a ResourceBundle key, but specify the bundle attribute value too -->
      <name>message</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>cssClass</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
    	<!-- ResourceBundle name -->
      <name>bundle</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>

</taglib>

