the force unleashed! - eclipsecon france2018 · did you ever code a rich client application: -...

56
EMF.Edit The Force Unleashed! cloudchaser32000 (cc) http://www.flickr.com/photos/22566089@N03/5983182747/ Mikaël Barbero Obeo

Upload: habao

Post on 07-Sep-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

EMF.EditThe Force Unleashed!

cloudchaser32000 (cc) http://www.flickr.com/photos/22566089@N03/5983182747/

Mikaël BarberoObeo

Did you ever code a rich client application:

- without EMF?

- with EMF?

What is EM F ?

FromModels...

(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

OnSteroïds

(cc) Tama Leaver http://www.flickr.com/photos/75815807@N00/2409717875

(cc) Яick Harris http://www.flickr.com/photos/37153080@N00/430890004

More about the

Steroïds

(cc) Sterlic http://www.flickr.com/photos/27482959@N08/5559534294

EMF.Edit

(cc) alexliivet http://www.flickr.com/photos/23108377@N07/7018977935

NotifyFramework

CommandFramework

ChangeRecorder

(cc)

sha

nkar

, shi

v ht

tp://

ww

w.fl

ickr

.com

/pho

tos/

1472

2496

@N

04/2

3683

4620

2

(cc)

Cra

zy D

iam

ond

http

://w

ww

.flic

kr.c

om/p

hoto

s/48

4464

24@

N00

/450

5142

495

NotifyFramework

CommandFramework

ChangeRecorder

(cc)

sha

nkar

, shi

v ht

tp://

ww

w.fl

ickr

.com

/pho

tos/

1472

2496

@N

04/2

3683

4620

2

Observer—

Adapter

Observable—

Notifier

notifies

registers

Notification Message from the Observable to the Observer

5

Notification

EventType

Add

RemoveAdapter

Set

Unset Remove

AddMany

RemoveMany

Resolve

Stop Delivering Notifications

(cc)

chu

bsto

ck h

ttp:

//ww

w.fl

ickr

.com

/pho

tos/

2149

7715

@N

08/2

0798

8500

2

{{

For all model elements

In Genmodel

Set «Model / Suppress Notification» to false

For one model elements

On EObject instance

call #eSetDeliver(false)

EContent AdapterListener of Containment Tree

EContent AdapterListener of Containment Tree

eAdapters().add(EContentAdapter)

EContent AdapterListener of Containment Tree

eAdapters().add(EContentAdapter)

3... 2... 1... Action!

NotifyFramework

CommandFramework

ChangeRecorder

(cc)

Cra

zy D

iam

ond

http

://w

ww

.flic

kr.c

om/p

hoto

s/48

4464

24@

N00

/450

5142

495

What is a?

(cc) jDevaun http://www.flickr.com/photos/34316967@N04/3838807132

Executability

Executability

Undoability

Executability

Undoability

Redo

Result

Result

Aected Objects

Result

Aected Objects

Label / Description

GenericCommands

Set

Replace

Add

Remove

Move

Copy

High-levelCommands

CreateChild

Paste from Clipboard

Delete

Cut To Clipboard

Copy to Clipboard

Drag & Drop

(c) Simon Cox, Sept 2012

(c) Simon Cox, Sept 2012

Stack

Command

3... 2... 1... Action!

https://gist.github.com/mbarbero/77c81a93b5f63c441207

Code available

NotifyFramework

CommandFramework

ChangeRecorder

Change ModelBird view

ChangeDescription

apply() applyAndReverse()

Map<EObject, Changes>

EObject(from ecore)

FeatureChange

dataValue : String

EStructuralFeature(from ecore)

referenceValue

key

objectChanges [*]

value [*]

feature

Change RecorderListener of Containment Tree

ChangeRecorder

Change RecorderListener of Containment Tree

ChangeRecorder

Listen to

Change RecorderListener of Containment Tree

ChangeRecorder

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

applyAndReverseChange recorder

3... 2... 1... Action!

https://gist.github.com/mbarbero/6e6b88ee61ce7e2e57

Code available

What you should remember

(cc) debaird™ http://www.flickr.com/photos/48889107219@N01/239460739

What you should remember

Adapter + ChangeModel

What you should remember

ChangeRecorder=

Adapter + ChangeModel

Command + ChangeRecorder

What you should remember

ChangeRecorder ChangeCommand= =

Adapter + ChangeModel

Command + ChangeRecorder

Steroïds for Your App

What you should remember

ChangeRecorder ChangeCommand+

Q & A

(cc) Instant Vantage http://www.flickr.com/photos/44312356@N04/6023508805

Mikaël [email protected]+Mikaël Barbero@mikbarbero

Obeohttp://www.obeo.fr

(cc) TheAlieness GiselaGiardino²³ http://www.flickr.com/photos/36613169@N00/304120801/

Give Feedback

1} Sign in www.eclipsecon.org

2} Select Session Evaluate

3} Vote +1, 0 or -1

(cc)

Den

is D

ervi

sevi

c ht

tp://

ww

w.fl

ickr

.com

/pho

tos/

2397

9265

@N

07/4

7455

2050

1/