DirectoryTreeBrowser.st
changeset 4887 13c22869307a
parent 4885 9755e2925fac
child 4954 97e2552bf5a6
equal deleted inserted replaced
4886:4fcb51786045 4887:13c22869307a
  1123     self rootHolder addDependent:self.
  1123     self rootHolder addDependent:self.
  1124     self viewFilesInDirectoryTree addDependent:self.
  1124     self viewFilesInDirectoryTree addDependent:self.
  1125     self filterBlockHolder addDependent:self.
  1125     self filterBlockHolder addDependent:self.
  1126 !
  1126 !
  1127 
  1127 
       
  1128 openEditorIn:aGC forLine:ln 
       
  1129     |item alreadyAccepted filename field newFileString newFilename|
       
  1130 
       
  1131     alreadyAccepted := false.
       
  1132     browser 
       
  1133         closeEditorAction:[:editor | 
       
  1134             alreadyAccepted ifFalse:[
       
  1135                 editor acceptAction value:(editor contents)
       
  1136             ]
       
  1137         ].
       
  1138 
       
  1139     self allowFileOperations value ifFalse:[^ nil].
       
  1140 
       
  1141     item := self fileList at:ln.
       
  1142     item label isString ifFalse:[
       
  1143         field := nil
       
  1144     ] ifTrue:[
       
  1145         field := EditField new.
       
  1146         field level:0.
       
  1147         field acceptOnReturn:true.
       
  1148         field acceptOnLeave:true.
       
  1149         field 
       
  1150             acceptAction:[:x | 
       
  1151                 alreadyAccepted := true.
       
  1152                 filename := item fileName.
       
  1153                 newFileString := x asString withoutSeparators.
       
  1154                 filename baseName ~= newFileString ifTrue:[
       
  1155                     (self 
       
  1156                         renameFile:filename
       
  1157                         to:newFileString
       
  1158                         update:false) 
       
  1159                             ifTrue:[
       
  1160                                 newFilename := filename directory construct:newFileString.
       
  1161                                 self 
       
  1162                                     withWaitCursorDo:[self updateAndSelect:(OrderedCollection with:newFilename)]
       
  1163                             ]
       
  1164                 ].
       
  1165                 aGC closeEditor.
       
  1166                 (field leaveKey == #CursorUp or:[field leaveKey == #CursorDown]) ifTrue:[
       
  1167                     browser 
       
  1168                         keyPress:field leaveKey
       
  1169                         x:0
       
  1170                         y:0
       
  1171                 ].
       
  1172                 field destroy.
       
  1173                 browser requestFocus    "/ takes it from my windowGroup; prevents it from shifting focus
       
  1174             ].
       
  1175         field font:(aGC font).
       
  1176         field contents:(item label)
       
  1177     ].
       
  1178     ^ field
       
  1179 !
       
  1180 
  1128 postBuildAsSubcanvasWith:aBuilder
  1181 postBuildAsSubcanvasWith:aBuilder
  1129 
  1182 
  1130     super postBuildAsSubcanvasWith:aBuilder.
  1183     super postBuildAsSubcanvasWith:aBuilder.
  1131 !
  1184 !
  1132 
  1185 
  1133 postBuildDirBrowser:aWidget
  1186 postBuildDirBrowser:aWidget 
  1134     browser := aWidget scrolledView.
  1187     browser := aWidget scrolledView.
  1135     browser hasConstantHeight:true.
  1188     browser hasConstantHeight:true.
  1136 
  1189     browser 
  1137     browser openEditorAction:[:ln :aGC| 
  1190         openEditorAction:[:ln :aGC | 
  1138         |field item filename newFileString rename newFilename alreadyAccepted|
  1191             self openEditorIn:aGC forLine:ln
  1139 
  1192         ].
  1140         alreadyAccepted := false.
  1193     browser multipleSelectOk:self multipleSelect
  1141         browser closeEditorAction:[:editor |
       
  1142             alreadyAccepted ifFalse:[
       
  1143                 editor acceptAction value:(editor contents).
       
  1144             ].
       
  1145         ].
       
  1146 
       
  1147         self allowFileOperations value ifTrue:[
       
  1148             item  := self fileList at:ln.
       
  1149 
       
  1150             item label isString ifFalse:[
       
  1151                 field := nil
       
  1152             ] ifTrue:[
       
  1153                 field := EditField new.
       
  1154                 field level:0.
       
  1155                 field acceptOnReturn:true.
       
  1156                 field acceptOnLeave:true.
       
  1157                 field acceptAction:[:x|
       
  1158                     alreadyAccepted := true.
       
  1159                     filename := item fileName.
       
  1160                     newFileString := x asString withoutSeparators.
       
  1161                     filename baseName ~= newFileString ifTrue:[ 
       
  1162                         (self renameFile:filename to:newFileString update:false) ifTrue:[ 
       
  1163                             newFilename := filename directory construct:newFileString.
       
  1164                             self withWaitCursorDo:[
       
  1165                                 self updateAndSelect:(OrderedCollection with:newFilename).
       
  1166                             ]
       
  1167                         ].
       
  1168                     ].
       
  1169                     aGC closeEditor.
       
  1170 
       
  1171                     (field leaveKey == #CursorUp 
       
  1172                     or:[field leaveKey == #CursorDown]) ifTrue:[
       
  1173                         browser keyPress:field leaveKey x:0 y:0
       
  1174                     ].
       
  1175 
       
  1176                     field destroy.    "/ takes it from my windowGroup; prevents it from shifting focus
       
  1177                     browser requestFocus.
       
  1178                 ].
       
  1179                 
       
  1180                 field font:(aGC font).
       
  1181                 field contents:(item label).
       
  1182             ].
       
  1183             field
       
  1184         ] ifFalse:[
       
  1185             nil
       
  1186         ]
       
  1187     ].
       
  1188     browser multipleSelectOk:self multipleSelect.
       
  1189 !
  1194 !
  1190 
  1195 
  1191 postOpen
  1196 postOpen
  1192 
  1197 
  1193 "/    self windowGroup application class == FileBrowserV2 ifTrue:[
  1198 "/    self windowGroup application class == FileBrowserV2 ifTrue:[
  1239 ! !
  1244 ! !
  1240 
  1245 
  1241 !DirectoryTreeBrowser class methodsFor:'documentation'!
  1246 !DirectoryTreeBrowser class methodsFor:'documentation'!
  1242 
  1247 
  1243 version
  1248 version
  1244     ^ '$Header: /cvs/stx/stx/libtool/DirectoryTreeBrowser.st,v 1.65 2003-05-13 16:12:14 cg Exp $'
  1249     ^ '$Header: /cvs/stx/stx/libtool/DirectoryTreeBrowser.st,v 1.66 2003-05-13 16:49:56 cg Exp $'
  1245 ! !
  1250 ! !