<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to EMFEditOverview</title><link>https://sourceforge.net/p/realsbs/wiki/EMFEditOverview/</link><description>Recent changes to EMFEditOverview</description><atom:link href="https://sourceforge.net/p/realsbs/wiki/EMFEditOverview/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 08 Nov 2013 21:22:50 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/realsbs/wiki/EMFEditOverview/feed" rel="self" type="application/rss+xml"/><item><title>EMFEditOverview modified by Tom Swain</title><link>https://sourceforge.net/p/realsbs/wiki/EMFEditOverview/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v8
+++ v9
@@ -98,7 +98,7 @@
 Like content providers, changes in label behavior can be made by subclassing `AdapterFactoryLabelProvider` and/or changes to item providers.
 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;

-## Property Sheet ## 
+## Property Sheet ##
 ***
 The property sheet is an Eclipse viewer which specializes in allowing the user to retrieve and edit modeled object properties.  The property sheet, `propertySheetPage`, is an instance of the Eclipse UI object [PropertySheetPage](http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/PropertySheetPage.html) that uses an `AdapterFactoryContentProvider` acting as an [IPropertySourceProvider](http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/IPropertySourceProvider.html) to retrieve an [IPropertySource](http://help.eclipse.org/help33/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/IPropertySource.html) corresponding to a specific EMF object.  The `IPropertySource` (a wrapper for the UI independent [IItemPropertySource](http://download.eclipse.org/modeling/emf/emf/javadoc/2.5.0/org/eclipse/emf/edit/provider/IItemPropertySource.html), which the item providers implement) is used to retrieve the properties (i.e. the contents of the object) and a list of [IPropertyDescriptor](http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/IPropertyDescriptor.html)s that contain the ID and property labels of the EMF Object. 

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Swain</dc:creator><pubDate>Fri, 08 Nov 2013 21:22:50 -0000</pubDate><guid>https://sourceforge.neta93e4d210217c6d85b91844f33bf986d07c1e6df</guid></item><item><title>EMFEditOverview modified by Tom Swain</title><link>https://sourceforge.net/p/realsbs/wiki/EMFEditOverview/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v7
+++ v8
@@ -20,17 +20,17 @@

 ### Setting a Content Provider for a Viewer in REALEditor.java ###

-:::java
-public void createPages() {
-
-...
-    // This is the page for the tree viewer
-    //
-    {
-      ...
-      treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
-    }
-...
+    :::java
+    public void createPages() {
+    
+    ...
+        // This is the page for the tree viewer
+        //
+        {
+          ...
+          treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+        }
+    ...

@@ -39,12 +39,12 @@
 &lt;br /&gt;&lt;br /&gt;  
 In REALEditor.java code:

-:::java
-protected void initializeEditingDomain() {
-
-    // Create an adapter factory that yields item providers.
-    //
-    adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+    :::java
+    protected void initializeEditingDomain() {
+    
+        // Create an adapter factory that yields item providers.
+        //
+        adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);

     adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
     adapterFactory.addAdapterFactory(new RealItemProviderAdapterFactory());
@@ -70,17 +70,17 @@

 ### Setting a Label Provider for a Viewer in REALEditor.java ###

-:::java
-public void createPages() {
-
-...
-    // This is the page for the tree viewer
-    //
-    {
-      ...
-      treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
-    }
-...
+    :::java
+    public void createPages() {
+    
+    ...
+        // This is the page for the tree viewer
+        //
+        {
+          ...
+          treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+        }
+    ...

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Swain</dc:creator><pubDate>Fri, 08 Nov 2013 21:22:14 -0000</pubDate><guid>https://sourceforge.net832686c8f3170e41cc88c93d31f9c0099b7417e3</guid></item><item><title>EMFEditOverview modified by Tom Swain</title><link>https://sourceforge.net/p/realsbs/wiki/EMFEditOverview/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -119,7 +119,7 @@
  * [ItemProviderAdapter](http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/provider/ItemProviderAdapter.html)
 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;

-## Sauce Codes ##
+## Source Code ##
 ***
  * [AdapterFactoryContentProvider](http://kickjava.com/src/org/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider.java.htm)
  * [AdapterFactoryLabelProvider](http://kickjava.com/src/org/eclipse/emf/edit/ui/provider/AdapterFactoryLabelProvider.java.htm)
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Swain</dc:creator><pubDate>Fri, 08 Nov 2013 14:50:20 -0000</pubDate><guid>https://sourceforge.netbdbe622e82e91ad1870188ae56d0cf3df32a17bd</guid></item><item><title>EMFEditOverview modified by Tom Swain</title><link>https://sourceforge.net/p/realsbs/wiki/EMFEditOverview/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -20,16 +20,18 @@

 ### Setting a Content Provider for a Viewer in REALEditor.java ###

-    :::java
-    public void createPages() {
-    ...
+:::java
+public void createPages() {
+
+...
     // This is the page for the tree viewer
     //
     {
       ...
       treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
     }
-    ...
+...
+

 ### `AdapterFactoryContentProvider` and `adapterFactory` ###
@@ -37,12 +39,13 @@
 &lt;br /&gt;&lt;br /&gt;  
 In REALEditor.java code:

-    :::java
-    protected void initializeEditingDomain() {
+:::java
+protected void initializeEditingDomain() {

     // Create an adapter factory that yields item providers.
     //
     adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
     adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
     adapterFactory.addAdapterFactory(new RealItemProviderAdapterFactory());
     adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
@@ -67,17 +70,19 @@

 ### Setting a Label Provider for a Viewer in REALEditor.java ###

-    :::java
-    public void createPages() {
+:::java
+public void createPages() {

-    ...
+...
     // This is the page for the tree viewer
     //
     {
       ...
       treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
     }
-    ...
+...
+
+

 ### `AdapterFactoryLabelProvider` and `adapterFactory` ###
@@ -93,7 +98,7 @@
 Like content providers, changes in label behavior can be made by subclassing `AdapterFactoryLabelProvider` and/or changes to item providers.
 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;

-## Property Sheet ##
+## Property Sheet ## 
 ***
 The property sheet is an Eclipse viewer which specializes in allowing the user to retrieve and edit modeled object properties.  The property sheet, `propertySheetPage`, is an instance of the Eclipse UI object [PropertySheetPage](http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/PropertySheetPage.html) that uses an `AdapterFactoryContentProvider` acting as an [IPropertySourceProvider](http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/IPropertySourceProvider.html) to retrieve an [IPropertySource](http://help.eclipse.org/help33/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/IPropertySource.html) corresponding to a specific EMF object.  The `IPropertySource` (a wrapper for the UI independent [IItemPropertySource](http://download.eclipse.org/modeling/emf/emf/javadoc/2.5.0/org/eclipse/emf/edit/provider/IItemPropertySource.html), which the item providers implement) is used to retrieve the properties (i.e. the contents of the object) and a list of [IPropertyDescriptor](http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/IPropertyDescriptor.html)s that contain the ID and property labels of the EMF Object. 

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Swain</dc:creator><pubDate>Fri, 08 Nov 2013 01:41:43 -0000</pubDate><guid>https://sourceforge.net510bfd53338f31f0cb4f45bf7ec19ae0dbfb7447</guid></item><item><title>EMFEditOverview modified by Tom Swain</title><link>https://sourceforge.net/p/realsbs/wiki/EMFEditOverview/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Swain</dc:creator><pubDate>Fri, 08 Nov 2013 01:38:42 -0000</pubDate><guid>https://sourceforge.netaaf23c8765b78a1a9fe37d3182468e7d7478b4c0</guid></item><item><title>EMFEditOverview modified by Tom Swain</title><link>https://sourceforge.net/p/realsbs/wiki/EMFEditOverview/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Swain</dc:creator><pubDate>Fri, 08 Nov 2013 01:37:12 -0000</pubDate><guid>https://sourceforge.net259134ee940921497f23f807f89881b4bf20152b</guid></item><item><title>EMFEditOverview modified by Tom Swain</title><link>https://sourceforge.net/p/realsbs/wiki/EMFEditOverview/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -33,7 +33,7 @@

 ### `AdapterFactoryContentProvider` and `adapterFactory` ###
-An [AdapterFactoryContentProvider](http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider.html) serves as a wrapper for an `AdapterFactory`, specifically [adapterFactory] in the code.  The `adapterFactory` is an instance of a [ComposedAdapterFactory](http://publib.boulder.ibm.com/infocenter/ratdevz/v7r5/topic/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/provider/ComposedAdapterFactory.html) which contains a [ResourceItemAdapterFactory](http://download.eclipse.org/modeling/emf/emf/javadoc/2.4.3/org/eclipse/emf/edit/provider/resource/ResourceItemProviderAdapterFactory.html), a `RealItemProviderAdapterFactory`, and a [ReflectiveItemProviderAdapterFactory](AdapterFactory)(http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/provider/ReflectiveItemProviderAdapterFactory.html).  The `RealItemProviderAdapterFactory` creates/contains all of the ItemProviders needed for our EMF model objects (the others are not of great importance right now).
+An [AdapterFactoryContentProvider](http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider.html) serves as a wrapper for an `AdapterFactory`, specifically [adapterFactory](AdapterFactory) in the code.  The `adapterFactory` is an instance of a [ComposedAdapterFactory](http://publib.boulder.ibm.com/infocenter/ratdevz/v7r5/topic/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/provider/ComposedAdapterFactory.html) which contains a [ResourceItemAdapterFactory](http://download.eclipse.org/modeling/emf/emf/javadoc/2.4.3/org/eclipse/emf/edit/provider/resource/ResourceItemProviderAdapterFactory.html), a `RealItemProviderAdapterFactory`, and a [ReflectiveItemProviderAdapterFactory](AdapterFactory)(http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/provider/ReflectiveItemProviderAdapterFactory.html).  The `RealItemProviderAdapterFactory` creates/contains all of the ItemProviders needed for our EMF model objects (the others are not of great importance right now).
 &lt;br /&gt;&lt;br /&gt;  
 In REALEditor.java code:

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Swain</dc:creator><pubDate>Fri, 08 Nov 2013 01:27:03 -0000</pubDate><guid>https://sourceforge.neta5f810c9e1f8ea8c94c8ed589ce8dae8075497e1</guid></item><item><title>EMFEditOverview modified by Tom Swain</title><link>https://sourceforge.net/p/realsbs/wiki/EMFEditOverview/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -20,16 +20,16 @@

 ### Setting a Content Provider for a Viewer in REALEditor.java ###

-  :::java
-  public void createPages() {
-  ...
+    :::java
+    public void createPages() {
+    ...
     // This is the page for the tree viewer
     //
     {
       ...
       treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
     }
-  ...
+    ...

 ### `AdapterFactoryContentProvider` and `adapterFactory` ###
@@ -37,13 +37,12 @@
 &lt;br /&gt;&lt;br /&gt;  
 In REALEditor.java code:

-:::java
-protected void initializeEditingDomain() {
+    :::java
+    protected void initializeEditingDomain() {

     // Create an adapter factory that yields item providers.
     //
     adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
-
     adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
     adapterFactory.addAdapterFactory(new RealItemProviderAdapterFactory());
     adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
@@ -68,19 +67,17 @@

 ### Setting a Label Provider for a Viewer in REALEditor.java ###

-:::java
-public void createPages() {
+    :::java
+    public void createPages() {

-...
+    ...
     // This is the page for the tree viewer
     //
     {
       ...
       treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
     }
-...
-
-
+    ...

 ### `AdapterFactoryLabelProvider` and `adapterFactory` ###
@@ -96,7 +93,7 @@
 Like content providers, changes in label behavior can be made by subclassing `AdapterFactoryLabelProvider` and/or changes to item providers.
 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;

-## Property Sheet ## 
+## Property Sheet ##
 ***
 The property sheet is an Eclipse viewer which specializes in allowing the user to retrieve and edit modeled object properties.  The property sheet, `propertySheetPage`, is an instance of the Eclipse UI object [PropertySheetPage](http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/PropertySheetPage.html) that uses an `AdapterFactoryContentProvider` acting as an [IPropertySourceProvider](http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/IPropertySourceProvider.html) to retrieve an [IPropertySource](http://help.eclipse.org/help33/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/IPropertySource.html) corresponding to a specific EMF object.  The `IPropertySource` (a wrapper for the UI independent [IItemPropertySource](http://download.eclipse.org/modeling/emf/emf/javadoc/2.5.0/org/eclipse/emf/edit/provider/IItemPropertySource.html), which the item providers implement) is used to retrieve the properties (i.e. the contents of the object) and a list of [IPropertyDescriptor](http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/IPropertyDescriptor.html)s that contain the ID and property labels of the EMF Object. 

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Swain</dc:creator><pubDate>Thu, 07 Nov 2013 19:59:46 -0000</pubDate><guid>https://sourceforge.netab8e4b306012f500d57251a0e02b9fcff31c7700</guid></item><item><title>EMFEditOverview modified by Tom Swain</title><link>https://sourceforge.net/p/realsbs/wiki/EMFEditOverview/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="emfedit-overview"&gt;&lt;strong&gt;EMF.edit Overview&lt;/strong&gt;&lt;/h1&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;EMF.edit&lt;/strong&gt; is a model editing framework in EMF that provides adapters (ItemProviders), property sources, a command creation and execution framework, and automated code generators for model editors.  It is designed primarily to work with JFace UI widgets and viewers, but can work within any UI framework.&lt;/p&gt;
&lt;p&gt;According to &lt;a class="" href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/org.eclipse.emf.doc/references/overview/EMF.Edit.html" rel="nofollow"&gt;IBM's EMF.Edit Framework article&lt;/a&gt;, the EMF.edit framework specifically provides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Content and label provider classes, property source support, and other convenience classes that allow EMF models to be displayed using standard desktop (JFace) viewers and property sheets.&lt;/li&gt;
&lt;li&gt;A command framework, including a set of generic command implementation classes for building editors that support fully automatic undo and redo.&lt;/li&gt;
&lt;li&gt;A code generator capable of generating everything needed to build a complete editor plug-in for your EMF model. It produces a properly structured editor that conforms to the recommended style for Eclipse EMF model editors. You can then customize the code however you like, without losing your connection to the model.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This article will give an overview of how the EMF.Edit framework relates specifically to REAL, and will brainstorm some ideas of what methods can be used to achieve the goals of an expanded GUI (in-cell editing, sorting, pop-ups, expanded context menus, etc.). &lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#emfedit-overview"&gt;EMF.edit Overview&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#content-providers"&gt;Content Providers&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#setting-a-content-provider-for-a-viewer-in-realeditorjava"&gt;Setting a Content Provider for a Viewer in REALEditor.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#adapterfactorycontentprovider-and-adapterfactory"&gt;AdapterFactoryContentProvider and adapterFactory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#usage"&gt;Usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#thoughts"&gt;Thoughts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#label-providers"&gt;Label Providers&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#setting-a-label-provider-for-a-viewer-in-realeditorjava"&gt;Setting a Label Provider for a Viewer in REALEditor.java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#adapterfactorylabelprovider-and-adapterfactory"&gt;AdapterFactoryLabelProvider and adapterFactory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#usage_1"&gt;Usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#thoughts_1"&gt;Thoughts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#property-sheet"&gt;Property Sheet ##&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#retrieval-of-an-ipropertysource"&gt;Retrieval of an IPropertySource&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#retrieval-of-ipropertydescriptors"&gt;Retrieval of IPropertyDescriptors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#emf-reference"&gt;EMF Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#sauce-codes"&gt;Sauce Codes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#see-also"&gt;See Also&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="content-providers"&gt;Content Providers&lt;/h2&gt;
&lt;hr /&gt;
&lt;p&gt;Content providers navigate the contents of a model object saved to a resource.  They must implement a content provider interface (e.g. &lt;code&gt;ITreeContentProvider&lt;/code&gt;, &lt;code&gt;IStructuredContentProvider&lt;/code&gt;).  Each JFace viewer in the generated editor code sets its content provider to new instance of an &lt;code&gt;AdapterFactoryContentProvider&lt;/code&gt; which implements &lt;code&gt;IContentProvider&lt;/code&gt;, &lt;code&gt;ITreeContentProvider&lt;/code&gt;, and &lt;code&gt;IStructuredContentProvider&lt;/code&gt; (See below).&lt;/p&gt;
&lt;h3 id="setting-a-content-provider-for-a-viewer-in-realeditorjava"&gt;Setting a Content Provider for a Viewer in REALEditor.java&lt;/h3&gt;
&lt;p&gt;:::java&lt;br /&gt;
  public void createPages() {&lt;br /&gt;
  ...&lt;br /&gt;
    // This is the page for the tree viewer&lt;br /&gt;
    //&lt;br /&gt;
    {&lt;br /&gt;
      ...&lt;br /&gt;
      treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));&lt;br /&gt;
    }&lt;br /&gt;
  ...&lt;/p&gt;
&lt;h3 id="adapterfactorycontentprovider-and-adapterfactory"&gt;&lt;code&gt;AdapterFactoryContentProvider&lt;/code&gt; and &lt;code&gt;adapterFactory&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;An &lt;a class="" href="http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider.html" rel="nofollow"&gt;AdapterFactoryContentProvider&lt;/a&gt; serves as a wrapper for an &lt;code&gt;AdapterFactory&lt;/code&gt;, specifically &lt;span&gt;[adapterFactory]&lt;/span&gt; in the code.  The &lt;code&gt;adapterFactory&lt;/code&gt; is an instance of a &lt;a class="" href="http://publib.boulder.ibm.com/infocenter/ratdevz/v7r5/topic/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/provider/ComposedAdapterFactory.html" rel="nofollow"&gt;ComposedAdapterFactory&lt;/a&gt; which contains a &lt;a class="" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.4.3/org/eclipse/emf/edit/provider/resource/ResourceItemProviderAdapterFactory.html" rel="nofollow"&gt;ResourceItemAdapterFactory&lt;/a&gt;, a &lt;code&gt;RealItemProviderAdapterFactory&lt;/code&gt;, and a &lt;a class="" href="../AdapterFactory"&gt;ReflectiveItemProviderAdapterFactory&lt;/a&gt;(http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/provider/ReflectiveItemProviderAdapterFactory.html).  The &lt;code&gt;RealItemProviderAdapterFactory&lt;/code&gt; creates/contains all of the ItemProviders needed for our EMF model objects (the others are not of great importance right now).&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
In REALEditor.java code:&lt;/p&gt;
&lt;p&gt;:::java&lt;br /&gt;
protected void initializeEditingDomain() {&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c1"&gt;// Create an adapter factory that yields item providers.&lt;/span&gt;
&lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="n"&gt;adapterFactory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ComposedAdapterFactory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ComposedAdapterFactory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Descriptor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Registry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="no"&gt;INSTANCE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;adapterFactory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;addAdapterFactory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ResourceItemProviderAdapterFactory&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="n"&gt;adapterFactory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;addAdapterFactory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;RealItemProviderAdapterFactory&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="n"&gt;adapterFactory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;addAdapterFactory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ReflectiveItemProviderAdapterFactory&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="usage"&gt;Usage&lt;/h3&gt;
&lt;p&gt;All access to the EMF object contents is provided through the content providers.  For instance, when a user expands a parent item in a &lt;code&gt;TreeViewer&lt;/code&gt; object in the UI, the &lt;code&gt;TreeViewer&lt;/code&gt; will use its content provider to call &lt;code&gt;getChildren()&lt;/code&gt; to retrieve its children's contents.  Specifically, &lt;code&gt;AdapterFactoryContentProvider&lt;/code&gt; will delegate to its &lt;code&gt;adapterFactory&lt;/code&gt; member variable, which will in turn use its &lt;code&gt;RealItemProviderAdapterFactory&lt;/code&gt; to grab the appropriate ItemProvider to call its own get &lt;code&gt;getChildren()&lt;/code&gt; method. &lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
The chain of method calls:&lt;br /&gt;
|&lt;strong&gt;&lt;code&gt;TreeViewer&lt;/code&gt;&lt;/strong&gt; (User expands EMF object in the UI)|-&amp;gt;|&lt;strong&gt;&lt;code&gt;AdapterFactoryContentProvider&lt;/code&gt;&lt;/strong&gt; (as &lt;code&gt;IContentProvider&lt;/code&gt; calling &lt;code&gt;getChildren()&lt;/code&gt;)|-&amp;gt;|&lt;strong&gt;&lt;code&gt;adapterFactory&lt;/code&gt;&lt;/strong&gt; (delegating &lt;code&gt;adapt()&lt;/code&gt;)|-&amp;gt;|&lt;strong&gt;&lt;code&gt;RealItemProviderFactory&lt;/code&gt;&lt;/strong&gt; (calling &lt;code&gt;adapt()&lt;/code&gt; to adapt the object to an &lt;code&gt;ITreeItemContentProvider&lt;/code&gt;)|-&amp;gt;|&lt;strong&gt;&lt;code&gt;ItemProvider&lt;/code&gt;&lt;/strong&gt; (as &lt;code&gt;ITreeItemContentProvider&lt;/code&gt; calling &lt;code&gt;getChildren()&lt;/code&gt;)|-&amp;gt;|&lt;strong&gt;EMF Object&lt;/strong&gt;|&lt;/p&gt;
&lt;h3 id="thoughts"&gt;Thoughts&lt;/h3&gt;
&lt;p&gt;To change how content is provided to the UI, &lt;code&gt;AdapterFactoryContentProvider&lt;/code&gt; should be subclassed and appropriate changes should be made in item providers (see &lt;a class="" href="../NonModeledIntermediaryViewObjects"&gt;NMIVOS&lt;/a&gt; for more details).&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 id="label-providers"&gt;Label Providers&lt;/h2&gt;
&lt;hr /&gt;
&lt;p&gt;Label providers retrieve label text and icons from EMF objects in a resource.  They must implement some form of an &lt;code&gt;ILabelProvider&lt;/code&gt;.  Each JFace viewer in the EMF generated editor sets its label provider to an &lt;a class="" href="http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/ui/provider/AdapterFactoryLabelProvider.html" rel="nofollow"&gt;AdapterFactoryLabelProvider&lt;/a&gt; which implements &lt;code&gt;ILabelProvider&lt;/code&gt;, &lt;code&gt;IBaseLabelProvider&lt;/code&gt; and &lt;code&gt;ITableLabelProvider&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="setting-a-label-provider-for-a-viewer-in-realeditorjava"&gt;Setting a Label Provider for a Viewer in REALEditor.java&lt;/h3&gt;
&lt;p&gt;:::java&lt;br /&gt;
public void createPages() {&lt;/p&gt;
&lt;p&gt;...&lt;br /&gt;
    // This is the page for the tree viewer&lt;br /&gt;
    //&lt;br /&gt;
    {&lt;br /&gt;
      ...&lt;br /&gt;
      treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));&lt;br /&gt;
    }&lt;br /&gt;
...&lt;/p&gt;
&lt;h3 id="adapterfactorylabelprovider-and-adapterfactory"&gt;&lt;code&gt;AdapterFactoryLabelProvider&lt;/code&gt; and &lt;code&gt;adapterFactory&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Similar to the relationship between &lt;code&gt;AdapterFactoryContentProvider&lt;/code&gt; and &lt;code&gt;adapterFactory&lt;/code&gt;, &lt;code&gt;AdapterFactoryLabelProvider&lt;/code&gt; serves as a wrapper for &lt;code&gt;adapterFactory&lt;/code&gt;.  See above for more information.&lt;/p&gt;
&lt;h3 id="usage_1"&gt;Usage&lt;/h3&gt;
&lt;p&gt;Viewers get the text and icons for EMF objects by calling &lt;code&gt;getText()&lt;/code&gt; and &lt;code&gt;getImage()&lt;/code&gt;, respectively.  As usual, this involves a long delegation chain from UI viewer to EMF object.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
The chain of method calls:&lt;br /&gt;
|&lt;strong&gt;&lt;code&gt;TreeViewer&lt;/code&gt;&lt;/strong&gt;|-&amp;gt;|&lt;strong&gt;&lt;code&gt;AdapterFactoryLabelProvider&lt;/code&gt;&lt;/strong&gt; (as &lt;code&gt;ILabelProvider&lt;/code&gt;)|-&amp;gt;|&lt;strong&gt;&lt;code&gt;adapterFactory&lt;/code&gt;&lt;/strong&gt; (delegating &lt;code&gt;adapt()&lt;/code&gt;)|-&amp;gt;|&lt;strong&gt;&lt;code&gt;RealItemProviderFactory&lt;/code&gt;&lt;/strong&gt; (calling &lt;code&gt;adapt()&lt;/code&gt;)|-&amp;gt;|&lt;strong&gt;&lt;code&gt;ItemProvider&lt;/code&gt;&lt;/strong&gt; (as &lt;code&gt;IItemLabelProvider&lt;/code&gt;)|-&amp;gt;|&lt;strong&gt;EMF Object&lt;/strong&gt;|&lt;/p&gt;
&lt;h3 id="thoughts_1"&gt;Thoughts&lt;/h3&gt;
&lt;p&gt;Like content providers, changes in label behavior can be made by subclassing &lt;code&gt;AdapterFactoryLabelProvider&lt;/code&gt; and/or changes to item providers.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 id="property-sheet"&gt;Property Sheet ##&lt;/h2&gt;
&lt;hr /&gt;
&lt;p&gt;The property sheet is an Eclipse viewer which specializes in allowing the user to retrieve and edit modeled object properties.  The property sheet, &lt;code&gt;propertySheetPage&lt;/code&gt;, is an instance of the Eclipse UI object &lt;a class="" href="http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/PropertySheetPage.html" rel="nofollow"&gt;PropertySheetPage&lt;/a&gt; that uses an &lt;code&gt;AdapterFactoryContentProvider&lt;/code&gt; acting as an &lt;a class="" href="http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/IPropertySourceProvider.html" rel="nofollow"&gt;IPropertySourceProvider&lt;/a&gt; to retrieve an &lt;a class="" href="http://help.eclipse.org/help33/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/IPropertySource.html" rel="nofollow"&gt;IPropertySource&lt;/a&gt; corresponding to a specific EMF object.  The &lt;code&gt;IPropertySource&lt;/code&gt; (a wrapper for the UI independent &lt;a class="" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.5.0/org/eclipse/emf/edit/provider/IItemPropertySource.html" rel="nofollow"&gt;IItemPropertySource&lt;/a&gt;, which the item providers implement) is used to retrieve the properties (i.e. the contents of the object) and a list of &lt;a class="" href="http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/views/properties/IPropertyDescriptor.html" rel="nofollow"&gt;IPropertyDescriptor&lt;/a&gt;s that contain the ID and property labels of the EMF Object. &lt;/p&gt;
&lt;h3 id="retrieval-of-an-ipropertysource"&gt;Retrieval of an &lt;code&gt;IPropertySource&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;IPropertySourceProvider&lt;/code&gt; retrieves an &lt;code&gt;IPropertySource&lt;/code&gt; by a call to &lt;code&gt;getPropertySource()&lt;/code&gt;.&lt;br /&gt;
|&lt;strong&gt;&lt;code&gt;PropertySheetPage&lt;/code&gt;&lt;/strong&gt;|-&amp;gt;|&lt;strong&gt;&lt;code&gt;AdapterFactoryContentProvider&lt;/code&gt;&lt;/strong&gt; (as &lt;code&gt;IPropertySourceProvider&lt;/code&gt; calling &lt;code&gt;getPropertySource()&lt;/code&gt;)|-&amp;gt;|&lt;strong&gt;&lt;code&gt;adapterFactory&lt;/code&gt;&lt;/strong&gt; (delegating &lt;code&gt;adapt()&lt;/code&gt;) |-&amp;gt;|&lt;strong&gt;&lt;code&gt;REALItemProviderAdapterFactory&lt;/code&gt;&lt;/strong&gt; (calling &lt;code&gt;adapt()&lt;/code&gt;)|-&amp;gt;|&lt;strong&gt;&lt;code&gt;ItemProvider&lt;/code&gt;&lt;/strong&gt; (as an &lt;code&gt;IItemPropertySource&lt;/code&gt; wrapped in a newly created &lt;code&gt;IPropertySource&lt;/code&gt;)|-&amp;gt;|&lt;strong&gt;EMF Object&lt;/strong&gt;|&lt;/p&gt;
&lt;h3 id="retrieval-of-ipropertydescriptors"&gt;Retrieval of &lt;code&gt;IPropertyDescriptor&lt;/code&gt;s&lt;/h3&gt;
&lt;p&gt;Once an &lt;code&gt;IPropertySource&lt;/code&gt; is retrieved, the property sheet calls &lt;code&gt;getPropertyDescriptors()&lt;/code&gt; on the property source to retrieve a list of &lt;code&gt;IPropertyDescriptors&lt;/code&gt;.  &lt;code&gt;getPropertyDescriptors()&lt;/code&gt; is implemented in the item providers using a similar wrapping pattern to &lt;code&gt;getPropertySource()&lt;/code&gt; (see pg 50, fig. 3.8 in the EMF book for more details). &lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 id="emf-reference"&gt;EMF Reference&lt;/h2&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="" href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider.html" rel="nofollow"&gt;AdapterFactoryContentProvider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/ui/provider/AdapterFactoryLabelProvider.html" rel="nofollow"&gt;AdapterFactoryLabelProvider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="http://publib.boulder.ibm.com/infocenter/ratdevz/v7r5/topic/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain.html" rel="nofollow"&gt;AdapterFactoryEditingDomain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="http://publib.boulder.ibm.com/infocenter/ratdevz/v7r5/topic/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/provider/ComposedAdapterFactory.html" rel="nofollow"&gt;ComposedAdapterFactory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/edit/provider/ItemProviderAdapter.html" rel="nofollow"&gt;ItemProviderAdapter&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="sauce-codes"&gt;Sauce Codes&lt;/h2&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="" href="http://kickjava.com/src/org/eclipse/emf/edit/ui/provider/AdapterFactoryContentProvider.java.htm" rel="nofollow"&gt;AdapterFactoryContentProvider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="http://kickjava.com/src/org/eclipse/emf/edit/ui/provider/AdapterFactoryLabelProvider.java.htm" rel="nofollow"&gt;AdapterFactoryLabelProvider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="http://kickjava.com/src/org/eclipse/emf/edit/domain/AdapterFactoryEditingDomain.java.htm" rel="nofollow"&gt;AdapterFactoryEditingDomain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="http://kickjava.com/src/org/eclipse/emf/edit/provider/ComposedAdapterFactory.java.htm" rel="nofollow"&gt;ComposedAdapterFactory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="http://kickjava.com/src/org/eclipse/emf/edit/provider/ItemProviderAdapter.java.htm" rel="nofollow"&gt;ItemProviderAdapter&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="see-also"&gt;See Also&lt;/h2&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;[RealEditor]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;[AdapterFactory]&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom Swain</dc:creator><pubDate>Thu, 07 Nov 2013 19:55:09 -0000</pubDate><guid>https://sourceforge.net395436d45de416197221f600dea841ac978daf42</guid></item></channel></rss>