FindFileApplication.st
changeset 13920 1929484021d8
parent 13773 b4eb885ea9f0
child 14064 7aa0a1075ee8
--- a/FindFileApplication.st	Tue Feb 11 16:04:30 2014 +0100
+++ b/FindFileApplication.st	Tue Feb 11 18:27:25 2014 +0100
@@ -21,10 +21,12 @@
 		contentsInfoCache contentsInfoCacheAccessLock
 		fileSizeOperatorHolder fileSizeHolder enableFileSizeFilter
 		fileSizeUnitHolder modificationTimeOperatorHolder
-		modificationTimeHolder enableModificationTimeFilter'
+		modificationTimeHolder enableModificationTimeFilter
+		showUnreadableFilesAndDirectoriesHolder'
 	classVariableNames:'ContentsInfoCache ContentsInfoCacheAccessLock LastRememberInCache
 		LastSearchIgnoredCaseInContents LastSearchIgnoredCaseInFilename
-		SearchStringHistory LastSearchIgnoredCaseInExcludedFilename'
+		SearchStringHistory LastSearchIgnoredCaseInExcludedFilename
+		LastShowUnreadableFilesAndDirectories'
 	poolDictionaries:''
 	category:'Interface-Tools-File'
 !
@@ -177,365 +179,373 @@
     <resource: #canvas>
 
     ^ 
-     #(FullSpec
-        name: windowSpec
-        window: 
-       (WindowSpec
-          label: 'File Search'
-          name: 'File Search'
-          min: (Point 377 131)
-          bounds: (Rectangle 0 0 758 419)
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (MenuPanelSpec
-              name: 'ToolBar1'
-              layout: (LayoutFrame 0 0.0 0 0 0 1.0 32 0)
-              level: 0
-              menu: searchMenu
-              textDefault: true
-            )
-           (ProgressIndicatorSpec
-              name: 'ProgressIndicator1'
-              layout: (LayoutFrame 125 0 11 0 231 0 21 0)
-              visibilityChannel: enableStop
-              backgroundColor: (Color 0.0 66.9993133440146 66.9993133440146)
-              showPercentage: false
-              isActivityIndicator: true
-            )
-           (ViewSpec
-              name: 'Box1'
-              layout: (LayoutFrame 0 0.0 32 0 0 1.0 231 0)
-              component: 
-             (SpecCollection
-                collection: (
-                 (LabelSpec
-                    label: 'Directory:'
-                    name: 'DirectoryLabel'
-                    layout: (LayoutFrame 2 0 7 0 154 0 24 0)
-                    activeHelpKey: searchDirectory
-                    translateLabel: true
-                    adjust: right
-                  )
-                 (FilenameInputFieldSpec
-                    name: 'DirectoryEntryField'
-                    layout: (LayoutFrame 156 0 4 0 -315 1 24 0)
-                    activeHelpKey: searchDirectory
-                    model: searchDirectoryHolder
-                    immediateAccept: true
-                    acceptOnPointerLeave: false
-                  )
-                 (LabelSpec
-                    label: 'Search Files Named:'
-                    name: 'FileNameLabel'
-                    layout: (LayoutFrame 2 0 31 0 154 0 48 0)
-                    activeHelpKey: namePattern
-                    translateLabel: true
-                    adjust: right
-                  )
-                 (InputFieldSpec
-                    name: 'FileNameEntryField'
-                    layout: (LayoutFrame 156 0 28 0 -315 1 48 0)
-                    activeHelpKey: namePattern
-                    tabable: true
-                    model: namePatternHolder
-                    immediateAccept: true
-                    acceptOnLeave: false
-                    acceptOnPointerLeave: false
-                  )
-                 (LabelSpec
-                    label: 'But not Named:'
-                    name: 'Label1'
-                    layout: (LayoutFrame 2 0 55 0 154 0 72 0)
-                    activeHelpKey: excludedNamePattern
-                    translateLabel: true
-                    adjust: right
-                  )
-                 (InputFieldSpec
-                    name: 'EntryField1'
-                    layout: (LayoutFrame 156 0 52 0 -315 1 72 0)
-                    activeHelpKey: excludedNamePattern
-                    tabable: true
-                    model: excludedNamePatternHolder
-                    immediateAccept: true
-                    acceptOnLeave: false
-                    acceptOnPointerLeave: false
-                  )
-                 (LabelSpec
-                    label: 'Containing:'
-                    name: 'ContentsLabel'
-                    layout: (LayoutFrame 2 0 79 0 154 0 96 0)
-                    activeHelpKey: contentsPattern
-                    translateLabel: true
-                    adjust: right
-                  )
-                 (ComboBoxSpec
-                    name: 'ComboBox1'
-                    layout: (LayoutFrame 156 0 76 0 -315 1 96 0)
-                    activeHelpKey: contentsPattern
-                    enableChannel: notSearchForSameContents
-                    tabable: true
-                    model: contentsPatternHolder
-                    immediateAccept: true
-                    acceptOnPointerLeave: false
-                    comboList: searchStringHistory
-                  )
-                 (LabelSpec
-                    label: 'Not Containing:'
-                    name: 'NotContentsLabel'
-                    layout: (LayoutFrame 2 0 103 0 154 0 120 0)
-                    activeHelpKey: notContentsPattern
-                    translateLabel: true
-                    adjust: right
-                  )
-                 (InputFieldSpec
-                    name: 'NotContentsEntryField'
-                    layout: (LayoutFrame 156 0 100 0 -315 1 120 0)
-                    activeHelpKey: notContentsPattern
-                    enableChannel: notSearchForSameContents
-                    tabable: true
-                    model: notContentsPatternHolder
-                    immediateAccept: true
-                    acceptOnPointerLeave: false
-                  )
-                 (LabelSpec
-                    label: 'Same Contents As:'
-                    name: 'SameContentsAsLabel'
-                    layout: (LayoutFrame 2 0 127 0 154 0 144 0)
-                    activeHelpKey: sameContents
-                    translateLabel: true
-                    adjust: right
-                  )
-                 (InputFieldSpec
-                    name: 'SameContentsAsEntryField'
-                    layout: (LayoutFrame 156 0 124 0 -339 1 144 0)
-                    activeHelpKey: sameContents
-                    enableChannel: searchForSameContents
-                    tabable: true
-                    model: sameContentsAsHolder
-                    immediateAccept: true
-                    acceptOnPointerLeave: false
-                  )
-                 (CheckToggleSpec
-                    name: 'EnableSameContentsCheckToggle'
-                    layout: (LayoutOrigin -334 1 128 0)
-                    activeHelpKey: sameContents
-                    model: searchForSameContents
-                    isTriggerOnDown: true
-                    showLamp: false
-                    lampColor: (Color 100.0 100.0 0.0)
-                  )
-                 (LabelSpec
-                    label: 'File Size:'
-                    name: 'FileSizeLabel'
-                    layout: (LayoutFrame 2 0 151 0 154 0 168 0)
-                    activeHelpKey: fileSize
-                    translateLabel: true
-                    adjust: right
-                  )
-                 (PopUpListSpec
-                    label: 'PopUp List'
-                    name: 'FileSizeOperatorPopUpList'
-                    layout: (LayoutFrame 157 0 148 0 212 0 168 0)
-                    activeHelpKey: fileSize
-                    tabable: true
-                    model: fileSizeOperatorHolder
-                    enableChannel: enableFileSizeFilterAndNotSearchForSameContents
-                    menu: 
-                   (Array
-                      ' >' ' < '
-                      ' !!= ' ' = '
-                      ' ~ '
-                    )
-                  )
-                 (InputFieldSpec
-                    name: 'FileSizeEntryField'
-                    layout: (LayoutFrame 219 0 148 0 -349 1 168 0)
-                    activeHelpKey: fileSize
-                    enableChannel: enableFileSizeFilterAndNotSearchForSameContents
-                    tabable: true
-                    model: fileSizeHolder
-                    type: fileSize
-                    immediateAccept: false
-                    acceptOnLeave: true
-                    acceptOnLostFocus: true
-                    acceptOnPointerLeave: true
-                  )
-                 (CheckToggleSpec
-                    name: 'EnableSizeCheckToggle'
-                    layout: (LayoutOrigin -334 1 151 0)
-                    activeHelpKey: fileSize
-                    model: enableFileSizeFilter
-                    enableChannel: notSearchForSameContents
-                    isTriggerOnDown: true
-                    showLamp: false
-                    lampColor: (Color 100.0 100.0 0.0)
-                  )
-                 (LabelSpec
-                    label: 'Modified:'
-                    name: 'Label2'
-                    layout: (LayoutFrame 2 0 175 0 154 0 192 0)
-                    activeHelpKey: modificationTime
-                    translateLabel: true
-                    adjust: right
-                  )
-                 (PopUpListSpec
-                    label: 'PopUp List'
-                    name: 'PopUpList1'
-                    layout: (LayoutFrame 157 0 172 0 212 0 192 0)
-                    activeHelpKey: modificationTime
-                    tabable: true
-                    model: modificationTimeOperatorHolder
-                    enableChannel: enableModificationTimeFilter
-                    menu: 
-                   (Array
-                      ' before' ' after '
-                    )
-                  )
-                 (InputFieldSpec
-                    name: 'EntryField2'
-                    layout: (LayoutFrame 219 0 172 0 -349 1 192 0)
-                    activeHelpKey: modificationTime
-                    enableChannel: enableModificationTimeFilter
-                    tabable: true
-                    model: modificationTimeHolder
-                    type: timestamp
-                    immediateAccept: false
-                    acceptOnLeave: true
-                    acceptOnLostFocus: true
-                    acceptOnPointerLeave: true
-                  )
-                 (CheckToggleSpec
-                    name: 'CheckToggle1'
-                    layout: (LayoutOrigin -334 1 175 0)
-                    activeHelpKey: modificationTime
-                    model: enableModificationTimeFilter
-                    isTriggerOnDown: true
-                    showLamp: false
-                    lampColor: (Color 100.0 100.0 0.0)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use ''locate'' Cmd'
-                    name: 'UseLocateCheckBox'
-                    layout: (LayoutFrame -309 1 5 0 -167 1 28 0)
-                    activeHelpKey: useLocate
-                    visibilityChannel: canUseLocate
-                    tabable: true
-                    model: useLocate
-                    translateLabel: true
-                  )
-                 (CheckBoxSpec
-                    label: 'Recursive'
-                    name: 'RecursiveSearchCheckBox'
-                    layout: (LayoutFrame -169 1 5 0 -4 1 28 0)
-                    activeHelpKey: recursiveSearch
-                    tabable: true
-                    model: searchRecursively
-                    translateLabel: true
-                  )
-                 (CheckBoxSpec
-                    label: 'Directories'
-                    name: 'SearchDirectoriesCheckBox'
-                    layout: (LayoutFrame -309 1 29 0 -167 1 52 0)
-                    enableChannel: notSearchForSameContents
-                    tabable: true
-                    model: searchDirectories
-                    translateLabel: true
-                  )
-                 (CheckBoxSpec
-                    label: 'Ignore Case'
-                    name: 'IgnoreCaseInNameCheckBox'
-                    layout: (LayoutFrame -169 1 29 0 -4 1 52 0)
-                    activeHelpKey: ignoreCase
-                    tabable: true
-                    model: ignoreCaseInName
-                    translateLabel: true
-                  )
-                 (CheckBoxSpec
-                    label: 'Ignore Case'
-                    name: 'CheckBox1'
-                    layout: (LayoutFrame -169 1 53 0 -4 1 76 0)
-                    activeHelpKey: ignoreCase
-                    tabable: true
-                    model: ignoreCaseInExcludedName
-                    translateLabel: true
-                  )
-                 (CheckBoxSpec
-                    label: 'Use ''grep'' Cmd'
-                    name: 'UseGrepCheckBox'
-                    layout: (LayoutFrame -309 1 77 0 -167 1 100 0)
-                    visibilityChannel: canUseGrep
-                    enableChannel: notSearchForSameContents
-                    tabable: true
-                    model: useGrep
-                    translateLabel: true
-                  )
-                 (CheckBoxSpec
-                    label: 'Ignore Case'
-                    name: 'IgnoreCaseInContentsCheckBox'
-                    layout: (LayoutFrame -169 1 77 0 -4 1 100 0)
-                    activeHelpKey: ignoreCase
-                    enableChannel: notSearchForSameContents
-                    tabable: true
-                    model: ignoreCaseInContents
-                    translateLabel: true
-                  )
-                 (CheckBoxSpec
-                    label: 'Ignore Case'
-                    name: 'IgnoreCaseInNotContentsCheckBox'
-                    layout: (LayoutFrame -169 1 101 0 -4 1 124 0)
-                    activeHelpKey: ignoreCase
-                    enableChannel: notSearchForSameContents
-                    tabable: true
-                    model: ignoreCaseInNotContents
-                    translateLabel: true
-                  )
-                 (CheckBoxSpec
-                    label: 'Cache Info'
-                    name: 'RememberInCacheCheckBox'
-                    layout: (LayoutFrame -309 1 125 0 -167 1 148 0)
-                    visibilityChannel: canUseGrep
-                    enableChannel: searchForSameContents
-                    tabable: true
-                    model: rememberInCache
-                    translateLabel: true
-                  )
-                 (ActionButtonSpec
-                    label: 'Clear Cache'
-                    name: 'ClearCacheButton'
-                    layout: (LayoutFrame -169 1 125 0 -44 1 147 0)
-                    translateLabel: true
-                    model: clearCache
-                  )
+    #(FullSpec
+       name: windowSpec
+       window: 
+      (WindowSpec
+         label: 'File Search'
+         name: 'File Search'
+         min: (Point 377 131)
+         bounds: (Rectangle 0 0 759 420)
+       )
+       component: 
+      (SpecCollection
+         collection: (
+          (MenuPanelSpec
+             name: 'ToolBar1'
+             layout: (LayoutFrame 0 0.0 0 0 0 1.0 32 0)
+             level: 0
+             menu: searchMenu
+             textDefault: true
+           )
+          (ProgressIndicatorSpec
+             name: 'ProgressIndicator1'
+             layout: (LayoutFrame 125 0 11 0 231 0 21 0)
+             visibilityChannel: enableStop
+             backgroundColor: (Color 0.0 66.9993133440147 66.9993133440147)
+             showPercentage: false
+             isActivityIndicator: true
+           )
+          (ViewSpec
+             name: 'Box1'
+             layout: (LayoutFrame 0 0.0 32 0 0 1.0 231 0)
+             component: 
+            (SpecCollection
+               collection: (
+                (LabelSpec
+                   label: 'Directory:'
+                   name: 'DirectoryLabel'
+                   layout: (LayoutFrame 2 0 7 0 154 0 24 0)
+                   activeHelpKey: searchDirectory
+                   translateLabel: true
+                   adjust: right
+                 )
+                (FilenameInputFieldSpec
+                   name: 'DirectoryEntryField'
+                   layout: (LayoutFrame 156 0 4 0 -315 1 24 0)
+                   activeHelpKey: searchDirectory
+                   model: searchDirectoryHolder
+                   immediateAccept: true
+                   acceptOnPointerLeave: false
+                 )
+                (LabelSpec
+                   label: 'Search Files Named:'
+                   name: 'FileNameLabel'
+                   layout: (LayoutFrame 2 0 31 0 154 0 48 0)
+                   activeHelpKey: namePattern
+                   translateLabel: true
+                   adjust: right
+                 )
+                (InputFieldSpec
+                   name: 'FileNameEntryField'
+                   layout: (LayoutFrame 156 0 28 0 -315 1 48 0)
+                   activeHelpKey: namePattern
+                   tabable: true
+                   model: namePatternHolder
+                   immediateAccept: true
+                   acceptOnLeave: false
+                   acceptOnPointerLeave: false
+                 )
+                (LabelSpec
+                   label: 'But not Named:'
+                   name: 'Label1'
+                   layout: (LayoutFrame 2 0 55 0 154 0 72 0)
+                   activeHelpKey: excludedNamePattern
+                   translateLabel: true
+                   adjust: right
+                 )
+                (InputFieldSpec
+                   name: 'EntryField1'
+                   layout: (LayoutFrame 156 0 52 0 -315 1 72 0)
+                   activeHelpKey: excludedNamePattern
+                   tabable: true
+                   model: excludedNamePatternHolder
+                   immediateAccept: true
+                   acceptOnLeave: false
+                   acceptOnPointerLeave: false
+                 )
+                (LabelSpec
+                   label: 'Containing:'
+                   name: 'ContentsLabel'
+                   layout: (LayoutFrame 2 0 79 0 154 0 96 0)
+                   activeHelpKey: contentsPattern
+                   translateLabel: true
+                   adjust: right
+                 )
+                (ComboBoxSpec
+                   name: 'ComboBox1'
+                   layout: (LayoutFrame 156 0 76 0 -315 1 96 0)
+                   activeHelpKey: contentsPattern
+                   enableChannel: notSearchForSameContents
+                   tabable: true
+                   model: contentsPatternHolder
+                   immediateAccept: true
+                   acceptOnPointerLeave: false
+                   comboList: searchStringHistory
+                 )
+                (LabelSpec
+                   label: 'Not Containing:'
+                   name: 'NotContentsLabel'
+                   layout: (LayoutFrame 2 0 103 0 154 0 120 0)
+                   activeHelpKey: notContentsPattern
+                   translateLabel: true
+                   adjust: right
+                 )
+                (InputFieldSpec
+                   name: 'NotContentsEntryField'
+                   layout: (LayoutFrame 156 0 100 0 -315 1 120 0)
+                   activeHelpKey: notContentsPattern
+                   enableChannel: notSearchForSameContents
+                   tabable: true
+                   model: notContentsPatternHolder
+                   immediateAccept: true
+                   acceptOnPointerLeave: false
+                 )
+                (LabelSpec
+                   label: 'Same Contents As:'
+                   name: 'SameContentsAsLabel'
+                   layout: (LayoutFrame 2 0 127 0 154 0 144 0)
+                   activeHelpKey: sameContents
+                   translateLabel: true
+                   adjust: right
+                 )
+                (InputFieldSpec
+                   name: 'SameContentsAsEntryField'
+                   layout: (LayoutFrame 156 0 124 0 -339 1 144 0)
+                   activeHelpKey: sameContents
+                   enableChannel: searchForSameContents
+                   tabable: true
+                   model: sameContentsAsHolder
+                   immediateAccept: true
+                   acceptOnPointerLeave: false
+                 )
+                (CheckToggleSpec
+                   name: 'EnableSameContentsCheckToggle'
+                   layout: (LayoutOrigin -334 1 128 0)
+                   activeHelpKey: sameContents
+                   model: searchForSameContents
+                   isTriggerOnDown: true
+                   showLamp: false
+                   lampColor: (Color 100.0 100.0 0.0)
+                 )
+                (LabelSpec
+                   label: 'File Size:'
+                   name: 'FileSizeLabel'
+                   layout: (LayoutFrame 2 0 151 0 154 0 168 0)
+                   activeHelpKey: fileSize
+                   translateLabel: true
+                   adjust: right
+                 )
+                (PopUpListSpec
+                   label: 'PopUp List'
+                   name: 'FileSizeOperatorPopUpList'
+                   layout: (LayoutFrame 157 0 148 0 212 0 168 0)
+                   activeHelpKey: fileSize
+                   tabable: true
+                   model: fileSizeOperatorHolder
+                   enableChannel: enableFileSizeFilterAndNotSearchForSameContents
+                   menu: 
+                  (Array
+                     ' >' ' < '
+                     ' !!= ' ' = '
+                     ' ~ '
+                   )
                  )
-               
-              )
-            )
-           (SequenceViewSpec
-              name: 'List1'
-              layout: (LayoutFrame 0 0.0 238 0 0 1.0 0 1)
-              model: selectionHolder
-              menu: menu
-              hasHorizontalScrollBar: true
-              hasVerticalScrollBar: true
-              isMultiSelect: true
-              doubleClickSelector: fileDoubleClick:
-              valueChangeSelector: fileSelected:
-              useIndex: true
-              sequenceList: shownListHolder
-              properties: 
-             (PropertyListDictionary
-                dragArgument: findFileList
-                startDragSelector: doStartDrag:in:
-                displayObjectSelector: getDisplayObjects:
-                dropObjectSelector: getDropObjects:
-              )
-            )
+                (InputFieldSpec
+                   name: 'FileSizeEntryField'
+                   layout: (LayoutFrame 219 0 148 0 -349 1 168 0)
+                   activeHelpKey: fileSize
+                   enableChannel: enableFileSizeFilterAndNotSearchForSameContents
+                   tabable: true
+                   model: fileSizeHolder
+                   type: fileSize
+                   immediateAccept: false
+                   acceptOnLeave: true
+                   acceptOnLostFocus: true
+                   acceptOnPointerLeave: true
+                 )
+                (CheckToggleSpec
+                   name: 'EnableSizeCheckToggle'
+                   layout: (LayoutOrigin -334 1 151 0)
+                   activeHelpKey: fileSize
+                   model: enableFileSizeFilter
+                   enableChannel: notSearchForSameContents
+                   isTriggerOnDown: true
+                   showLamp: false
+                   lampColor: (Color 100.0 100.0 0.0)
+                 )
+                (LabelSpec
+                   label: 'Modified:'
+                   name: 'Label2'
+                   layout: (LayoutFrame 2 0 175 0 154 0 192 0)
+                   activeHelpKey: modificationTime
+                   translateLabel: true
+                   adjust: right
+                 )
+                (PopUpListSpec
+                   label: 'PopUp List'
+                   name: 'PopUpList1'
+                   layout: (LayoutFrame 157 0 172 0 212 0 192 0)
+                   activeHelpKey: modificationTime
+                   tabable: true
+                   model: modificationTimeOperatorHolder
+                   enableChannel: enableModificationTimeFilter
+                   menu: 
+                  (Array
+                     ' before' ' after '
+                   )
+                 )
+                (InputFieldSpec
+                   name: 'EntryField2'
+                   layout: (LayoutFrame 219 0 172 0 -349 1 192 0)
+                   activeHelpKey: modificationTime
+                   enableChannel: enableModificationTimeFilter
+                   tabable: true
+                   model: modificationTimeHolder
+                   type: timestamp
+                   immediateAccept: false
+                   acceptOnLeave: true
+                   acceptOnLostFocus: true
+                   acceptOnPointerLeave: true
+                 )
+                (CheckToggleSpec
+                   name: 'CheckToggle1'
+                   layout: (LayoutOrigin -334 1 175 0)
+                   activeHelpKey: modificationTime
+                   model: enableModificationTimeFilter
+                   isTriggerOnDown: true
+                   showLamp: false
+                   lampColor: (Color 100.0 100.0 0.0)
+                 )
+                (CheckBoxSpec
+                   label: 'Use ''locate'' Cmd'
+                   name: 'UseLocateCheckBox'
+                   layout: (LayoutFrame -309 1 5 0 -167 1 28 0)
+                   activeHelpKey: useLocate
+                   visibilityChannel: canUseLocate
+                   tabable: true
+                   model: useLocate
+                   translateLabel: true
+                 )
+                (CheckBoxSpec
+                   label: 'Recursive'
+                   name: 'RecursiveSearchCheckBox'
+                   layout: (LayoutFrame -169 1 5 0 -4 1 28 0)
+                   activeHelpKey: recursiveSearch
+                   tabable: true
+                   model: searchRecursively
+                   translateLabel: true
+                 )
+                (CheckBoxSpec
+                   label: 'Directories'
+                   name: 'SearchDirectoriesCheckBox'
+                   layout: (LayoutFrame -309 1 29 0 -167 1 52 0)
+                   enableChannel: notSearchForSameContents
+                   tabable: true
+                   model: searchDirectories
+                   translateLabel: true
+                 )
+                (CheckBoxSpec
+                   label: 'Ignore Case'
+                   name: 'IgnoreCaseInNameCheckBox'
+                   layout: (LayoutFrame -169 1 29 0 -4 1 52 0)
+                   activeHelpKey: ignoreCase
+                   tabable: true
+                   model: ignoreCaseInName
+                   translateLabel: true
+                 )
+                (CheckBoxSpec
+                   label: 'Ignore Case'
+                   name: 'CheckBox1'
+                   layout: (LayoutFrame -169 1 53 0 -4 1 76 0)
+                   activeHelpKey: ignoreCase
+                   tabable: true
+                   model: ignoreCaseInExcludedName
+                   translateLabel: true
+                 )
+                (CheckBoxSpec
+                   label: 'Use ''grep'' Cmd'
+                   name: 'UseGrepCheckBox'
+                   layout: (LayoutFrame -309 1 77 0 -167 1 100 0)
+                   visibilityChannel: canUseGrep
+                   enableChannel: notSearchForSameContents
+                   tabable: true
+                   model: useGrep
+                   translateLabel: true
+                 )
+                (CheckBoxSpec
+                   label: 'Ignore Case'
+                   name: 'IgnoreCaseInContentsCheckBox'
+                   layout: (LayoutFrame -169 1 77 0 -4 1 100 0)
+                   activeHelpKey: ignoreCase
+                   enableChannel: notSearchForSameContents
+                   tabable: true
+                   model: ignoreCaseInContents
+                   translateLabel: true
+                 )
+                (CheckBoxSpec
+                   label: 'Ignore Case'
+                   name: 'IgnoreCaseInNotContentsCheckBox'
+                   layout: (LayoutFrame -169 1 101 0 -4 1 124 0)
+                   activeHelpKey: ignoreCase
+                   enableChannel: notSearchForSameContents
+                   tabable: true
+                   model: ignoreCaseInNotContents
+                   translateLabel: true
+                 )
+                (CheckBoxSpec
+                   label: 'Cache Info'
+                   name: 'RememberInCacheCheckBox'
+                   layout: (LayoutFrame -309 1 125 0 -167 1 148 0)
+                   visibilityChannel: canUseGrep
+                   enableChannel: searchForSameContents
+                   tabable: true
+                   model: rememberInCache
+                   translateLabel: true
+                 )
+                (ActionButtonSpec
+                   label: 'Clear Cache'
+                   name: 'ClearCacheButton'
+                   layout: (LayoutFrame -169 1 125 0 -44 1 147 0)
+                   translateLabel: true
+                   model: clearCache
+                 )
+                (CheckBoxSpec
+                   label: 'Show Unreadable Files and Folders'
+                   name: 'CheckBox2'
+                   layout: (LayoutFrame -309 1 149 0 0 1 172 0)
+                   tabable: true
+                   model: showUnreadableFilesAndDirectoriesHolder
+                   translateLabel: true
+                 )
+                )
+              
+             )
            )
-         
-        )
-      )
+          (SequenceViewSpec
+             name: 'List1'
+             layout: (LayoutFrame 0 0.0 238 0 0 1.0 0 1)
+             model: selectionHolder
+             menu: menu
+             hasHorizontalScrollBar: true
+             hasVerticalScrollBar: true
+             isMultiSelect: true
+             doubleClickSelector: fileDoubleClick:
+             valueChangeSelector: fileSelected:
+             useIndex: true
+             sequenceList: shownListHolder
+             properties: 
+            (PropertyListDictionary
+               displayObjectSelector: getDisplayObjects:
+               startDragSelector: doStartDrag:in:
+               dropObjectSelector: getDropObjects:
+               dragArgument: findFileList
+             )
+           )
+          )
+        
+       )
+     )
 ! !
 
 !FindFileApplication class methodsFor:'menu specs'!
@@ -811,6 +821,7 @@
         ^ self.
     ].
 
+    LastShowUnreadableFilesAndDirectories := showUnreadableFilesAndDirectoriesHolder value.
     LastSearchIgnoredCaseInFilename := ignoreCaseInName := self ignoreCaseInName value.
     LastSearchIgnoredCaseInExcludedFilename := ignoreCaseInExcludedName := self ignoreCaseInExcludedName value.
     LastSearchIgnoredCaseInContents := ignoreCaseInContents := self ignoreCaseInContents value.
@@ -1172,6 +1183,13 @@
     ^ searchOnlyInCache.
 !
 
+showUnreadableFilesAndDirectoriesHolder
+    showUnreadableFilesAndDirectoriesHolder isNil ifTrue:[
+        showUnreadableFilesAndDirectoriesHolder := (LastShowUnreadableFilesAndDirectories ? false) asValue.
+    ].
+    ^ showUnreadableFilesAndDirectoriesHolder.
+!
+
 showingMatchedFiles
     ^ self shownList == self matchedFilesList
 !
@@ -1478,26 +1496,34 @@
                         "/ string search ...
                         contentsMatches := true.
                         (f exists and:[f isReadable]) ifFalse:[
-                            resultList add: (('*** ' , f pathName , ' skipped - unreadable or bad symbolic link ***') colorizeAllWith:(Color red darkened)).
+                            showUnreadableFilesAndDirectoriesHolder value ifTrue:[
+                                resultList add: (('*** ' , f pathName , ' skipped - unreadable or bad symbolic link ***') colorizeAllWith:(Color red darkened)).
+                            ].
                             contentsMatches := false.
                         ] ifTrue:[
                             hugeFile := f fileSize > (4024*1024).
                             bigFile := f fileSize > (512*1024).
 
                             hugeFile ifTrue:[
-                                resultList add: (('*** ' , f pathName , ' skipped - too large ***') colorizeAllWith:(Color red darkened)).
+                                showUnreadableFilesAndDirectoriesHolder value ifTrue:[
+                                    resultList add: (('*** ' , f pathName , ' skipped - too large ***') colorizeAllWith:(Color red darkened)).
+                                ].
                                 contentsMatches := false.
                             ] ifFalse:[
                                 Stream lineTooLongErrorSignal handle:[:ex |
                                     |cont|
 
 "/                                    "/ this typically happens, when a binary file is read linewise ...
-                                    resultList add: (('*** ' , f pathName , ' skipped - binary/long line ***') colorizeAllWith:(Color red darkened)).
+                                    showUnreadableFilesAndDirectoriesHolder value ifTrue:[
+                                        resultList add: (('*** ' , f pathName , ' skipped - binary/long line ***') colorizeAllWith:(Color red darkened)).
+                                    ].
                                     contentsMatches := false.
                                 ] do:[
                                     bigFile ifTrue:[
                                         Stream lineTooLongErrorSignal handle:[:ex |
-                                            resultList add: (('*** ' , f pathName , ' skipped - too large ***') colorizeAllWith:(Color red darkened)).
+                                            showUnreadableFilesAndDirectoriesHolder value ifTrue:[
+                                                resultList add: (('*** ' , f pathName , ' skipped - too large ***') colorizeAllWith:(Color red darkened)).
+                                            ].
                                             contentsMatches := false.
                                         ] do:[
                                             contentsMatches := false.
@@ -1848,10 +1874,10 @@
 !FindFileApplication class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FindFileApplication.st,v 1.110 2014-01-22 16:24:53 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FindFileApplication.st,v 1.111 2014-02-11 17:27:25 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/FindFileApplication.st,v 1.110 2014-01-22 16:24:53 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FindFileApplication.st,v 1.111 2014-02-11 17:27:25 cg Exp $'
 ! !