Uploaded image for project: 'Pivot'
  1. Pivot
  2. PIVOT-796

TerraFileBrowserSheetSkin: improve user experience with slow drives

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 1.1, 1.2, 1.3, 1.4, 1.5, 2.0
    • 2.5
    • wtk-terra
    • Windows with Network (SMB-) drives attached and/ or special drives like card reader drive letters or virtual cd drives

    Description

      The current TerraFileBrowserSheetSkin blocks quite often on the UI Thread when reading the list of root directory after each directory change, and when refreshing the file list of directories on slow drives.

      On Windows, the reason seems to be that reading file attributes of those drives (especially isDirectory()) is quite slow. This has a number of consequences:

      • Retreiving the list of files on slow drives freezes the UI, and users don't necessarily realize that the system is still working
      • Sorting of the retreived files is quite slow, as the FileComparator keeps refreshing those attributes
      • After each directory change in the FileBrowser, users have to wait until the complete list of drive letters (root directories) has been refreshed. This also happens on local drives.

      In response to these problems, I've enhanced TerraFileBrowserSheetSkin in a number of ways:

      • FileComparator caches file attributes, leading to approx. 70% decrease in file refresh time
      • refreshing the drive letter list uses dedicated tasks, so the user doesn't have to wait for the slow drives to respond
      • while drive letters are refreshed, a small ActivityIndicator next to the ListButton is displayed
      • while the file list is refreshed, an ActivityIndicator is display instead of an empty file list
      • the responsibility of RefreshFileListTask has been extended to include sorting the files, as this used to take roundabout 50% of refreshing time and to freeze the UI
      • changing the sort while RefreshFileListTask is running is now supported

      The patch, including a few extensions of the bxml file, is attached to this ticket

      Attachments

        1. FileBrowserSkin.java
          8 kB
          Thomas Guretzki
        2. terra_file_browser_skin_RefreshIndicator.patch
          17 kB
          Thomas Guretzki
        3. terra_file_browser_skin.bxml
          6 kB
          Thomas Guretzki
        4. TerraFileBrowserSkin.java
          38 kB
          Thomas Guretzki

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            rwhitcomb Roger Lee Whitcomb
            guretzki Thomas Guretzki

            Dates

              Created:
              Updated:

              Time Tracking

                Estimated:
                Original Estimate - 1.5h
                1.5h
                Remaining:
                Remaining Estimate - 1.5h
                1.5h
                Logged:
                Time Spent - Not Specified
                Not Specified

                Slack

                  Issue deployment