SlideShare a Scribd company logo
EMF.Edit
                                                                             The Force Unleashed!




                                                                                            Mikaël Barbero
                                                                                                     Obeo
cloudchaser32000 (cc) http://www.flickr.com/photos/22566089@N03/5983182747/
Did you ever code a rich
   client application:


 - without EMF?


  - with EMF?
What is   EMF   ?
From
                                                                Models...



(cc) Alan Dean http://www.flickr.com/photos/60041018@N00/3513723662
...to Java Beans




(cc) The Wanderer's Eye http://www.flickr.com/photos/8997331@N04/5237447939
(cc) Tama Leaver http://www.flickr.com/photos/75815807@N00/2409717875




 On
 Steroïds
(cc) Яick Harris http://www.flickr.com/photos/37153080@N00/430890004
(cc) Sterlic http://www.flickr.com/photos/27482959@N08/5559534294




More about the
Steroïds
EMF.Edit


(cc) alexliivet http://www.flickr.com/photos/23108377@N07/7018977935
Notify
                         (cc) shankar, shiv http://www.flickr.com/photos/14722496@N04/2368346202




          Command
Framework Framework
                      (cc) Crazy Diamond http://www.flickr.com/photos/48446424@N00/4505142495
Change
Recorder
Notify
                      (cc) shankar, shiv http://www.flickr.com/photos/14722496@N04/2368346202




          Command
Framework Framework
Change
Recorder
notifies
Observer               Observable
   —                       —
Adapter                 Notifier
           registers
5




Notification
Message from the Observable to the Observer
Add

      Unset                 Remove


              Notification
Set            Event            Add
                                Many
               Type
                            Remove
  Resolve
                             Many
                Remove
                Adapter
(cc) chubstock http://www.flickr.com/photos/21497715@N08/2079885002




Notifications
               Stop Delivering
{   For all model elements

     In Genmodel

     Set «Model / Suppress Notification» to false




{   For one model elements

     On EObject instance

     call #eSetDeliver(false)
EContent Adapter
Listener of Containment Tree
EContent Adapter
Listener of Containment Tree




                               eAdapters().add(EContentAdapter)
EContent Adapter
Listener of Containment Tree




                               eAdapters().add(EContentAdapter)
3... 2... 1... Action!
Code available

https://gist.github.com/mbarbero/18e16fe13da40ba825ce



https://gist.github.com/mbarbero/e8aa2c0754dccdd45b
Notify Command
Framework Framework
                      (cc) Crazy Diamond http://www.flickr.com/photos/48446424@N00/4505142495
Change
Recorder
Wh
                                                    at i
                                                        sa
(cc) jDevaun http://www.flickr.com/photos/34316967@N04/3838807132
                                                                   ?
Executability
Executability


           Undoability
Executability


           Undoability


                         Redo
Result
Result


         Aected Objects
Result


         Aected Objects


              Label / Description
Set


 Copy                 Add

           Generic
          Commands
Replace              Remove


            Move
Create
                 Child


Drag & Drop                  Delete

               High-level
              Commands
Paste from                   Cut To
Clipboard                   Clipboard

                Copy to
               Clipboard
(c) Simon Cox, Sept 2012
Command
 Stack




          (c) Simon Cox, Sept 2012
3... 2... 1... Action!
Code available


https://gist.github.com/mbarbero/77c81a93b5f63c441207
Notify Command     Change
Framework Framework   Recorder
EMF.Edit the Force Unleashed!
Change Model
Bird view
                                  ChangeDescription

                                  apply()
                                  applyAndReverse()




                         objectChanges [*]
                                                       key
                                     Map<EObject,            EObject
                                      Changes>               (from ecore)

                                                                      referenceValue


                                   value [*]
                        feature
   EStructuralFeature               FeatureChange
       (from ecore)
                                  dataValue : String
Change Recorder
Listener of Containment Tree

                               Change
                               Recorder
Change Recorder
Listener of Containment Tree

                                   Change
                                   Recorder

                       Listen to
Change Recorder
Listener of Containment Tree

                                   Change
                                   Recorder

                       Listen to              Creates




                                                        Change model
Change Command




(cc) fdecomite http://www.flickr.com/photos/21649179@N00/6478685035
Change Command

Execute
Change Command

   Execute




Change recorder
Change Command

   Execute        Undo   Redo




Change recorder
Change Command

   Execute        Undo          Redo




Change recorder     applyAndReverse
3... 2... 1... Action!
Code available


https://gist.github.com/mbarbero/6e6b88ee61ce7e2e57
(cc) debaird™ http://www.flickr.com/photos/48889107219@N01/239460739




 What you should remember
What you should remember
Adapter +
   ChangeModel
        =
  ChangeRecorder




What you should remember
Adapter +       Command +
   ChangeModel     ChangeRecorder
        =                =
  ChangeRecorder   ChangeCommand




What you should remember
Adapter +           Command +
   ChangeModel         ChangeRecorder

  ChangeRecorder   +   ChangeCommand


     Steroïds for Your App



What you should remember

More Related Content

PDF
Diff and Merge with Ease: EMF Compare
PDF
Android RenderScript on LLVM
PPTX
Advanced Silverlight
PDF
Mining Software Archives to Support Software Development
PDF
デザインキット・D級アンプのスタートアップガイド
PDF
Set Up & Operate Tungsten Replicator
PPT
닷넷 개발자를 위한 패턴이야기
PDF
NPW2009 - my.opera.com scalability v2.0
Diff and Merge with Ease: EMF Compare
Android RenderScript on LLVM
Advanced Silverlight
Mining Software Archives to Support Software Development
デザインキット・D級アンプのスタートアップガイド
Set Up & Operate Tungsten Replicator
닷넷 개발자를 위한 패턴이야기
NPW2009 - my.opera.com scalability v2.0

Similar to EMF.Edit the Force Unleashed! (20)

PDF
React Lifecycle and Reconciliation
PPTX
Behavior driven oop
PPTX
Advanced Index Tuning
KEY
Test First Refresh Second: Test-Driven Development in Grails
PDF
Minimalism in Web Development
PDF
Crossroads of Asynchrony and Graceful Degradation
PPTX
Characterization of Exxon Mobil Escorene and Achieve Polypropylene Melt Blown...
PDF
Pharo Optimising JIT Internals
PDF
Setup & Operate Tungsten Replicator
KEY
Test First, Refresh Second: Web App TDD in Grails
PDF
Tungsten University: Setup and Operate Tungsten Replicators
PDF
Performance measurement and tuning
PDF
Using S1000D and SCORM to Integrate Documentation and Training
PDF
Seaside Portability
PDF
Native Java with GraalVM
PDF
Tyler Wright - Undo History with Flight
PDF
Snapshot clone-boot-presentation-final
PDF
Immutable Infrastructure & Rethinking Configuration - Interop 2019
PDF
Automated Scaling of Microservice Stacks for JavaEE Applications
PPT
Windows debugging sisimon
React Lifecycle and Reconciliation
Behavior driven oop
Advanced Index Tuning
Test First Refresh Second: Test-Driven Development in Grails
Minimalism in Web Development
Crossroads of Asynchrony and Graceful Degradation
Characterization of Exxon Mobil Escorene and Achieve Polypropylene Melt Blown...
Pharo Optimising JIT Internals
Setup & Operate Tungsten Replicator
Test First, Refresh Second: Web App TDD in Grails
Tungsten University: Setup and Operate Tungsten Replicators
Performance measurement and tuning
Using S1000D and SCORM to Integrate Documentation and Training
Seaside Portability
Native Java with GraalVM
Tyler Wright - Undo History with Flight
Snapshot clone-boot-presentation-final
Immutable Infrastructure & Rethinking Configuration - Interop 2019
Automated Scaling of Microservice Stacks for JavaEE Applications
Windows debugging sisimon
Ad

More from mikaelbarbero (18)

PDF
Kubernetes 101 - A Cluster Operating System
PDF
Language Server Protocol - Why the Hype?
PDF
What's new in Eclipse Oxygen (Devoxx France 2017)
PDF
The Eclipse IDE: What's new in the 2017 release?
PDF
What every Eclipse developer should know about progress reporting and job can...
PDF
The Eclipse IDE - The Force Awakens (Devoxx France 2016)
PDF
Sirius: Graphical Editors for your DSLs
PDF
Modeling in a Team Environment with EMF Compare and EGit
PDF
Eclipse simultaneous release in a nutshell
PDF
OSGi: Don't let me be Misunderstood
PDF
EMF Compare 2.0: Scaling to Millions (updated)
KEY
EMFCompare 2.0: Scaling to Millions
KEY
3mf infinity-and-beyond
PDF
Eclipseconeurope 2011 - EMFCompare Improvements
PDF
Google Guava & EMF @ GTUG Nantes
ODP
5M lines of code migration
PDF
EMFPath
PDF
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)
Kubernetes 101 - A Cluster Operating System
Language Server Protocol - Why the Hype?
What's new in Eclipse Oxygen (Devoxx France 2017)
The Eclipse IDE: What's new in the 2017 release?
What every Eclipse developer should know about progress reporting and job can...
The Eclipse IDE - The Force Awakens (Devoxx France 2016)
Sirius: Graphical Editors for your DSLs
Modeling in a Team Environment with EMF Compare and EGit
Eclipse simultaneous release in a nutshell
OSGi: Don't let me be Misunderstood
EMF Compare 2.0: Scaling to Millions (updated)
EMFCompare 2.0: Scaling to Millions
3mf infinity-and-beyond
Eclipseconeurope 2011 - EMFCompare Improvements
Google Guava & EMF @ GTUG Nantes
5M lines of code migration
EMFPath
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)
Ad

Recently uploaded (20)

PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
A Presentation on Artificial Intelligence
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Approach and Philosophy of On baking technology
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Modernizing your data center with Dell and AMD
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
NewMind AI Monthly Chronicles - July 2025
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Diabetes mellitus diagnosis method based random forest with bat algorithm
NewMind AI Weekly Chronicles - August'25 Week I
Dropbox Q2 2025 Financial Results & Investor Presentation
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Machine learning based COVID-19 study performance prediction
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Encapsulation_ Review paper, used for researhc scholars
Advanced methodologies resolving dimensionality complications for autism neur...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Network Security Unit 5.pdf for BCA BBA.
A Presentation on Artificial Intelligence
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Approach and Philosophy of On baking technology
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Modernizing your data center with Dell and AMD
Understanding_Digital_Forensics_Presentation.pptx
NewMind AI Monthly Chronicles - July 2025

EMF.Edit the Force Unleashed!