<?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:
 *    Christopher Guindon (Eclipse Foundation) - initial API and implementation
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>
<div class="container-fluid">
  <section class="row highlight background-grey breadcrumbs-offset" id="sec_wg">
    <div class="container padding-top-60 padding-bottom-60">
      <div>
        <div class="col-md-14 highlight-content">
          <h1>Desktop IDEs</h1>
          <p>Eclipse is famous for our Java Integrated Development Environment (IDE), but
            our C/C++ IDE and PHP IDE are pretty cool too. You can easily combine language
            support and other features into any of our default packages, and the Eclipse
            Marketplace allows for virtually unlimited customization and extension.
          </p>
         <p><a href="/downloads/packages" class="btn btn-primary"><i class="fa fa-download"></i> Download</a></p>
        </div>
        <div class="col-md-9 right highlight-img hidden-xs hidden-sm col-sm-offset-1">
          <img src="images/desktop-ide-screenshot.jpg" class="img-responsive" alt="Eclipse Desktop IDE"/>
        </div>
      </div>
    </div>
  </section>
  <section class="row highlight highlight-left" id="sec_ide">
    <div class="container">
      <div>
        <div class="triangle hidden-sm hidden-xs"></div>
        <div class="col-sm-8 col-md-12 center highlight-img hidden-xs padding-top-60 padding-bottom-60">
          <img src="images/web-ide-screenshot-2.jpg" alt="Eclipse Web IDE"  class="img-responsive"/>
        </div>
        <div class="col-sm-16 col-md-12 highlight-content padding-top-60 padding-bottom-60">
          <h1>Cloud IDEs</h1>
          <p>Develop your software wherever you go. It'll be there, in the cloud, right where you left it.  Use your browser to develop with hosted workspaces or install desktop packaging to experience a modern development environment for Java, JavaScript, CSS, and HTML.</p>
          <ul class="list-inline">
            <li><a href="/orion/"><img src="images/orion-logo78x48.jpg" alt="Open Source Platform For Cloud Based Development"/></a></li>
            <li><a href="/che/"><img src="images/EclipseCheLogo.png" alt="Open Source Platform For Cloud Based Development"/></a></li>
            <li><a href="/dirigible/"><img src="images/dirigible_logo.png" alt="Open Source Cloud Development Toolkit"/></a></li>
          </ul>
        </div>
      </div>
    </div>
  </section>
  <section class="row highlight background-grey breadcrumbs-offset" id="sec_ide_p">
    <div class="container">
      <div>
        <div class="triangle triangle-white hidden-sm hidden-xs"></div>
        <div class="col-md-14 highlight-content padding-top-60 padding-bottom-60">
          <h1>IDE Platforms</h1>
          <p>Create the next generation of developer tooling with our extensible platforms.
            Use your imagination to build services and tools that can be assembled into new IDEs
            or packages tailored to your identity. We provide multiple platforms to build plug-ins
            for desktop tools, distributed services used by cloud IDEs, and browser interfaces.
            You can then publish plug-ins to our Eclipse Marketplace of 1000s.
          </p>
          <ul class="list-inline">
            <li><a href="http://wiki.eclipse.org/Platform"><img width="42" height="42" alt="<?php print $java['name']?>" src="<?php print $java['icon']?>"> Eclipse Platform</a></li>
            <li><a href="/orion/"><img src="images/orion-logo-grey78x48.jpg" alt="Open Source Platform For Cloud Based Development"/></a></li>
            <li><a href="/che/"><img src="images/EclipseCheLogo.png" alt="Open Source Platform For Cloud Based Development"/></a></li>
          </ul>
        </div>
        <div class="col-md-9 right highlight-img hidden-xs hidden-sm col-sm-offset-1 padding-top-60 padding-bottom-60">
          <img src="images/ide-platform-screenshot.jpg" class="img-responsive" alt="Eclipse IDE Platforms"/>
        </div>
      </div>
    </div>
  </section>
  <section class="row highlight highlight-left footer-offset">
    <div class="container">
      <div>
        <div class="triangle hidden-sm hidden-xs"></div>
        <div class="col-md-13 padding-top-60 padding-bottom-60">
          <div class="media">
            <div class="pull-left orange">
              <i class="fa fa-wrench font-size-large"></i>
            </div>
            <div class="media-body">
              <h4 class="media-heading">Tools</h4>
              <p class="emphasis">Extend the extensible platform.</p>
              <p>An impressive collection of tools can be easily installed into your Eclipse desktop IDE, including GUI builders and tools for modeling, charting and reporting, testing, and more.</p>
            </div>
          </div>
          <div class="media">
            <div class="pull-left orange">
              <i class="fa fa-shopping-cart font-size-large"></i>
            </div>
            <div class="media-body">
              <h4 class="media-heading">Marketplace</h4>
              <p class="emphasis">Customize and extend Eclipse and make it your own.</p>
              <p>Use the <a href="/mpc">Eclipse Marketplace Client</a> to find, install, and vote for new plug-ins from our vast ecosystem of providers.</p>
            </div>
          </div>
          <div class="media">
            <div class="pull-left orange">
              <i class="fa fa-gears font-size-large"></i>
            </div>
            <div class="media-body">
              <h4 class="media-heading">Extend</h4>
              <p class="emphasis">Join the Community.</p>
              <p>Extend the desktop and web-based IDEs by writing your own plug-ins using the Plug-in Development Environment (PDE), or mash up features to build the web IDE of your dreams.</p>
            </div>
          </div>
        </div>
        <div class="col-md-8 right highlight-img text-left hidden-xs hidden-sm col-sm-offset-3 padding-top-60">
          <div>
            <h2>Discover</h2>
            <p class="orange"><strong>Find an Eclipse open source project.</strong></p>
            <form id="form-discover-search" class="form-inline form-search-projects input-group custom-search-form" role="form" action="https://projects.eclipse.org/projects/all">
              <input id="discover-search-box" class="form-control" type="text" size="25" name="keys" placeholder="Search">
              <span class="input-group-btn">
              <button class="btn btn-default" type="submit">
              <i class="fa fa-search"></i>
              </button>
              </span>
            </form>
            <br/>
            <p><a class="btn btn-info uppercase fw-700" href="//projects.eclipse.org/list-of-projects">List of projects</a></p>
          </div>
        </div>
      </div>
    </div>
  </section>
</div>