SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
Meta-Driven Browsers



Alexandre Bergel, Stéphane Ducasse,
                              Text


Colin Putney, Roel Wuyts

ESUG 2006
Prague, Czech Republic
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
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
Domain Model: Files



   OBNode subclass: #FileNode
     instanceVariableNames: 'path'
     ...

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

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




Alexandre Bergel          4 / 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   ^ path
Alexandre Bergel         5 / 16
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
Metagraph and browser definition

    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
Alexandre Bergel             7 / 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
 •




Alexandre Bergel                 8 / 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.
              ...}




Alexandre Bergel              9 / 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
 •




Alexandre Bergel                    10 / 16
The new system browser...




Alexandre Bergel       11 / 16
... its Metagraph ...


                     Class
                                         AllMethod
                                         Category
                    Class
Environment                                                Method
                   Comment
                                          Method
                                         Category
                   Metaclass


Legend
                   Meta-node
     Meta-node                           Filter      Transition
                      root




Alexandre Bergel               12 / 16
... 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
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
... 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
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

Weitere ähnliche Inhalte

Ähnlich wie 2006 Esug Omnibrowser

Meta-Driven Browsers
Meta-Driven BrowsersMeta-Driven Browsers
Meta-Driven BrowsersESUG
 
PHP Development Tools 2.0 - Success Story
PHP Development Tools 2.0 - Success StoryPHP Development Tools 2.0 - Success Story
PHP Development Tools 2.0 - Success StoryMichael Spector
 
Taking browsers fuzzing new
Taking browsers fuzzing newTaking browsers fuzzing new
Taking browsers fuzzing newgeeksec80
 
Deep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_level
Deep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_levelDeep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_level
Deep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_levelgeeksec80
 
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016Zabbix
 
The Radeox Wiki Render Engine
The Radeox Wiki Render EngineThe Radeox Wiki Render Engine
The Radeox Wiki Render EngineMatthias Jugel
 
Dynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open ChallengesDynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open Challengesbcantrill
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Coursepeter_marklund
 
Introductiontoasp netwindbgdebugging-100506045407-phpapp01
Introductiontoasp netwindbgdebugging-100506045407-phpapp01Introductiontoasp netwindbgdebugging-100506045407-phpapp01
Introductiontoasp netwindbgdebugging-100506045407-phpapp01Camilo Alvarez Rivera
 
.NET Debugging Tips and Techniques
.NET Debugging Tips and Techniques.NET Debugging Tips and Techniques
.NET Debugging Tips and TechniquesBala Subra
 
.Net Debugging Techniques
.Net Debugging Techniques.Net Debugging Techniques
.Net Debugging TechniquesBala Subra
 
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsI Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsMichael Lange
 
Using DSL for generation of software connectors
Using DSL for generation of software connectorsUsing DSL for generation of software connectors
Using DSL for generation of software connectorsMichal Malohlava
 
Android Bootcamp
Android   BootcampAndroid   Bootcamp
Android Bootcampahkjsdcsadc
 

Ähnlich wie 2006 Esug Omnibrowser (20)

Meta-Driven Browsers
Meta-Driven BrowsersMeta-Driven Browsers
Meta-Driven Browsers
 
PHP Development Tools 2.0 - Success Story
PHP Development Tools 2.0 - Success StoryPHP Development Tools 2.0 - Success Story
PHP Development Tools 2.0 - Success Story
 
Taking browsers fuzzing new
Taking browsers fuzzing newTaking browsers fuzzing new
Taking browsers fuzzing new
 
Deep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_level
Deep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_levelDeep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_level
Deep sec 2012_rosario_valotta_-_taking_browsers_fuzzing_to_the_next_(dom)_level
 
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
 
the UPS protoproto project
the UPS protoproto projectthe UPS protoproto project
the UPS protoproto project
 
The Radeox Wiki Render Engine
The Radeox Wiki Render EngineThe Radeox Wiki Render Engine
The Radeox Wiki Render Engine
 
Dynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open ChallengesDynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open Challenges
 
Understanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual MachineUnderstanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual Machine
 
.Net + novas tecnologias + win8
.Net + novas tecnologias + win8.Net + novas tecnologias + win8
.Net + novas tecnologias + win8
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 
Surge2012
Surge2012Surge2012
Surge2012
 
Introductiontoasp netwindbgdebugging-100506045407-phpapp01
Introductiontoasp netwindbgdebugging-100506045407-phpapp01Introductiontoasp netwindbgdebugging-100506045407-phpapp01
Introductiontoasp netwindbgdebugging-100506045407-phpapp01
 
.NET Debugging Tips and Techniques
.NET Debugging Tips and Techniques.NET Debugging Tips and Techniques
.NET Debugging Tips and Techniques
 
.Net Debugging Techniques
.Net Debugging Techniques.Net Debugging Techniques
.Net Debugging Techniques
 
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsI Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
 
Using DSL for generation of software connectors
Using DSL for generation of software connectorsUsing DSL for generation of software connectors
Using DSL for generation of software connectors
 
Android Bootcamp
Android   BootcampAndroid   Bootcamp
Android Bootcamp
 
Sinatra
SinatraSinatra
Sinatra
 

Mehr von bergel

Building Neural Network Through Neuroevolution
Building Neural Network Through NeuroevolutionBuilding Neural Network Through Neuroevolution
Building Neural Network Through Neuroevolutionbergel
 
Roassal presentation
Roassal presentationRoassal presentation
Roassal presentationbergel
 
2011 famoosr
2011 famoosr2011 famoosr
2011 famoosrbergel
 
2011 ecoop
2011 ecoop2011 ecoop
2011 ecoopbergel
 
Test beautycleanness
Test beautycleannessTest beautycleanness
Test beautycleannessbergel
 
The Pharo Programming Language
The Pharo Programming LanguageThe Pharo Programming Language
The Pharo Programming Languagebergel
 
2008 Sccc Inheritance
2008 Sccc Inheritance2008 Sccc Inheritance
2008 Sccc Inheritancebergel
 
Presentation of Traits
Presentation of TraitsPresentation of Traits
Presentation of Traitsbergel
 
2006 Seaside
2006 Seaside2006 Seaside
2006 Seasidebergel
 
2004 Esug Prototalk
2004 Esug Prototalk2004 Esug Prototalk
2004 Esug Prototalkbergel
 
2005 Oopsla Classboxj
2005 Oopsla Classboxj2005 Oopsla Classboxj
2005 Oopsla Classboxjbergel
 

Mehr von bergel (11)

Building Neural Network Through Neuroevolution
Building Neural Network Through NeuroevolutionBuilding Neural Network Through Neuroevolution
Building Neural Network Through Neuroevolution
 
Roassal presentation
Roassal presentationRoassal presentation
Roassal presentation
 
2011 famoosr
2011 famoosr2011 famoosr
2011 famoosr
 
2011 ecoop
2011 ecoop2011 ecoop
2011 ecoop
 
Test beautycleanness
Test beautycleannessTest beautycleanness
Test beautycleanness
 
The Pharo Programming Language
The Pharo Programming LanguageThe Pharo Programming Language
The Pharo Programming Language
 
2008 Sccc Inheritance
2008 Sccc Inheritance2008 Sccc Inheritance
2008 Sccc Inheritance
 
Presentation of Traits
Presentation of TraitsPresentation of Traits
Presentation of Traits
 
2006 Seaside
2006 Seaside2006 Seaside
2006 Seaside
 
2004 Esug Prototalk
2004 Esug Prototalk2004 Esug Prototalk
2004 Esug Prototalk
 
2005 Oopsla Classboxj
2005 Oopsla Classboxj2005 Oopsla Classboxj
2005 Oopsla Classboxj
 

Kürzlich hochgeladen

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 

Kürzlich hochgeladen (20)

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

2006 Esug Omnibrowser

  • 1. Meta-Driven Browsers Alexandre Bergel, Stéphane Ducasse, Text Colin Putney, Roel Wuyts ESUG 2006 Prague, Czech Republic
  • 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
  • 4. Domain Model: Files OBNode subclass: #FileNode instanceVariableNames: 'path' ... FileNode>>name ^ (FileDirectory directoryEntryFor: path) name FileNode>>text ^ 'File named: ', self name Alexandre Bergel 4 / 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
  • 7. Metagraph and browser definition 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 Alexandre Bergel 7 / 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
  • 11. The new system browser... Alexandre Bergel 11 / 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