I'm writing an application. This application allows the user to interactively analyze (and lightly modify) specific bundles of files. Each file in the bundle is individually editable by other applications; however, there is one file in the bundle (or the containing folder) that represents the bundle itself. My application allows the user to select one of these bundles and make investigations about the content of all files in the bundle.
Superficially this could be a document-centric application. Opening a 'bundle file' creates a new window representing the analysis on that bundle. Closing that window stops that analysis.
However, the window does not represent a single file, and not just in the nitty-gritty implementation sense. The user knows that there are many different files being looked at as a whole. Some modifications made during analysis will affect the content of individual files within the bundle. And it will be extremely unlikely that the user will ever want to create a new, empty bundle from my application. (There is no File
->New
.)
Should my application then be MDI? Modal, operating on a single bundle at a time?
Is this setup document-centric, or is there another term (or similar application paradigm) that applies?
More details on what the app does
Each 'bundle' of files in a folder actually represents something like a computer application. There are multiple files representing "presentations" (sort of like interactive PowerPoint), state machines, models, materials, images, scripts, and more.
Some of the analysis will be browsing the data specified in all these files. For example, each presentation has a hierarchy of models/groups/cameras/lights/etc., along with various 'slides' (variations), and animated values on those slides. Models reference their source asset file on disk, and have materials (which may be referencing a material files on disk).
Some use cases:
- Artist launches the app and opens a bundle to find out if there any image files in the directory that aren't being used, and asks to delete them.
- Artist wonders where in the hierarchies of many presentations a particular material file is being used. Artist looks at an inverted asset view (referenced files pointing to all the places where they are referenced from) to understand.
- Artist sees that there is a model that is never actually used, and deletes it from the hierarchy. The presentation file containing that hierarchy is dirtied.
- Artist looks at a map of all the unique color values being used throughout the project, and asks to replace three shades of orange with a new green color. Five presentation files are dirtied.
- Artist browses a tree view of all presentations/hierarchies and selects a particular element in the hierarchy. The application shows all the properties and their values on different slides. The artist picks a slide and then copies the value for the property.
- Artist uses the REPL to write script code to find all animation keyframes on the
scale.x
of objects inside a group and set any values of0.5
to0.4
. One Presentation is dirtied. - Artist selects a state in a state machine and adds an
onenter
action that causes a particular slide to be shown on a component in a presentation. The state machine is dirtied.
While not exhaustive, hopefully that helps inform the sort of tasks the application will perform on a bundle, and hopefully that helps clarify what windowing model is appropriate.