First off, I'm not thrilled with the title, so I'm open to suggestions there. Here's my question:
I'm designing a simple application that takes input from a user and produces an output document. The application will allow the user to select from a short list of document types which will determine what "form" is then displayed so they can enter data specific to the desired output document.
The main view will just present a list of document types from which the user can select, and selecting one will result in the appropriate document-input view being displayed. I have an interface defined in my presentation layer for the main view, and I'm wondering how to define the list of document types that will be exposed through that view. In other words, the main view may have a drop-down displaying the names of the available document types. Ultimately, there will be a view interface associated with each document type as well as a model class for each document type which will of course implement the underlying business logic for that document type.
So here's the question: should I create an entirely-separate, tertiary class or structure (maybe an enum) for each document type that will populate the main view's list of available document types and will be exposed via the main view interface? If so, where should those classes reside with respect to the rest of the application, i.e. on what "layer". Or should I expose the document type models?