<?php
/**
 * Copyright (c) 2014, 2018 Eclipse Foundation and others.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 *    Denis Roy (Eclipse Foundation) - initial API and implementation
 *    Christopher Guindon (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>

<h2>Current releases</h2>
<ul class="fa-ul">
  <li><a href="http://help.eclipse.org/oxygen/index.jsp"><i class="fa fa-globe"></i> Eclipse Oxygen (4.7) Documentation</a> (HTML Help Center)</li>
</ul>
<h2>Older releases</h2>
<ul class="fa-ul">
  <li><a href="http://help.eclipse.org/neon/index.jsp"><i class="fa fa-globe"></i> Eclipse Neon (4.6) Documentation</a> (HTML Help Center)</li>
  <li><a href="http://help.eclipse.org/mars/index.jsp"><i class="fa fa-globe"></i> Eclipse Mars (4.5) Documentation</a> (HTML Help Center)</li>
  <li><a href="http://help.eclipse.org/luna/index.jsp"><i class="fa fa-globe"></i> Eclipse Luna (4.4) Documentation</a> (HTML Help Center)</li>
  <li><a href="http://help.eclipse.org/kepler/index.jsp"><i class="fa fa-globe"></i> Eclipse Kepler (4.3) Documentation</a> (HTML Help Center)</li>
</ul>
<h3>Eclipse 3.1 Documentation</h3>
<ul class="fa-ul">
  <li><a href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/org.eclipse.platform.doc.user.3.1.pdf.zip"><i class="fa fa-file-archive-o"></i> Workbench User Guide</a></li>
  <li><a href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/org.eclipse.jdt.doc.user.3.1.pdf.zip"><i class="fa fa-file-archive-o"></i> Java Development User Guide</a></li>
  <li><a href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/org.eclipse.pde.doc.user.3.1.pdf.zip"><i class="fa fa-file-archive-o"></i> PDE Guide</a></li>
  <li><a href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/org.eclipse.platform.doc.isv.3.1.pdf.zip"><i class="fa fa-file-archive-o"></i> Platform Plug-in Developer Guide</a></li>
  <li><a href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/org.eclipse.jdt.doc.isv.3.1.pdf.zip"><i class="fa fa-file-archive-o"></i> JDT Plug-in Developer Guide</a></li>
</ul>
