Morphic widgets for browsing

Mentor: Tudor Girba
Second mentor: Andrei Vasile Chis
Level: Intermediate
Invited students: Clara Allende, Benjamin Van Ryseghem
Students interested: Prasanna Venkatesh Ravi(very), Krutarth Patel, Benjamin Van Ryseghem, Clara Allende(lightly)


Browsers are key software development tools. The Pharo/Moose environment already offers sophisticated support for constructing browsers (for example, through Glamour). However, the effectiveness of these browsers highly depends on the rendering capabilities, and currently, the Morphic widgets offer limited capabilities.

The goal of this project is to construct multiple widgets that make browsing smoother and more scalable. These widgets will at the very least influence the rendering available in Glamour. Ideally, the widgets should be integrated in Spec, and perhaps Pharo.

Why Morphic? Because Pharo/Moose is a highly dynamic environment that deserves appropriate widgets. And because the effort is less science fiction that one might tend to think.

Technical Details

Scalable list widget:

  • The list will offer parallelized loading (without blocking the ui)
  • The list will offer dynamic paging (like google photos or twitter)
  • The target is to handle easily 100k items

Multi-category search widget:

  • This will behave similarly with the Mac Spotlight widget
  • The widget will react on every keystroke

Smart tabs

  • The tab behaves similarly with the one from Eclipse: it has a label and an associated menu
  • The tabs are lazily loaded
  • The tab label resizes smartly depending on the size of the overall widget
  • A first implementation exists in Glamour, but it needs consolidation and extension

Popup inspect widget

  • The widget will appear on demand and will contain a morph (typically, a simple text morph)
  • The widget will disappear as soon as the input is lost
  • This widget will useful for replacing the "print it" behavior that currently directly affects the existing text
  • To some extent, the widget will behave like the inspector from Eclipse

Watcher widget

  • The widget will behave like the preview functionality from the Mac Finder
  • On a certain key combination, the preview window appears and it displays a morph
  • Loading the contents of the preview must not block the ui
  • A first implementation exists in Glamour

(Optional) Grid widget:

  • The grid widget allows navigation similar to an Excel spreadsheet
  • Each cell in the grid knows its row and column
  • The grid allows the manipulation both by column and by row
  • The grid can be navigated with keys
  • The grid accepts any morph as a widget
  • The size of the columns and rows can be customized individually (and ideally take the size of the contained widgets)

Benefits to the Student

  • The student is expected to want to deal with user interface design
  • You will familiarize yourself with the domain of browsing
  • You will gain experience in user interface design
  • You will learn Glamour (read about it here: http://www.themoosebook.org/book/internals/glamour)

Benefits to the Community

The community will benefit from significantly better browsers

Updated: 9.4.2013