Project Wizard Specification (Buckminster)
< To: Buckminster Project
- The Buckminster Project Wizard helps the user using Buckminster with a project. It provides sanity checking/health status reporting, and helps with some settings and suggestions.
- The wizard should can be started from either a context menu for a project, or from the Buckminster View. If started from a context menu for a project, the Wizard automatically has that project selected in step 1.
- In all of the steps, it should be possible to go to the previous step. No actual actions (changing files etc) should take place until user presses "Finish".
- Some Suggested Wizard names are: Project check up for Buckminster, Project Buckminster Health Status, Buckminster Project Helper...
The wizard shows a list of current projects, and asks the user to select a project. There is text that informs the user that: "This Wizard helps you use Buckminster services on an Eclipse project. You will get a report of what Buckminster understands about your project (as Buckminster can read different type of project meta data), and you are given the opportunity to add Buckminster meta data if your project lacks the things you need."
When a project is selected it is possible to go to the next step.
- If project has known meta data (i.e. it is a plugin, feature, or maven managed project/component)
- The Wizard says "This is a XXX type of project. Buckminster reads and understands the meta data in this type of project/component. Extensions to this meta data can be made in a CSPEC-Extension (CSPEX).
- If component has CSPEC and CSPECX:
- "The project has both a CSPEC and a CSPECX in addition to Buckminster understanding the underlying meta data. The wizard can clean this up, by placing all the CPSEC content in the CSPEX as comments at the end for you to edit. Do you want to do this?" (checkbox)
- If component has CSPEC and no CSPEX:
- "The project has a CSPEC in addition to Buckminster understanding the underlying meta-data. The Wizard can rename the CSPEC to the proper CSPEC Extension (CSPEX) and fix the syntax so that it appropriately extends what Buckminster finds in the underlying meta-data. Do you want to do this?" (checkbox)
- If component has no CSPEC nor CSPEX:
- "The project is understood by Buckminster by reading the underlying meta-data. If you want to make extensions to this meta data, you can do so in a CSPEC Extension (CSPEX). Do you want to add such an (empty) extension that you can edit to suit your needs? (checkbox).
- If project has no underlying meta data:
- If project has both a CSPEC and a CSPECX - warn the user that although this is legal, it does not really make sense. It could all be kept in just one CPSEC. If the user wants to correct this, the CSPECX contents should be merged into the CSPEC.
- If project has only a CSPECX - warn user that there is only an extension and no CPSEC, ask user if the CSPEX should be turned into a CSPEC.
- If the project does not have a CSPEC, ask the user if one should be created.
It is possible to go to the next step without selecting anything (perhaps there should be some default settings for the various scenarios; i.e. "create a CPSEC if no underlying meta-data and no CSPEC or CSPECX is found - should be 'yes' by default".
Step 3 depends on the type of project, and if there is some special support for that type of project. Currently there is only special things available for Java projects. If there are no special step(s) for the type of project, the Wizard skips to the following step - or alternatively shows the text "There are no specific settings for this type of project" (which is also good to know).
For java, the wizard shows the following depending on use of Buckminster Path Container:
- The Buckminster Path container is currently turned off. Do you want it turned on?
- The reverse - it is on, do you want it turned off?
- There should be a link to learning more (or have a description in the Wizard directly).
(The path container adds materialized things to the java classpath. By placing the Buckminster container "on the classpath" it is ensured that all materialized things can be used without further configuration of the classpath.
It is always possible to go to the next step.
Depending on if something has been changed in the settings of the project:
- There has been no changes to the project - "cancel" is the only valid options. (Although finish could be enabled and do nothing, it is probably best to more strongly show that nothing will happen).
- There has been changes to the problem. By using "Finish" these settings will take effect. If you select "cancel", none of the changed settings will take effekt (and the changes you have made in this wizard are lost).
Actually not a step, it performs the actions that the user selected, and the Wizard closes. (done)
Discuss Additional Steps
Does it make sense to also help in creating a stored CQUERY? and Resource Map? Maybe have that is another wizard?