<?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" style="padding-top:4em;">
      <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>
          <ul class="list-inline">
            <li><a href="<?php print $java['url']?>"><img width="42" height="42" alt="<?php print $java['name']?>" src="<?php print $java['icon']?>"> Java IDE</a></li>
            <li><a href="<?php print $jee['url']?>"><img width="42" height="42" alt="<?php print $jee['name']?>" src="<?php print $jee['icon']?>"> Java EE</a></li>
            <li><a href="<?php print $cpp['url']?>"><img width="42" height="42" alt="<?php print $cpp['name']?>" src="<?php print $cpp['icon']?>"> C/C++</a></li>
            <li><a href="<?php print $php['url']?>"><img width="42" height="42" alt="<?php print $php['name']?>" src="<?php print $php['icon']?>"> PHP</a></li>
          </ul>
        </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 background-white" 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">
          <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">
          <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">
          <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">
          <img src="images/ide-platform-screenshot.jpg" class="img-responsive" alt="Eclipse IDE Platforms"/>
        </div>
      </div>
    </div>
  </section>
  <section class="row highlight highlight-left background-white footer-offset">
    <div class="container">
      <div>
        <div class="triangle hidden-sm hidden-xs"></div>
        <div class="col-md-13">
          <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">
          <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>