diff -r 54dd9ce332bf -r da9a9deccee0 FileBrowser.st --- a/FileBrowser.st Fri Apr 16 19:46:37 1999 +0200 +++ b/FileBrowser.st Fri Apr 16 20:18:38 1999 +0200 @@ -662,419 +662,437 @@ - ^ - - #(#Menu - - #( - #(#MenuItem - #label: 'About' - #translateLabel: true - #labelImage: #(#ResourceRetriever #ToolApplicationModel #menuIcon) - #submenu: - #(#Menu - - #( - #(#MenuItem - #label: 'About Smalltalk/X...' - #translateLabel: true - #value: #showAboutSTX - ) - #(#MenuItem - #label: '-' - ) - #(#MenuItem - #label: 'About FileBrowser...' - #translateLabel: true - #value: #openAboutThisApplication - ) - ) nil - nil + ^ + #(#Menu + #( + #(#MenuItem + #label: 'About' + #translateLabel: true + #labelImage: #(#ResourceRetriever #ToolApplicationModel #menuIcon) + #submenu: + #(#Menu + #( + #(#MenuItem + #label: 'About Smalltalk/X...' + #translateLabel: true + #value: #showAboutSTX + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'About FileBrowser...' + #translateLabel: true + #value: #openAboutThisApplication ) + ) + nil + nil ) - #(#MenuItem - #label: 'File' - #translateLabel: true - #submenu: + ) + #(#MenuItem + #label: 'File' + #translateLabel: true + #submenu: + #(#Menu + #( + #(#MenuItem + #label: 'Open' + #translateLabel: true + #value: #menuOpen + #enabled: #hasSelection + ) + #(#MenuItem + #label: 'Open selected Filename' + #translateLabel: true + #isVisible: #hasFilenameSelectionInCodeView + #value: #openSelectedFilename + #enabled: #hasFilenameSelectionInCodeView + ) + #(#MenuItem + #label: 'FileIn' + #translateLabel: true + #value: #fileFileIn + #enabled: #hasSelection + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'New' + #translateLabel: true + #submenu: #(#Menu - - #( - #(#MenuItem - #label: 'Open' - #translateLabel: true - #value: #menuOpen - #enabled: #hasSelection - ) - #(#MenuItem - #label: 'Open selected Filename' - #translateLabel: true - #value: #openSelectedFilename - #isVisible: #hasFilenameSelectionInCodeView - #enabled: #hasFilenameSelectionInCodeView - ) - #(#MenuItem - #label: 'FileIn' - #translateLabel: true - #value: #fileFileIn - #enabled: #hasSelection - ) - #(#MenuItem - #label: '-' - ) - #(#MenuItem - #label: 'New' - #translateLabel: true - #submenu: - #(#Menu - - #( - #(#MenuItem - #label: 'Directory...' - #translateLabel: true - #value: #newDirectory - ) - #(#MenuItem - #label: 'File...' - #translateLabel: true - #value: #newFile - ) - #(#MenuItem - #label: 'Hard Link...' - #translateLabel: true - #isVisible: #systemIsUnix - #value: #newHardLink - ) - #(#MenuItem - #label: 'Symbolic Link...' - #translateLabel: true - #isVisible: #systemIsUnix - #value: #newSoftLink - ) - ) nil - nil - ) - ) - #(#MenuItem - #label: 'Remove' - #translateLabel: true - #value: #fileRemove - #enabled: #hasSelection + #( + #(#MenuItem + #label: 'Directory...' + #translateLabel: true + #value: #newDirectory ) - #(#MenuItem - #label: 'Rename' - #translateLabel: true - #value: #fileRename - #enabled: #hasSelection - ) - #(#MenuItem - #label: 'Properties...' - #translateLabel: true - #value: #fileGetLongInfo - #enabled: #hasSelection - ) - #(#MenuItem - #label: '-' - #isVisible: #javaSupportLoaded - ) - #(#MenuItem - #label: 'Add to Java ClassPath' - #translateLabel: true - #isVisible: #javaSupportLoaded - #value: #fileAddToJavaClassPath - #enabled: #canAddToClassPath - ) - #(#MenuItem - #label: 'Remove from Java ClassPath' - #translateLabel: true - #isVisible: #javaSupportLoaded - #value: #fileRemoveFromJavaClassPath - #enabled: #canRemoveToClassPath - ) - #(#MenuItem - #label: '-' - ) - #(#MenuItem - #label: 'Spawn' - #translateLabel: true - #value: #fileSpawn - ) - #(#MenuItem - #label: '-' - ) - #(#MenuItem - #label: 'Exit' - #translateLabel: true - #value: #menuExit + #(#MenuItem + #label: 'File...' + #translateLabel: true + #value: #newFile ) - ) nil - nil - ) - ) - #(#MenuItem - #label: 'Directory' - #translateLabel: true - #submenuChannel: #directoryMenuSpec - ) - #(#MenuItem - #label: 'CVS' - #translateLabel: true - #submenu: - #(#Menu - - #( - #(#MenuItem - #label: 'Remove file && CVS Container' - #translateLabel: true - #value: #fileRemoveAndRemoveContainerFromCVS - #enabled: #canRemoveCVSContainer + #(#MenuItem + #label: 'Hard Link...' + #translateLabel: true + #isVisible: #systemIsUnix + #value: #newHardLink ) - ) nil - nil - ) - ) - #(#MenuItem - #label: 'Edit' - #translateLabel: true - #submenu: - #(#Menu - - #( - #(#MenuItem - #label: 'Get Contents' - #translateLabel: true - #value: #fileGet - #enabled: #hasSelection - ) - #(#MenuItem - #label: 'Insert Contents' - #translateLabel: true - #value: #fileInsert - #enabled: #hasSelection - ) - #(#MenuItem - #label: '-' - ) - #(#MenuItem - #label: 'Copy File List' - #translateLabel: true - #value: #copyFileList - ) - #(#MenuItem - #label: 'Copy Selected Filename' - #translateLabel: true - #value: #copySelectedFileName - ) - #(#MenuItem - #label: 'Copy Command History' - #translateLabel: true - #value: #copyCommandHistory + #(#MenuItem + #label: 'Symbolic Link...' + #translateLabel: true + #isVisible: #systemIsUnix + #value: #newSoftLink ) - ) nil + ) + nil nil + ) ) + #(#MenuItem + #label: 'Remove' + #translateLabel: true + #value: #fileRemove + #enabled: #hasSelection + ) + #(#MenuItem + #label: 'Rename' + #translateLabel: true + #value: #fileRename + #enabled: #hasSelection + ) + #(#MenuItem + #label: 'Properties...' + #translateLabel: true + #value: #fileGetLongInfo + #enabled: #hasSelection + ) + #(#MenuItem + #label: '-' + #isVisible: #javaSupportLoaded + ) + #(#MenuItem + #label: 'Add to Java ClassPath' + #translateLabel: true + #isVisible: #javaSupportLoaded + #value: #fileAddToJavaClassPath + #enabled: #canAddToClassPath + ) + #(#MenuItem + #label: 'Remove from Java ClassPath' + #translateLabel: true + #isVisible: #javaSupportLoaded + #value: #fileRemoveFromJavaClassPath + #enabled: #canRemoveToClassPath + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Spawn' + #translateLabel: true + #value: #fileSpawn + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Exit' + #translateLabel: true + #value: #menuExit + ) + ) + nil + nil ) - #(#MenuItem - #label: 'View' - #translateLabel: true - #submenu: - #(#Menu - - #( - #(#MenuItem - #label: 'Details' - #translateLabel: true - #indication: #showingDetails - ) - #(#MenuItem - #label: 'Show Hidden Files' - #translateLabel: true - #indication: #showingHiddenFiles - ) - #(#MenuItem - #label: 'Big Image Preview' - #translateLabel: true - #indication: #showingBigImagePreview - ) - #(#MenuItem - #label: '-' - ) - #(#MenuItem - #label: 'Sort By Name' - #translateLabel: true - #choice: #sortByWhat - #choiceValue: #name - ) - #(#MenuItem - #label: 'Sort By Type' - #translateLabel: true - #choice: #sortByWhat - #choiceValue: #type - ) - #(#MenuItem - #label: 'Sort By Time' - #translateLabel: true - #choice: #sortByWhat - #choiceValue: #time - ) - #(#MenuItem - #label: 'Ignore Case' - #translateLabel: true - #enabled: #sortByName - #indication: #sortCaseless - ) - #(#MenuItem - #label: '-' - ) - #(#MenuItem - #label: 'Encoding...' - #translateLabel: true - #value: #fileEncoding - ) - #(#MenuItem - #label: '-' - ) - #(#MenuItem - #label: 'Update' - #translateLabel: true - #value: #updateCurrentDirectory - ) - ) nil - nil + ) + #(#MenuItem + #label: 'Directory' + #translateLabel: true + #submenuChannel: #directoryMenuSpec + ) + #(#MenuItem + #label: 'Edit' + #translateLabel: true + #submenu: + #(#Menu + #( + #(#MenuItem + #label: 'Get Contents' + #translateLabel: true + #value: #fileGet + #enabled: #hasSelection ) + #(#MenuItem + #label: 'Insert Contents' + #translateLabel: true + #value: #fileInsert + #enabled: #hasSelection + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Copy File List' + #translateLabel: true + #value: #copyFileList + ) + #(#MenuItem + #label: 'Copy Selected Filename' + #translateLabel: true + #value: #copySelectedFileName + ) + #(#MenuItem + #label: 'Copy Command History' + #translateLabel: true + #value: #copyCommandHistory + ) + ) + nil + nil ) - #(#MenuItem - #label: 'Tools' - #translateLabel: true - #submenu: - #(#Menu - - #( - #(#MenuItem - #label: 'Unix Command' - #translateLabel: true - #isVisible: #systemIsUnix - #value: #menuOSCommand - ) - #(#MenuItem - #label: 'DOS Command' - #translateLabel: true - #isVisible: #systemIsDOS - #value: #menuOSCommand - ) - #(#MenuItem - #label: 'VMS Command' - #translateLabel: true - #isVisible: #systemIsVMS - #value: #menuOSCommand - ) - #(#MenuItem - #label: '-' - ) - #(#MenuItem - #label: 'Changes Browser' - #translateLabel: true - #value: #openChangesBrowser - #enabled: #hasSelection - ) - #(#MenuItem - #label: 'Editor' - #translateLabel: true - #value: #openEditor - #enabled: #hasSelection - ) - #(#MenuItem - #label: 'HTML Reader' - #translateLabel: true - #value: #openHTMLReader - #enabled: #hasSelection - ) - #(#MenuItem - #label: 'Applet Viewer' - #translateLabel: true - #isVisible: #hasJava - #value: #openAppletViewer - #enabled: #hasJavaAndSelection - ) - #(#MenuItem - #label: 'Image Inspector' - #translateLabel: true - #value: #openImageInspector - #enabled: #hasSelection - ) - #(#MenuItem - #label: 'Image Preview' - #translateLabel: true - #value: #openImagePreview - #enabled: #hasSelection - ) - #(#MenuItem - #label: 'Image Editor' - #translateLabel: true - #value: #openImageEditor - #enabled: #hasSelection - ) - #(#MenuItem - #label: 'ZipFile Tool' - #translateLabel: true - #value: #openZipTool - #enabled: #hasZipFileSelected - ) - #(#MenuItem - #label: 'File Differences...' - #translateLabel: true - #value: #openDiffView - ) - #(#MenuItem - #label: 'Find Duplicate Files' - #translateLabel: true - #value: #fileFindDuplicates - ) - #(#MenuItem - #label: 'Find All Duplicate Files (recursive)' - #translateLabel: true - #value: #fileFindAllDuplicates - ) - #(#MenuItem - #label: 'Find a File...' - #translateLabel: true - #value: #fileFindFile - ) - #(#MenuItem - #label: 'Hex Dump' - #translateLabel: true - #value: #fileHexDump - ) - #(#MenuItem - #label: 'Shell Terminal' - #translateLabel: true - #isVisible: #systemIsUnix - #value: #openTerminal - #enabled: #systemIsUnix - ) - ) nil - nil + ) + #(#MenuItem + #label: 'View' + #translateLabel: true + #submenu: + #(#Menu + #( + #(#MenuItem + #label: 'Details' + #translateLabel: true + #indication: #showingDetails + ) + #(#MenuItem + #label: 'Show Hidden Files' + #translateLabel: true + #indication: #showingHiddenFiles + ) + #(#MenuItem + #label: 'Big Image Preview' + #translateLabel: true + #indication: #showingBigImagePreview + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Sort By Name' + #translateLabel: true + #choice: #sortByWhat + #choiceValue: #name + ) + #(#MenuItem + #label: 'Sort By Type' + #translateLabel: true + #choice: #sortByWhat + #choiceValue: #type + ) + #(#MenuItem + #label: 'Sort By Time' + #translateLabel: true + #choice: #sortByWhat + #choiceValue: #time + ) + #(#MenuItem + #label: 'Ignore Case' + #translateLabel: true + #enabled: #sortByName + #indication: #sortCaseless + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Encoding...' + #translateLabel: true + #value: #fileEncoding + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Update' + #translateLabel: true + #value: #updateCurrentDirectory + ) + ) + nil + nil + ) + ) + #(#MenuItem + #label: 'Tools' + #translateLabel: true + #submenu: + #(#Menu + #( + #(#MenuItem + #label: 'Unix Command' + #translateLabel: true + #isVisible: #systemIsUnix + #value: #menuOSCommand + ) + #(#MenuItem + #label: 'DOS Command' + #translateLabel: true + #isVisible: #systemIsDOS + #value: #menuOSCommand + ) + #(#MenuItem + #label: 'VMS Command' + #translateLabel: true + #isVisible: #systemIsVMS + #value: #menuOSCommand + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Changes Browser' + #translateLabel: true + #value: #openChangesBrowser + #enabled: #hasSelection + ) + #(#MenuItem + #label: 'Editor' + #translateLabel: true + #value: #openEditor + #enabled: #hasSelection + ) + #(#MenuItem + #label: 'HTML Reader' + #translateLabel: true + #value: #openHTMLReader + #enabled: #hasSelection ) + #(#MenuItem + #label: 'Applet Viewer' + #translateLabel: true + #isVisible: #hasJava + #value: #openAppletViewer + #enabled: #hasJavaAndSelection + ) + #(#MenuItem + #label: 'Image Inspector' + #translateLabel: true + #value: #openImageInspector + #enabled: #hasSelection + ) + #(#MenuItem + #label: 'Image Preview' + #translateLabel: true + #value: #openImagePreview + #enabled: #hasSelection + ) + #(#MenuItem + #label: 'Image Editor' + #translateLabel: true + #value: #openImageEditor + #enabled: #hasSelection + ) + #(#MenuItem + #label: 'ZipFile Tool' + #translateLabel: true + #value: #openZipTool + #enabled: #hasZipFileSelected + ) + #(#MenuItem + #label: 'File Differences...' + #translateLabel: true + #value: #openDiffView + ) + #(#MenuItem + #label: 'Find Duplicate Files' + #translateLabel: true + #value: #fileFindDuplicates + ) + #(#MenuItem + #label: 'Find All Duplicate Files (recursive)' + #translateLabel: true + #value: #fileFindAllDuplicates + ) + #(#MenuItem + #label: 'Find a File...' + #translateLabel: true + #value: #fileFindFile + ) + #(#MenuItem + #label: 'Hex Dump' + #translateLabel: true + #value: #fileHexDump + ) + #(#MenuItem + #label: 'Shell Terminal' + #translateLabel: true + #isVisible: #systemIsUnix + #value: #openTerminal + #enabled: #systemIsUnix + ) + ) + nil + nil ) - #(#MenuItem - #label: 'Help' - #translateLabel: true - #startGroup: #right - #submenu: - #(#Menu - - #( - #(#MenuItem - #label: 'FileBrowser Documentation' - #translateLabel: true - #value: #openHTMLDocument: - #argument: 'tools/fbrowser/TOP.html' - ) - ) nil - nil + ) + #(#MenuItem + #label: 'CVS' + #translateLabel: true + #submenu: + #(#Menu + #( + #(#MenuItem + #label: 'Update selected files/directories' + #translateLabel: true + #value: #cvsUpdateSelection + #enabled: #hasSelection + ) + #(#MenuItem + #label: 'Update directory local' + #translateLabel: true + #value: #cvsUpdateDirectoryLocal + ) + #(#MenuItem + #label: 'Update directory recursive' + #translateLabel: true + #value: #cvsUpdateDirectoryRecursive + ) + #(#MenuItem + #label: '-' ) + #(#MenuItem + #label: 'Remove file && CVS Container' + #translateLabel: true + #value: #cvsRemoveFileAndContainer + #enabled: #canRemoveCVSContainer + ) + ) + nil + nil ) - ) nil - nil + ) + #(#MenuItem + #label: 'Help' + #translateLabel: true + #startGroup: #right + #submenu: + #(#Menu + #( + #(#MenuItem + #label: 'FileBrowser Documentation' + #translateLabel: true + #value: #openHTMLDocument: + #argument: 'tools/fbrowser/TOP.html' + ) + ) + nil + nil + ) + ) + ) + nil + nil ) ! ! @@ -2370,31 +2388,6 @@ "Modified: / 16.12.1998 / 17:30:31 / cg" ! -fileRemoveAndRemoveContainerFromCVS - "remove the selected file(s) and their CVS containers. - Query if user really wants to really remove them." - - |sel q| - - sel := fileListView selection. - sel size > 0 ifTrue:[ - sel := sel collect:[:rawIndex | fileList at:rawIndex]. - sel size > 1 ifTrue:[ - q := resources string:'remove %1 selected files and CVS containers ?' with:(sel size) - ] ifFalse:[ - q := resources string:'remove ''%1'' and CVS container ?' with:(sel first asText allBold) - ]. - (self sensor shiftDown - or:[self ask:q yesButton:'remove']) ifTrue:[ - self withCursor:(Cursor wait) do:[ - self doRemoveAndRemoveFromCVS:sel - ] - ] - ] - - "Modified: / 16.12.1998 / 17:30:31 / cg" -! - fileRename "rename the selected file(s)" @@ -3500,6 +3493,141 @@ "Modified: / 14.8.1998 / 16:44:00 / cg" ! ! +!FileBrowser methodsFor:'menu actions - cvs'! + +cvsRemoveFileAndContainer + "remove the selected file(s) and their CVS containers. + Query if user really wants to really remove them." + + |sel q| + + sel := fileListView selection. + sel size > 0 ifTrue:[ + sel := sel collect:[:rawIndex | fileList at:rawIndex]. + sel size > 1 ifTrue:[ + q := resources string:'remove %1 selected files and CVS containers ?' with:(sel size) + ] ifFalse:[ + q := resources string:'remove ''%1'' and CVS container ?' with:(sel first asText allBold) + ]. + (self sensor shiftDown + or:[self ask:q yesButton:'remove']) ifTrue:[ + self withCursor:(Cursor wait) do:[ + self doRemoveAndRemoveFromCVS:sel + ] + ] + ] + + "Modified: / 16.12.1998 / 17:30:31 / cg" +! + +cvsUpdateDirectoryLocal + "update this directory" + + self + doExecuteCommand:'cvs upd -l' replace:false + + "Modified: / 16.12.1998 / 17:30:31 / cg" +! + +cvsUpdateDirectoryRecursive + "update this directory" + + self + doExecuteCommand:'cvs upd -d' replace:false + + "Modified: / 16.12.1998 / 17:30:31 / cg" +! + +cvsUpdateSelection + "update selected files" + + |sel| + + sel := fileListView selection. + sel size > 0 ifTrue:[ + sel := sel collect:[:rawIndex | fileList at:rawIndex]. + sel do:[:fn | + self + doExecuteCommand:('cvs upd ' , fn) replace:false + ] + ]. +! + +doRemoveAndRemoveFromCVS:filesToRemove + "remove the selected file(s) and their CVS containers - no questions asked" + + |msg idx needUpdate toRemove updateRunning yesToAll| + + updateRunning := listUpdateProcess notNil. + self stopUpdateProcess. + toRemove := OrderedCollection new. + + "/ + "/ did the directory change in the meanwhile ? + "/ + needUpdate := (currentDirectory modificationTime > timeOfLastCheck). + + yesToAll := false. + lockUpdate := true. + [ + filesToRemove do:[:fileName | + |f| + + f := currentDirectory construct:fileName. + OperatingSystem accessDeniedErrorSignal handle:[:ex| + "was not able to remove it" + msg := (resources string:'cannot remove ''%1'' !!' with:fileName). + self showAlert:msg with:(OperatingSystem lastErrorString) + ] do:[ + |answer contents| + + (f isSymbolicLink not) ifTrue:[ + self + doExecuteCommand:('cvs remove -f ' , f baseName) + replace:false. + +" + self show:nil +" + idx := fileList indexOf:fileName. + idx ~~ 0 ifTrue:[ + toRemove add:idx. + ] + ] + ]. + ]. + ] valueNowOrOnUnwindDo:[ + lockUpdate := false. + fileListView setSelection:nil. + + "/ + "/ remove reverse - otherwise indices are wrong + "/ + toRemove sort. + toRemove reverseDo:[:idx | + fileList removeIndex:idx. + fileListView removeIndex:idx. + ]. + + updateRunning ifTrue:[ + self updateCurrentDirectory + ] ifFalse:[ + " + install a new check after some time + " + needUpdate ifFalse:[timeOfLastCheck := AbsoluteTime now]. + Processor removeTimedBlock:checkBlock. + Processor addTimedBlock:checkBlock afterSeconds:checkDelta. + ] + ]. + + self + doExecuteCommand:('cvs commit -m ''removed via FileBrowser''') + replace:false. + + "Modified: / 21.10.1998 / 17:02:11 / cg" +! ! + !FileBrowser methodsFor:'misc user interaction'! closeRequest @@ -5250,83 +5378,6 @@ "Modified: / 21.10.1998 / 17:02:11 / cg" ! -doRemoveAndRemoveFromCVS:filesToRemove - "remove the selected file(s) and their CVS containers - no questions asked" - - |msg idx needUpdate toRemove updateRunning yesToAll| - - updateRunning := listUpdateProcess notNil. - self stopUpdateProcess. - toRemove := OrderedCollection new. - - "/ - "/ did the directory change in the meanwhile ? - "/ - needUpdate := (currentDirectory modificationTime > timeOfLastCheck). - - yesToAll := false. - lockUpdate := true. - [ - filesToRemove do:[:fileName | - |f| - - f := currentDirectory construct:fileName. - OperatingSystem accessDeniedErrorSignal handle:[:ex| - "was not able to remove it" - msg := (resources string:'cannot remove ''%1'' !!' with:fileName). - self showAlert:msg with:(OperatingSystem lastErrorString) - ] do:[ - |answer contents| - - (f isSymbolicLink not) ifTrue:[ - OperatingSystem - executeCommand:'cvs remove -f ' , f baseName - inDirectory:currentDirectory pathName. - -" - self show:nil -" - idx := fileList indexOf:fileName. - idx ~~ 0 ifTrue:[ - toRemove add:idx. - ] - ] - ]. - ]. - ] valueNowOrOnUnwindDo:[ - lockUpdate := false. - fileListView setSelection:nil. - - "/ - "/ remove reverse - otherwise indices are wrong - "/ - toRemove sort. - toRemove reverseDo:[:idx | - fileList removeIndex:idx. - fileListView removeIndex:idx. - ]. - - updateRunning ifTrue:[ - self updateCurrentDirectory - ] ifFalse:[ - " - install a new check after some time - " - needUpdate ifFalse:[timeOfLastCheck := AbsoluteTime now]. - Processor removeTimedBlock:checkBlock. - Processor addTimedBlock:checkBlock afterSeconds:checkDelta. - ] - ]. - - OperatingSystem - executeCommand:'cvs commit -m ''removed via FileBrowser''' - inDirectory:currentDirectory pathName. - - - "Modified: / 20.11.1997 / 17:39:14 / stefan" - "Modified: / 21.10.1998 / 17:02:11 / cg" -! - doRename:oldName to:newName "rename a file (or directory)" @@ -6518,5 +6569,5 @@ !FileBrowser class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libtool/FileBrowser.st,v 1.306 1999-04-16 17:46:37 cg Exp $' + ^ '$Header: /cvs/stx/stx/libtool/FileBrowser.st,v 1.307 1999-04-16 18:18:38 cg Exp $' ! !