'From Squeak4.4 of 31 December 2012 [latest update: #12327] on 29 June 2016 at 4:37:03 pm'! !FileList methodsFor: 'own services' stamp: 'jdr 6/23/2015 14:37'! viewContentsInWorkspace "View the contents of my selected file in a new workspace" | aString aFileStream aName lineConversion w | aFileStream := (directory readOnlyFileNamed: self fullName) setConverterForCode. aFileStream wantsLineEndConversion: true. lineConversion := aFileStream detectLineEndConvention. aString := aFileStream contentsOfEntireFile. aName := aFileStream localName. aFileStream close. w:=UIManager default edit: aString label: "'Workspace from ', "aName. w setProperty: #lineConversion toValue: lineConversion. directory ~= FileDirectory default ifTrue: [w setProperty: #myDir toValue: directory] ! ! !TextEditor methodsFor: 'menu messages' stamp: 'jdr 6/7/2016 17:28'! saveContentsInFile "Save the receiver's contents string to a file, prompting the user for a file-name. Suggest a reasonable file-name." | fileName stringToSave parentWindow labelToUse suggestedName dir | stringToSave := paragraph text string. stringToSave size = 0 ifTrue: [^self inform: 'nothing to save.']. parentWindow := model dependents detect: [:dep | dep isKindOf: SystemWindow] ifNone: [nil]. dir := parentWindow valueOfProperty: #myDir. labelToUse := parentWindow ifNil: ['Untitled'] ifNotNil: [ dir ifNil: [parentWindow label] ifNotNil:[dir fullNameFor: parentWindow label]]. suggestedName := nil. #(#('Decompressed contents of: ' '.gz')) do: [:leaderTrailer | | lastIndex | "can add more here..." (labelToUse beginsWith: leaderTrailer first) ifTrue: [suggestedName := labelToUse copyFrom: leaderTrailer first size + 1 to: labelToUse size. (labelToUse endsWith: leaderTrailer last) ifTrue: [suggestedName := suggestedName copyFrom: 1 to: suggestedName size - leaderTrailer last size] ifFalse: [lastIndex := suggestedName lastIndexOf: $. ifAbsent: [0]. (lastIndex = 0 or: [lastIndex = 1]) ifFalse: [suggestedName := suggestedName copyFrom: 1 to: lastIndex - 1]]]]. suggestedName ifNil: [suggestedName := labelToUse. (labelToUse includesSubString: '.') ifFalse: [suggestedName := suggestedName , '.text']]. fileName := UIManager default request: 'File name?' initialAnswer: suggestedName. fileName isEmptyOrNil ifFalse: [ |ns| ns := MultiByteFileStream newFileNamed: fileName. ns lineEndConvention: (parentWindow valueOfProperty: #lineConversion). ns nextPutAll: stringToSave; close. suggestedName ~= fileName ifTrue:[parentWindow label: fileName]. self morph hasUnacceptedEdits: false. ]! !