<?php
/**
 * Copyright (c) 2014, 2015, 2016, 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:
 *    Christopher Guindon (Eclipse Foundation) - initial API and implementation
 *    Wayne Beaton (Eclipse Foundation) - Minor changes
 *
 * SPDX-License-Identifier: EPL-2.0
 */

// Provide as helpful a link as possible into Bugzilla.
// Assume that the user is concerned with IDE bugs and point them to the EPP product.
$bugzillaLink = "https://bugs.eclipse.org/bugs/enter_bug.cgi?product=EPP";
?>

<div class="timeline">
  <div class="row">
    <div class="col-md-6 one gs-item">
      <div class="circle">1</div>
      <h1 class="fw-600">Get Started</h1>
      <p>Download and install the Eclipse IDE.</p>
      <p><a href="/downloads/" class="btn btn-warning">Download Eclipse IDE</a></p>
    </div>
    <div class="col-md-6 two gs-item">
      <div class="circle">2</div>
      <h1>Extend Eclipse</h1>
      <p><a href="//marketplace.eclipse.org">Eclipse Marketplace</a> is a great source of plug-ins and products that you can add to Eclipse.</p>
      <ul>
        <li>Browse the <a href="//marketplace.eclipse.org">online catalog</a></li>
        <li>Use the Eclipse Marketplace
          Client from within Eclipse: <code>Help&nbsp;&gt;&nbsp;Eclipse Marketplace&hellip;</code>
        </li>
      </ul>
      <p>Popular Plugins: </p>
      <ul>
        <li>
          <a href="http://marketplace.eclipse.org/content/subversive-svn-team-provider">Subversive - SVN Team Provider</a><br/>
          <div class="drag_installbutton">
            <a class="drag" href="http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=1139">
              <img src="/eclipse.org-common/themes/solstice/public/images/components/drag-drop/installbutton.png"/>
              <div class="tooltip">
                <h3>Drag to Install!</h3>
                Drag to your running Eclipse workspace.
              </div>
            </a>
          </div>
        </li>
        <li>
          <a href="http://marketplace.eclipse.org/content/eclipse-color-theme">Eclipse Color Theme</a><br/>
          <div class="drag_installbutton">
            <a class="drag" href="http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=27025">
              <img src="/eclipse.org-common/themes/solstice/public/images/components/drag-drop/installbutton.png"/>
              <div class="tooltip">
                <h3>Drag to Install!</h3>
                Drag to your running Eclipse workspace.
              </div>
            </a>
          </div>
        </li>
        <li>
          <a href="http://marketplace.eclipse.org/content/maven-integration-eclipse-juno-and-newer">Maven Integration for Eclipse</a><br/>
          <div class="drag_installbutton">
            <a class="drag" href="http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=252">
              <img src="/eclipse.org-common/themes/solstice/public/images/components/drag-drop/installbutton.png"/>
              <div class="tooltip">
                <h3>Drag to Install!</h3>
                Drag to your running Eclipse workspace.
              </div>
            </a>
          </div>
        </li>
        <li>
          <a href="http://marketplace.eclipse.org/content/pydev-python-ide-eclipse">PyDev</a><br/>
          <div class="drag_installbutton">
            <a class="drag" href="http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=114">
              <img src="/eclipse.org-common/themes/solstice/public/images/components/drag-drop/installbutton.png"/>
              <div class="tooltip">
                <h3>Drag to Install!</h3>
                Drag to your running Eclipse workspace.
              </div>
            </a>
          </div>
        </li>
      </ul>
    </div>
    <div class="col-md-6 three gs-item">
      <div class="circle">3</div>
      <h1>Read Doc</h1>
      <p>Documentation is a great resource to get you started with the Eclipse IDE.</p>
      <ul>
        <li>Getting Started with the <a href="http://help.eclipse.org/2018-09/nav/0">Eclipse IDE User Guide</a></li>
        <li>Getting Started with <a href="http://help.eclipse.org/2018-09/nav/1">Java development</a></li>
        <li>All online <a href="http://help.eclipse.org">Documentation</a></li>
        <li>What's new and noteworthy in <a href="/eclipse/news/4.9/">Eclipse Photon 2018-09</a></li>
        <li><a href="content/eclipse-ide-keybindings.pdf">Eclipse IDE Keybindings</a></li>
      </ul>
    </div>
    <div class="col-md-6 four gs-item">
      <div class="circle">4</div>
      <h1>Get Help</h1>
      <p>There are many sources of help in the Eclipse community and ecosystem.</p>
      <ul>
        <li>Ask questions on project <a href="https://www.eclipse.org/forums/">forums</a>; if you're not sure where to look, start with the <a href="http://www.eclipse.org/forums/index.php/f/89/">newcomer forum</a></li>
        <li>Open bug reports and feature requests in <a href="<?php print $bugzillaLink; ?>">Eclipse Bugzilla</a></li>
        <li>Connect live with project developers <a href="https://wiki.eclipse.org/IRC">via IRC</a></li>
        <li>Find companies that provide <a href="http://marketplace.eclipse.org/category/markets/training-consulting/title">training and consulting</a></li>
      </ul>
    </div>
  </div>
</div>