11 " |
11 " |
12 |
12 |
13 "{ Package: 'stx:libtool' }" |
13 "{ Package: 'stx:libtool' }" |
14 |
14 |
15 AbstractDirectoryBrowser subclass:#DirectoryContentsBrowser |
15 AbstractDirectoryBrowser subclass:#DirectoryContentsBrowser |
16 instanceVariableNames:'modificationTime directory columnDescriptors iconIndex |
16 instanceVariableNames:'modificationTime directory columnDescriptors iconIndex |
17 fileDescriptionIndex iconExtent tableColumns previewIndex |
17 fileDescriptionIndex iconExtent tableColumns previewIndex |
18 draggedItem viewBrowserMenu updateContentsSelection |
18 draggedItem viewBrowserMenu updateContentsSelection |
19 selectionInFileList browserItemList matchBlock updateTask |
19 selectionInFileList browserItemList matchBlock updateTask |
20 directoryChangeFlag directoryContentsChangeFlag filterChangeFlag |
20 directoryChangeFlag directoryContentsChangeFlag filterChangeFlag |
21 sortBlockChangeFlag isBusy changeSema filteredItems allItems |
21 sortBlockChangeFlag isBusy changeSema filteredItems allItems |
22 diskUsageInfo diskUsageUpdateProcess' |
22 diskUsageInfo diskUsageUpdateProcess' |
23 classVariableNames:'' |
23 classVariableNames:'' |
24 poolDictionaries:'' |
24 poolDictionaries:'' |
25 category:'Interface-Tools-File' |
25 category:'Interface-Tools-File' |
26 ! |
26 ! |
27 |
27 |
28 Object subclass:#DirectoryContentsItem |
28 Object subclass:#DirectoryContentsItem |
29 instanceVariableNames:'fileName fileInfo icon fileType |
29 instanceVariableNames:'fileName fileInfo icon fileType |
30 contentsBrowserChangeModificationTime suffix preview group owner |
30 contentsBrowserChangeModificationTime suffix preview group owner |
31 timeAndDate mimeType iconKey mimeTypeForContents' |
31 timeAndDate mimeType iconKey mimeTypeForContents' |
32 classVariableNames:'LastUIDToUserNameMapping LastGIDToGroupNameMapping' |
32 classVariableNames:'LastUIDToUserNameMapping LastGIDToGroupNameMapping' |
33 poolDictionaries:'' |
33 poolDictionaries:'' |
34 privateIn:DirectoryContentsBrowser |
34 privateIn:DirectoryContentsBrowser |
35 ! |
35 ! |
36 |
36 |
37 !DirectoryContentsBrowser class methodsFor:'documentation'! |
37 !DirectoryContentsBrowser class methodsFor:'documentation'! |
38 |
38 |
39 copyright |
39 copyright |
2036 |
2030 |
2037 |desc mime icon type preview| |
2031 |desc mime icon type preview| |
2038 |
2032 |
2039 browserItemList notEmpty ifTrue:[ |
2033 browserItemList notEmpty ifTrue:[ |
2040 "/ update item if item properties are changed |
2034 "/ update item if item properties are changed |
2041 desc := self findNextVisibleItemFor:[:n| n hasBeenModified ]. |
2035 "/ desc := self findNextVisibleItemFor:[:n| n accessFirstTime ]. |
2042 |
2036 "/ desc notNil ifTrue:[ |
2043 desc notNil ifTrue:[ |
2037 "/ browser invalidateVisibleRow:desc. |
2044 self updateChangesFor:desc. |
2038 "/ self debugMessage:'item properties are changed ', desc baseName. |
2045 browser invalidateVisibleRow:desc. |
2039 "/ ^ true. |
2046 self debugMessage:'item properties are changed', desc baseName. |
2040 "/ ]. |
2047 ^ true. |
|
2048 ]. |
|
2049 "/ update icon for visible items by suffix |
2041 "/ update icon for visible items by suffix |
2050 desc := self findNextVisibleItemFor:[:n| n icon isNil ]. |
2042 desc := self findNextVisibleItemFor:[:n| n icon isNil ]. |
2051 desc notNil ifTrue:[ |
2043 desc notNil ifTrue:[ |
2052 icon := self getIconFor:desc. |
2044 icon := self getIconFor:desc. |
2053 desc icon:icon. |
2045 desc icon:icon. |
2054 (icon notNil and:[iconIndex ~~ 0]) ifTrue:[ |
2046 (icon notNil and:[iconIndex ~~ 0]) ifTrue:[ |
2055 browser invalidateVisibleRow:desc colAt:iconIndex |
2047 browser invalidateVisibleRow:desc colAt:iconIndex |
2056 ]. |
2048 ]. |
2057 self debugMessage:'icon for visible items by suffix', desc baseName. |
2049 self debugMessage:'icon for visible items ', desc baseName. |
2058 ^ true |
2050 ^ true |
2059 ]. |
2051 ]. |
2060 "/ update icon for visible items by contents |
2052 "/ update icon for visible items by contents |
2061 desc := self findNextVisibleItemFor:[:n| |
2053 desc := self findNextVisibleItemFor:[:n| |
2062 (n iconKey == #file |
2054 (n iconKey == #file |
2075 fileDescriptionIndex ~~ 0 ifTrue:[ |
2067 fileDescriptionIndex ~~ 0 ifTrue:[ |
2076 desc := self findNextVisibleItemFor:[:n| n fileType isEmpty ]. |
2068 desc := self findNextVisibleItemFor:[:n| n fileType isEmpty ]. |
2077 desc notNil ifTrue:[ |
2069 desc notNil ifTrue:[ |
2078 type := self getFileInfoFor:desc. |
2070 type := self getFileInfoFor:desc. |
2079 type notNil ifTrue:[browser invalidateVisibleRow:desc colAt:fileDescriptionIndex]. |
2071 type notNil ifTrue:[browser invalidateVisibleRow:desc colAt:fileDescriptionIndex]. |
2080 self debugMessage:'file info for visible items if file info column is shown', desc baseName. |
2072 self debugMessage:'file info for visible items if file info column is shown ', desc baseName. |
2081 ^ true |
2073 ^ true |
2082 ] |
2074 ] |
2083 ]. |
2075 ]. |
2084 "/ update preview for visible items if preview column is shown |
2076 "/ update preview for visible items if preview column is shown |
2085 previewIndex ~~ 0 ifTrue:[ |
2077 previewIndex ~~ 0 ifTrue:[ |
2100 "/ update icon for invisible items by suffix |
2092 "/ update icon for invisible items by suffix |
2101 desc := self findNextItemFor:[:n| n icon isNil ]. |
2093 desc := self findNextItemFor:[:n| n icon isNil ]. |
2102 desc notNil ifTrue:[ |
2094 desc notNil ifTrue:[ |
2103 icon := self getIconFor:desc. |
2095 icon := self getIconFor:desc. |
2104 desc icon:icon. |
2096 desc icon:icon. |
2105 self debugMessage:'icon for invisible items by suffix', desc baseName. |
2097 self debugMessage:'icon for invisible items by suffix ', desc baseName. |
2106 ^ true |
2098 ^ true |
2107 ]. |
2099 ]. |
2108 "/ update icon for invisible items by contents |
2100 "/ update icon for invisible items by contents |
2109 desc := self findNextItemFor:[:n| (n iconKey == #file and:[n mimeTypeForContents ~= #unknown])]. |
2101 desc := self findNextItemFor:[:n| (n iconKey == #file and:[n mimeTypeForContents ~= #unknown])]. |
2110 desc notNil ifTrue:[ |
2102 desc notNil ifTrue:[ |
2111 icon := self getIconForMimeTypeByContents:desc. |
2103 icon := self getIconForMimeTypeByContents:desc. |
2112 desc icon:icon. |
2104 desc icon:icon. |
2113 self debugMessage:'icon for invisible items by contents', desc baseName. |
2105 self debugMessage:'icon for invisible items by contents ', desc baseName. |
2114 ^ true |
2106 ^ true |
2115 ]. |
2107 ]. |
2116 "/ update file info for invisible items if file info column is shown |
2108 "/ update file info for invisible items if file info column is shown |
2117 fileDescriptionIndex ~~ 0 ifTrue:[ |
2109 fileDescriptionIndex ~~ 0 ifTrue:[ |
2118 desc := self findNextItemFor:[:n| n fileType isNil ]. |
2110 desc := self findNextItemFor:[:n| n fileType isNil ]. |
2119 desc notNil ifTrue:[ |
2111 desc notNil ifTrue:[ |
2120 self getFileInfoFor:desc. |
2112 self getFileInfoFor:desc. |
2121 self debugMessage:'update file info for invisible items if file info column is shown', desc baseName. |
2113 self debugMessage:'update file info for invisible items if file info column is shown ', desc baseName. |
2122 ^ true |
2114 ^ true |
2123 ]. |
2115 ]. |
2124 ]. |
2116 ]. |
2125 "/ update preview for invisible items if preview column is shown |
2117 "/ update preview for invisible items if preview column is shown |
2126 previewIndex ~~ 0 ifTrue:[ |
2118 previewIndex ~~ 0 ifTrue:[ |
2127 desc := self findNextItemFor:[:n| n preview isNil ]. |
2119 desc := self findNextItemFor:[:n| n preview isNil ]. |
2128 desc notNil ifTrue:[ |
2120 desc notNil ifTrue:[ |
2129 self getPreviewFor:desc. |
2121 self getPreviewFor:desc. |
2130 self debugMessage:'update preview for invisible items if preview column is shown:', desc baseName. |
2122 self debugMessage:'update preview for invisible items if preview column is shown: ', desc baseName. |
2131 ^ true |
2123 ^ true |
2132 ]. |
2124 ]. |
2133 ]. |
2125 ]. |
2134 "/ update file info for invisible items if file info column is not shown |
2126 "/ update file info for invisible items if file info column is not shown |
2135 desc := self findNextItemFor:[:n| n fileType isNil ]. |
2127 desc := self findNextItemFor:[:n| n fileType isNil ]. |
2136 desc notNil ifTrue:[ |
2128 desc notNil ifTrue:[ |
2137 self getFileInfoFor:desc. |
2129 self getFileInfoFor:desc. |
2138 self debugMessage:'update file info for invisible items if file info column is not shown:', desc baseName. |
2130 self debugMessage:'update file info for invisible items if file info column is not shown: ', desc baseName. |
2139 ^ true |
2131 ^ true |
2140 ]. |
2132 ]. |
2141 ]. |
2133 ]. |
2142 ^ false |
2134 ^ false |
2143 ! ! |
2135 ! ! |
2144 |
2136 |
2145 !DirectoryContentsBrowser methodsFor:'update modification cycle'! |
2137 !DirectoryContentsBrowser methodsFor:'update modification cycle'! |
2146 |
2138 |
2147 modificationCycle |
2139 modificationCycle |
2148 |
2140 |
2149 | oldModificationTime | |
2141 | oldModificationTime desc| |
2150 directory notNil ifTrue:[ |
2142 directory notNil ifTrue:[ |
2151 directory exists not ifTrue:[ |
2143 directory exists not ifTrue:[ |
2152 self directoryChangeFlag:true. |
2144 self directoryChangeFlag:true. |
2153 ^ self |
2145 ^ self |
2154 ]. |
2146 ]. |
2155 oldModificationTime := modificationTime. |
2147 oldModificationTime := modificationTime. |
2156 modificationTime := directory modificationTime. |
2148 modificationTime := directory modificationTime. |
2157 (directory notNil and:[oldModificationTime ~= directory modificationTime]) ifTrue:[ |
2149 (directory notNil and:[oldModificationTime ~= directory modificationTime]) ifTrue:[ |
2158 self wakeUpForDirectoryContentsChanged. |
2150 self wakeUpForDirectoryContentsChanged. |
2159 ]. |
2151 ]. |
|
2152 ]. |
|
2153 desc := self findNextItemFor:[:n| n hasBeenModified ]. |
|
2154 desc notNil ifTrue:[ |
|
2155 desc resetItem. |
|
2156 browser invalidateVisibleRow:desc. |
|
2157 self debugMessage:'item is modified ', desc baseName. |
|
2158 ^ self. |
2160 ]. |
2159 ]. |
2161 ! ! |
2160 ! ! |
2162 |
2161 |
2163 !DirectoryContentsBrowser methodsFor:'update task'! |
2162 !DirectoryContentsBrowser methodsFor:'update task'! |
2164 |
2163 |