<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
   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.    
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>${title} | Apache IvyDE&#153; 2.2.0.final Documentation</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" type="text/css" href="style/style.css" />
  <script src="js/jquery.pack.js" type="text/javascript"></script>
  <script src="js/jquery.treeview.js" type="text/javascript"></script>
  <script type="text/javascript">
  $(document).ready(function(){$("#treemenu").Treeview({speed: "fast",store: true});});
  </script>
</head>

<body>

<div id="body">
<table id="header" summary="Navigation elements." border="0"
	cellpadding="0" cellspacing="0" width="100%">
	<tr>
		<td id="home" width="30%"><a href="http://ant.apache.org/"
			title="Apache Ant&#153;"><img src="images/ant-group-logo.gif" alt="Apache Ant&#153;"
			border="0" /></a></td>

		<td class="product" width="70%" align="right" valign="middle"><img
			src="images/logo.png" alt="Apache IvyDE&#153;" border="0" /></td>
	</tr>
</table>

<table id="top-menu" summary="Navigation elements." border="0"
	cellpadding="0" cellspacing="0" width="100%">
	<tr>
		<td>

		<div id="navcontainer">
		<a href="http://www.apache.org/">Apache&#153;</a> &gt; <a href="http://ant.apache.org/">Apache Ant&#153;</a> &gt; <a href="http://ant.apache.org/ivy/">Apache Ivy&#153;</a> &gt; <a href="http://ant.apache.org/ivy/ivyde/">Apache IvyDE&#153;</a> &gt; ${breadCrumb}
		</div>
		</td>
	</tr>

</table>

<table id="content" border="0" cellpadding="0" cellspacing="0"
	width="100%">
	<tr>
		<td id="sidebar-left">
		<div class="block block-book" id="block-book-0">
		<h2>Apache IvyDE&#153;</h2>

		<div class="content">${menu}</div>

		</div>

		</td>
		
		<td valign="top">
		<div id="main">

		<h1 class="title">${title}</h1>
            ${body}
            <hr/>
            <a href="${printerFriendlyLocation}">Printer Friendly</a>
 		</div><!-- main -->
		</td>
	</tr>
</table>

<table id="footer-menu" summary="Navigation elements." border="0"
	cellpadding="0" cellspacing="0" width="100%">
	<tr>
		<td align="center" valign="middle">
		<div class="primary-links">:: 
			<a href="index.html">Home</a> ::
			<a href="editor.html">Editor</a> ::
			<a href="cp_container.html">Classpath Container</a> ::
			<a href="maven.html">Use with maven poms</a> ::
		</div>
		</td>
	</tr>
</table>



<div id="footer-message" class="footer">
    <hr />
    <i>Copyright &#169; 2013 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a>.</i><br />
    <i>Apache IvyDE, Apache Ivy, Apache Ant, IvyDE, Ivy, Ant, Apache, the Apache IvyDE logo, the Apache Ivy logo, the Apache Ant logo and the Apache feather logo are trademarks of The Apache Software Foundation.</i><br />
    <i>Eclipse and the Eclipse logo are trademarks of Eclipse Foundation, Inc.</i>
    <i>All other marks mentioned may be trademarks or registered trademarks of their respective owners. </i>
</div>


</div><!-- body -->
</body>
</html>
