Javac Excludes UI Spec
Author: Dafe Simonek, Jesse Glick
Following document specifies UI for "Javac Excludes" feature which allows users to specify files and folders to exclude from javac compiling. Main document is at Excludes49026. Here is a list of use cases and scenarios.
Creating new project with existing sources
- User is creating new project from existing sources through new project wizard and last step is javac exclude panel. Currently I'm seggesting two alternatives, tall or wide panel.
- When user presses Exclude button, system will take selected item and exclude it from javac compilation, selected item will be removed from 'Included' tree and put into 'Excluded' tree.
- Include button works in inverse manner to Exclude button.
- When user drags item from 'Included' tree to 'Excluded' tree, result is the same as pressing Exclude button on dragged item. Drag and drop in opposite direction includes dragged item back into 'Included' tree.
- Behaviour constraints:
- If folder is selected, whole folder is exluded.
- Multiple selections are allowed.
- Exclude button is disabled if nothing is selected in 'Included' tree
- Include button is disabled if nothing is selected in 'Excluded' tree
- Text pattern representation in 'Includes' and 'Excludes' text fields in 'Advanced' panel section are always synchronized with trees content. It means that in each moment, 'Advanced' text fields show text pattern representation of what is shown in the trees. On the other side, trees always reflects what is written in 'Advanced' text fields.
- When there are no excluded folders/files, 'Excluded' tree is replaced by centered label showing dimmed (gray) text "No excludes". Otherwise it keeps the look af the tree area (white background, border). Similarly for 'Included' tree: "No includes"
- When only part of folder is included/excluded in trees, it is shown in gray color, dimmed.
Configuring existing project
User invokes properties dialog of the project and press Includes/Excludes button on Sources item. The same panel as in previous use case is shown, see above.