Progress Indication

Author: Dusan Pavlica, Jindrich Dinga
Version: Final draft
Last update: 10/12/05

Content

  1. Introduction
  2. Requirements
  3. Tasks dividing
  • UI design
  • Suggestions how the "output" windows should behave
  • Open issues
  • Appendix: Proposed usecases for progress indication
  • 1. Introduction

    Responsiveness is "the software's ability to keep up with users and not make them wait." Responsiveness is often cited as the strongest factor in users' satisfaction with software applications and has been linked to users' productivity, as well.

    The basic advice regarding response times:

    • 0.1 second is about the limit for having the user feel that the system is reacting instantaneously, meaning that no special feedback is necessary except to display the result.
    • 1.0 second is about the limit for the user's flow of thought to stay uninterrupted, even though the user will notice the delay. Normally, no special feedback is necessary during delays of more than 0.1 but less than 1.0 second, but the user does lose the feeling of operating directly on the data.
    • 10 seconds is about the limit for keeping the user's attention focused on the dialog. For longer delays, users will want to perform other tasks while waiting for the computer to finish, so they should be given feedback indicating when the computer expects to be done. Feedback during the delay is especially important if the response time is likely to be highly variable, since users will then not know what to expect.

    2. Requirements

    Progress Indication should consist of

    • full indication in a dialog for foreground tasks, full indication on status bar for background tasks
    • simplified indication (e.g. hour-glass cursor) for short-time tasks
    • blocking and non-blocking progress indication
    • possibility to display more concurrently running tasks
    • possibility to nest subtasks into a task
    • starting tasks in both foreground and background
    • possibility to cancel a task

    3. Tasks dividing (examples)

    Short-time tasks

    • node expansion
    • modifications in Java editor like override methods, fix imports
    • fast open
    • file opening in editor
    • help opening, help search
    • wizard processing including
      • project creating
      • test creating
      • new Java file
    • debugging (watches, expressions, connecting)
    • many database actions - DB querying, command execution, logging, browsing the content

    For proposed solution for short-time tasks, please click here.

    Long-time background tasks

    • project building
    • project execution
    • search (basic find, task list)
    • Javadoc search
    • VCS activities - all commands executed here
    • J2EE deployment and all remote operations accessing J2EE servers

    For proposed solution for long-time foreground/background tasks, click here.

    Long-time foreground-only tasks

    • startup - initialization of various parts of the platform, loading and starting modules
    • shutdown - shutdown of modules, shutdown of various parts of the platform
    • project open & close - project initialization and class path scanning + class index deserialization
    • project import
    • J2SE/J2EE platform management - changing of class path which invokes class path scanning + class index deserialization
    • refactoring, more generally find usages
    • installing new module without IDE restart

    For proposed solution for long-time foreground-only tasks, click here.

    4. UI design

    Short-time tasks

    For short-time tasks ( < 1.0 seconds), the pointer feedback should appear. The wait pointer indicates that an operation is in progress and the user cannot do other tasks. For all supported platforms the default wait pointer should be used. Next table shows some examples of wait cursors:

    Macintosh
    Microsoft Windows
    CDE

    Long-time background tasks

    The tasks, which can run on foreground/background should automatically start on background. Duration of these tasks is > 1.0 seconds.

    Progress indication use cases

    1. The length of the process is estimated
    • by time (when time is known)
    • by percentage
  • The length of the process is estimated, however because of some "reasons" (e.g. internet connection) the process is slowed down and the progress is changed to indefinite. Similar case is, when the system cannot find out how much time the process will take (indefinite progress bar), then the length of the process is estimated.
  • The length of the process is indefinite.
  • 1. Length of the process is estimated
    by time (if it is known)
     
    by percentage
     
    2. Length of the process is estimated and then is changed to indefinite or is indefinite and then is estimated
     
    3. Length of the process is indefinite
     

    Note: If it is possible to find out, how much time the process will take, the time should be displayed. Otherwise percents will be displayed.

    Proposed solution of progress indication in status line

    The task, which can run on the background, is minimized to the status line and is represented as a progress bar there. The status line can be divided into two parts. The left part of status line is destinated for different kind of information (e.g. Build successful, etc.) and takes about 80% of status line width (by default). The rest of the status line is dedicated for progress bar, information about position and mode (these information is visible only when Source Editor is visible or focused - not implemented) and some icons. Progress bar, as well as icons have default position. It means when icons are not displayed in the staus line, progress bar stays at the same position (a separator is always visible).

    All running processes display their names on the left from progress bar by default. Name of the last task, which was invoked, is displayed in the status line. If this task finishes earlier then the previous task, the previous task will be displayed.

    Note: In the future, if there are any system tasks then the last user-invoked task is displayed in the status line by default. Tasks started automatically, without explicit user action (aka system tasks), are only listed in the popup if a user-invoked task is currently running. When the task displayed on the status line finishes, a running user-invoked task is promoted to the status line or if not present then a running system task is promoted to the status line.

    Note: Special case is, when a user wants to watch certain process. After invoking this action from the pop-up window, details about that process are displayed in the status line and that process becomes superior to other processes. It means, if a user invokes another task, this task will not be displayed in the status line until:

    1. the last selected task finishes or
    2. user selects this task from the pop-up window

    The area of progress bar is click able. On a single click the pop-up window is displayed. The area of progress indication also has a mouse over effect and the appropriate tool tip is displayed. The tool tip displays: "<number of currently running processes> running tasks. Click for details.".

    MDI mode

    figure 1 - proposed solution of progress indication in MDI mode

    SDI mode

    In SDI mode, the status line is situated under the toolbar (figure 2). The position and mode area are omitted there. These areas are situated in the Source editor status line (figure 3).

    figure 2 - proposed solution of progress indication in SDI mode

    figure 3 - place of Position and Mode area in SDI mode

    Contextual menu

    There is possible to invoke a contextual menu (with actions named below) on the name of the process as well as on its progress indication in the status line.

    figure 4 - contextual menu invoked on the progress indication area

    Show Processes - opens the pop-up window
    Show Output - opens the appropriate "output" window (valid only when the "output" window exists)
    Cancel Process - cancels and removes the process from the pop-up list (valid only when it is possible to cancel task)

    Proposed solution of pop-up window

    If a user clicks on "progress bar area" in the status line, the pop-up window is invoked.

    In the pop-up window, there are displayed only running tasks. If a task finishes successfully or fails, then it is deleted from the list. For additional behavior of appropriate output windows see this section.

    The pop-up window can be divided into two parts. First part (name of the process) takes about 70% of the pop-up window's width and the second part (progress bar and cancel button) takes approximately 30% of the width (progress bar in the pop-up window has same sizes as progress bar in the status line). The dynamical text can use whole width of the pop-up window.

    This window is capable to display up to 3 task (figure 5). If the user invokes more tasks, then a scroll bar will appear. The pop-up window is expandable: if there is one running task, the pop up window's height is same as the height of the running task. For two tasks the pop-up window's height is same as the width of two displayed tasks, etc.

    The pop-up window contains:

    • Names of the running processes - shows the name of the running process, Dynamical text shows detailed information about the task
    • Progress bar - indicates the progress of running tasks
    • Cancel button - this button should appear only when a task is possible to cancel, otherwise there is no icon. By pressing this button, a modal dialog should appear and states "Are you sure you want to cancel <name of the task>?". NO - the task continues, YES - the task is cancelled and deleted from the list. Tool tip for this button should state:

    figure 5 - proposed solution of pop-up window


    In the pop-up window, the user can choose a process, which wants to see in the status line, by clicking on its progress indication. Then the name of the process becomes Bold as an indication that user watches this task in status line. The progress bar has "Select link" mouse over gesture and its tool tip should state:

    Note: The last activated task, which is in the status line, is written in Bold style in the pop-up window unless the user invokes another task or wants to watch some certain task.

    If the user wants to see more details about progress of the task, than it is displayed in one row (dynamical text), they can double click on the name of the process and the appropriate window will appear.

    Contextual menu

    Contextual menu is invokable on every row in the pop-up window and displays three actions, which can be performed in the certain time (see figure 6).

    figure 6 - contextual menu invoked on a row in the pop-up window


    Show Output - opens the appropriate "output" window (valid only when the "output" window exists)
    Watch Process - puts process to the status line
    Cancel Process - cancels and removes the process from the pop-up list

    Keyboard navigation

    The progress pop-up window can be invoked from the Window menu (if there are no running tasks "Processes" (P mnemonic) menu item is disabled) and a user can move between rows using arrows. "Processes" menu item is placed below "HTTP monitor" menu item.

    The contextual menu is invokable by using Shift+F10 shortcut, ESC cancels the contextual menu (pop-up window). In the contextual menu user can move between items using arrows. For better comfort, user can use these keystrokes (when focused in the pop-up window):

    1. Show Output - Enter
    2. Watch process - Space
    3. Cancel process - Delete

    Colors

    Colors of the text
    name of the process black
    dynamical text
    (selected)
    115,115,115
    204,204,204

    for other platforms click here.

     

    figure 7 - pop-up window sizes and colors

     

    Proposed names for background tasks

    Type of the task
    Proposed name for the task

    project building

    Building JavaApp1
    search - basic find Searching for getMessage
    search - task list Searching for the tasks
    Javadoc search Searching for getMess in Javadoc
    VCS activities Command Check out is running
    Command Update is running
    etc.

    If the name of the task does not fit into the area of the pop-up window, then the name will be truncated and ellipses are added (see picture below), tooltip for truncated names is available.

    figure 8 - truncating of the long task names

    Note: Progress indication, which is contained in To Do and VCS output windows, will be omitted.

     

    Long-time foreground-only tasks

    This kind of tasks block the user from working with IDE. A modal dialog, which is displayed, should give a feedback, when the task will be done. The modal dialog should display a progress bar, detailed information about the task as well as estimated time (percentage) in the bottom area of the dialog. For proposed solution of modal dialogs see figure 9a, 9b .

    figure 9a - proposed solution of progress indication in modal dialog (Find Usages)

    figure 9b - proposed solution of progress indication in modal dialog (Parsing)

    Refactoring

    This task can be split up into two parts. In the first part, a modal dialog states, that system is collecting usages and in the second part, the usages are displayed in output window. After performing "Do refactoring" action a progress indication appears. This indication can be omitted there and be moved to the status line. "Do Refactoring" toggle button should be moved to the right and after its pressing this button is disabled. To cancel this task is not possible.

    figure 10 - new appearance of the Refactoring window

    5. Suggestions how the "output" windows should behave

    As it is mentioned in paragraph about pop-up window, successfully finished tasks or failed tasks are deleted from the list. Addition to that, there should be also some indication (output windows) with information about status of these tasks.

    1. Failed tasks:
    If a task fails appropriate "output" window, which carries the information, will be opened automatically (valid only when the tasks has an "output" window).

    2. Successfully finished tasks:
    If a task finishes successfully appropriate "output" window, which carries the information, is opened only when the information contained in that window is important for the users.

    In the status line, there should be an information about status of task for processes theirs "output" window is not displayed or they do not have this window.

    Note: If a last user-invoked task is displayed in the progress indication area in the status line, there should not be any information about starting of this task in the information area of status line.

    Note 2: If a process finished with some result and this result is displayed in the status line, the result should be deleted from the status line if same process is invoked.

    6. Open issues

    Stop action in "output" windows

    In the progress indication, there is possible to cancel tasks. The user should have possibility to cancel these tasks in their "output" windows as well, so that is why we should consider about adding "Stop" button into "output" windows (valid only when the tasks allow to be cancelled).

    7. Appendix: Proposed usecases for progress indication

    Content of usecases

    1. startup
    2. shutdown
    3. paste
    4. d'n'd
    5. help
    6. update center
    7. refresh
    8. scanning
    9. new project creation
    10. project importing
    11. find in projects
    12. project - wide ant tasks
    13. find usages
    14. refactoring actions
    15. refactoring - Undo(Redo)
    16. synchronize
    17. To-Do window
    18. start/stop server
    19. deployment progress monitor window
    20. new database connection dialog
    21. VCS login
    22. VCS module selector
    23. VCS commands
    24. diff
    25. attach

     

    startup - currently progress only in splash screen (various initialization steps one by one)


    Changes:

    • no changes

     

    shutdown - currently serialization of javacore infrastructure DB is covered by a progress
    - ideally shutdown should be very fast
    - or the whole shutdown time should be covered by the progress (shutdown of modules one by one, ...)
     


    Changes:

    • use shared progress component
    • IDE stays opened until shutdown's finish

     

    paste - IZ 27744 long running pastes in explorer shall display progress
    - not clear how to find out what will be short running and what will be long running
    - probably only long running shall have progress
    - maybe this is case for initially foreground task that can be put into background (at least that is how it works in WinCommander)
       


    Changes:

    • background task by default

     

    d'n'd - IZ 55160 drag and drop blocks UI
    - similar to the paste IZ 27744 case
       


    Changes:

    • background task by default

     

    Help/Help Contents - first invocation is covered by a progress because indexing is taking some time


    Changes:

    • use shared progress component
    • redesign dialog ?

     

    Tools/Update Center
    - dialog box appears when connecting to server, this dialog should perhaps show a progress bar
    - the page Downloading Modules of the wizard shows progress
    - installation of a module without IDE restart - currently has no progress indication, only a text on status bar is shown
    - installation of modules at IDE restart - progress bar is shown in Updater's window




    Changes:

    • does connecting to server start modem? (Yes - add button "Run in background")
    • use progress indication component
    • installation of a module without restart - background task, display the message in status bar that modules have been installed
    • installation of modules at IDE restart - currently have some splash screen, this splash screen should be omitted and the installation should be part of starting splash screen or use same splash screen

     

    File/Refresh All Files - currently only status bar message appears, should behave like a regular background task with progress indication
       


    Changes:

    • background task

     

    Scanning Project Classpath - both initial scanning and rescanning for changes are tasks with indicated progress (currently foreground blocking tasks, maybe moved to background in promo-F)


    Changes:

    • should be part of creation wizard (now there are two modal dialogs - e.g. create new project then scanning)
    • use progress indication component

     

    new project creation - the activity after Finish is pressed in the wizard is currently covered with hour-glass cursor, could be changed to progress indication in a blocking dialog box because for some types of projects this activity takes very long time


    Changes:

    • the progress indication component will be added on the last page of the wizard
    • part of progress should be parsing or rescanning

     

    project importing - File/Import Project/Eclipse Project action's wizard invokes the importing at its end and a progress indication dialog is displayed with a simple progress bar, this should be changed to use the shared progress indication component
     


    Changes:

    • the progress indication component will be added on the last page of the wizard
    • part of progress should be parsing or rescanning
    • use progress indication component

     

    Find | Find in Projects - currently searching has no progress bar, only textual indication of searching in progress and the results found so far in the Search Results output window, should behave like a regular background task with progress indication
       


    Changes:

    • background task

     

    project-wide ant tasks (Build Project, Clean and Build Project, Clean Project, Generate Javadoc for Project, Test Project) - currently only output window with ant output is displayed, should perhaps be changed to a regular background task with progress indication and output available in the Output window
       


    Changes:

    • already mentioned in the spec (run as background tasks)

     

    Find Usages
    - Collecting Usages part of the wizard is covered with a progress bar, another progress bar is at the bottom of the Find Usages window before it is populated with the list of usages - these two progress indications should be perhaps joined into one
    - switching between Show Logical View and Show Physical View has a progress bar

     


    Changes:

    • already mentioned in the spec

     

    refactoring actions (Refactor/Rename, Change Method Parameters, Encapsulate Fields, Move Class)
    - initial phase Initializing Data in the wizard is covered with a progress bar
    - Collecting Data phase in the wizard is covered with a progress bar
    - Do Refactoring phase, currently in the Refactoring output window, is covered with a progress bar

     


    Changes:

    • already mentioned in the spec

     

    Refactor/Undo(Redo) - currently foreground blocking task with a progress bar, should stay like this I think, only start using the shared component of course
     


    Changes:

    • represented as modal dialog
    • use progress indication component

     

    Tools/Synchronize - can take a long time when run on a big selection of java nodes in Explorer
    - currently no progress indication, should have a blocking progress indication dialog because it can take up to many seconds!
       

    Changes:

    • use progress indication component

     

    To Do window
    - searching for tasks is currently indicated by a progress bar directly in the window - should be perhaps changed to behave like a regular background task
     


    Changes:

    • already mentioned in the spec (background task)

     

    Start/Stop Server in Runtime/Servers/ - currently a proprietary progress bar used in the wizard, should be replaced with the shared progress component
    - when the action Start or Stop is run, the dialog currently shows progress bar and also shows server's textual output in an Output tab
     


    Changes:

    • use progress indication component

     

    Deployment Progress Monitor window - currently implemented with a proprietary progress bar, should be replaced with the shared progress component
    - when Run Project, Debug Project or Deploy Project action is run, the dialog shows progress of (re)deploying the project and at the same time Output tab is shown with the server's textual output
     


    Changes:

    • use progress indication component

     

    New Database Connection dialog - has a progress bar at its bottom indication progress of connecting to the server, should use the shared progress indication component
     


    Changes:

    • use progress indication component

     

    VCS's Login dialog in the Add Versioned Directory wizard - has a proprietary progress bar, should be replaced with the shared progress component
     


    Changes:

    • use progress indication component

     

    VCS's Module Selector dialog - currently shows "Please wait: modules are loading" without any progress indication, should perhaps use an indefinite progress bar
     


    Changes:

    • use progress indication component

     

    various VCS commands running on background, like Refresh, Update, Checkout, etc - currently only a simple text is shown on the status bar and more information about running VCS commands can be found via Runtime/VCS Commands
     


    Changes:

    • already mentioned in the spec (background tasks)

     

    Diff takes long time when trying to diff two long files - has a progress bar in new opened document window, this is replaced by diff view when it's created
    - the same is true for the CVS's Diff Graphical
     


    Changes:

    • use progress indication component
    • background task

     

    Debugger's Attach action invoked via Run/Attach Debugger - should display indefinite progress bar indication when trying to connect to an application - there is a timeout during which connecting is being tried and before it timeouts or connection succeeds the progress indication is necessary
     


    Changes:

    • background task
    • use progress indication component

     

     

    Project Features

    About this Project

    ui was started in November 2009, is owned by Jiří Kovalský, and has 43 members.
    By use of this website, you agree to the NetBeans Policies and Terms of Use (revision 20160708.bf2ac18). © 2014, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo
     
     
    Close
    loading
    Please Confirm
    Close