<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright 2004 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.
-->
<!-- $Id$ -->
<!DOCTYPE component-specification PUBLIC 
  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
  
<component-specification class="org.apache.tapestry.link.DirectLink">

  <description>
  Creates a non-contextual link.  Non-persistent state can be stored within the link
  using the context.
  </description>

  <parameter name="listener" 
  	type="org.apache.tapestry.IActionListener" 
  	required="yes"
  	direction="auto"/>
  	
  <parameter name="parameters" type="java.lang.Object" direction="in">
    <description>
    An object, or list of objects, encoded into the URL
    as service parameters.
    </description>
  </parameter>
     
  <parameter name="stateful" type="boolean" direction="custom"/>
  
  <parameter name="disabled"
  	type="boolean"
  	direction="in"/>
  	  	
  <parameter name="anchor" 
  	type="java.lang.String"
  	direction="in"/>
  	
  <parameter name="renderer"
  	type="org.apache.tapestry.link.ILinkRenderer"
  	direction="in"/>
  
  <reserved-parameter name="href"/>
    
</component-specification>
