<!DOCTYPE html>
<html>
<head>
    <title>EMF Client Platform</title>
    <link rel="stylesheet" media="screen"
          href="public/stylesheets/bootstrap.css">
    <link rel="stylesheet" media="screen"
          href="public/stylesheets/bootstrap-responsive.css">
    <link rel="stylesheet" media="screen"
          href="public/stylesheets/theme.css">
    <link href='https://fonts.googleapis.com/css?family=Lato'
          rel='stylesheet' type='text/css'>
    <link rel="icon" type="image/png" href="public/images/ecp.png" />
    <script src="public/javascripts/jquery-1.9.0.min.js"
            type="text/javascript"></script>
    <script src="public/javascripts/bootstrap.js" type="text/javascript"></script>

    <script src="public/javascripts/common.js" type="text/javascript"></script>
    <link rel="stylesheet" type="text/css" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" />
    <script src="public/javascripts/cookieconsent.js" type="text/javascript"></script>
    <style type="text/css">
    	#greyedout {
    		position: fixed;
		    top: 0px;
		    left: 0px;
		    width: 100%;
		    height: 100%;
		    z-index: 1000;
	        background: rgba(0, 0, 0, 0.8);
	        display: flex;
       		justify-content: center;
   			align-items: center;
    	}
    </style>
</head>
<body>
<div id="greyedout">
	<h1>Please navigate to the <b><a href="./emfforms">EMF Forms</a></b> web site, as ECP is now merged into EMFForms.</h1>
</div>
<div class="container-fluid fill">
    <div class="banner">
        <div class="row-fluid">
            <div class="span2" style="padding: 0.5em;">
                <a href="index.html"> <img src="public/images/ecp.png"/>
                </a>
            </div>
            <div class="span10 pull-left">
                <h2>EMF Client Platform</h2>

                <p>Build an EMF application with one click</p>
            </div>
        </div>
    </div>
    <div class="row-fluid">
        <div class="navbar span12">
            <div class="navbar-inner" id="topbar">
                <button id="topbtn" type="button" class="btn btn-navbar"
                        data-toggle="collapse" data-target=".nav-collapse">
                    <span class="icon-bar"></span><span class="icon-bar"></span><span
                        class="icon-bar"></span>
                </button>
                <div class="nav-collapse">
                    <ul class="nav">
                        <li>
                            <a href="index.html">
                                <img class="nav-image" src="public/images/home.png"/>
                                <span>&nbsp;Home</span>
                            </a>
                        </li>
                        <li>
                            <a href="gettingstarted.html">
                                <img class="nav-image" src="public/images/getting-started.png"/>
                                <span>&nbsp;Getting Started</span>
                            </a>
                        </li>
                        <li>
                            <a href="download.html">
                                <img class="nav-image" src="public/images/download.png"/>
                                <span>&nbsp;Download</span>
                            </a>
                        </li>
                        <li>
                            <a href="documentation.html">
                                <img class="nav-image" src="public/images/documentation.png"/>
                                <span>&nbsp;Documentation</span>
                            </a>
                        </li>
                        <li>
                            <a href="support.html">
                                <img class="nav-image" src="public/images/support.png"/>
                                <span>&nbsp;Support</span>
                            </a>
                        </li>
                        <li>
                            <a href="gettinginvolved.html">
                                <img class="nav-image" src="public/images/getting-involved.png"/>
                                <span>&nbsp;Getting Involved</span>
                            </a>
                        </li>
                        <li>
                            <a href="communication.html">
                                <img class="nav-image" src="public/images/communication.png"/>
                                <span>&nbsp;Contact</span>
                            </a>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
    <div class="content">
        <h3>DEVELOPER GUIDELINES</h3>
        <p>
            This page describes the guidelines for creating new plugins and features for ECP.
        </p>

        <h4>General settings</h4>
        <p>These settings can be modified in the "New Plug-in Project/New Feature" wizards.</p>
        <ul class="bullets">
            <li><b>Namespace: </b>The plugin-name should begin with "org.eclipse.emf.ecp". Therefore the name of our example plugin and the prefix for the packages would be "org.eclipse.emf.ecp.example". The name of a feature would be e.g. "org.eclipse.emf.ecp.example.feature".</li>
            <li><b>Execution Environment: </b>As JRE version the plugin should use 1.6, so please select "J2SE-1.6". (Note that a feature does not have this setting.)</li>
            <li><b>Version: </b>As version please use the current version (see in other plugin) plus the qualifier, e.g. "1.0.0.qualifier".</li>
            <li><b>Name: </b>Enter a describing name for your plugin, e.g. "Cool Example Plugin".</li>
            <li><b>Provider: </b>For the provider please enter "Eclipse Modeling Project".</li>
        </ul>

        <h4>Plugin runtime</h4>
        <p>When defining the export packages on the runtime tab, please note the following: <br>
            Plugins should export all defined packages. The exported packages should not be visible by default.</p>
        <ul class="bullets">
            <li>Internal packages (not visible) should follow the "org.eclipse.emf.ecp.internal" naming convention</li>
            <li>SPI packages (visible, breaking changes allowed in minor releases) must follow the "org.eclipse.emf.ecp.spi" naming convention</li>
            <li>API packages (visible, no breaking changes allowed in minor releases) should follow the "org.eclipse.emf.ecp" naming convention</li>
        </ul>
        <p>If you don't want to make a potential API package visible yet, please follow the "org.eclipse.emf.ecp" naming convention but mark the package as not visible. </p>

        <h4>Plugin dependencies</h4>
        <p>When adding dependencies to your project please note the following giudelines:<br>
            Usually we use "Required Plug-ins" to add dependencies that we need. There is one exceptions: If you add dependencies to SWT/JFace you have to use "Imported Packages".</p>
        <ul class="bullets">
            <li><b>Plugins  </b>should have the needed minimum version and the next major version as maximum version, e.g. "[4.8.1, 5.0.0)".</li>
            <li><b>Reexport dependencies </b>when you use classes from the other plugins in your API.</li>
            <li><b>Imported Packages </b>should have the needed minimum version and the next major version as maximum version, e.g. "[4.8.1, 5.0.0)".</li>
        </ul>

        <h4>Required legal files</h4>
        <p>When creating a new plugin make sure to copy the "about.html" from an existing plugin to your project. Then open the build.properties and add the about.html to the Binary as well as to the Source Build.</p>

        <h4>Formatting &#38 co</h4>
        <ul class="bullets">
            <li>We set all setting in a project specific way. Therefore no action is required for existing projects. If you want to create a new bundle, please follow these instructions:</li>
            <li>The lazy and best way is to copy all files from the .settings (<b>except</b> any .api_filters file) folder into the newly created project. You also must copy the .checkstyle file. After that you have to open the project properties and activate checkstyle. The config will already be set to the correct value.</li>
        </ul>

        <h4>Generating new models</h4>
        <p>If you have to create a new EMF Model follow these steps before generating:</p>
        <ul class="bullets">
            <li>Set the formatting of the project according the formatting rules</li>
            <li>Set the Code Formatting and the Comment Formatting to true in the genmodel</li>
            <li>In the genmodel file Set the Copyright Text to: <br>
                <p>
                    Copyright (c) 2011-2015 EclipseSource Muenchen GmbH and others.<br>
                    <br>
                    All rights reserved. This program and the accompanying materials<br>
                    are made available under the terms of the Eclipse Public License v1.0<br>
                    which accompanies this distribution, and is available at<br>
                    http://www.eclipse.org/legal/epl-v10.html<br>
                    <br>
                    Contributors:<br>
                    {userId} - initial API and implementation<br>
                <p>
            </li>
        </ul>

        <h4>Extension Point Guidelines</h4>
        <p>When adding a new extension point please mind the following guidelines:</p>
        <ul class="bullets">
            <li>The plug-in ID must be the same as the ID of the project defining the extension point</li>
            <li>The point ID must not be fully qualified. The name must be camel cased</li>
            <li>The point name must be understandable and give a good hint at what the extension point is doing</li>
            <li>
                The Description tab must contain a description for the extension point. If the point is experimental (API not fixed) add the following line:<br>
                <code>This extension point is experimental and is likely to change in the future releases as the activity support evolves.</code>
            </li>
            <li>The Since tab must contain the Version of the plugin since which it is part of the API. (Even if it is experimental). The Version format is maj.min, e.g. 1.1 .</li>
            <li>The Examples tab should contain an example of an usage of this extension point. Use the &#60pre&#62&#60/pre&#62 tags to display markup.</li>
            <li>The API Information tab should contain a description of classes being used for defining this extension point.</li>
            <li>The Supplied Implementation tab should contain a description of a supplied implementation of this extension point, if one implementation is supplied.</li>
            <li>
                The Copyright tab must contain the copyright agreement, it looks like this:<br>
                <p>
                    Copyright (c) 2011-2015 EclipseSource Muenchen GmbH and others.<br>
                    All rights reserved. This program and the accompanying materials<br>
                    are made available under the terms of the Eclipse Public License v1.0<br>
                    which accompanies this distribution, and is available at<br>
                    http://www.eclipse.org/legal/epl-v10.html<br>
                </p>
                The company name must be adjusted if necessary.
            </li>
            <li>You can use HTML tags in all tabs. Use this possibility to improve the readability of your texts.</li>
        </ul>

    </div>
</div>

<div class="footer">
    <div class="row-fluid">
        <div class="span2 text-center">
            <a href="http://www.eclipse.org/legal/privacy.php" target="_blank">
                Privacy Policy </a>
        </div>
        <div class="span2 text-center">
            <a href="http://www.eclipse.org/legal/termsofuse.php"
               target="_blank"> Terms of Use </a>
        </div>
        <div class="span2 text-center">
            <a href="http://www.eclipse.org/legal/copyright.php"
               target="_blank"> Copyright </a>
        </div>
        <div class="span2 text-center">
            <a href="http://www.eclipse.org/legal/" target="_blank"> Legal
            </a>
        </div>
        <div class="span2 text-center">
            <a
                    href="http://www.eclipse.org/projects/project_summary.php?projectid=modeling.emft.emf-client"
                    target="_blank"> About </a>
        </div>
        <div class="span2 text-center">
            <a href="http://www.eclipse.org/" target="_blank">eclipse.org</a>
        </div>
    </div>
    <div class="text-center">
        Icons are from <a
            href="http://www.icondeposit.com/theicondeposit:108"
            target="_blank">Icon Deposit</a>
    </div>
</div>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5WLCZXC');</script>
<!-- End Google Tag Manager -->
<script>
  (function(w) {
    w.cookieconsent.init();
  })(window)
</script>
</body>
</html>
