Sunday, May 27, 2012

Lists, Menus, and Collections

In addition to File Didgets (things like photos, documents, music, or video) there are also a number of "Managed Didgets" where the Didget Manager controls the contents of their data streams. I would like to talk about three of them that are used to organize various other groups of Didgets - List Didgets, Menu Didgets, and Collection Didgets.

List Didgets

A List Didget is a Didget that has, as its contents, a simple list of other Didgets to form a logical group. If a Didget has been added to one of these List Didgets, it could be said that it is "a member of that group". Unlike files that must reside within a single folder or directory (the exception being file systems that support hard links), Didgets are generally expected to be members of several different groups. A single music Didget could be members of the "Music", "Rock and Roll Music", "80's Music", and "My Favorite Songs" groups.

Just like every other Didget in the system, List Didgets can have attributes and tags assigned to them. In addition, List Didgets can be assigned "rules" about what kinds of other Didgets can be added as members. So I could create a List Didget with a name tag of "My Hawaii Vacation Photos" attached; will only allow Photo Didgets with the format of JPEG as members; and contains a current list of 100 Photo Didget IDs. This Didget would effectively represent a "Photo Album" with 100 photos in it of my vacation.

List Didgets are especially suitable for lists where you don't care about each member having some kind of label associated with it. In the example given, it is not important that each of the 100 photos are given labels like "Day at the Beach", "Snorkeling" or "Whale Watching". They could be identified only as "Photo 1", "Photo 2", "Photo 3", ... , "Photo 100", or they could have no names at all.

Menu Didgets

Just like List Didgets, Menu Didgets contain references to other Didgets. Their uniqueness lies in the requirement that every member Didget also be given a short label within the menu. I could create a Menu Didget called "Clint Eastwood Movies" and have 10 members that are all Video Didgets. Each member would have a label in the Menu like "Kelly's Heroes", "Magnum Force", or "Space Cowboys".

Collection Didgets

A Collection Didget is also very similar to a List Didget in that it can have lots of members that do not need any kind of label associated with each of them. With Collection Didgets, members are divided into two distinct categories - Mandatory Members and Optional Members. Collection Didgets are primarily used to track data set completeness. I could have a Collection Didget called "Microsoft Office Software" that contained a list of all the Software Didgets that are required to run that software package as well as another list of Didgets that are nice to have (spell checkers, thesaurus, help files, etc.) but are not needed to run it. A simple utility could be built that checks to see if a given Didget Chamber has everything it needs to run without having to start up the program. It will be possible to build a sophisticated "Package Management System" using these Collection Didgets.


All these kinds of Didgets can be nested within each other. I can build a hierarchy of menus that had menus inside of other menus. I could mimic a traditional file system folder hierarchy using this technique. "List of Lists" could likewise be made by nesting List Didgets within other List Didgets. Same for "Collection of Collections". I could mix them up a bit by creating a "List of Collections" or a "Menu of Lists".

Each of these "Managed Didgets" represents a powerful tool for organizing groups of data and giving applications an elegant way of visually representing them to the end user.

No comments:

Post a Comment