Logo

18.6.2 Finder

Finder is an implicit browser and it takes its name from the browser used to navigate through the file system of Mac OS X.

The logic of the Finder goes as follows:

  • Panes are handled in an simple linked list, each having possibly one predecessor and one successor
  • The value from the #entity port of the pane containing the Finder, spawns the first pane.
  • Every time the #selection port of a pane is populated with a value, a new successor pane is created.
  • A transmission is created with the #selection of the previous pane as origin and the #entity port of the successor pane as destination.
  • Optionally, the user can specify further origin ports that should be taken into account.
  • This transmission sets the presentations that the user specifies.

Perhaps this sounds more complicated than it really is. Let’s see an example.

As a case study, we take the same situation as in Section 15.1, only this time we aim to explore the providerNamespaces for each namespace from our model using a Finder. In our simple example, we will use a list for each pane showing the current list of namespaces. Selecting a namespace spawns the provider namespaces to the right:

| finder |
finder := GLMFinder new.
finder title: 'Namespace dependencies'.
finder fixedSizePanes: 3.
finder show: [ :a |
a list
format: #mooseName;
send: #providerNamespaces ].
finder openOn: MooseModel root allModels first allModelNamespaces.

Finder example showing the dependencies of the namespaces from ArgoUML 0.28.1

forwarding

Add a Note