<?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/2018-12/index.jsp"><i class="fa fa-globe"></i> Eclipse SimRel 2018-12 (4.10) Documentation</a> (HTML Help Center)</li>
</ul>
<h2>Older releases</h2>
<ul class="fa-ul">
  <li><a href="http://help.eclipse.org/2018-09/index.jsp"><i class="fa fa-globe"></i> Eclipse SimRel 2018-09 (4.9) Documentation</a> (HTML Help Center)</li>
  <li><a href="http://help.eclipse.org/photon/index.jsp"><i class="fa fa-globe"></i> Eclipse Photon (4.8) Documentation</a> (HTML Help Center)</li>
  <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>
  <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>
