For more information about the problems these recommendations address, please
see the Usability
Report.
Project Explorer (Active Project, Node Order, Node Names)
Bugs: 33603, 33604
Priority: P1
The Project Explorer needs some changes to clarify the content of a
project along with the Active project. To address these issues the
following recommendations are made:
- Remove Output and Resources nodes: Removing the output
and resources nodes (placing their functionality into the project customizer
below) will simplify the explorer tree.
- Divide the display of the project into a Logical Tab and a
Files Tab: By splitting the views up it should clear up confusion
that may result from having items appear twice under the same tree
as is the case now. The files tab also provides a better place to work
with vcs commands on the project contents.
- Change the way Active project is indicated and used (Infrastructure): Bold
the title of the Active project in the Project Explorer; add a checkbox
to the new project wizard to set the newly created project active (default
is true. see new wizard section); make the Set Active popup menu item
more visible.
Three things should help confer the importance of the Active project in
the IDE: 1. better indication in the explorer; 2. a prominent option in
all project wizards and open dialogs to set the new or opened project as
Active; 3. more prominent location of the Set Active action in the project
pop-up menu. A different term may help as well though it is not clear what
that might be.
Along with better indication of the Active state, a project should automatically
become active after it has been created (from the wizard) or opened. A
check box in the wizard and in the filechooser for opening a project will
let the user decide if they want the new/selected project to become active
-by default this is set to true.
Infrastructure UI Spec:
The Project Explorer is the central location for working with projects
in the IDE. Source files and objects are directly available in the Project
Explorer and all configuration and management action for the project are
available through contextual menus in the Project Explorer. The Project
Explorer contains all open projects and project groups and is made up of
two tabs, Logical View and Files View. Modules may add additional tabs
if they need to break their projects into more views.
The Logical View provides a project specific logical view of project contents.
The Files View shows all files and folders present in the project regardless
of what kind of project it is. The view is very similar to the 3.x filesystems
view in that every source root is a node under the project node. The contents
of the Files Views are:
-My_Project
|
- c:\My_Project <- project root = implicit source root
| |
| + My_Project.project <- project file and any other files and directories
| contained in the project root (project file location).
+ Additional_Source_Root_1
|
+ Additional_Source_Root_2
|
+ Additional_Source_Root_n
For every source root there is one child node of the project node.
The project root is the implicit source root and is the first node underneath
the project node. All the additional source roots are defined in the
Sources & Files page of Project Customizer.
Actions between the two views should be consistent. Whatever action
is available on an object in one view should also be available on the
corresponding object in the other view. Exceptions would be objects in
the logical view that are aggregates of more than one physical thing
-the action may not make the same sense for the individual pieces as
it does for the aggregate.
+----------------------------------------------+
| Project Explorer |
+----------------------------------------------+
| Projects |
| | |
| + My Java Project |
| | |
| + My Web App Project |
| | |
| + My Server Project |
| | |
| - My Library Project |
| | |
| - c:\LibraryProject |
| | | |
| | + docs |
| | | |
| | + output |
| | | |
| | + src |
| | | |
| | + build.xml |
| | | |
| | + My Library Project.project |
| | |
| + c:\extra\src |
| |
| |
| |
|________________ ________________|
|\ Logical View /\ Files View / |
+----------------------------------------------+
Components of the dialog:
- Logical View tab. Shows the logical view of the project. The structure
of the logical view is entirely provided by the module(s) that provide
that project.
- Files View tab. Shows the project contents as files and folders.
Projects are listed in the same order as they appear in the Logical
View. Children of the Project node in the Files View are all source
root.
In addition to displaying sources and files in the project the Project
Explorer indicates which project is active. One project is always
Active -if there is only one project open then it is automatically
Active, when there are multiple projects open one is at all times
Active.
The active project is indicated with a bold project node title. A context
menu item on non-Active projects lets the user set those projects to
active.
Java UI Spec:
The Logical View in the Project Explorer provides a Java specific view
of the project contents. All source roots that contain java
roots contribute to a merged view in the Logical view so that all like package
fragments form one node under the Project node.
A top-level package
node is created from all Package Fragments that contain only Java source
or are empty. If a package fragment org.netbeans.modules.java contained foo.java,
it would be a top-level node in the Packages node. If bar.java was in
the package org.netbeans.modules then
the top-level node would be org.netbeans.modules and it would contain
the Java source bar.java and the sub-package java.
Two or more java roots may contain Java sources that are in conflict
-meaning that two java roots provide the same package fragments and source
files of the same name. When this happens the order of the java root
determines which source is used for build (the first in the Project
Customizer, Sources and Files list gets preference). Both files are shown
and the remaining files in conflict are badged so the user can resolve the
conflict (or not) as necessary.
The conflict badging also depends on how the Compiled Classes Build Target
is setup; conflicting classes in the Packages node will be badged with
more information based on where they are used. If there is only one Compiled
Classed node the file that is not used is marked [unused]. When there are
more than on Compiled Classes Build Target and each has a slightly different
order of Java Roots the classes in conflict can each be annotated with
the name of the Build Target that uses them - [default Build Target], [test
Build Target], [deployment Build Target]. This clarifies where each file
is used.
+------------------------------------------------+
| Projects |
+------------------------------------------------+
| |
|-Projects |
| | |
| - My Java Project |
| | | |
| | - org.netbeans.modules |
| | | |
| | - java |
| | | | |
| | | - foo.java |
| | | |
| | - bar.java |
| | |
| + My Web App Project |
| | |
| + My Server Project |
| | |
| + My Library Project |
| |
| |
| ________________________________|
|\ Logical View /\ Files View / |
+------------------------------------------------+
All folders added to a package are considered packages if they follow
the Java specification for package naming. If a folder (or sub-package) is
added to a package and it uses characters illegal for Java packages it is
displayed as a package with the error badge on the package icon.
+------------------------------------------------+
| Projects |
+------------------------------------------------+
| |
|-Projects |
| | |
| - My Java Project |
| | | |
| | - org.netbeans.modules |
| | | |
| | - java |
| | | | |
| | | - foo.java |
| | | |
| | - bar.java |
| | | |
| | + doc$Folder |
| | |
| + My Web App Project |
| | |
| + My Server Project |
| | |
| + My Library Project |
| |
| |
| ________________________________|
|\ Logical View /\ Files View / |
+------------------------------------------------+
The Files View of this project, assuming that the packages root is under a
source root which is different from the project root, would look like:
+------------------------------------------------+
| Project Explorer |
+------------------------------------------------+
| Projects |
| | |
| + My Java Project |
| | | |
| | - c:\JavaProject |
| | | | |
| | | + My Java Project.project |
| | | |
| | - c:\allMyProjects\JavaProject |
| | | |
| | - src |
| | | | |
| | | - org |
| | | | |
| | | - netbeans |
| | | | |
| | | - modules |
| | | | | |
| | | | - foo.java |
| | | | |
| | | + doc$Folder |
| | | | |
| | | - bar.java |
| | | |
| | + output |
| | | |
| | + misc |
| | |
| + My Webb Apps Project |
|________________ __________________|
|\ Logical View /\ Files View / |
+------------------------------------------------+
With the above example the project root is c:\JavaProject, the additional
source root is c:\allMyProjects\JavaProject and the java root is contained
within the additional source root and is the directory
c:\allMyProjects\JavaProject\src.
If a java project (enhanced by a nature; or an other java based project, like
webapp project) needs to show more than one type of logical hierarchies they
are displayed underneath a special nodes in the logical view. It might
look like this:
+------------------------------------------------+
| Projects |
+------------------------------------------------+
| |
|-Projects |
| | |
| - My Enhanced Java Project |
| | | |
| | - Packages |
| | | | |
| | | - org.netbeans.modules |
| | | | |
| | | - java |
| | | | | |
| | | | - foo.java |
| | | | |
| | | - bar.java |
| | | | |
| | | + doc$Folder |
| | | |
| | + Special Logical Hierarchy |
| | |
| + My Web App Project |
| | |
| + My Server Project |
| | |
| + My Library Project |
| |
| |
| ________________________________|
|\ Logical View /\ Files View / |
+------------------------------------------------+
Special nodes can be added dynamically to a project as the user may create
or add content that is provided for with specific categorization, e.g. JUnit
functionality might break tests out as a separate node 'JUnit Tests'.
Open Questions: Should the 'Packages' node reappear when
additional logical groupings are added to the view or should it be visible
all the time
regardless if it is the only gouping? Should the likely additional groupings
(i.e. unit tests) be included automatically if a module that provides support
is installed?
Project Customizer
Bugs: 33603
Priority: P1
Repeatedly, participants in the Usability Study looked for one central
place to set project options. To address this issue it is recommended that:
- All customizers be centralized into the Project Customizer
(Infrastructure/Java Project): The centralization will help
users not yet familiar or comfortable with the highly context sensitive
nature of NetBeans and it will make using Configurations (or the love
child of Profiles and Configurations) easier as there will be one place
to manage settings (and choose which configuration to use). The context
sensitive entry points will open the Project Customizer to the relevant
location.
This recommendation will also resolve issues of the same customizer being
shown in different ways -with all customizers a part of the larger Projects
Customizer the presentation will be consistent.
The model for the Projects Customizer is the same as the Options
redesign work.
Another point to consider is looking at a subset of project options that
make sense to display as properties and not as members of a customizer.
Infrastructure UI Spec:
A single Project Customizer will contain all customizers that are relevant
for the project. The basic customizer contains General project settings,
Source directory settings, Resource settings, Build Step settings, Running
Profiles and provides space for additional projects-specific settings.
All customize actions in the project explorer will open the main Project
Customizer
to the correct panel -thus context sensitive entry points are preserved
while providing a single location to manage project settings. Build
Configuration management is also combined into the Project Customizer
allowing the user to create new Build Configurations, choose which Build
Configuration to use and provide better management of Build Configuration
settings.
The project customizer is a modal dialog. The dialog consists of a list
of categories along the left side of the panel and a corresponding panel of
options on the right. The list consists of all context sensitive entry
points in the project explorer along with a functional grouping of project
specific settings. Along the bottom of the dialog are Ok and Cancel
buttons.
The Build Configurations category is a special customizer category. It
allows the user to create, delete and make a specific configuration active.
The list of configurations is then used in other configuration dependent
customizer categories, e.g. a specific build step. The combobox listing all
the build configurations is shown above the configuration dependent
customizer to let the user know that all the changes made in the customizer
panel are stored only into this configuration.
Modules or project natures can add categories and sub-categories to the
left hand list. Where necessary they may also replace or hide certain categories
(i.e. Resources may be replaced with a category that makes more sense for
the project nature). The recommended approach is to use tabbed options
panes in the right when there are more sub-categories; however, when the
number of tabs to the right exceeds what can reasonably be displayed in
one row it is recommended to create sub-categories in the left hand list
and move some of the tabs into the newly created sub-categories. A
categories which contain build configurations dependent setting have to
be shown bellow the Build Configuration category.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ +------------------------------------------------------------+ |
| | General | | | |
| | | | | |
| | Sources & Files | | | |
| | | | | |
| | Resources | | | |
| | | | | |
| | Running Profiles | | | |
| | Run Profile 1 | | Options Panel | |
| | Run Profile 2 | | | |
| | Run Profile n | | | |
| | | | The customizer of selected category. | |
| | Build Configs | | | |
| | | | | |
| | Build Steps | | | |
| | Build Step 1 | | | |
| | Build Step 2 | | | |
| | Build Step n | | | |
| | | | | |
| | | | | |
| | | | | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
The components of this dialog are:
- Project Options category list. A list of project options categories.
Individual projects may overwrite, or extend the list for their own
purposes. Instances of Running Profiles and Build Targets are listed also
in the list as a subcategories for convenient access to their
customizers. Default categories: General, Sources & Files,
Resources, Running Profiles, Build Configurations, Build Steps
- Options panel. The space is used for displaying options for the selected
category. The panel may be a tabbed panel to show sub-groupings within
the left hand categories.
- Ok button. Commits changes and closes dialog.
- Cancel button. Discards any changes and closes dialog.
- Help button. Opens help window for the content currently selected.
The general category lets the user setup general properties of the project.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ +------------------------------------------------------------+ |
| |/General////////////| | | |
| | | | Project Name: |____________________________________| | |
| | Sources & Files | | | |
| | | | Project Directory: |_______________________________| | |
| | Resources | | | |
| | | | Project File Name: |_______________________________| | |
| | Running Profiles | | | |
| | Run Profile 1 | | [X] Set this project as the Active project. | |
| | Run Profile 2 | | | |
| | Run Profile n | | | |
| | | | | |
| | Build Configs | | | |
| | | | | |
| | Build Steps | | | |
| | Build Step 1 | | | |
| | Build Step 2 | | | |
| | Build Step n | | | |
| | | | | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Project name text field. Lets the user change the project's name.
- Project Directory text field. A read-only text field that tells the
user where the project is located.
- Project File Name text field. This is non-editable text filed
serving informational purpose. It displays the project file name. The
name pattern is "<project name>.project".
- Set as the active project checkbox. Sets this project to be the
active project (see below).
The Sources and Files category is where the sources and files are added
to the project. Specific project natures can add in custom UI here. Modules
can add functionality to recognize types of sources and files and choose
to do something special with them.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ +------------------------------------------------------------+ |
| | General | | | |
| | | | Sources and Files: | |
| |/Sources & Files////| | +--------------------------------------------+ | |
| | | | | | [ Add... ] | |
| | Resources | | | | | |
| | | | | | [ Remove ] | |
| | Running Profiles | | | | | |
| | Run Profile 1 | | | For rent by modules | | |
| | Run Profile 2 | | | | | |
| | Run Profile n | | | | | |
| | | | | | | |
| | Build Configs | | | | | |
| | | | | | | |
| | Build Steps | | | | | |
| | Build Step 1 | | | | | |
| | Build Step 2 | | | | | |
| | Build Step n | | | | | |
| | | | +--------------------------------------------+ | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Sources and Files list: Space for rent by modules to list what sources
roots are present in the project. Modules may complete replace this panel
with their own UI -what is here comes from free from the infrastructure.
- Add... button. By default, displays a dialog that lets the user
browse for an existing file or folder, and then add that object. If
the project supports a special type of container or complex object that
requires special browsing support (e.g., web apps) then after selecting
a location a status dialog opens while the location is scanned for sources
that are recognized by the project (e.g., java packages, web apps, etc).
- Remove button. This button is only enabled if something is selected
in the source contents list. Clicking the button brings up a message
dialog asking the user to confirm the removal.
The Resources category is where resources are added to the project. Specific
project natures can add in custom UI here.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ +------------------------------------------------------------+ |
| | General | | | |
| | | | Resources: | |
| | Sources & Files | | +--------------------------------------------+ | |
| | | | | | [ Add... ] | |
| |/Resources//////////| | | | | |
| | | | | | [ Edit ] | |
| | Running Profiles | | | | | |
| | Run Profile 1 | | | For rent by modules | [ Remove ] | |
| | Run Profile 2 | | | | | |
| | Run Profile n | | | | [ Mv Up ] | |
| | | | | | | |
| | Build Configs | | | | [ Mv Dwn ] | |
| | | | | | | |
| | Build Steps | | | | | |
| | Build Step 1 | | | | | |
| | Build Step 2 | | | | | |
| | Build Step n | | | | | |
| | | | +--------------------------------------------+ | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Resources list: Space for rent by modules to list what resources are
present in the project. Modules may complete replace this panel with
their own UI -what is here comes from free from the infrastructure.
- Add... button: opens a filechooser or wizard to select a resource to
add to the project
- Edit button: opens the customizer for the selected resource
- Remove button: removes the selected resource in the list.
- Move Up/Down buttons: move the resource up or down in the list. The
order defined here is inherited in Build Steps and Profiles (though it
may be overridden at each of those places).
The Running Profiles category is where profiles are added and managed
in the project. Specific project natures can add in custom UI here.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ +------------------------------------------------------------+ |
| | General | | | |
| | | | Running Profiles: | |
| | Sources & Files | | +--------------------------------------------+ | |
| | | | | Run Profile 1 | [ Add... ] | |
| | Resources | | |--------------------------------------------| | |
| | | | | Run Profile 2 (Active) | [ Remove ] | |
| |/Running Profiles///| | |--------------------------------------------| | |
| | Run Profile 1 | | | Run Profile n | [Set Actv] | |
| | Run Profile 2 | | |--------------------------------------------| | |
| | Run Profile n | | | | | |
| | | | |--------------------------------------------| | |
| | Build Configs | | | | | |
| | | | |--------------------------------------------| | |
| | Build Steps | | | | | |
| | Build Step 1 | | |--------------------------------------------| | |
| | Build Step 2 | | | | | |
| | Build Step n | | |--------------------------------------------| | |
| | | | +--------------------------------------------+ | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Running Profile list. Profiles lists the profiles in the project.
The active profile is bold in the list. It is is used when the project is
run.
- Add... button. opens the Profile wizard. A newly created profile is
inserted into the profile list and also into the category list. The new
profile list gets selected after closing the wizard, so that the user can
preview the profile and make additional changes.
- Remove button: removes the selected Profile in the list.
- Set Active button: sets the selected profile active: Disabled if profile selected
is already active.
Build Configurations category is the place where the user manages
existing project build configurations. The user creates, removes or makes a
build configuration active in this panel.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ +------------------------------------------------------------+ |
| | General | | | |
| | | | Build Configurations: | |
| | Sources & Files | | +--------------------------------------------+ | |
| | | | | Build Configuration 1 (Active) | [ Add... ] | |
| | Resources | | |--------------------------------------------| | |
| | | | | Build Configuration 2 | [ Edit ] | |
| | Running Profiles | | |--------------------------------------------| | |
| | Run Profile 1 | | | Build Configuration n | [ Remove ] | |
| | Run Profile 2 | | |--------------------------------------------| | |
| | Run Profile n | | | | [Set Actv] | |
| | | | |--------------------------------------------| | |
| |/Build Configs//////| | | | | |
| | | | |--------------------------------------------| | |
| | Build Steps | | | | | |
| | Build Step 1 | | |--------------------------------------------| | |
| | Build Step 2 | | | | | |
| | Build Step n | | |--------------------------------------------| | |
| | | | +--------------------------------------------+ | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
The components of this dialog are:
- Build Configurations list. Lists all the build configurations. The
active configuration is bold with "(Active)" word appended.
- Add... button. Opens the Add Build Configuration dialog.
- Edit button. Opens the Edit Build Configuration dialog.
- Remove button. Removes the selected Build Configuration from the
list.
- Set Active button. Sets the selected build configuration active.
Disabled if build configuration selected is already active.
Adding a new build configuration dialog looks as follows:
+------------------------------------------------+
| New Build Configuration |
+------------------------------------------------+
| |
| Build Config Name: |_________________________| |
| |
| Copy Settings From: |_Build Config 2_______|v| |
| |
| [x] The configuration is public and is checked |
| into VCS with the project. |
| |
| [ Ok ] [ Cancel ] |
+------------------------------------------------+
Components of this dialog are:
- Configuration name text field. Lets the user name the configuration.
If the user provides the name of an existing configuration, she is asked
(upon pressing OK) whether or not she wants to overwrite the old
configuration.
- Copy Settings From combo box. Allows the user to base the new
configuration on a existing configuration. One of the values is
<Project Defaults>, which means the project default should be used. Default
value is <Project Defaults>
- This configuration is public checkbox. Lets the user determine
whether this configuration is stored in the VCS (and is therefore visible
to others) or whether it's kept private. Checked by default.
The user can change the name and public status in the Edit Build
Configuration dialog.
+------------------------------------------------+
| Build Configuration |
+------------------------------------------------+
| |
| Build Config Name: |_________________________| |
| |
| [x] The configuration is public and is checked |
| into VCS with the project. |
| |
| [ Ok ] [ Cancel ] |
+------------------------------------------------+
Components of this dialog are:
- Configuration name text field. Lets the user name the configuration.
If the user provides the name of an existing configuration, she is asked
(upon pressing OK) whether or not she wants to overwrite the old
configuration. The text field contains the name of configuration by
default.
- This configuration is public checkbox. Lets the user determine
whether this configuration is stored in the VCS (and is therefore visible
to others) or whether it's kept private. Shows the current status by
default.
The Build Steps category is where build steps are added to the project.
Specific project natures can add in custom UI here.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ +------------------------------------------------------------+ |
| | General | | | |
| | | | Build Steps: | |
| | Sources & Files | | +--------------------------------------------+ | |
| | | | | Build Step 1 (Default) | [ Add... ] | |
| | Resources | | |--------------------------------------------| | |
| | | | | Build Step 2 | [ Remove ] | |
| | Running Profiles | | |--------------------------------------------| | |
| | Run Profile 1 | | | Build Step n | [Set Dflt] | |
| | Run Profile 2 | | |--------------------------------------------| | |
| | Run Profile n | | | | | |
| | | | |--------------------------------------------| | |
| | Build Configs | | | | | |
| | | | |--------------------------------------------| | |
| |/Build Steps////////| | | | | |
| | Build Step 1 | | |--------------------------------------------| | |
| | Build Step 2 | | | | | |
| | Build Step n | | |--------------------------------------------| | |
| | | | +--------------------------------------------+ | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Build steps list. Space for rent by modules to list what build steps
are present in the project. Modules may complete replace this panel with
their own UI -what is here comes from free from the infrastructure. The
default build step is bold with the (Default) word appended.
- Add... button. Adds a new build step by bringing up the New...
wizard. After closing the wizard the new build step in the category list
gets selected. The button is always enabled.
- Remove button. Removes the selected build step. Only enabled
if a build step is selected. The user is also asked if they want
to remove the associated build step directories.
- Set Default button. Makes the selected build step default.
Disabled if the selected build step is the default.
When adding or editing a Build Step to the project the wizard or customizer
that facilitates the action needs to include as a step or part of the customizer
the following UI to specify the output directory. This UI is necessary
only for build steps that produce some kind of output.
+------------------------------------------------+
| |
| Output Directory: |_____________| [ Browse...] |
| |
| [x] Append a directory for each project |
| configuration. |
| |
| Preview: |_preview\of\final\dir______________| |
| |
+------------------------------------------------+
Components of this dialog are:
- Output Directory text field. Provides a directory under which
built output can be collected. By default, this text field is populated
with "<project-home>/output". Each build step stores
its built output under a subdirectory that bears the build step's
name. In other words, a single build step stores its output
under "<output-directory>/<build-step-name>/". Note
that the use of this umbrella output directory for any one build step
is optional. The build step may let the user choose
a completely different directory for the built files, or it may use none
at all.
- Browse... button. Opens a jfilechooser for selecting the output directory.
- Append a sub folder checkbox. If checked, then a set of
subdirectories is created under the umbrella step. Each
subdirectory bears the name of one of the current settings
configurations. If an individual build step is using these default
output directories, then its own folder is moved to be underneath this
configuration sub folder. Thus, a single build step stores its
output under
"<output-directory>/<settings-configuration-name>/<build-step-name>/".
This box is checked by default.
- Preview of out directory. A read only textfield with the output directory.
The content changes based on the state of the check box. When the string
is too long to be completely visible in the text field it should be possitioned
so that the end (right most) of the string is visible.
The customizer of a specific Build Step instance contains the Build
Configuration selector.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ |
| | General | Build Configuration: |_Build Configuration 1 (Active)______|v| |
| | | +------------------------------------------------------------+ |
| | Sources & Files | | | |
| | | | | |
| | Resources | | | |
| | | | | |
| | Running Profiles | | | |
| | Run Profile 1 | | | |
| | Run Profile 2 | | | |
| | Run Profile n | | Build Step Customizer | |
| | | | | |
| | Build Configs | | | |
| | | | | |
| | Build Steps | | | |
| |///Build Step 1/////| | | |
| | Build Step 2 | | | |
| | Build Step n | | | |
| | | | | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Build Configuration combo box. Allows the user select a
configuration she wants to change the settings in. All the changes made
in the Build Step customizer are stored into the configuration.
- Build Step Customizer is a panel provided by the selected build
step.
Java Project UI Spec
The Project Customizer for a Java project replaces some of the basic functionality
provided for by the infrastructure as well as adds additional tabs to the
default categories.
The General category has two tabs: General and Platform. The general
tab is no different than what is provided by the infrastructure. The Platform
tab lets the user select the platform for the project.
The java executor, compiler and other tools' settings provided by the
platform can be changed in individual Build Steps and Running Profiles.
Also the compiler can be changed only in an individual Build Step.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ _________ __________ |
| |/General////////////| / General \/ Platform \ |
| | | |----------/ \------------------------------------+ |
| | Sources & Files | | | |
| | | | Target Platform: |_JDK 1.4_Standard Edition__|v| [ Edit ] | |
| | Resources | | | |
| | | | | |
| | Running Profiles | | | |
| | Run Main Class | | | |
| | Run Applet | | | |
| | Run Tests | | | |
| | | | | |
| | Build Configs | | | |
| | | | | |
| | Build Steps | | | |
| | Compile | | | |
| | Create Jar | | | |
| | Compile Tests | | | |
| | | | | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Target Platform combo box. A list of known platforms in the IDE. The
default for J2SE projects is the platform the IDE is running on.
- Edit button: Opens the platform registry dialog that lets the user
add or edit platforms the IDE knows about. (no change from current spec).
- Space for rent. Each platform may add options to this area.
The Sources and Files category panel is replaced with a tree-table. The
left column lists source roots added to the project. Each source root is
listed by its full path. The right column contains a combobox for
specifying the role of a directory in the project.
The parent nodes are the regular source roots displayed in the physical
view of the project explorer. Children of the source roots are directories
with a special role in the project. The role is defined by the right
column. In case of java project the only role is the package root. Each
source root can have only one level of children, it means the roles can not
be nested.
Regardless of what the source will be used for the user adds sources the
same way. The Add... button opens a filechooser that lets the user select a
location. If selected directory is underneath an existing source root then
it is added as its child. The user can then define the role (Package Root)
of this directory. If a completely new source location is selected a status
dialog opens and a heuristic check determines if the source root or its
children can be used as java roots:
- If a source root is a java root it is added to the tree-table and the
Package Root role is selected by default. A java root is considered the
directory containing sources (i.e. in /src/org/netbeans/modules, src is
the java root).
- If a source root contains java roots some number of directories below
the source root is added to the tree-table and each java root is added
as a child of the source root in the tree-table. The children nodes are
listed as the full path relative to the source root that contains them.
The parent source root does not have selected role but each of the
found java root does.
The dialog below contains two source roots. The first is the project
root that contains two java roots: c:\myProjects\funny\src and
c:\myProjects\funny\lib, the second is a simple java root located at
c:\mySources\stuff\src.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ +------------------------------------------------------------+ |
| | General | | | |
| | | | Sources and Files: | |
| |/Sources & Files////| | +--------------------------------------------+ | |
| | | | | Location | Role | [ Add... ] | |
| | Resources | | |------------------------|-------------------| | |
| | | | | c:\myProject |_Plain Src Root__|v| [ Remove ] | |
| | Running Profiles | | |------------------------|-------------------| | |
| | Run Main Class | | | funny\src |_Package Root____|v| | |
| | Run Applet | | |------------------------|-------------------| | |
| | Run Tests | | | funny\lib |_Package Root____|v| | |
| | | | |------------------------|-------------------| | |
| | Build Configs | | | c:\mySources\stuff\src |_Package Root____|v| | |
| | | | |------------------------|-------------------| | |
| | Build Steps | | | | | | |
| | Compile | | |------------------------|-------------------| | |
| | Create Jar | | | | | | |
| | Compile Tests | | |------------------------|-------------------| | |
| | | | +--------------------------------------------+ | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Sources and Files list: Tree-table displaying source roots on the
left and how they are used on the right. Java roots and source roots that
contain no java roots are single row nodes in the tree-table. Source
roots that contain java roots show the java roots as children of the
source roots.
- Role column. Displays and allows the user to specify the role of
directory in the project. The values for regular source items are
"Package Root" and "Plain Source Root".
- Add... button. Opens a filechooser. The user selects the location to
add. After clicking Ok in the filechooser a heuristic search checks if
the source root added contains java source. A progress dialog may be
shown during the search.
- Remove button. This button is only enabled if something is selected
in the source contents list. Removing source roots follows these rules:
- Removing a row that does not have children removes the row.
- Removing a row that does have children removes both the row and
all of its children
Remove button is disable if the project directory is selected.
The Resources contains tabs for each of the different types of project
wide resources. A single resource can be added to more than one tab though
generally, the tabs are used for resources that are separate. The resources
edited in this category are applied project wide. Order and use are used
as default values for Build Steps and Running Profiles but both may change
the order and or usage or project wide resources. See below for more details.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ ___________ _____________ _____________ |
| | General | / Classpath \/ Lib Javadoc \/ Lib Sources \ |
| | | | \----------------------------------------------+ |
| | Sources & Files | | | |
| | | | +--------------------------------------------+ | |
| |/Resources//////////| | | Libraries | Use In | [ Add... ] | |
| | | | |-----------------------------|--------------| | |
| | Running Profiles | | | c:\jars\libs.jar | Everywhere |V| [ Edit ] | |
| | Run Main Class | | |-----------------------------|--------------| | |
| | Run Applet | | | c:\jars\utils.jar | Everywhere |V| [ Remove ] | |
| | Run Tests | | |-----------------------------|--------------| | |
| | | | | c:\jars\misc.jar | Runtime |V| [ Mv Up ] | |
| | Build Configs | | |-----------------------------|--------------| | |
| | | | | [xmlLibrary] xmlParse.jar | Everywhere |V| [ Mv Dwn ] | |
| | Build Steps | | |-----------------------------|--------------| | |
| | Compile | | | | | | |
| | Create Jar | | |-----------------------------|--------------| | |
| | Compile Tests | | | | | | |
| | | | +--------------------------------------------+ | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Libraries table: Left column lists the path to the classpath resource.
This may be a directory or a jar file. The right column, Use In, determines
where to use the item. Values are: Everywhere, use the Resource for building
and running the project; Run Time, only use the resource when running
the project; Compile Time, only use the resource when building the project.
Default: Everywhere.
- Add... button: opens a wizard for adding a new resource. (Wizard
from current Java Spec will be used with minor changes). Always enabled.
- Edit button: opens the customizer for the selected resource. (Customizers
for types of resources are unchanged from current spec). Enabled when
a resource is selected.
- Remove button: removes the selected resource in the list. Enabled when
a resource is selected. Disabled when a resource added by a Library is
selected.
- Move Up/Down buttons: move the resource up or down in the list. The
order defined here is inherited by Build Steps and Profiles (though it
may be overridden at each of those places). Enabled when a resource is
selected.
The Javadoc tab lists javadoc resources in the project.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ ___________ _____________ _____________ |
| | General | / Classpath \/ Lib Javadoc \/ Lib Sources \ |
| | | |------------/ \-------------------------------+ |
| | Sources & Files | | | |
| | | | Library Javadoc: | |
| |/Resources//////////| | +--------------------------------------------+ [ Add... ] | |
| | | | | | | |
| | Running Profiles | | |--------------------------------------------| [ Edit ] | |
| | Run Main Class | | | | | |
| | Run Applet | | |--------------------------------------------| [ Remove ] | |
| | Run Tests | | | | | |
| | | | |--------------------------------------------| | |
| | Build Configs | | | | | |
| | | | |--------------------------------------------| | |
| | Build Steps | | | | | |
| | Compile | | |--------------------------------------------| | |
| | Create Jar | | | | | |
| | Compile Tests | | |--------------------------------------------| | |
| | | | +--------------------------------------------+ | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Javadoc roots list: A list of Javadocs given by their location.
- Add... button: Opens the add javadoc dialog. Always enabled.
- Edit button: opens the edit javadoc dialog. Enabled when an item is
selected.
- Remove button: removes the selected resource in the list. Enabled when
an item is selected.
The Lib Sources tab lists sources of libraries used in the project.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ ___________ _____________ _____________ |
| | General | / Classpath \/ Lib Javadoc \/ Lib Sources \ |
| | | |---------------------------/ \----------------+ |
| | Sources & Files | | | |
| | | | Library Sources: | |
| |/Resources//////////| | +--------------------------------------------+ [ Add... ] | |
| | | | | | | |
| | Running Profiles | | |--------------------------------------------| [ Edit ] | |
| | Run Main Class | | | | | |
| | Run Applet | | |--------------------------------------------| [ Remove ] | |
| | Run Tests | | | | | |
| | | | |--------------------------------------------| | |
| | Build Configs | | | | | |
| | | | |--------------------------------------------| | |
| | Build Steps | | | | | |
| | Compile | | |--------------------------------------------| | |
| | Create Jar | | | | | |
| | Compile Tests | | |--------------------------------------------| | |
| | | | +--------------------------------------------+ | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Library Sources list: A list of library sources used in the project.
- Add... button: Opens the add sources dialog. Always enabled.
- Edit button: opens the edit sources dialog. Enabled when an item is
selected.
- Remove button: removes the selected source item in the list. Enabled when
an item is selected.
The Running Profiles category is where profiles are added and managed
in the project.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ +------------------------------------------------------------+ |
| | General | | | |
| | | | Running Profiles: | |
| | Sources & Files | | +--------------------------------------------+ | |
| | | | | Run Main Class | [ Add... ] | |
| | Resources | | |--------------------------------------------| | |
| | | | | Run Applet (Active) | [ Remove ] | |
| |/Running Profiles///| | |--------------------------------------------| | |
| | Run Main Class | | | Run Tests | [Set Actv] | |
| | Run Applet | | |--------------------------------------------| | |
| | Run Tests | | | | | |
| | | | |--------------------------------------------| | |
| | Build Configs | | | | | |
| | | | |--------------------------------------------| | |
| | Build Steps | | | | | |
| | Compile | | |--------------------------------------------| | |
| | Create Jar | | | | | |
| | Compile Tests | | |--------------------------------------------| | |
| | | | +--------------------------------------------+ | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Running Profile list. Profiles lists the profiles in the project.
The active profile is bold in the list. It is is used when the project is
run.
- Add... button. opens the Profile wizard. A newly created profile is
inserted into the profile list and also into the category list. The new
profile list gets selected after closing the wizard, so that the user can
preview the profile and make additional changes.
- Remove button: removes the selected Profile in the list.
- Set Active button: sets the selected profile active: Disabled if profile selected
is already active.
Build Configurations
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ +------------------------------------------------------------+ |
| | General | | | |
| | | | Build Configurations: | |
| | Sources & Files | | +--------------------------------------------+ | |
| | | | | Debug (Active) | [ Add... ] | |
| | Resources | | |--------------------------------------------| | |
| | | | | Release | [ Edit ] | |
| | Running Profiles | | |--------------------------------------------| | |
| | Run Main Class | | | | [ Remove ] | |
| | Run Applet | | |--------------------------------------------| | |
| | Run Tests | | | | [Set Actv] | |
| | | | |--------------------------------------------| | |
| |/Build Configs//////| | | | | |
| | | | |--------------------------------------------| | |
| | Build Steps | | | | | |
| | Compile | | |--------------------------------------------| | |
| | Create Jar | | | | | |
| | Compile Tests | | |--------------------------------------------| | |
| | | | +--------------------------------------------+ | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
The components of this dialog are:
- Build Configurations list. Lists all the build configurations. The
active configuration is bold with "(Active)" word appended.
- Add... button. Opens the Add Build Configuration dialog.
- Edit button. Opens the Edit Build Configuration dialog.
- Remove button. Removes the selected Build Configuration from the
list.
- Set Active button. Sets the selected build configuration active.
Disabled if build configuration selected is already active.
The Build Steps category is where build steps are added to the project.
Specific project natures can add in custom UI here.
+-----------------------------------------------------------------------------------------+
| Project Customizer |
+-----------------------------------------------------------------------------------------+
| +--------------------+ +------------------------------------------------------------+ |
| | General | | | |
| | | | Build Steps: | |
| | Sources & Files | | +--------------------------------------------+ | |
| | | | | Compile (Default) | [ Add... ] | |
| | Resources | | |--------------------------------------------| | |
| | | | | Create Jar | [ Remove ] | |
| | Running Profiles | | |--------------------------------------------| | |
| | Run Main Class | | | Compile Tests | [Set Dflt] | |
| | Run Applet | | |--------------------------------------------| | |
| | Run Tests | | | | | |
| | | | |--------------------------------------------| | |
| | Build Configs | | | | | |
| | | | |--------------------------------------------| | |
| |/Build Steps////////| | | | | |
| | Compile | | |--------------------------------------------| | |
| | Create Jar | | | | | |
| | Compile Tests | | |--------------------------------------------| | |
| | | | +--------------------------------------------+ | |
| +--------------------+ +------------------------------------------------------------+ |
| |
| [ Ok ] [ Cancel ] [ Help ] |
+-----------------------------------------------------------------------------------------+
Components of this dialog are:
- Build steps list. Space for rent by modules to list what build steps
are present in the project. Modules may complete replace this panel with
their own UI -what is here comes from free from the infrastructure. The
default build step is bold with the (Default) word appended.
- Add... button. Adds a new build step by bringing up the New...
wizard. After closing the wizard the new build step in the category list
gets selected. The button is always enabled.
- Remove button. Removes the selected build step. Only enabled
if a build step is selected. The user is also asked if they want
to remove the associated build step directories.
- Set Default button. Makes the selected build step default.
Disabled if the selected build step is the default.
The classpath tab for Compiled Classes Build Steps and all Java Profiles
contains the list of project wide classpath resources in a gray color and
resources added specifically to the build step in black. A column along
the right lets the user choose to use the resource in the build target
or not. Classpath items that are project wide cannot be removed from the
build step but those that were added only to the build step can.
___________
/ Classpath \
| \----------------------------------------------+
| |
| +--------------------------------------------+ |
| | Libraries | Use | [ Add... ] |
| |-----------------------------|--------------| |
| | c:\jars\libs.jar | [X] | [ Edit ] |
| |-----------------------------|--------------| |
| | c:\jars\utils.jar | [X] | [ Remove ] |
| |-----------------------------|--------------| |
| | c:\jars\misc.jar | [ ] | [ Mv Up ] |
| |-----------------------------|--------------| |
| | [xmlLibrary] xmlParse.jar | [X] | [ Mv Dwn ] |
| |-----------------------------|--------------| |
| | c:\jars\tools.jar | [X] | |
| |-----------------------------|--------------| |
| | | | |
| +--------------------------------------------+ |
+------------------------------------------------------------+
Components of this dialog are:
- Resource tree: Left column is a list of resources identified by their
location. The right column is a list of check boxes indicating if the
resource should be used or not.
- Add... button. Adds a new resource. Always enabled. (current
java spec has more rules about how this works for build steps and profiles).
- Edit... button. Brings up the build step editor. Enabled
when a resource is selected.
- Remove button. Removes the selected build step. Only enabled
on resources that belong to the build step/profile (listed in black).
- Move Up/Down buttons: Moves the selected resource up or down. Only
enabled on resources that belong to the build step/profile.
Java Root/Source Root interaction
Bugs: 33597, 33599
Priority: P1
The Java root/Source root distinction confused most of the participants
as well and from further review really seems to be an implementation detail
and not a user level concept (or at least not a very clear user level concept).
The problem that this is solving is two fold: 1. a requirement at the time
was that it was unacceptable to mix java and non-java source nodes under
one container (the Source node); 2. the Packages node communicates what
has been effectively added as sources to the classpath of the project.
These two problems can still be solved but with Source and Java root removed
from the user experience. The main idea is to remove the user concept of
Java and Source roots from the UI and let the containers and logical structure
of the project define those differences without special terminology. To
do so some basic interaction needs to be changed:
- Adding Sources from the wizard (Java Project): User
adds only source files. After doing so the IDE works out if the new source
root is a java root or contains a java root. If it is a java root it
will be selected for the classpath by default; if it contains one or
more java roots they will be shown as children of the source root and
also added to the project classpath by default. See the Sources and Files
customizer in the Project Customizer section.
- Split Logical and Physical views in the Explorer: By
splitting the views the idea that the Packages node is a sub-set of project
contents is clearer. See the Explorer section for more details.
Profiles
Bugs: 33606
Priority: P2
Profiles were confusing to all participants. They only added complexity
to what should have been a very task -running the project or a class therein.
Running a project and running a class should be very straight forward;
one set of recommendations is to:
- Remove the Profile setup as a necessary step (Infrastructure): When
a project is run with no main class set a dialog opens that lets the
user select from the runnable classes in the project. Finding runnable
classes may take some time so the search mechanism shows status and can
be canceled. Selecting this class creates a profile with the same name
but does not actually open the profile dialog.
- Automatically create and set a profile active (Infrastructure/Java
Project): When a new runnable class is created a profile for
it is automatically created (the profile should have the same name
as the class) and the wizard contains an option to use that class when
running the project.
The same rules should be applicable to debugging.
Another complexity is the typing of profiles -the difference between running
and debugging adds a layer to the interaction that may not need to be there.
The recommendation is to:
- Remove Profile types -run/debug (Infrastructure): Have
only one type of profile for running or debugging. This profile is active
or not and applies to both project wide run and debug actions. If the
active profile cannot be used for one of the actions (run or debug) a
dialog warns the user with the option to change the active profile or
not.
Infrastructure UI Spec:
Profiles still maintain the same functionality but the project specific
handling of how to automatically create and manage projects to streamline
running a project is more clearly specified in the Java UI Spec.
The only change necessary in the Infrastructure UI Spec is the removal
of typing between run and debug profiles.
Java UI Spec:
Profiles manage how the project is run and are necessary for a project
to be run or debugged. The user manages profiles through the Project Customizer.
The user gets to the Profiles section by either opening the Project customize
from the Project node or through the Run | Edit Profiles menu item in the
main menu. The main menu item opens the Project Customizer for the selected
project or the active project if no project is currently selected. The
profile editor panel dialog lets the user create new and edit existing
profiles.
When there are multiple profiles one must be set as active so the project
can be run or debugged. The active profile is normally used for both running
and debugging; however, if the profile uses something that cannot be used
for one or the other of these actions a dialog will warn the user and let
them select a different profile to complete the action.
Profiles for runnable objects can be created:
- as part of the new wizard when a runnable object is being created
- as a search for runnable objects if no profile has been set up
- as the result of a manual add through the profile editor dialog
Automatically created profiles are named after the package and classes
they use (e.g. org.netbeans.modules.Main).
Profiles are deleted when the class they use is deleted, removed or edited
so that it is no longer runnable. When a class that a profile depends on
is moved (cut/paste) the profile stays in synch with the class move -the
user should not have to change anything provided the class is moved to
a location still within the classpath of the project.
New Profile from New Class Wizard:
When creating a new runnable class the final step allows the user to specify
whether to create a profile or not. The default is to create a profile
for a runnable class with default execution for the type of class being
created (class execution, applet execution, etc) The final panel looks
like this:
+--------------------------------------------------------------+
| |
| [x] Create a new Profile using <class name> class |
| |
| Run as: |_<default for class type>__________________|V| |
| |
| Runtime Arguments: |__________________________________| |
| |
| [x] Set as active Profile |
| |
+--------------------------------------------------------------+
Components of this panel are:
- Checkbox with choice for creating a new profile. Default:
Checked
- Field for selecting how to Run the class. Default: <default for
class type>
- Runtime Arguments text field. Allows the user to pass runtime
arguments to java executor. Enabled only for main class execution.
Default: empty
- Checkbox to set profile active: Default: Checked (Checked and
disabled if there are no other profiles in the project)
Creating a Profile Automatically:
When the user tries to run or debug a project with none existing
profile a dialog opens asking the user to select a class to run. At the
same time a status dialog opens on top of the select class dialog
indicating that the IDE is searching through the project sources for
runnable classes. The user can cancel the search and manually select a
class or, if the search is allowed to finish select from the candidate
classes which they want to run.
+--------------------------------------------------------------+
| Select runnable class |
+--------------------------------------------------------------+
| |
| Run class: |_<package>.<class name>_____|V| [Browse...] |
| |
| Run as: |_<default for class type>__________________|V| |
| |
| Runtime Arguments: |__________________________________| |
| |
| [ Ok ] [ Cancel ] |
+--------------------------------------------------------------+
Components of this dialog are:
- Run class combo-box for selecting from found classes. Editable. Default:
empty.
- If only one runnable class was found it is selected in the combo-box.
- If multiple runnable classes were found the combo-box is opened
to show the choice and indicate that the user needs to select one.
- If no runnable classes were found a warning dialog prompts the
user that no runnable classes were found and they should either create
one or manually select a class if they wish.
- Browse button opens a logical view filechooser for manually selecting
class to run.
- Field for selecting how to Run the class: Default: <default for
class type>
- Field for arguments: Default: empty
- Ok and Cancel buttons
The search dialog that opens atop the Select runnable class dialog look
like:
+---------------------------------------------------------------+
| Searching... |
+---------------------------------------------------------------+
| |
| Searching for runnable classes in the project: |
| |
| |/////////////////////////_48%_____________________________| |
| |
| [ Cancel ] |
+---------------------------------------------------------------+
Components of this dialog are:
- Status bar for search completion
- Cancel button to cancel search and return to Select runnable class
dialog
When the search completes the dialog closes and returns the user to the
Select runnable class dialog.
Manually adding a Profile through the Profile Editor dialog
This work flow represents no change from the ui spec.
Menus (order, context sensitive items)
Bugs: 33600
Priority: P2
Main menu structure contributed to a confusion of participants. The
goal of recommendations is to fix the ordering and structure of main
menu items and incorporate changes that reflect other usability
recommendations.
Expose "Customize Project" menu item in the Project menu.
Customization of project is centralized in one place, containing all the
project pieces. The menu item allowing access to the project customizer
should be put at more visible place in the main menu.
Remove items for creating a new resource and output from main
menu. Items for creating a new resource and new output are removed
from the main menu as a result of moving Resources and Output management
into project customizer.
Expose build steps in the main menu. Build Steps (former Output
Nodes) are removed from the explorer. Therefor it is needed to allow the
user easy access to building a project using also other than the default
build step.
Merge run/build profiles menus. It should works the same way as
selecting the active configurations. Or if it works as now, then we should
change the name and position of actions, e.g. "Run Active Project With
>", "Run Active Project in Debugger With >".
Infrastructure/Java UI Spec:
1 Menubar Menus
The goal of main menu composition is to provide convenient access to all
important actions.
1.1 File Menu
The first menu in main menu is an object menu. It means, it lets the user
create, open and close all types of objects the IDE allows to create.
Project menu:
| File |
----------
New >
Open >
Close "<current>" Project
Customize "<current>" Project
-------------------------------
Save "<current file>"
Save All Files
Close "<current file>"
-------------------------------
Recent Projects >
-------------------------------
Printer Page Setup
Print...
-------------------------------
Exit
The first section of File menu is an object creation and project
manipulation section. It allows to create and open all types of objects
(project, project group, file) and close and customize a current project.
The second section is a file manipulation section. It allows to save
and close a current file or all files. The third section is a recent
project section, and the last is a printer section.
The function of menu items is following:
- New - displays New pullright menu.
- Open - displays Open pullrigh menu.
- Close "<current>" Project - closes the current project.
- Customize "<current>" Project - opens the customizer of current
project.
- Save "<current file>" - saves a current file.
- Save All Files - saves all open and modified files.
- Close "<current file>" - closes a current file.
- Recent Projects - displays a recently closed projects.
- Printer Page Setup - opens a printer page customizer.
- Print - opens the print dialog.
- Exit - exits the application.
1.1.1 File|New Menu
File|New menu allows to create a new project, project group and file
or folder inside a project. The menu composition is following:
Project...
Project Group...
----------------
File/Folder...
The function of menu items is following:
- Project - opens the new project wizard.
- Project Group - opens the new project group wizard.
- File/Folder - opens the new file/folder wizard.
1.1.2 File|Open Menu
Would not change.
1.1.3 File|Recent Projects Menu
Would not change
1.2 Build Menu
Build menu is used for building a project. Building an individual files
is not supported. The menu lets the user to build the active project or
current project. User can cancel the build process, navigate between build
errors and also switch and modify project configurations.
Build menu:
Build Active Project
Clean & Build Active Project
-----------------------------------
Build "<current>" Project >
Clean & Build "<current>" Project >
-----------------------------------
Compile "<current object>"
-----------------------------------
Stop Building
-----------------------------------
Next Error
Previous Error
-----------------------------------
"<current>" Configurations >
Menu item functions are:
- Build Active Project - builds the active project using its active
build configuration and default build step.
- Clean & Build Active Project - cleans and builds the active
project using its active build configuration and default build
step.
- Build "<current>" Project - shows a menu containing build
steps of the current project. Allows the user to invoke the current
project's build step.
- Clean & Build "<current>" Project - shows a menu
containing build steps of the current project. Allows the user to
invoke the current project's build step. Clean is run prior to
building.
- Compile "<current object>" - invokes a compiled classes build
target containing the current object. E.g. 'Compile "Anagram.java"'
looks for compiled classes build target that contains the
"Anagram.java" and builds the build target. "Anagram.java" should be
the first source that gets compiled to show the compiler errors of this
class as first in the output window.
- Stop Building - stops all the builds being processed.
- Next Error - navigates to the next error in the editor and output
window.
- Previous Error - navigates to the previous error in the editor and
output window.
- "<current>" Configurations - shows the list of current
project's build configurations. Allows the user to change the default
config.
1.2.1 Build|Build "<current>" Project Menu
This menu allows the user to select which build step should be used for
building the current project. Shows the all build steps of the current
project.
Build "<current>" Project menu:
<Build Step 1>
..
<Build Step 2>
<Build Step n>
-------------------
Edit Build Steps...
Menu item functions are:
- List of current project's build step - menu items allowing the user
to the current project with selected build step.
- Edit Build Steps - opens the project customizer with the build
steps page selected.
1.2.2 Build|"<current>" Configurations Menu
Configurations menu allows the user to choose the current
configuration, which is used for building the current project. It also
provides access for managing build configurations.
"<current>" Configurations menu:
(o) <config 1>
( ) <config 2>
..
( ) <config n>
----------------------
Edit Configurations...
Menu item functions are:
- List of configurations - radio button menu items allow to set the
current build configuration.
- Edit Configurations - opens the project customizer with the build
configurations page selected.
1.3 Run Menu
The Run menu allows the user to run and debug a project. It contains menu items
for running a project, starting, controlling and terminating a debugger
sessions. The Run menu also provides access to managing the profiles.
Run menu structure:
Run Active Project
---------------------------
Start Debugger Session >
Finish Debugger Sessions...
---------------------------
Pause
Continue
---------------------------
Step Over
Step Into
Step Out
Run to Cursor
---------------------------
Fix
---------------------------
Stack >
---------------------------
New Breakpoint...
New Watch...
---------------------------
Profiles >
The menu item functions are:
- Run Active Project - runs the active project.
- Start Debugger Session - displays menu containing menu items for
starting the debugger sessions.
- Finish Debugger Sessions - opens Finish Debugger Sessions
dialog.
- Pause .. New Watch - debugger menu items.
- Profiles - displays menu for selecting the current profile.
1.3.1 Run|Start Debugger Session Menu
This menu allows the user to start a debugger session. Contains menu items
for a different ways of session starting.
Run|Start Debugger Session menu structure:
Run Active Project in Debugger
Attach...
Menu item functions are:
- Run Active Project in Debugger - runs the active project in the
debugger.
- Attach - opens Attach dialog.
1.3.2 Run|Profiles Menu
The Profiles menu lets the user select the active profile, which is then
used when "Run Active Project" and "Run Active Project in Debugger"
actions are invoked.
(o) <profile 1>
( ) <profile 2>
..
( ) <profile n>
----------------------
Edit Profiles...
Menu item functions are:
- List of profiles - radio button menu items allow to set the
active build configuration.
- Edit Profiles - opens the project customizer with a profiles panel
selected.
Naming (action names add/new)
Bugs: 33596
Priority: P2
Change name "Active" project. The term "Active" project is not
precise in what it really describes. As defined in the spec the active
project serves purpose of fixed entry point for starting execution an debugging.
In the usability study participants thought that the active project was
the one they were working with. So, the current project was active in their
thinking. New name options: Main, Default, StartUp.
Rename "Add" to "Add Existing" contextual menus. Emphasize that "Add" is
used for adding existing objects to a project by renaming it to "Add Existing".
Rename "Outputs" to "Build Steps". This much better
communicates what it is about.
New Wizard
Bugs: 33596, 33598, 33599, 33601, 33608
Priority: P2
Only one template for creating a new java project should be provided.
- Second step: Consider changing the label "Home Directory". It
actually depends whether the usage of project home dir as a source dir
is allowed/mistake or not. If it is not, than the wizard should check
presence of correct packages under the project home and propose these in
the sources panel.
- Second step: New checkbox for setting up a active project should be
used in this panel. It should say something like: "Set this project as
the Active project.", or something similar depending on naming of active
project.
- Third step: This step should specify content of sources node. It
means specification of sources and package roots should be done in one
step.
- Third step: Allows to specify resources.
- Fourth step: Asks for the output dir as it does now.
<Not yet agreed on>
New File/Folder wizard should contain also project selection in the
target panel. New File/Folder menu item should be less context
sensitive. The set of templates the user can choose from would be
determined from the open projects. All the templates would be listed in
the wizard, but only those templates which are accepted by the open
projects are enabled inside the template selector. The target selection in
the next wizard step should allow the user to select any project which
accepts selected template in the previous step. Of course, the current
project is target project by default. Allowing the user to select a
different than the current project in the second step of the wizard should
help solving a situation when user realizes in the second step that
incorrect project is the current project. So instead of closing the wizard
she would just select select a different project.
</Not yet agreed on>
Infrastructure UI Spec
1 New Project Wizard
Going through the new project wizard results in a new project. By
default, the project is populated with enough skeleton code to be a)
immediately buildable/runnable, and b) useful for starting to build
whatever it is that the user wants to build. (Exactly what this skeleton
code consists of is left to the individual modules.)
1.1 Page 1: Select Project Type
The first page of the New wizard shows all current project types,
arranged by category. The page will be largely similar to the
current page, but the structure of the templates will be:
[ ] <Module Category>
- [ ] <Template 1>
- [ ] <Template 2>
(etc)
So, for example, we might have:
[ ] Basic Java Applications
- [ ] Applet Project
- [ ] Swing GUI Project
[ ] Web Applications
- [ ] Basic Web Application
- [ ] Blank Web Application
The panel layout is:
+-----------------------------------------------------------------+
| |
| Select Project Type: |
| +------------------------------------------------------------+ |
| | [ ] <Module Category> | |
| | - [ ] <Template 1> | |
| | - [ ] <Template 2> | |
| | (etc) | |
| | | |
| | | |
| | | |
| | | |
| | | |
| +------------------------------------------------------------+ |
| |
| Description: |
| +------------------------------------------------------------+ |
| | | |
| | | |
| | | |
| +------------------------------------------------------------+ |
+-----------------------------------------------------------------+
Components of this panel are:
- Select Project Type tree. Contains list of project categories and
project templates.
- Description area. Displays a description of selected template or
category.
Wizard panel characteristics:
-
Title of the step is "Select Project Type".
-
Next button is enabled if a template is selected. Finish button is always
disabled.
1.2 Page 2: Project Name and Location
The second page of the New wizard lets the user select the project
name and the project home directory's name and location. The
relevant panel (without the wizard boilerplate) is pictured below:
+-----------------------------------------------------------------------------+
| |
| Project Name: |_myJavaProject____________________| |
| |
| Project Directory: |_/home/dr/Projects/myJavaProject__| [ Browse... ] |
| |
| Project File Name: |_myJavaProject.project____________| |
| |
| |
| [x] Set this project as the Active Project |
| |
+-----------------------------------------------------------------------------+
The components of this panel are:
-
Project Name text field. Used for specifying user name of the
project. The value is empty by default.
-
Project Directory text field. Used for specifying location of project file,
and also serves the purpose of the default project content directory. The
default value is "<user.home>/Projects/<project name>".
-
Browser button. Opens regular file chooser allowing the user to select a
directory. By default selects the home directory, next time selects the
last location.
-
Project File Name text field. This is non-editable text filed serving
informational purpose. It displays the project file name. The name pattern
is "<project name>.project".
-
"Set this project as the Active Project" check box. Allows the user to make
the project active in a time of project creation. It also introduces this
concept to a first time user. It is checked by default.
TODO: The "Active" term should be changed.
Wizard panel characteristics:
-
Title of the step is "Project Name and Location".
-
Next button and finish buttons are enabled if the user enters a project
name.
3.3 Page 3: Project Contents
The third page is used for specifying top level directories representing
contents of the project. The contents include all kinds of sources, resources
and outputs. Directories specified in this panel are shown in project explorer
in some form. The panel displayed is the same as one shown in the project
customizer.
+-----------------------------------------------------------------+
| |
| Sources and Files: |
| +----------------------------------------------+ |
| | | [ Add... ] |
| | | |
| | | [ Remove ] |
| | | |
| | | [ Move Up ] |
| | | |
| | | [ Move Down ] |
| | | |
| | | |
| +----------------------------------------------+ |
| |
+-----------------------------------------------------------------+
The panel components are specified in the project customizer section. By
default, the project file location should be in the Sources and Files
list.
Java UI Spec:
1 New Java Project Wizard
This section is the specification of the New Java Project Wizard.
2 Use Cases
2.1 Create a java project from existing sources
The goal of creating a java project from existing sources is to create and set
up a project, so that it can be build/run without any extra effort. One of the
project creation steps is to specify where are the existing project directories
located. It includes existing packages, libraries, output directories and other
project files/directories. Possible layout of existing source directories:
-
Simple project with one src directory, one directory containing libraries and
one output directory.
../project/src/org/netbeans/...
../project/out/..
../project/lib/..
../project/manifest.mf
../project/build.xml
-
Simple project with one src directory, a directory containing testing sources,
one lib directory and one out directory.
../project/src/org/netbeans/...
../project/testsrc/org/netbeans/...
../project/out/..
../project/lib/..
../project/manifest.mf
../project/build.xml
-
Project with two source directories and central dir for unit tests. Central
build script creates jar files for both source directories. The project has one
lib directory, two output directories, one doc directory and a few "non-java"
source directories, e.g. db - contains db scripts, model - contains project
specification documents, config - contains project configuration files
(manifest.mf, ...).
../project/src/org/netbeans/...
../project/libsrc/org/netbeans/...
../project/test/unit/src/org/netbeans/...
../project/out/..
../project/out_distrib/..
../project/doc/..
../project/lib/..
../project/db/..
../project/model/..
../project/config/..
../project/build.xml
-
Project with two subprojects, each containing more source directories. Unit
test directory is centralized. Central build script creates jar files also for
subprojects. Each subproject contains build scripts for building a subproject.
../project/src/org/netbeans/...
../project/libsrc/org/netbeans/...
../project/out/..
../project/lib/..
../project/subproject1/src/org/netbeans/...
../project/subproject1/libsrc/org/netbeans/...
../project/subproject1/out/...
../project/subproject1/lib/...
../project/subproject1/manifest.mf
../project/subproject1/build.xml
../project/subproject1/libsrc/org/netbeans/...
../project/subproject2/src/org/netbeans/...
../project/subproject1/out/...
../project/subproject1/lib/...
../project/subproject2/manifest.mf
../project/subproject2/build.xml
../project/test/unit/src/org/netbeans/...
../project/test/unit/build.xml
../project/manifest.mf
../project/build.xml
2.2 Create a java project from scratch
Creating a new java project from scratch requires specifying at least one java
package root directory. All of the other files and directories are created
du