<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="GENERATOR" content="Mozilla/4.76 [en] (Windows NT 5.0; U) [Netscape]">
   <title>Platform Text Component Development Resources</title>

</head>
<body text="#000000" bgcolor="#FFFFFF">
&nbsp;
<table BORDER=0 CELLSPACING=5 CELLPADDING=2 WIDTH="100%" >
  
  <tr>
    <td ALIGN=RIGHT VALIGN=TOP WIDTH="3%"><img SRC="http://dev.eclipse.org/images/Adarrow.gif" NOSAVE BORDER=0 height=16 width=16></td>
    <td WIDTH="97%"><b>Plugins</b><br>
      The Platform Text component consists of the following plug-ins:&nbsp; 
      <ul>
        <li>org.eclipse.core.filebuffers:<br>
          	- headless file buffer infrastructure</li>
        <li>org.eclipse.text<br>
			- headless text infrastructure providing a document abstraction</li>
        <li>org.eclipse.jface.text<br>
			- text viewer working on documents<br>
			- supports additions for content assist, formatting, presentation 
            and model reconciling as well as vertical rulers</li>
        <li>org.eclipse.workbench.texteditor<br>
			- abstract implementation of an Eclipse text editor using text viewers</li>
        <li>org.eclipse.ui.editors<br>
			- the Eclipse Default Text Editor</li>
        </ul>
      </ul>
    </td>
  </tr>


  <tr> 
    <td ALIGN=RIGHT VALIGN=TOP WIDTH="3%"><img SRC="http://dev.eclipse.org/images/Adarrow.gif" NOSAVE BORDER=0 height=16 width=16></td>
    <td WIDTH="97%"><b>Documents</b> 
      <ul>
        <li><a href="bug-annotation.htm">bug annotation conventions</a></li>
        <li><a href="bug-incomplete.htm">incomplete bugzilla report memo</a></li>
        <li><a href="http://www.eclipse.org/jdt/ui/ui-messages.php">common 
          ui message issues</a></li>
        <li><a href="http://dev.eclipse.org/conventions.html">coding conventions</a> 
          <p> Additional rules used in the Platform Text project: 
          <ul>
            <li>instance variables start with an <b>f</b> prefix</li>
            <li>non final static variables start with an <b>fg</b> prefix</li>
            <li>we use the compact assignment form (<b>a= b</b>, i.e. no space 
              on the left of equals)</li>
          </ul>
        </li>
      </ul>
    </td>
  </tr>
  
  <tr> 
    <td ALIGN=RIGHT VALIGN=TOP WIDTH="3%"><img SRC="http://dev.eclipse.org/images/Adarrow.gif" NOSAVE BORDER=0 height=16 width=16></td>
    <td WIDTH="97%"><b>EclipseCon 2006 Contributions</b> 
      <ul>
        <li>&quot;Text Editor Recipes&quot; tutorial</li>
          <ul>
	        <li><a href="../eclipseCon/2006/texteditorrecipes.pdf">Tutorial slides</a> (more formats in the zip file)</li>
	        <li><a href="../eclipseCon/2006/texteditorrecipes.zip">Zip file</a> containing the presentation, example code and other materials used in the tutorial</li>
          </ul>
        </li>
      </ul>
    </td>
  </tr>
  
  <tr> 
    <td ALIGN=RIGHT VALIGN=TOP WIDTH="3%"><img SRC="http://dev.eclipse.org/images/Adarrow.gif" NOSAVE BORDER=0 height=16 width=16></td>
    <td WIDTH="97%"><b>EclipseCon 2005 Contributions</b> 
      <ul>
        <li>Poster &quot;<a href="../eclipseCon/2005/poster.pdf">Season's Text Editor Recipes</a>&quot;</li>
        <li>Example code used in the tutorial &quot;Contributing to Eclipse: understanding and writing plug-ins&quot;
          <ul>
            <li><a href="../eclipseCon/2005/extender.zip">state</a> after &quot;Becoming an Extender&quot;</li>
            <li><a href="../eclipseCon/2005/enabler.zip">state</a> after &quot;Becoming an Enabler&quot;</li>
            <li><a href="../eclipseCon/2005/appdeveloper.zip">state</a> after &quot;Getting away from being part of an IDE: RCP Application&quot;</li>
            <li>deployed stand-alone RCP <a href="http://archive.eclipse.org/jdt/ui/demo/icon_explorer_app_based_on_3_1.zip">application</a> based on SDK build 3.1</li>
          </ul>
        </li>
      </ul>
    </td>
  </tr>
  
  <tr> 
    <td ALIGN=RIGHT VALIGN=TOP WIDTH="3%"><img SRC="http://dev.eclipse.org/images/Adarrow.gif" NOSAVE BORDER=0 height=16 width=16></td>
    <td WIDTH="97%"><b>EclipseCon 2004 Contributions</b> 
      <ul>
        <li>Presentation &quot;<a href="../eclipseCon/talk.pdf">Text editors and 
          how to implement your own</a>&quot;</li>
        <li>Poster &quot;<a href="../eclipseCon/poster.pdf">Editor centric Workbench</a>&quot;</li>
        <li>Example code used in the tutorial &quot;Contributing to Eclipse: understanding 
          and writing plug-ins&quot;.
          <ul>
            <li><a href="../eclipseCon/extender.zip">state</a> after &quot;Becoming 
              an Extender&quot;</li>
            <li><a href="../eclipseCon/publisher.zip">state</a> after &quot;Becoming 
              a Publisher&quot;</li>
            <li><a href="../eclipseCon/enabler.zip">state</a> after &quot;Becoming 
              an Enabler&quot;</li>
            <li><a href="../eclipseCon/tester.zip">state</a> after &quot;Improving 
              as Extender/Enabler: Testing&quot;</li>
            <li><a href="../eclipseCon/appdeveloper.zip">state</a> after &quot;Getting 
              away from being part of an IDE: RCP Application&quot;</li>
            <li>deployed stand-alone RCP <a href="http://archive.eclipse.org/jdt/ui/demo/icon_explorer_app_based_on_I20040212.zip">application</a> 
              based on SDK build I200402122000</li>
          </ul>
        </li>
      </ul>
    </td>
  </tr>
  
  
  <tr> 
    <td ALIGN=RIGHT VALIGN=TOP WIDTH="3%"><img SRC="http://dev.eclipse.org/images/Adarrow.gif" NOSAVE BORDER=0 height=16 width=16></td>
    <td width="97%"><b>Splitting</b>
      The Platform Text component was previously part of the Platform UI component. 
      Originally, Platform UI had only one plugin: <tt>org.eclips.ui</tt>. In 
      order to achieve the separation of the components, <tt>org.eclipse.ui</tt> 
      has been split into several plug-ins. Details can be found in the <a href="splitting/PrereleaseNote.html">announcement</a> 
      and the <a href="splitting/ReleaseNote.html">release notes</a> of the split.</td>
  </tr>
  
  <tr>
    <td ALIGN=RIGHT VALIGN=TOP WIDTH="3%"><img SRC="http://dev.eclipse.org/images/Adarrow.gif" NOSAVE BORDER=0 height=16 width=16></td>
    <td width="97%"><b>RCP</b>
      <ul>
	    <li>Check out the <a href="rcp/examples/index.html">RCP text editor examples</a></li>
	  </ul>
    </td>
  </tr>
  
  <tr> 
    <td ALIGN=RIGHT VALIGN=TOP WIDTH="3%"><img SRC="http://dev.eclipse.org/images/Adarrow.gif" NOSAVE BORDER=0 height=16 width=16></td>
    <td width="97%"><b>Mailing Lists</b> 
      <ul>
        <li> <a href="http://dev.eclipse.org/mailman/listinfo/platform-text-dev">platform-text-dev@eclipse.org</a> 
          (<a href="mailto:platform-text-dev@eclipse.org">post</a>, <a href="http://dev.eclipse.org/mhonarc/lists/platform-text-dev/maillist.html">archives</a>)</li>
      </ul>
    </td>
  </tr>
</table>

</body>
</html>
