16
Meta-Driven Browsers Alexandre Bergel, Stéphane Ducasse, Colin Putney, Roel Wuyts ESUG 2006 Prague, Czech Republic Text

2006 Esug Omnibrowser

  • Upload
    bergel

  • View
    1.638

  • Download
    0

Embed Size (px)

DESCRIPTION

Smalltalk is not only an object-oriented programming language; it is also known for its extensive integrated development environment supporting interactive and dynamic programming. While the default tools are adequate for browsing the code and developing applications, it is often cumbersome to extend the environment to support new language constructs or to build additional tools supporting new ways of navigating and presenting source code. In this paper, we present the OmniBrowser, a browser framework that supports the definition of browsers based on an explicit metamodel. With OmniBrowser a domain model is described in a graph and the navigation in this graph is specified in its associated metagraph. We present how new browsers are built from predefined parts and how new tools are easily described. The browser framework is implemented in the Squeak Smalltalk environment. This paper shows several concrete instantiations of the framework: a remake of the ubiquitous Smalltalk System Browser, a coverage browser, the Duo Browser and the Dynamic Protocols browser.

Citation preview

Page 1: 2006 Esug Omnibrowser

Meta-Driven Browsers

Alexandre Bergel, Stéphane Ducasse, Colin Putney, Roel Wuyts

ESUG 2006Prague, Czech Republic

Text

Page 2: 2006 Esug Omnibrowser

Alexandre Bergel / 16

Outline

1. The OmniBrowser framework

2. Graph and metagraph

3. Interaction with the domain model

4. The System browser

5. Conclusion

2

Page 3: 2006 Esug Omnibrowser

Alexandre Bergel / 16

The OmniBrowser Framework

• A sophisticated framework to define new browsers

• It is structured around:

– an explicit domain model

– a metagraph (a state machine) that specify navigation with the domain model

– a list of actors that define interactions

3

Page 4: 2006 Esug Omnibrowser

Alexandre Bergel / 16

Domain Model: Files

4

OBNode subclass: #FileNodeinstanceVariableNames: 'path'...

FileNode>>name^ (FileDirectory directoryEntryFor: path) name

FileNode>>text^ 'File named: ', self name

Page 5: 2006 Esug Omnibrowser

Alexandre Bergel / 16

Domain Model: Directory

FileNode subclass: #DirectoryNode

DirectoryNode>>directories| dir |dir := FileDirectory on: self path.^ dir directoryNames collect:

[:each |DirectoryNode on: (dir fullNameFor: each)]

DirectoryNode>>files| dir |dir := FileDirectory on: self path.^ dir fileNames collect: [:each |

FileNode on: (dir fullNameFor: each)]

DirectoryNode>>text ^ path5

Page 6: 2006 Esug Omnibrowser

Alexandre Bergel / 16

Graph and Metagraph to define browsers

6

File

Directory

#files

N metanode

is an ancestor of

#directories

N object node

/

/temp pic1.jpg

pic2.jpg pic3.jpg

transition

(a) Instantiated domain (b) Metagraph

N root metanode

Page 7: 2006 Esug Omnibrowser

Alexandre Bergel / 16

Metagraph and browser definition

7

Creation of a browser:OBBrowser subclass: #FileBrowser

Root nodes:FileBrowser>>defaultRootNode

^ DirectoryNode on: '/'

FileBrowser>>defaultMetaNode|directory file |directory := OBMetaNode named: 'Directory'.file := OBMetaNode named: 'File'.directory

childAt: #directories put: directory;childAt: #files put: file;addActor: FileActor new.

^ directory

Page 8: 2006 Esug Omnibrowser

Alexandre Bergel / 16

Automatic layout with columns and a pane

• The GUI is built by the framework• It uses a layout similar to the Smalltalk System browser

8

Page 9: 2006 Esug Omnibrowser

Alexandre Bergel / 16

Interacting with the domain model with actors

An actor defines a column menu:OBActor subclass: #FileActor

FileActor>>actionsForNode: aNode^ {OBAction

label: 'remove' receiver: self selector: #remove: arguments: {aNode} keystroke: $x icon: MenuIcons smallCancelIcon....}

9

Page 10: 2006 Esug Omnibrowser

Alexandre Bergel / 16

Important notions of OmniBrowser

• Core notions:

– Nodes: what my domain is made of?

– Metagraph: how do I navigate in my domain?

– Actors: how do I interact with my domain?

• Filter: filtering domain nodes

• Definition: accepting new definitions of nodes

10

Page 11: 2006 Esug Omnibrowser

Alexandre Bergel / 16

The new system browser...

11

Page 12: 2006 Esug Omnibrowser

Alexandre Bergel / 16

... its Metagraph ...

12

Class

ClassComment

Metaclass

AllMethodCategory

MethodCategory

Method

Meta-node Filter Transition

Legend

Meta-noderoot

Environment

Page 13: 2006 Esug Omnibrowser

Alexandre Bergel / 16

... and its implementation

13

Omnibrowser core framework

System browser

CategoryActor

ClassActor

CodeBrowser

SystemBrowser

ClassDefinition

MethodDefinition

OrganizationDefinition

CodeNode

ClassAwareNode

ClassCommentNode

ClassNode

MetaClassNode

MethodCategoryNode

AllMethodCategoryNode

MethodNode

ClassCategoryNode

EnvironmentNode

BrowserNode ActorDefinition

Page 14: 2006 Esug Omnibrowser

Alexandre Bergel / 16

Limitations of OmniBrowser ...

• Hardcoded flow

– Navigation has to follow the left-to-right list construction

– Would be difficult to implement Whiskers

• Currently selected item

– Difficulty to implement advanced browsing facilities like in VisualWorks

14

Page 15: 2006 Esug Omnibrowser

Alexandre Bergel / 16

... and its strenghts

15

• Ease of use– do not need to deal with graphical objects

• Explicit state transition– graphical objects are automatically updated.

• Separation of domain and navigation– better readability of the code

Page 16: 2006 Esug Omnibrowser

Alexandre Bergel / 16

Conclusion

• Framework to build easily new browser

• Based on notion of nodes, metagraph, actors, definition and filters

• Included per default in Squeak 3.9

• Already existing browsers:– changes, implementors, senders, variables, version, ...– coverage browser– dual browser– Traits browser– Pier browser

16