<?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/2021-06/nav/0">Eclipse IDE User Guide</a></li>
        <li>Getting Started with <a href="http://help.eclipse.org/2021-06/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.20/">Eclipse SimRel 2021-06</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>