The document describes the OmniBrowser framework, which allows defining new browsers through explicit domain models, metagraphs specifying navigation, and actors defining interactions. It presents the framework's key concepts of nodes, metagraphs, actors, definitions, and filters. As an example, a new system browser is implemented using the framework with classes, methods, categories and other elements as nodes connected by the metagraph. The framework aims to easily build new browsers by separating the domain model from the graphical interface.
2. Outline
1. The OmniBrowser framework
2. Graph and metagraph
3. Interaction with the domain model
4. The System browser
5. Conclusion
Alexandre Bergel 2 / 16
3. 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
Alexandre Bergel 3 / 16
5. 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 ^ path
Alexandre Bergel 5 / 16
6. Graph and Metagraph to define browsers
N object node
/
metanode
N #directories
Directory
root metanode
N
is an ancestor of
/temp pic1.jpg #files
transition
File
pic2.jpg pic3.jpg
(a) Instantiated domain (b) Metagraph
Alexandre Bergel 6 / 16
8. Automatic layout with columns and a pane
The GUI is built by the framework
•
It uses a layout similar to the Smalltalk System browser
•
Alexandre Bergel 8 / 16
9. 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.
...}
Alexandre Bergel 9 / 16
10. 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
•
Alexandre Bergel 10 / 16
12. ... its Metagraph ...
Class
AllMethod
Category
Class
Environment Method
Comment
Method
Category
Metaclass
Legend
Meta-node
Meta-node Filter Transition
root
Alexandre Bergel 12 / 16
13. ... and its implementation
Omnibrowser core framework
Definition Node Actor Browser
System browser
Class Method Organization Category Class Code
Definition Definition Definition Actor Actor Browser
Code
Node System
Browser
ClassComment ClassAware Environment
Node Node Node
Method Method ClassCategory
ClassNode
CategoryNode Node Node
MetaClassN AllMethod
ode CategoryNode
Alexandre Bergel 13 / 16
14. 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
Alexandre Bergel 14 / 16
15. ... and its strenghts
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
Alexandre Bergel 15 / 16
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
Alexandre Bergel 16 / 16