The Trunk: Tools-fbs.484.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Tools-fbs.484.mcz

commits-2
Frank Shearar uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-fbs.484.mcz

==================== Summary ====================

Name: Tools-fbs.484
Author: fbs
Time: 10 July 2013, 12:44:59.096 pm
UUID: 883de497-3a88-4049-8d6b-2104778300b9
Ancestors: Tools-dtl.483

Deprecate FileList2. It looks like cruft. It has one user vocal enough to say he used it (Stephane Rollandin), and he says it's fine to remove it.

=============== Diff against Tools-dtl.483 ===============

Item was removed:
- FileList subclass: #FileList2
- instanceVariableNames: 'showDirsInFileList currentDirectorySelected fileSelectionBlock dirSelectionBlock optionalButtonSpecs modalView directoryChangeBlock ok'
- classVariableNames: ''
- poolDictionaries: ''
- category: 'Tools-FileList'!
- FileList2 class
- instanceVariableNames: 'lastSelDir'!
-
- !FileList2 commentStamp: 'BJP 11/19/2003 21:13' prior: 0!
- Some variations on FileList that
- - use a hierarchical pane to show folder structure
- - use different pane combinations, button layouts and prefiltering for specific uses
-
- FileList2 morphicView openInWorld "an alternative to the standard FileList"
- FileList2 morphicViewNoFile openInWorld "useful for selecting, but not viewing"
- FileList2 morphicViewProjectLoader openInWorld "useful for finding and loading projects"
- FileList2 modalFolderSelector "allows the user to select a folder"
-
-
-
- !
- FileList2 class
- instanceVariableNames: 'lastSelDir'!

Item was removed:
- ----- Method: FileList2 class>>addFullPanesTo:from: (in category 'utility') -----
- addFullPanesTo: window from: aCollection
-
-
-
- aCollection do: [ :each | | frame |
- frame := LayoutFrame
- fractions: each second
- offsets: each third.
- window addMorph: each first fullFrame: frame.
- ]!

Item was removed:
- ----- Method: FileList2 class>>blueButtonText:textColor:color:inWindow: (in category 'blue ui') -----
- blueButtonText: aString textColor: textColor color: aColor inWindow: window
- | result |
- result := window
- fancyText: aString translated
- font: Preferences standardEToysFont
- color: textColor.
- result setProperty: #buttonText toValue: aString;
- hResizing: #rigid;
- extent: 100 @ 20;
- layoutInset: 4;
- borderWidth: ColorTheme current dialogButtonBorderWidth;
- useRoundedCorners.
- aColor isNil
- ifFalse: [""result color: aColor. result borderColor: aColor muchDarker].
- ^ result!

Item was removed:
- ----- Method: FileList2 class>>blueButtonText:textColor:color:inWindow:balloonText:selector:recipient: (in category 'blue ui') -----
- blueButtonText: aString textColor: textColor color: aColor inWindow: window balloonText: balloonText selector: sel recipient: recip
- | result |
- result := window
- fancyText: aString translated
- font: Preferences standardEToysFont
- color: textColor.
- result setProperty: #buttonText toValue: aString;
- hResizing: #rigid;
- extent: 100 @ 20;
- layoutInset: 4;
- borderWidth: ColorTheme current dialogButtonBorderWidth;
- useRoundedCorners;
- setBalloonText: balloonText.
- result
- on: #mouseUp
- send: sel
- to: recip.
- aColor isNil
- ifFalse: [""
- result color: aColor.
- result borderColor: aColor muchDarker].
- ^ result!

Item was removed:
- ----- Method: FileList2 class>>blueButtonText:textColor:inWindow: (in category 'blue ui') -----
- blueButtonText: aString textColor: textColor inWindow: window
- ^ self
- blueButtonText: aString
- textColor: textColor
- color: nil
- inWindow: window!

Item was removed:
- ----- Method: FileList2 class>>blueButtonText:textColor:inWindow:balloonText:selector:recipient: (in category 'blue ui') -----
- blueButtonText: aString textColor: textColor inWindow: window balloonText: balloonText selector: sel recipient: recip
- ^ self
- blueButtonText: aString
- textColor: textColor
- color: nil
- inWindow: window
- balloonText: balloonText
- selector: sel
- recipient: recip !

Item was removed:
- ----- Method: FileList2 class>>enableTypeButtons:info:forDir: (in category 'blue ui') -----
- enableTypeButtons: typeButtons info: fileTypeInfo forDir: aDirectory
-
- | foundSuffixes firstEnabled |
-
- firstEnabled := nil.
- foundSuffixes := (aDirectory ifNil: [ #()] ifNotNil: [ aDirectory fileNames]) collect: [ :each | (each findTokens: '.') last asLowercase].
- foundSuffixes := foundSuffixes asSet.
- fileTypeInfo with: typeButtons do: [ :info :button | | enableIt fileSuffixes |
- fileSuffixes := info second.
- enableIt := fileSuffixes anySatisfy: [ :patt | foundSuffixes includes: patt].
- button
- setProperty: #enabled
- toValue: enableIt.
- enableIt ifTrue: [firstEnabled ifNil: [firstEnabled := button]].
- ].
- firstEnabled ifNotNil: [^firstEnabled mouseUp: nil].
- typeButtons do: [ :each | each color: Color gray].
-
- !

Item was removed:
- ----- Method: FileList2 class>>endingSpecs (in category 'blue ui') -----
- endingSpecs
- "Answer a collection of specs to build the selective 'find anything' tool called by the Navigator. This version uses the services registry to do so."
- "FileList2 morphicViewGeneralLoaderInWorld: World"
- | categories specs rejects |
- rejects := #(addFileToNewZip: compressFile: openInZipViewer: extractAllFrom: openOn:).
- categories := #(
- ('Art' ('bmp' 'gif' 'jpg' 'jpeg' 'form' 'png' 'pcx' 'xbm' 'xpm' 'ppm' 'pbm'))
- ('Morphs' ('morph' 'morphs' 'sp'))
- ('Projects' ('extseg' 'project' 'pr'))
- ('MIDI' ('mid' 'midi'))
- ('Music' ('mp3'))
- ('Movies' ('movie' 'mpg' 'mpeg' 'qt' 'mov'))
- ('Flash' ('swf'))
- ).
-
- "('Books' ('bo'))"
- "('Code' ('st' 'cs'))"
- "('TrueType' ('ttf'))"
- "('3ds' ('3ds'))"
- "('Tape' ('tape'))"
- "('Wonderland' ('wrl'))"
- "('HTML' ('htm' 'html'))"
-
- categories first at: 2 put: ImageReadWriter allTypicalFileExtensions.
- specs := OrderedCollection new.
- categories do: [ :cat | | catSpecs catServices okExtensions services |
- services := Dictionary new.
- catSpecs := Array new: 3.
- catServices := OrderedCollection new.
- okExtensions := Set new.
-
- cat second do: [ :ext | (FileList itemsForFile: 'fred.',ext) do: [ :i |
- (rejects includes: i selector) ifFalse: [
- okExtensions add: ext.
- services at: i label put: i ]]].
- services do: [ :svc | catServices add: svc ].
- services isEmpty ifFalse: [
- catSpecs at: 1 put: cat first;
- at: 2 put: okExtensions;
- at: 3 put: catServices.
- specs add: catSpecs ]
- ].
- ^specs
- !

Item was removed:
- ----- Method: FileList2 class>>hideSqueakletDirectoryBlock (in category 'as yet unclassified') -----
- hideSqueakletDirectoryBlock
- ^[:dirName| (dirName sameAs: 'Squeaklets') not]!

Item was removed:
- ----- Method: FileList2 class>>lastSelDir (in category 'accessing') -----
- lastSelDir
- "Return the last selected directory or the default directory if no directory was selected so far."
-
- ^lastSelDir ifNil: [ lastSelDir := FileDirectory default ]!

Item was removed:
- ----- Method: FileList2 class>>lastSelDir: (in category 'accessing') -----
- lastSelDir: aFileDirectory
- "Store the last selected directory. This will be selected as default in newly opened file or folder selectors"
-
- ^lastSelDir := aFileDirectory!

Item was removed:
- ----- Method: FileList2 class>>modalFileSelector (in category 'modal dialogs') -----
- modalFileSelector
-
- | window |
-
- window := self morphicViewFileSelector.
- window openCenteredInWorld.
- self modalLoopOn: window.
- ^(window valueOfProperty: #fileListModel) getSelectedFile!

Item was removed:
- ----- Method: FileList2 class>>modalFileSelectorForSuffixes: (in category 'modal dialogs') -----
- modalFileSelectorForSuffixes: aList
-
- | window aFileList |
-
- window := self morphicViewFileSelectorForSuffixes: aList.
- aFileList := window valueOfProperty: #fileListModel.
- window openCenteredInWorld.
- self modalLoopOn: window.
- ^aFileList getSelectedFile!

Item was removed:
- ----- Method: FileList2 class>>modalFileSelectorForSuffixes:directory: (in category 'modal dialogs') -----
- modalFileSelectorForSuffixes: aList directory: aDirectory
-
- | window aFileList |
-
- window := self morphicViewFileSelectorForSuffixes: aList directory: aDirectory.
- aFileList := window valueOfProperty: #fileListModel.
- window openCenteredInWorld.
- self modalLoopOn: window.
- ^aFileList getSelectedFile!

Item was removed:
- ----- Method: FileList2 class>>modalFolderSelector (in category 'modal dialogs') -----
- modalFolderSelector
-
- ^self modalFolderSelector: self lastSelDir
- !

Item was removed:
- ----- Method: FileList2 class>>modalFolderSelector: (in category 'modal dialogs') -----
- modalFolderSelector: aDir
-
- | window fileModel |
- window := self morphicViewFolderSelector: aDir.
- fileModel := window model.
- window openInWorld: self currentWorld extent: 300@400.
- self modalLoopOn: window.
- ^fileModel getSelectedDirectory withoutListWrapper!

Item was removed:
- ----- Method: FileList2 class>>modalFolderSelectorForProject: (in category 'modal dialogs') -----
- modalFolderSelectorForProject: aProject
- "
- FileList2 modalFolderSelectorForProject: Project current
- "
- | window fileModel w |
-
- window := FileList2 morphicViewProjectSaverFor: aProject.
- fileModel := window valueOfProperty: #FileList.
- w := self currentWorld.
- window position: w topLeft + (w extent - window extent // 2).
- w addMorphInLayer: window.
- w startSteppingSubmorphsOf: window.
- self modalLoopOn: window.
- ^fileModel getSelectedDirectory withoutListWrapper!

Item was removed:
- ----- Method: FileList2 class>>modalFolderSelectorForProjectLoad (in category 'modal dialogs') -----
- modalFolderSelectorForProjectLoad
-
- | window fileModel w |
-
- window := self morphicViewProjectLoader2InWorld: self currentWorld reallyLoad: false.
- fileModel := window valueOfProperty: #FileList.
- w := self currentWorld.
- window position: w topLeft + (w extent - window extent // 2).
- window openInWorld: w.
- self modalLoopOn: window.
- ^fileModel getSelectedDirectory withoutListWrapper!

Item was removed:
- ----- Method: FileList2 class>>modalLoopOn: (in category 'utility') -----
- modalLoopOn: aMorph
- [aMorph world notNil] whileTrue: [
- aMorph outermostWorldMorph doOneCycle.
- ].!

Item was removed:
- ----- Method: FileList2 class>>morphicViewFileSelector (in category 'morphic ui') -----
- morphicViewFileSelector
-
- ^self morphicViewFileSelectorForSuffixes: nil
- !

Item was removed:
- ----- Method: FileList2 class>>morphicViewFileSelectorForSuffixes: (in category 'morphic ui') -----
- morphicViewFileSelectorForSuffixes: aList
- "Answer a morphic file-selector tool for the given suffix list."
-
- ^self morphicViewFileSelectorForSuffixes: aList directory: self lastSelDir!

Item was removed:
- ----- Method: FileList2 class>>morphicViewFileSelectorForSuffixes:directory: (in category 'morphic ui') -----
- morphicViewFileSelectorForSuffixes: aList directory: dir
- "Answer a morphic file-selector tool for the given suffix list and the given directory."
-
- | aFileList window fixedSize midLine gap |
- aFileList := self new directory: dir.
- aFileList optionalButtonSpecs: aFileList okayAndCancelServices.
- aList ifNotNil:
- [aFileList fileSelectionBlock: [:entry :myPattern |
- entry isDirectory
- ifTrue:
- [false]
- ifFalse:
- [aList includes: (FileDirectory extensionFor: entry name asLowercase)]]].
- window := BorderedMorph new
- layoutPolicy: ProportionalLayout new;
- color: Color lightBlue;
- borderColor: Color blue;
- borderWidth: 4;
- layoutInset: 4;
- extent: 600@400;
- useRoundedCorners.
- window setProperty: #fileListModel toValue: aFileList.
- aFileList modalView: window.
- midLine := 0.4.
- fixedSize := 25.
- gap := 5.
- self addFullPanesTo: window from: {
- {self textRow: 'Please select a file'. 0 @ 0 corner: 1 @ 0. 0@0 corner: 0@fixedSize}.
- {aFileList optionalButtonRow. 0 @ 0 corner: 1 @ 0. 0@fixedSize corner: 0@(fixedSize * 2)}.
- {aFileList morphicDirectoryTreePane. 0@0 corner: midLine@1.
- gap @(fixedSize * 2) corner: gap negated@0}.
- {aFileList morphicFileListPane. midLine @ 0 corner: 1@1.
- gap@(fixedSize * 2) corner: gap negated@0}.
- }.
-
- aFileList postOpen.
-
- ^ window !

Item was removed:
- ----- Method: FileList2 class>>morphicViewFolderSelector (in category 'morphic ui') -----
- morphicViewFolderSelector
-
- ^self morphicViewFolderSelector: FileDirectory default!

Item was removed:
- ----- Method: FileList2 class>>morphicViewFolderSelector: (in category 'morphic ui') -----
- morphicViewFolderSelector: aDir
- "Answer a tool that allows the user to select a folder"
-
- | aFileList window fixedSize |
- aFileList := self new directory: aDir.
- aFileList optionalButtonSpecs: aFileList servicesForFolderSelector.
- window := (SystemWindow labelled: aDir pathName) model: aFileList.
- aFileList modalView: window.
-
- fixedSize := 25.
- self addFullPanesTo: window from: {
- {self textRow: 'Please select a folder'. 0 @ 0 corner: 1 @ 0.
- 0@0 corner: 0@fixedSize}.
- {aFileList optionalButtonRow. 0 @ 0 corner: 1 @ 0.
- 0@fixedSize corner: 0@(fixedSize * 2)}.
- {aFileList morphicDirectoryTreePane. 0@0 corner: 1@1.
- 0@(fixedSize * 2) corner: 0@0}.
- }.
- aFileList postOpen.
- ^ window !

Item was removed:
- ----- Method: FileList2 class>>morphicViewGeneralLoaderInWorld: (in category 'blue ui') -----
- morphicViewGeneralLoaderInWorld: aWorld
- "
- FileList2 morphicViewGeneralLoaderInWorld: self currentWorld
- "
- | window aFileList buttons treePane textColor1 fileListPane pane2a pane2b fileTypeInfo fileTypeButtons fileTypeRow actionRow |
-
- fileTypeInfo := self endingSpecs.
- window := AlignmentMorphBob1 newColumn.
- window hResizing: #shrinkWrap; vResizing: #shrinkWrap.
- textColor1 := Color r: 0.742 g: 0.839 b: 1.0.
- aFileList := self new directory: FileDirectory default.
- aFileList
- fileSelectionBlock: self projectOnlySelectionBlock;
- modalView: window.
- window
- setProperty: #FileList toValue: aFileList;
- wrapCentering: #center; cellPositioning: #topCenter;
- borderWidth: ColorTheme current dialogBorderWidth;
- borderColor: ColorTheme current dialogBorderColor;
- useRoundedCorners.
-
- fileTypeButtons := fileTypeInfo collect: [ :each |
- (self blueButtonText: each first textColor: Color gray inWindow: window)
- setProperty: #enabled toValue: true;
- hResizing: #shrinkWrap;
- useSquareCorners
- ].
- buttons := {{'OK'. ColorTheme current okColor}. {'Cancel'. ColorTheme current cancelColor}} collect: [ :each |
- self blueButtonText: each first textColor: textColor1 color: each second inWindow: window
- ].
-
- treePane := aFileList morphicDirectoryTreePane
- extent: 250@300;
- retractable: false;
- borderWidth: 0.
- fileListPane := aFileList morphicFileListPane
- extent: 350@300;
- retractable: false;
- borderWidth: 0.
- window addARow: {window fancyText: 'Find...' translated font: Preferences standardEToysTitleFont color: textColor1}.
- fileTypeRow := window addARowCentered: fileTypeButtons cellInset: 2.
- actionRow := window addARowCentered: {
- buttons first.
- (Morph new extent: 30@5) color: Color transparent.
- buttons second
- } cellInset: 2.
- window
- addARow: {
- (window inAColumn: {(pane2a := window inARow: {window inAColumn: {treePane}})
- useRoundedCorners;
- layoutInset: 0;
- borderWidth: ColorTheme current dialogPaneBorderWidth;
- borderColor: ColorTheme current dialogPaneBorderColor
- }) layoutInset: 10.
- (window inAColumn: {(pane2b := window inARow: {window inAColumn: {fileListPane}})
- useRoundedCorners;
- layoutInset: 0;
- borderWidth: ColorTheme current dialogPaneBorderWidth;
- borderColor: ColorTheme current dialogPaneBorderColor
- }) layoutInset: 10.
- }.
- window fullBounds.
- window fillWithRamp: ColorTheme current dialogRampOrColor oriented: 0.65.
- pane2a fillWithRamp: ColorTheme current dialogPaneRampOrColor oriented: (0.7 @ 0.35).
- pane2b fillWithRamp: ColorTheme current dialogPaneRampOrColor oriented: (0.7 @ 0.35).
- "
- buttons do: [ :each |
- each fillWithRamp: ColorTheme current dialogButtonsRampOrColor oriented: (0.75 @ 0).
- ].
- "
- fileTypeButtons do: [ :each |
- each
- on: #mouseUp
- send: #value:value:
- to: [ :evt :morph |
- self update: actionRow in: window fileTypeRow: fileTypeRow morphUp: morph.
- ]
- ].
- buttons first on: #mouseUp send: #okHit to: aFileList.
- buttons second on: #mouseUp send: #cancelHit to: aFileList.
- aFileList postOpen.
- window position: aWorld topLeft + (aWorld extent - window extent // 2).
- aFileList directoryChangeBlock: [ :newDir |
- self update: actionRow in: window fileTypeRow: fileTypeRow morphUp: nil.
- self enableTypeButtons: fileTypeButtons info: fileTypeInfo forDir: newDir.
- ].
- aFileList directory: aFileList directory.
- window adoptPaneColor: (Color r: 0.548 g: 0.677 b: 1.0).
- window becomeModal.
- ^ window openInWorld: aWorld.!

Item was removed:
- ----- Method: FileList2 class>>morphicViewImageViewer (in category 'morphic ui') -----
- morphicViewImageViewer
-
- | dir aFileList window midLine fixedSize |
-
- dir := FileDirectory default.
- aFileList := self new directory: dir.
- aFileList optionalButtonSpecs: aFileList specsForImageViewer.
- aFileList fileSelectionBlock: [ :entry :myPattern |
- entry isDirectory ifTrue: [
- false
- ] ifFalse: [
- #('bmp' 'gif' 'jpg' 'form' 'png') includes:
- (FileDirectory extensionFor: entry name asLowercase)
- ]
- ].
- window := (SystemWindow labelled: dir pathName) model: aFileList.
-
- fixedSize := 25.
- midLine := 0.4.
- self addFullPanesTo: window from: {
- {aFileList optionalButtonRow. 0 @ 0 corner: 1 @ 0.
- 0@0 corner: 0@fixedSize}.
- {aFileList morphicDirectoryTreePane. 0@0 corner: midLine@1.
- 0@fixedSize corner: 0@0}.
- {aFileList morphicFileListPane. midLine @ 0 corner: 1@1.
- 0@fixedSize corner: 0@0}.
- }.
- aFileList postOpen.
- ^ window !

Item was removed:
- ----- Method: FileList2 class>>morphicViewNoFile (in category 'morphic ui') -----
- morphicViewNoFile
-
- | dir aFileList window midLine fixedSize |
-
- dir := FileDirectory default.
- aFileList := self new directory: dir.
- window := (SystemWindow labelled: dir pathName) model: aFileList.
-
- fixedSize := 25.
- midLine := 0.4.
- self addFullPanesTo: window from: {
- {aFileList morphicPatternPane. 0@0 corner: 0.3@0. 0@0 corner: 0@fixedSize}.
- {aFileList optionalButtonRow. 0.3 @ 0 corner: 1@0. 0@0 corner: 0@fixedSize}.
- {aFileList morphicDirectoryTreePane. 0@0 corner: midLine@1. 0@fixedSize corner: 0@0}.
- {aFileList morphicFileListPane. midLine @ 0 corner: 1@1. 0@fixedSize corner: 0@0}.
- }.
- aFileList postOpen.
- ^ window !

Item was removed:
- ----- Method: FileList2 class>>morphicViewProjectLoader (in category 'morphic ui') -----
- morphicViewProjectLoader
-
- | dir aFileList window midLine fixedSize |
-
- dir := FileDirectory default.
- aFileList := self new directory: dir.
- aFileList optionalButtonSpecs: aFileList servicesForProjectLoader.
- aFileList fileSelectionBlock: self projectOnlySelectionBlock.
- window := (SystemWindow labelled: dir pathName) model: aFileList.
-
- fixedSize := 25.
- midLine := 0.4.
- self addFullPanesTo: window from: {
- {aFileList optionalButtonRow. 0 @ 0 corner: 1 @ 0. 0@0 corner: 0@fixedSize}.
- {aFileList morphicDirectoryTreePane. 0@0 corner: midLine@1. 0@fixedSize corner: 0@0}.
- {aFileList morphicFileListPane. midLine @ 0 corner: 1@1. 0@fixedSize corner: 0@0}.
- }.
- aFileList postOpen.
- ^ window !

Item was removed:
- ----- Method: FileList2 class>>morphicViewProjectLoader2InWorld: (in category 'blue ui') -----
- morphicViewProjectLoader2InWorld: aWorld
-
- ^self morphicViewProjectLoader2InWorld: aWorld reallyLoad: true!

Item was removed:
- ----- Method: FileList2 class>>morphicViewProjectLoader2InWorld:reallyLoad: (in category 'blue ui') -----
- morphicViewProjectLoader2InWorld: aWorld reallyLoad: aBoolean
-
- ^self
- morphicViewProjectLoader2InWorld: aWorld
- reallyLoad: aBoolean
- dirFilterType: #initialDirectoryList
- !

Item was removed:
- ----- Method: FileList2 class>>morphicViewProjectLoader2InWorld:reallyLoad:dirFilterType: (in category 'blue ui') -----
- morphicViewProjectLoader2InWorld: aWorld reallyLoad: aBoolean dirFilterType: aSymbol
-
- | window aFileList buttons treePane textColor1 fileListPane pane2a pane2b treeExtent filesExtent |
-
- window := AlignmentMorphBob1 newColumn.
- window hResizing: #shrinkWrap; vResizing: #shrinkWrap.
- textColor1 := Color r: 0.742 g: 0.839 b: 1.0.
- aFileList := self new directory: FileDirectory default.
- aFileList
- optionalButtonSpecs: aFileList servicesForProjectLoader;
- fileSelectionBlock: (
- aSymbol == #limitedSuperSwikiDirectoryList ifTrue: [
- MessageSend receiver: self selector: #projectOnlySelectionMethod:
- ] ifFalse: [
- self projectOnlySelectionBlock
- ]
- );
- "dirSelectionBlock: self hideSqueakletDirectoryBlock;"
- modalView: window.
- window
- setProperty: #FileList toValue: aFileList;
- wrapCentering: #center; cellPositioning: #topCenter;
- borderWidth: ColorTheme current dialogBorderWidth;
- borderColor: ColorTheme current dialogBorderColor;
- useRoundedCorners.
- buttons := {{'OK'. ColorTheme current okColor}. {'Cancel'. ColorTheme current cancelColor}} collect: [ :each |
- self blueButtonText: each first textColor: textColor1 color: each second inWindow: window
- ].
-
- aWorld width < 800 ifTrue: [
- treeExtent := 150@300.
- filesExtent := 350@300.
- ] ifFalse: [
- treeExtent := 250@300.
- filesExtent := 350@300.
- ].
- (treePane := aFileList morphicDirectoryTreePaneFiltered: aSymbol)
- extent: treeExtent;
- retractable: false;
- borderWidth: 0.
- fileListPane := aFileList morphicFileListPane
- extent: filesExtent;
- retractable: false;
- borderWidth: 0.
- window
- addARow: {
- window fancyText: 'Load A Project' translated font: Preferences standardEToysTitleFont color: textColor1
- };
- addARowCentered: {
- buttons first.
- (Morph new extent: 30@5) color: Color transparent.
- buttons second
- };
- addARow: {
- window fancyText: 'Please select a project' translated  font: Preferences standardEToysFont color: textColor1
- };
- addARow: {
- (window inAColumn: {(pane2a := window inARow: {window inAColumn: {treePane}})
- useRoundedCorners;
- layoutInset: 0;
- borderWidth: ColorTheme current dialogPaneBorderWidth;
- borderColor: ColorTheme current dialogPaneBorderColor
- }) layoutInset: 10.
- (window inAColumn: {(pane2b := window inARow: {window inAColumn: {fileListPane}})
- useRoundedCorners;
- layoutInset: 0;
- borderWidth: ColorTheme current dialogPaneBorderWidth;
- borderColor: ColorTheme current dialogPaneBorderColor
- }) layoutInset: 10.
- }.
- window fullBounds.
- window fillWithRamp: ColorTheme current dialogRampOrColor oriented: 0.65.
- pane2a fillWithRamp: ColorTheme current dialogPaneRampOrColor oriented: (0.7 @ 0.35).
- pane2b fillWithRamp: ColorTheme current dialogPaneRampOrColor oriented: (0.7 @ 0.35).
- "
- buttons do: [ :each |
- each fillWithRamp: ColorTheme current dialogButtonsRampOrColor oriented: (0.75 @ 0).
- ].
- "
- buttons first
- on: #mouseUp
- send: (aBoolean ifTrue: [#okHitForProjectLoader] ifFalse: [#okHit])
- to: aFileList.
- buttons second on: #mouseUp send: #cancelHit to: aFileList.
- aFileList postOpen.
- window position: aWorld topLeft + (aWorld extent - window extent // 2).
- window adoptPaneColor: (Color r: 0.548 g: 0.677 b: 1.0).
- window becomeModal.
- ^ window openInWorld: aWorld.!

Item was removed:
- ----- Method: FileList2 class>>morphicViewProjectSaverFor: (in category 'blue ui') -----
- morphicViewProjectSaverFor: aProject
- "
- (FileList2 morphicViewProjectSaverFor: Project current) openInWorld
- "
- | window aFileList buttons treePane pane2 textColor1 option treeExtent buttonData buttonRow |
-
- textColor1 := Color r: 0.742 g: 0.839 b: 1.0.
- aFileList := self new directory: ServerDirectory projectDefaultDirectory.
- aFileList dirSelectionBlock: self hideSqueakletDirectoryBlock.
- window := AlignmentMorphBob1 newColumn.
- window hResizing: #shrinkWrap; vResizing: #shrinkWrap.
- aFileList modalView: window.
- window
- setProperty: #FileList toValue: aFileList;
- wrapCentering: #center; cellPositioning: #topCenter;
- borderWidth: ColorTheme current dialogBorderWidth;
- borderColor: ColorTheme current dialogBorderColor;
- useRoundedCorners.
-
- buttonData := Preferences enableLocalSave
- ifTrue: [{
- {'Save'. #okHit. 'Save in the place specified below, and in the Squeaklets folder on your local disk'. ColorTheme current okColor}.
- {'Save on local disk only'. #saveLocalOnlyHit. 'saves in the Squeaklets folder'. ColorTheme current okColor}.
- {'Cancel'. #cancelHit. 'return without saving'. ColorTheme current cancelColor}
- }]
- ifFalse: [{
- {'Save'. #okHit. 'Save in the place specified below, and in the Squeaklets folder on your local disk'. ColorTheme current okColor}.
- {'Cancel'. #cancelHit. 'return without saving'. ColorTheme current cancelColor}
- }].
- buttons := buttonData collect: [ :each |
- (self blueButtonText: each first textColor: textColor1 color: each fourth inWindow: window)
- setBalloonText: each third translated;
- hResizing: #shrinkWrap;
- on: #mouseUp send: each second to: aFileList
- ].
-
- option := aProject world
- valueOfProperty: #SuperSwikiPublishOptions
- ifAbsent: [#initialDirectoryList].
- aProject world removeProperty: #SuperSwikiPublishOptions.
-
- treeExtent := World height < 500
- ifTrue: [ 350@150 ]
- ifFalse: [ 350@300 ].
-
- (treePane := aFileList morphicDirectoryTreePaneFiltered: option)
- extent: treeExtent;
- retractable: false;
- borderWidth: 0.
- window
- addARowCentered: {
- window fancyText: 'Publish This Project' translated font: Preferences standardEToysTitleFont color: textColor1
- }.
- buttonRow := OrderedCollection new.
- buttons do: [:button | buttonRow add: button] separatedBy: [buttonRow add: ((Morph new extent: 30@5) color: Color transparent)].
-
- " addARowCentered: {
- buttons first.
- (Morph new extent: 30@5) color: Color transparent.
- buttons second.
- (Morph new extent: 30@5) color: Color transparent.
- buttons third
- };"
- window
- addARowCentered: buttonRow;
- addARowCentered: { (window inAColumn: {(ProjectViewMorph on: aProject) lock}) layoutInset: 4};
- addARowCentered: {
- window fancyText: 'Please select a folder' translated font: Preferences standardEToysFont color: textColor1
- };
- addARow: {
- (
- window inAColumn: {
- (pane2 := window inARow: {window inAColumn: {treePane}})
- useRoundedCorners;
- layoutInset: 0;
- borderWidth: ColorTheme current dialogPaneBorderWidth;
- borderColor: ColorTheme current dialogPaneBorderColor
- }
- ) layoutInset: 10
- }.
- window fullBounds.
- window fillWithRamp: ColorTheme current dialogRampOrColor oriented: 0.65.
- pane2 fillWithRamp: ColorTheme current dialogPaneRampOrColor oriented: (0.7 @ 0.35).
- "
- buttons do: [ :each |
- each fillWithRamp: ColorTheme current dialogButtonsRampOrColor oriented: (0.75 @ 0).
- ].
- "
- window setProperty: #morphicLayerNumber toValue: 11.
- aFileList postOpen.
- window adoptPaneColor: (Color r: 0.548 g: 0.677 b: 1.0).
- ^ window !

Item was removed:
- ----- Method: FileList2 class>>openMorphicViewInWorld (in category 'instance creation') -----
- openMorphicViewInWorld
- "FileList2 openMorphicViewInWorld"
- ^self morphicView openInWorld!

Item was removed:
- ----- Method: FileList2 class>>projectOnlySelectionBlock (in category 'as yet unclassified') -----
- projectOnlySelectionBlock
-
- ^[ :entry :myPattern |
- entry isDirectory ifTrue: [
- false
- ] ifFalse: [
- #('*.pr' '*.pr.gz' '*.project') anySatisfy: [ :each | each match: entry name]
- ]
- ]!

Item was removed:
- ----- Method: FileList2 class>>projectOnlySelectionMethod: (in category 'as yet unclassified') -----
- projectOnlySelectionMethod: incomingEntries
-
- | versionsAccepted |
-
- "this shows only the latest version of each project"
- versionsAccepted := Dictionary new.
- incomingEntries do: [ :entry | | basicInfoTuple basicVersion basicName |
- entry isDirectory ifFalse: [
- (#('*.pr' '*.pr.gz' '*.project') anySatisfy: [ :each | each match: entry name]) ifTrue: [
- basicInfoTuple := Project parseProjectFileName: entry name.
- basicName := basicInfoTuple first.
- basicVersion := basicInfoTuple second.
- ((versionsAccepted includesKey: basicName) and:
- [(versionsAccepted at: basicName) first > basicVersion]) ifFalse: [
- versionsAccepted at: basicName put: {basicVersion. entry}
- ].
- ]
- ]
- ].
- ^versionsAccepted asArray collect: [ :each | each second]!

Item was removed:
- ----- Method: FileList2 class>>prototypicalToolWindow (in category 'instance creation') -----
- prototypicalToolWindow
- "Answer an example of myself seen in a tool window, for the benefit of parts-launching tools"
-
- ^ self morphicView applyModelExtent!

Item was removed:
- ----- Method: FileList2 class>>selectionBlockForSuffixes: (in category 'as yet unclassified') -----
- selectionBlockForSuffixes: anArray
-
- ^[ :entry :myPattern |
- entry isDirectory ifTrue: [
- false
- ] ifFalse: [
- anArray anySatisfy: [ :each | each match: entry name]
- ]
- ]!

Item was removed:
- ----- Method: FileList2 class>>textRow: (in category 'utility') -----
- textRow: aString
-
- ^AlignmentMorph newRow
- wrapCentering: #center; cellPositioning: #leftCenter;
- color: Color transparent;
- layoutInset: 0;
- addMorph: (
- AlignmentMorph newColumn
- wrapCentering: #center; cellPositioning: #topCenter;
- color: Color transparent;
- vResizing: #shrinkWrap;
- layoutInset: 0;
- addMorph: (
- AlignmentMorph newRow
- wrapCentering: #center; cellPositioning: #leftCenter;
- color: Color transparent;
- hResizing: #shrinkWrap;
- vResizing: #shrinkWrap;
- layoutInset: 0;
- addMorph: ((StringMorph contents: aString) color: Color blue; lock)
- )
- )!

Item was removed:
- ----- Method: FileList2 class>>update:in:fileTypeRow:morphUp: (in category 'morphic ui') -----
- update: actionRow in: window fileTypeRow: fileTypeRow morphUp: morph
-
- | fileTypeInfo info2 buttons textColor1 fileSuffixes fileActions aFileList fileTypeString |
-
- (morph notNil and:[(morph valueOfProperty: #enabled) not]) ifTrue: [^self].
- fileTypeRow submorphsDo: [ :sub |
- sub color: (
- sub == morph
- ifTrue: [Color white]
- ifFalse: [(sub valueOfProperty: #enabled)
- ifTrue: [Color transparent] ifFalse: [Color gray]]
- ).
- ].
- fileTypeString := morph isNil ifTrue:['xxxx'] ifFalse:[morph valueOfProperty: #buttonText].
-
- aFileList := window valueOfProperty: #FileList.
- textColor1 := Color r: 0.742 g: 0.839 b: 1.0.
- actionRow removeAllMorphs.
- fileTypeInfo := self endingSpecs.
- info2 := fileTypeInfo detect: [ :each | each first = fileTypeString] ifNone: [ nil ].
- info2 isNil
- ifTrue:[
- buttons := OrderedCollection new
- ]
- ifFalse:[
- fileSuffixes := info2 second.
- fileActions := info2 third.
- buttons := fileActions collect: [ :each | aFileList blueButtonForService: each textColor: textColor1 inWindow: window ].
- buttons do: [ :each |
- each fillWithRamp: ColorTheme current okColor oriented: (0.75 @ 0).
- ].
- ].
- buttons addLast: (self
- blueButtonText: 'Cancel'
- textColor: textColor1
- color: ColorTheme current cancelColor
- inWindow: window
- balloonText: 'Cancel this search' selector: #cancelHit recipient: aFileList).
- buttons do: [ :each | actionRow addMorphBack: each].
- window fullBounds.
- fileSuffixes isNil ifFalse:[
- aFileList fileSelectionBlock: (
- self selectionBlockForSuffixes: (fileSuffixes collect: [ :each | '*.',each])
- ).
- ].
- aFileList updateFileList.!

Item was removed:
- ----- Method: FileList2>>addNewDirectory (in category 'own services') -----
- addNewDirectory
- super addNewDirectory.
- self updateDirectory.!

Item was removed:
- ----- Method: FileList2>>blueButtonForService:textColor:inWindow: (in category 'user interface') -----
- blueButtonForService: aService textColor: textColor inWindow: window
- | block result |
- block := [self fullName isNil
- ifTrue: [self inform: 'Please select a file' translated]
- ifFalse: [aService performServiceFor: self]].
- result := window
- fancyText: aService buttonLabel capitalized translated
- font: Preferences standardEToysFont
- color: textColor.
- result setProperty: #buttonText toValue: aService buttonLabel capitalized;
- hResizing: #rigid;
- extent: 100 @ 20;
- layoutInset: 4;
- borderWidth: ColorTheme current dialogButtonBorderWidth;
- useRoundedCorners;
- setBalloonText: aService label.
- result
- on: #mouseUp
- send: #value
- to: block.
- ^ result!

Item was removed:
- ----- Method: FileList2>>cancelHit (in category 'private') -----
- cancelHit
-
- modalView delete.
- directory := fileName := currentDirectorySelected := nil.!

Item was removed:
- ----- Method: FileList2>>changeDirectoryTo: (in category 'volume list and pattern') -----
- changeDirectoryTo: aFileDirectory
- "Change directory as requested."
-
- self directory: aFileDirectory.
- self updateDirectory!

Item was removed:
- ----- Method: FileList2>>currentDirectorySelected (in category 'private') -----
- currentDirectorySelected
- ^ currentDirectorySelected
- !

Item was removed:
- ----- Method: FileList2>>deleteDirectory (in category 'own services') -----
- deleteDirectory
- super deleteDirectory.
- self updateDirectory.!

Item was removed:
- ----- Method: FileList2>>dirSelectionBlock: (in category 'initialization') -----
- dirSelectionBlock: aBlock
- dirSelectionBlock := aBlock!

Item was removed:
- ----- Method: FileList2>>directory (in category 'volume list and pattern') -----
- directory
-
- ^directory!

Item was removed:
- ----- Method: FileList2>>directory: (in category 'initialization') -----
- directory: dir
- "Set the path of the volume to be displayed."
-
- self okToChange ifFalse: [^ self].
-
- self modelSleep.
- directory := dir.
- self modelWakeUp.
-
- sortMode == nil ifTrue: [sortMode := #date].
- volList := Array with: '[]'.
- directory ifNotNil: [
- volList := volList, directory pathParts.  "Nesting suggestion from RvL"
- ].
- volList := volList withIndexCollect: [:each :i | ( String new: i-1 withAll: $ ), each].
- self changed: #relabel.
- self changed: #volumeList.
- self pattern: pattern.
- directoryChangeBlock ifNotNil: [directoryChangeBlock value: directory].!

Item was removed:
- ----- Method: FileList2>>directoryChangeBlock: (in category 'initialization') -----
- directoryChangeBlock: aBlockOrNil
-
- directoryChangeBlock := aBlockOrNil.!

Item was removed:
- ----- Method: FileList2>>directoryNamesFor: (in category 'private') -----
- directoryNamesFor: item
- "item may be file directory or server directory"
- | entries |
- entries := item directoryNames.
- dirSelectionBlock ifNotNil:[entries := entries select: dirSelectionBlock].
- ^entries!

Item was removed:
- ----- Method: FileList2>>dropDestinationDirectory:event: (in category 'drag''n''drop') -----
- dropDestinationDirectory: dest event: evt
- "Answer a FileDirectory representing the drop destination in the directory hierarchy morph dest"
- self isThisEverCalled.
- ^ (dest itemFromPoint: evt position) withoutListWrapper!

Item was removed:
- ----- Method: FileList2>>fileSelectionBlock: (in category 'initialization') -----
- fileSelectionBlock: aBlock
-
- fileSelectionBlock := aBlock!

Item was removed:
- ----- Method: FileList2>>getSelectedDirectory (in category 'private') -----
- getSelectedDirectory
- ok == true ifFalse: [^ nil].
- ^ currentDirectorySelected
- !

Item was removed:
- ----- Method: FileList2>>getSelectedFile (in category 'private') -----
- getSelectedFile
- "Answer a filestream on the selected file.  If it cannot be opened for read/write, try read-only before giving up; answer nil if unsuccessful"
-
- ok == true ifFalse: [^ nil].
- directory ifNil: [^ nil].
- fileName ifNil: [^ nil].
- ^ (directory oldFileNamed: fileName) ifNil:
- [directory readOnlyFileNamed: fileName]!

Item was removed:
- ----- Method: FileList2>>importImage (in category 'own services') -----
- importImage
- "Import the given image file and store the resulting Form in the default Imports"
-
- | fname image |
- fname := fileName sansPeriodSuffix.
- image := Form fromFileNamed: self fullName.
- Imports default importImage: image named: fname.
- !

Item was removed:
- ----- Method: FileList2>>initialDirectoryList (in category 'initialization') -----
- initialDirectoryList
-
- | dirList |
- dirList := (FileDirectory on: '') directoryNames collect: [ :each |
- FileDirectoryWrapper with: (FileDirectory on: each) name: each model: self].
- dirList isEmpty ifTrue:[
- dirList := Array with: (FileDirectoryWrapper
- with: FileDirectory default
- name: FileDirectory default localName
- model: self)].
- dirList := dirList,(
- ServerDirectory serverNames collect: [ :n | | nameToShow dir |
- dir := ServerDirectory serverNamed: n.
- nameToShow := n.
- (dir directoryWrapperClass with: dir name: nameToShow model: self)
- balloonText: dir realUrl
- ]
- ).
- ^dirList!

Item was removed:
- ----- Method: FileList2>>initialize (in category 'initialize-release') -----
- initialize
-
- super initialize.
- showDirsInFileList := false.
- fileSelectionBlock := [ :entry :myPattern |
- entry isDirectory ifTrue: [
- showDirsInFileList
- ] ifFalse: [
- myPattern = '*' or: [myPattern match: entry name]
- ]
- ].
- dirSelectionBlock := [ :dirName | true].!

Item was removed:
- ----- Method: FileList2>>isDirectoryList: (in category 'drag''n''drop') -----
- isDirectoryList: aMorph
- ^aMorph isKindOf: SimpleHierarchicalListMorph!

Item was removed:
- ----- Method: FileList2>>labelString (in category 'initialization') -----
- labelString
- ^ (directory ifNil: [^'[]']) pathName contractTo: 50!

Item was removed:
- ----- Method: FileList2>>limitedSuperSwikiDirectoryList (in category 'initialization') -----
- limitedSuperSwikiDirectoryList
-
- | dirList localDirName localDir |
-
- dirList := OrderedCollection new.
- ServerDirectory serverNames do: [ :n | | dir nameToShow |
- dir := ServerDirectory serverNamed: n.
- dir isProjectSwiki ifTrue: [
- nameToShow := n.
- dirList add: ((dir directoryWrapperClass with: dir name: nameToShow model: self)
- balloonText: dir realUrl)
- ].
- ].
- ServerDirectory localProjectDirectories do: [ :each |
- dirList add: (FileDirectoryWrapper with: each name: each localName model: self)
- ].
- "Make sure the following are always shown, but not twice"
- localDirName := SecurityManager default untrustedUserDirectory.
- localDir := FileDirectory on: localDirName.
- ((ServerDirectory localProjectDirectories collect: [:each | each pathName]) includes: localDirName)
- ifFalse: [dirList add: (FileDirectoryWrapper with: localDir name: localDir localName model: self)].
- FileDirectory default pathName = localDirName
- ifFalse: [dirList add: (FileDirectoryWrapper with: FileDirectory default name: FileDirectory default localName model: self)].
- (dirList anySatisfy: [:each | each withoutListWrapper acceptsUploads])
- ifFalse: [dirList add: (FileDirectoryWrapper with: FileDirectory default name: FileDirectory default localName model: self)].
- ^dirList!

Item was removed:
- ----- Method: FileList2>>limitedSuperSwikiPublishDirectoryList (in category 'initialization') -----
- limitedSuperSwikiPublishDirectoryList
-
- | dirList localDirName localDir |
-
- dirList := self publishingServers.
- ServerDirectory localProjectDirectories do: [ :each |
- dirList add: (FileDirectoryWrapper with: each name: each localName model: self)].
-
- "Make sure the following are always shown, but not twice"
- localDirName := SecurityManager default untrustedUserDirectory.
- localDir := FileDirectory on: localDirName.
- ((ServerDirectory localProjectDirectories collect: [:each | each pathName]) includes: localDirName)
- ifFalse: [dirList add: (FileDirectoryWrapper with: localDir name: localDir localName model: self)].
- FileDirectory default pathName = localDirName
- ifFalse: [dirList add: (FileDirectoryWrapper with: FileDirectory default name: FileDirectory default localName model: self)].
- ^dirList!

Item was removed:
- ----- Method: FileList2>>listForPattern: (in category 'volume list and pattern') -----
- listForPattern: pat
- "Make the list be those file names which match the pattern."
-
- | sizePad newList entries |
- directory ifNil: [^#()].
- entries := (Preferences eToyLoginEnabled
- and: [Utilities authorNamePerSe notNil])
- ifTrue: [directory matchingEntries: {'submittedBy: ' , Utilities authorName.} ]
- ifFalse: [directory entries].
- (fileSelectionBlock isKindOf: MessageSend) ifTrue: [
- fileSelectionBlock arguments: {entries}.
- newList := fileSelectionBlock value.
- fileSelectionBlock arguments: #().
- ] ifFalse: [
- newList := entries select: [:entry | fileSelectionBlock value: entry value: pat].
- ].
- newList := newList asArray sort: self sortBlock.
- sizePad := (newList inject: 0 into: [:mx :entry | mx max: entry fileSize])
- asStringWithCommas size - 1.
- ^newList collect: [ :e | self fileNameFormattedFrom: e sizePad: sizePad ]!

Item was removed:
- ----- Method: FileList2>>listForPatterns: (in category 'volume list and pattern') -----
- listForPatterns: anArray
- "Make the list be those file names which match the patterns."
-
- | sizePad newList |
- directory ifNil: [^#()].
- (fileSelectionBlock isKindOf: MessageSend) ifTrue: [
- fileSelectionBlock arguments: {directory entries}.
- newList := fileSelectionBlock value.
- fileSelectionBlock arguments: #().
- ] ifFalse: [
- newList := Set new.
- anArray do: [ :pat |
- newList addAll: (directory entries select: [:entry | fileSelectionBlock value: entry value: pat]) ].
- ].
- newList := newList asArray sort: self sortBlock.
- sizePad := (newList inject: 0 into: [:mx :entry | mx max: entry fileSize])
- asStringWithCommas size.
- ^newList collect: [ :e | self fileNameFormattedFrom: e sizePad: sizePad ]!

Item was removed:
- ----- Method: FileList2>>modalView: (in category 'private') -----
- modalView: aSystemWindowOrSuch
-
- modalView := aSystemWindowOrSuch!

Item was removed:
- ----- Method: FileList2>>morphicDirectoryTreePane (in category 'user interface') -----
- morphicDirectoryTreePane
-
- ^self morphicDirectoryTreePaneFiltered: #initialDirectoryList
- !

Item was removed:
- ----- Method: FileList2>>morphicDirectoryTreePaneFiltered: (in category 'user interface') -----
- morphicDirectoryTreePaneFiltered: aSymbol
- ^(SimpleHierarchicalListMorph
- on: self
- list: aSymbol
- selected: #currentDirectorySelected
- changeSelected: #setSelectedDirectoryTo:
- menu: #volumeMenu:
- keystroke: nil)
- autoDeselect: false;
- enableDrag: false;
- enableDrop: true;
- yourself
-
- !

Item was removed:
- ----- Method: FileList2>>morphicFileContentsPane (in category 'user interface') -----
- morphicFileContentsPane
-
- ^PluggableTextMorph
- on: self
- text: #contents
- accept: #put:
- readSelection: #contentsSelection
- menu: #fileContentsMenu:shifted:
- !

Item was removed:
- ----- Method: FileList2>>morphicFileListPane (in category 'user interface') -----
- morphicFileListPane
-
- ^(PluggableListMorph
- on: self
- list: #fileList
- selected: #fileListIndex
- changeSelected: #fileListIndex:
- menu: #fileListMenu:)
- enableDrag: true;
- enableDrop: false;
- yourself
-
- !

Item was removed:
- ----- Method: FileList2>>morphicPatternPane (in category 'user interface') -----
- morphicPatternPane
-    | pane |
-     pane := PluggableTextMorph
- on: self
- text: #pattern
- accept: #pattern:.
-     pane acceptOnCR: true.
-    ^pane
-
- !

Item was removed:
- ----- Method: FileList2>>okHit (in category 'private') -----
- okHit
-
- ok := true.
- currentDirectorySelected
- ifNil: [ Beeper beep ]
- ifNotNil: [
- self class lastSelDir: directory.
- modalView delete ]!

Item was removed:
- ----- Method: FileList2>>okHitForProjectLoader (in category 'private') -----
- okHitForProjectLoader
-
- | areaOfProgress |
- fileName ifNil: [^ self].
- ok := true.
- areaOfProgress := modalView firstSubmorph.
- [
- areaOfProgress setProperty: #deleteOnProgressCompletion toValue: modalView.
- self openProjectFromFile.
- modalView delete. "probably won't get here"
- ]
- on: ProgressTargetRequestNotification
- do: [ :ex | ex resume: areaOfProgress].
-
-
- !

Item was removed:
- ----- Method: FileList2>>okayAndCancelServices (in category 'own services') -----
- okayAndCancelServices
- "Answer ok and cancel services"
-
- ^ {self serviceOkay. self serviceCancel}!

Item was removed:
- ----- Method: FileList2>>openImageInWindow (in category 'own services') -----
- openImageInWindow
- "Handle five file formats: GIF, JPG, PNG, Form stoteOn: (run coded), and BMP.
- Fail if file format is not recognized."
-
- | image myStream |
- myStream := (directory readOnlyFileNamed: fileName) binary.
- [image := Form fromBinaryStream: myStream.
- Project current openImage: image name: fileName saveResource: false]
- ensure: [myStream close]
- !

Item was removed:
- ----- Method: FileList2>>openProjectFromFile (in category 'own services') -----
- openProjectFromFile
- "Reconstitute a Morph from the selected file, presumed to be represent
- a Morph saved via the SmartRefStream mechanism, and open it in an
- appropriate Morphic world."
-
- Project canWeLoadAProjectNow ifFalse: [^ self].
- ProjectViewMorph
- openFromDirectory: directory
- andFileName: fileName
- !

Item was removed:
- ----- Method: FileList2>>optionalButtonRow (in category 'initialization') -----
- optionalButtonRow
- "Answer the button row associated with a file list"
-
- | aRow |
- aRow := AlignmentMorph newRow beSticky.
- aRow color: Color transparent.
- aRow clipSubmorphs: true.
- aRow layoutInset: 5@1; cellInset: 6.
- self universalButtonServices do:  "just the three sort-by items"
- [:service |
- aRow addMorphBack: (service buttonToTriggerIn: self).
- (service selector  == #sortBySize)
- ifTrue:
- [aRow addTransparentSpacerOfSize: (4@0)]].
- aRow setNameTo: 'buttons'.
- aRow setProperty: #buttonRow toValue: true.  "Used for dynamic retrieval later on"
- ^ aRow!

Item was removed:
- ----- Method: FileList2>>optionalButtonSpecs (in category 'initialization') -----
- optionalButtonSpecs
-
- ^optionalButtonSpecs ifNil: [super optionalButtonSpecs]!

Item was removed:
- ----- Method: FileList2>>optionalButtonSpecs: (in category 'initialization') -----
- optionalButtonSpecs: anArray
-
- optionalButtonSpecs := anArray!

Item was removed:
- ----- Method: FileList2>>postOpen (in category 'private') -----
- postOpen
-
- directory ifNotNil: [
- self changed: #(openPath) , directory pathParts.
- ].
- !

Item was removed:
- ----- Method: FileList2>>publishingServers (in category 'initialization') -----
- publishingServers
-
- | dirList |
-
- dirList := OrderedCollection new.
- ServerDirectory serverNames do: [ :n | | dir nameToShow |
- dir := ServerDirectory serverNamed: n.
- (dir isProjectSwiki and: [dir acceptsUploads])
- ifTrue: [
- nameToShow := n.
- dirList add: ((dir directoryWrapperClass with: dir name: nameToShow model: self)
- balloonText: dir realUrl)]].
- ^dirList!

Item was removed:
- ----- Method: FileList2>>removeLinefeeds (in category 'own services') -----
- removeLinefeeds
- "Remove any line feeds by converting to CRs instead.  This is a temporary implementation for 3.6 only... should be removed during 3.7alpha."
- | fileContents |
- fileContents := ((FileStream readOnlyFileNamed: self fullName) wantsLineEndConversion: true) contentsOfEntireFile.
- (FileStream newFileNamed: self fullName)
- nextPutAll: fileContents;
- close.!

Item was removed:
- ----- Method: FileList2>>saveLocalOnlyHit (in category 'private') -----
- saveLocalOnlyHit
- ok := true.
- modalView delete.
- directory := fileName := nil.
- currentDirectorySelected := #localOnly.!

Item was removed:
- ----- Method: FileList2>>serviceCancel (in category 'own services') -----
- serviceCancel
- "Answer a service for hitting the cancel button"
-
- ^ (SimpleServiceEntry new
- provider: self label: 'cancel' selector: #cancelHit
- description: 'hit here to cancel ')
- buttonLabel: 'cancel'!

Item was removed:
- ----- Method: FileList2>>serviceOkay (in category 'own services') -----
- serviceOkay
- "Answer a service for hitting the okay button"
-
- ^ (SimpleServiceEntry new
- provider: self label: 'okay' selector: #okHit
- description: 'hit here to accept the current selection')
- buttonLabel: 'ok'!

Item was removed:
- ----- Method: FileList2>>serviceOpenProjectFromFile (in category 'own services') -----
- serviceOpenProjectFromFile
- "Answer a service for opening a .pr project file"
-
- ^ SimpleServiceEntry
- provider: self
- label: 'load as project'
- selector: #openProjectFromFile
- description: 'open project from file'
- buttonLabel: 'load'!

Item was removed:
- ----- Method: FileList2>>servicesForFolderSelector (in category 'own services') -----
- servicesForFolderSelector
- "Answer the ok and cancel servies for the folder selector"
-
- ^ self okayAndCancelServices!

Item was removed:
- ----- Method: FileList2>>servicesForProjectLoader (in category 'own services') -----
- servicesForProjectLoader
- "Answer the services to show in the button pane for the project loader"
-
- ^ {self serviceSortByName. self serviceSortByDate. self serviceSortBySize. self serviceOpenProjectFromFile}!

Item was removed:
- ----- Method: FileList2>>setSelectedDirectoryTo: (in category 'private') -----
- setSelectedDirectoryTo: aFileDirectoryWrapper
- currentDirectorySelected := aFileDirectoryWrapper.
- self directory: aFileDirectoryWrapper withoutListWrapper.
- brevityState := #FileList.
- "self addPath: path."
- self changed: #fileList.
- self changed: #contents.
- self changed: #currentDirectorySelected.!

Item was removed:
- ----- Method: FileList2>>specsForImageViewer (in category 'as yet unclassified') -----
- specsForImageViewer
-
- ^{self serviceSortByName. self serviceSortByDate. self serviceSortBySize }!

Item was removed:
- ----- Method: FileList2>>universalButtonServices (in category 'initialization') -----
- universalButtonServices
- "Answer the services to be reflected in the receiver's buttons"
-
- ^ self optionalButtonSpecs!

Item was removed:
- ----- Method: FileList2>>updateDirectory (in category 'initialization') -----
- updateDirectory
- "directory has been changed externally, by calling directory:.
- Now change the view to reflect the change."
- self changed: #currentDirectorySelected.
- self postOpen.!


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Tools-fbs.484.mcz

Chris Muller-3
Good riddance.  :)

On Wed, Jul 10, 2013 at 6:45 AM,  <[hidden email]> wrote:

> Frank Shearar uploaded a new version of Tools to project The Trunk:
> http://source.squeak.org/trunk/Tools-fbs.484.mcz
>
> ==================== Summary ====================
>
> Name: Tools-fbs.484
> Author: fbs
> Time: 10 July 2013, 12:44:59.096 pm
> UUID: 883de497-3a88-4049-8d6b-2104778300b9
> Ancestors: Tools-dtl.483
>
> Deprecate FileList2. It looks like cruft. It has one user vocal enough to say he used it (Stephane Rollandin), and he says it's fine to remove it.
>
> =============== Diff against Tools-dtl.483 ===============
>
> Item was removed:
> - FileList subclass: #FileList2
> -       instanceVariableNames: 'showDirsInFileList currentDirectorySelected fileSelectionBlock dirSelectionBlock optionalButtonSpecs modalView directoryChangeBlock ok'
> -       classVariableNames: ''
> -       poolDictionaries: ''
> -       category: 'Tools-FileList'!
> - FileList2 class
> -       instanceVariableNames: 'lastSelDir'!
> -
> - !FileList2 commentStamp: 'BJP 11/19/2003 21:13' prior: 0!
> - Some variations on FileList that
> - - use a hierarchical pane to show folder structure
> - - use different pane combinations, button layouts and prefiltering for specific uses
> -
> - FileList2 morphicView openInWorld                             "an alternative to the standard FileList"
> - FileList2 morphicViewNoFile openInWorld                       "useful for selecting, but not viewing"
> - FileList2 morphicViewProjectLoader openInWorld        "useful for finding and loading projects"
> - FileList2 modalFolderSelector                                         "allows the user to select a folder"
> -
> -
> -
> - !
> - FileList2 class
> -       instanceVariableNames: 'lastSelDir'!
>
> Item was removed:
> - ----- Method: FileList2 class>>addFullPanesTo:from: (in category 'utility') -----
> - addFullPanesTo: window from: aCollection
> -
> -
> -
> -       aCollection do: [ :each | | frame |
> -               frame := LayoutFrame
> -                       fractions: each second
> -                       offsets: each third.
> -               window addMorph: each first fullFrame: frame.
> -       ]!
>
> Item was removed:
> - ----- Method: FileList2 class>>blueButtonText:textColor:color:inWindow: (in category 'blue ui') -----
> - blueButtonText: aString textColor: textColor color: aColor inWindow: window
> -       | result |
> -       result := window
> -                               fancyText: aString translated
> -                               font: Preferences standardEToysFont
> -                               color: textColor.
> -       result setProperty: #buttonText toValue: aString;
> -                hResizing: #rigid;
> -                extent: 100 @ 20;
> -                layoutInset: 4;
> -                borderWidth: ColorTheme current dialogButtonBorderWidth;
> -                useRoundedCorners.
> -       aColor isNil
> -               ifFalse: [""result color: aColor. result borderColor: aColor muchDarker].
> -       ^ result!
>
> Item was removed:
> - ----- Method: FileList2 class>>blueButtonText:textColor:color:inWindow:balloonText:selector:recipient: (in category 'blue ui') -----
> - blueButtonText: aString textColor: textColor color: aColor inWindow: window balloonText: balloonText selector: sel recipient: recip
> -       | result |
> -       result := window
> -                               fancyText: aString translated
> - font: Preferences standardEToysFont
> -                               color: textColor.
> -       result setProperty: #buttonText toValue: aString;
> -                hResizing: #rigid;
> -                extent: 100 @ 20;
> -                layoutInset: 4;
> -                borderWidth: ColorTheme current dialogButtonBorderWidth;
> -                useRoundedCorners;
> -                setBalloonText: balloonText.
> -       result
> -               on: #mouseUp
> -               send: sel
> -               to: recip.
> -       aColor isNil
> -               ifFalse: [""
> -                       result color: aColor.
> -                       result borderColor: aColor muchDarker].
> -       ^ result!
>
> Item was removed:
> - ----- Method: FileList2 class>>blueButtonText:textColor:inWindow: (in category 'blue ui') -----
> - blueButtonText: aString textColor: textColor inWindow: window
> -       ^ self
> -               blueButtonText: aString
> -               textColor: textColor
> -               color: nil
> -               inWindow: window!
>
> Item was removed:
> - ----- Method: FileList2 class>>blueButtonText:textColor:inWindow:balloonText:selector:recipient: (in category 'blue ui') -----
> - blueButtonText: aString textColor: textColor inWindow: window balloonText: balloonText selector: sel recipient: recip
> -       ^ self
> -               blueButtonText: aString
> -               textColor: textColor
> -               color: nil
> -               inWindow: window
> -               balloonText: balloonText
> -               selector: sel
> -               recipient: recip !
>
> Item was removed:
> - ----- Method: FileList2 class>>enableTypeButtons:info:forDir: (in category 'blue ui') -----
> - enableTypeButtons: typeButtons info: fileTypeInfo forDir: aDirectory
> -
> -       | foundSuffixes firstEnabled |
> -
> -       firstEnabled := nil.
> -       foundSuffixes := (aDirectory ifNil: [ #()] ifNotNil: [ aDirectory fileNames]) collect: [ :each | (each findTokens: '.') last asLowercase].
> -       foundSuffixes := foundSuffixes asSet.
> -       fileTypeInfo with: typeButtons do: [ :info :button | | enableIt fileSuffixes |
> -               fileSuffixes := info second.
> -               enableIt := fileSuffixes anySatisfy: [ :patt | foundSuffixes includes: patt].
> -               button
> -                       setProperty: #enabled
> -                       toValue: enableIt.
> -               enableIt ifTrue: [firstEnabled ifNil: [firstEnabled := button]].
> -       ].
> -       firstEnabled ifNotNil: [^firstEnabled mouseUp: nil].
> -       typeButtons do: [ :each | each color: Color gray].
> -
> - !
>
> Item was removed:
> - ----- Method: FileList2 class>>endingSpecs (in category 'blue ui') -----
> - endingSpecs
> -       "Answer a collection of specs to build the selective 'find anything' tool called by the Navigator. This version uses the services registry to do so."
> -       "FileList2 morphicViewGeneralLoaderInWorld: World"
> -       | categories specs rejects |
> -       rejects := #(addFileToNewZip: compressFile: openInZipViewer: extractAllFrom: openOn:).
> -       categories := #(
> -               ('Art' ('bmp' 'gif' 'jpg' 'jpeg' 'form' 'png' 'pcx' 'xbm' 'xpm' 'ppm' 'pbm'))
> -               ('Morphs' ('morph' 'morphs' 'sp'))
> -               ('Projects' ('extseg' 'project' 'pr'))
> -               ('MIDI' ('mid' 'midi'))
> -               ('Music' ('mp3'))
> -               ('Movies' ('movie' 'mpg' 'mpeg' 'qt' 'mov'))
> -               ('Flash' ('swf'))
> -       ).
> -
> -               "('Books' ('bo'))"
> -               "('Code' ('st' 'cs'))"
> -               "('TrueType' ('ttf'))"
> -               "('3ds' ('3ds'))"
> -               "('Tape' ('tape'))"
> -               "('Wonderland' ('wrl'))"
> -               "('HTML' ('htm' 'html'))"
> -
> -       categories first at: 2 put: ImageReadWriter allTypicalFileExtensions.
> -       specs := OrderedCollection new.
> -       categories do: [ :cat | | catSpecs catServices okExtensions services |
> -               services := Dictionary new.
> -               catSpecs := Array new: 3.
> -               catServices := OrderedCollection new.
> -               okExtensions := Set new.
> -
> -               cat second do: [ :ext | (FileList itemsForFile: 'fred.',ext) do: [ :i |
> -                       (rejects includes: i selector) ifFalse: [
> -                               okExtensions add: ext.
> -                               services at: i label put: i ]]].
> -               services do: [ :svc | catServices add: svc ].
> -               services isEmpty ifFalse: [
> -                       catSpecs at: 1 put: cat first;
> -                               at: 2 put: okExtensions;
> -                               at: 3 put: catServices.
> -                       specs add: catSpecs ]
> -       ].
> -       ^specs
> - !
>
> Item was removed:
> - ----- Method: FileList2 class>>hideSqueakletDirectoryBlock (in category 'as yet unclassified') -----
> - hideSqueakletDirectoryBlock
> -       ^[:dirName| (dirName sameAs: 'Squeaklets') not]!
>
> Item was removed:
> - ----- Method: FileList2 class>>lastSelDir (in category 'accessing') -----
> - lastSelDir
> -       "Return the last selected directory or the default directory if no directory was selected so far."
> -
> -       ^lastSelDir ifNil: [ lastSelDir := FileDirectory default ]!
>
> Item was removed:
> - ----- Method: FileList2 class>>lastSelDir: (in category 'accessing') -----
> - lastSelDir: aFileDirectory
> -       "Store the last selected directory. This will be selected as default in newly opened file or folder selectors"
> -
> -       ^lastSelDir := aFileDirectory!
>
> Item was removed:
> - ----- Method: FileList2 class>>modalFileSelector (in category 'modal dialogs') -----
> - modalFileSelector
> -
> -       | window |
> -
> -       window := self morphicViewFileSelector.
> -       window openCenteredInWorld.
> -       self modalLoopOn: window.
> -       ^(window valueOfProperty: #fileListModel) getSelectedFile!
>
> Item was removed:
> - ----- Method: FileList2 class>>modalFileSelectorForSuffixes: (in category 'modal dialogs') -----
> - modalFileSelectorForSuffixes: aList
> -
> -       | window aFileList |
> -
> -       window := self morphicViewFileSelectorForSuffixes: aList.
> -       aFileList := window valueOfProperty: #fileListModel.
> -       window openCenteredInWorld.
> -       self modalLoopOn: window.
> -       ^aFileList getSelectedFile!
>
> Item was removed:
> - ----- Method: FileList2 class>>modalFileSelectorForSuffixes:directory: (in category 'modal dialogs') -----
> - modalFileSelectorForSuffixes: aList directory: aDirectory
> -
> -       | window aFileList |
> -
> -       window := self morphicViewFileSelectorForSuffixes: aList directory: aDirectory.
> -       aFileList := window valueOfProperty: #fileListModel.
> -       window openCenteredInWorld.
> -       self modalLoopOn: window.
> -       ^aFileList getSelectedFile!
>
> Item was removed:
> - ----- Method: FileList2 class>>modalFolderSelector (in category 'modal dialogs') -----
> - modalFolderSelector
> -
> -       ^self modalFolderSelector: self lastSelDir
> -       !
>
> Item was removed:
> - ----- Method: FileList2 class>>modalFolderSelector: (in category 'modal dialogs') -----
> - modalFolderSelector: aDir
> -
> -       | window fileModel |
> -       window := self morphicViewFolderSelector: aDir.
> -       fileModel := window model.
> -       window openInWorld: self currentWorld extent: 300@400.
> -       self modalLoopOn: window.
> -       ^fileModel getSelectedDirectory withoutListWrapper!
>
> Item was removed:
> - ----- Method: FileList2 class>>modalFolderSelectorForProject: (in category 'modal dialogs') -----
> - modalFolderSelectorForProject: aProject
> - "
> - FileList2 modalFolderSelectorForProject: Project current
> - "
> -       | window fileModel w |
> -
> -       window := FileList2 morphicViewProjectSaverFor: aProject.
> -       fileModel := window valueOfProperty: #FileList.
> -       w := self currentWorld.
> -       window position: w topLeft + (w extent - window extent // 2).
> -       w addMorphInLayer: window.
> -       w startSteppingSubmorphsOf: window.
> -       self modalLoopOn: window.
> -       ^fileModel getSelectedDirectory withoutListWrapper!
>
> Item was removed:
> - ----- Method: FileList2 class>>modalFolderSelectorForProjectLoad (in category 'modal dialogs') -----
> - modalFolderSelectorForProjectLoad
> -
> -       | window fileModel w |
> -
> -       window := self morphicViewProjectLoader2InWorld: self currentWorld reallyLoad: false.
> -       fileModel := window valueOfProperty: #FileList.
> -       w := self currentWorld.
> -       window position: w topLeft + (w extent - window extent // 2).
> -       window openInWorld: w.
> -       self modalLoopOn: window.
> -       ^fileModel getSelectedDirectory withoutListWrapper!
>
> Item was removed:
> - ----- Method: FileList2 class>>modalLoopOn: (in category 'utility') -----
> - modalLoopOn: aMorph
> -       [aMorph world notNil] whileTrue: [
> -               aMorph outermostWorldMorph doOneCycle.
> -       ].!
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewFileSelector (in category 'morphic ui') -----
> - morphicViewFileSelector
> -
> -       ^self morphicViewFileSelectorForSuffixes: nil
> - !
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewFileSelectorForSuffixes: (in category 'morphic ui') -----
> - morphicViewFileSelectorForSuffixes: aList
> -       "Answer a morphic file-selector tool for the given suffix list."
> -
> -       ^self morphicViewFileSelectorForSuffixes: aList directory: self lastSelDir!
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewFileSelectorForSuffixes:directory: (in category 'morphic ui') -----
> - morphicViewFileSelectorForSuffixes: aList directory: dir
> -       "Answer a morphic file-selector tool for the given suffix list and the given directory."
> -
> -       | aFileList window fixedSize midLine gap |
> -       aFileList := self new directory: dir.
> -       aFileList optionalButtonSpecs: aFileList okayAndCancelServices.
> -       aList ifNotNil:
> -               [aFileList fileSelectionBlock: [:entry :myPattern |
> -                       entry isDirectory
> -                               ifTrue:
> -                                       [false]
> -                               ifFalse:
> -                                       [aList includes: (FileDirectory extensionFor: entry name asLowercase)]]].
> -       window := BorderedMorph new
> -               layoutPolicy: ProportionalLayout new;
> -               color: Color lightBlue;
> -               borderColor: Color blue;
> -               borderWidth: 4;
> -               layoutInset: 4;
> -               extent: 600@400;
> -               useRoundedCorners.
> -       window setProperty: #fileListModel toValue: aFileList.
> -       aFileList modalView: window.
> -       midLine := 0.4.
> -       fixedSize := 25.
> -       gap := 5.
> -       self addFullPanesTo: window from: {
> -               {self textRow: 'Please select a file'. 0 @ 0 corner: 1 @ 0. 0@0 corner: 0@fixedSize}.
> -               {aFileList optionalButtonRow. 0 @ 0 corner: 1 @ 0. 0@fixedSize corner: 0@(fixedSize * 2)}.
> -               {aFileList morphicDirectoryTreePane. 0@0 corner: midLine@1.
> -                                       gap @(fixedSize * 2) corner: gap negated@0}.
> -               {aFileList morphicFileListPane. midLine @ 0 corner: 1@1.
> -                                       gap@(fixedSize * 2) corner: gap negated@0}.
> -       }.
> -
> -       aFileList postOpen.
> -
> -       ^ window !
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewFolderSelector (in category 'morphic ui') -----
> - morphicViewFolderSelector
> -
> -       ^self morphicViewFolderSelector: FileDirectory default!
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewFolderSelector: (in category 'morphic ui') -----
> - morphicViewFolderSelector: aDir
> -       "Answer a tool that allows the user to select a folder"
> -
> -       | aFileList window fixedSize |
> -       aFileList := self new directory: aDir.
> -       aFileList optionalButtonSpecs: aFileList servicesForFolderSelector.
> -       window := (SystemWindow labelled: aDir pathName) model: aFileList.
> -       aFileList modalView: window.
> -
> -       fixedSize := 25.
> -       self addFullPanesTo: window from: {
> -               {self textRow: 'Please select a folder'. 0 @ 0 corner: 1 @ 0.
> -                               0@0 corner: 0@fixedSize}.
> -               {aFileList optionalButtonRow. 0 @ 0 corner: 1 @ 0.
> -                               0@fixedSize corner: 0@(fixedSize * 2)}.
> -               {aFileList morphicDirectoryTreePane. 0@0 corner: 1@1.
> -                               0@(fixedSize * 2) corner: 0@0}.
> -       }.
> -       aFileList postOpen.
> -       ^ window !
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewGeneralLoaderInWorld: (in category 'blue ui') -----
> - morphicViewGeneralLoaderInWorld: aWorld
> - "
> - FileList2 morphicViewGeneralLoaderInWorld: self currentWorld
> - "
> -       | window aFileList buttons treePane textColor1 fileListPane pane2a pane2b fileTypeInfo fileTypeButtons fileTypeRow actionRow |
> -
> -       fileTypeInfo := self endingSpecs.
> -       window := AlignmentMorphBob1 newColumn.
> -       window hResizing: #shrinkWrap; vResizing: #shrinkWrap.
> -       textColor1 := Color r: 0.742 g: 0.839 b: 1.0.
> -       aFileList := self new directory: FileDirectory default.
> -       aFileList
> -               fileSelectionBlock: self projectOnlySelectionBlock;
> -               modalView: window.
> -       window
> -               setProperty: #FileList toValue: aFileList;
> -               wrapCentering: #center; cellPositioning: #topCenter;
> -               borderWidth: ColorTheme current dialogBorderWidth;
> -               borderColor: ColorTheme current dialogBorderColor;
> -               useRoundedCorners.
> -
> -       fileTypeButtons := fileTypeInfo collect: [ :each |
> -               (self blueButtonText: each first textColor: Color gray inWindow: window)
> -                       setProperty: #enabled toValue: true;
> -                       hResizing: #shrinkWrap;
> -                       useSquareCorners
> -       ].
> -       buttons := {{'OK'. ColorTheme current okColor}. {'Cancel'. ColorTheme current cancelColor}} collect: [ :each |
> -               self blueButtonText: each first textColor: textColor1 color: each second inWindow: window
> -       ].
> -
> -       treePane := aFileList morphicDirectoryTreePane
> -               extent: 250@300;
> -               retractable: false;
> -               borderWidth: 0.
> -       fileListPane := aFileList morphicFileListPane
> -               extent: 350@300;
> -               retractable: false;
> -               borderWidth: 0.
> -       window addARow: {window fancyText: 'Find...' translated font: Preferences standardEToysTitleFont color: textColor1}.
> -       fileTypeRow := window addARowCentered: fileTypeButtons cellInset: 2.
> -       actionRow := window addARowCentered: {
> -               buttons first.
> -               (Morph new extent: 30@5) color: Color transparent.
> -               buttons second
> -       } cellInset: 2.
> -       window
> -               addARow: {
> -                               (window inAColumn: {(pane2a := window inARow: {window inAColumn: {treePane}})
> -                                       useRoundedCorners;
> -                                       layoutInset: 0;
> -                                       borderWidth: ColorTheme current dialogPaneBorderWidth;
> -                                       borderColor: ColorTheme current dialogPaneBorderColor
> -                               }) layoutInset: 10.
> -                               (window inAColumn: {(pane2b := window inARow: {window inAColumn: {fileListPane}})
> -                                       useRoundedCorners;
> -                                       layoutInset: 0;
> -                                       borderWidth: ColorTheme current dialogPaneBorderWidth;
> -                                       borderColor: ColorTheme current dialogPaneBorderColor
> -                               }) layoutInset: 10.
> -               }.
> -       window fullBounds.
> -       window fillWithRamp: ColorTheme current dialogRampOrColor oriented: 0.65.
> -       pane2a fillWithRamp: ColorTheme current dialogPaneRampOrColor oriented: (0.7 @ 0.35).
> -       pane2b fillWithRamp: ColorTheme current dialogPaneRampOrColor oriented: (0.7 @ 0.35).
> - "
> -       buttons do: [ :each |
> -               each fillWithRamp: ColorTheme current dialogButtonsRampOrColor oriented: (0.75 @ 0).
> -       ].
> - "
> -       fileTypeButtons do: [ :each |
> -               each
> -                       on: #mouseUp
> -                       send: #value:value:
> -                       to: [ :evt :morph |
> -                               self update: actionRow in: window fileTypeRow: fileTypeRow morphUp: morph.
> -                       ]
> -       ].
> -       buttons first on: #mouseUp send: #okHit to: aFileList.
> -       buttons second on: #mouseUp send: #cancelHit to: aFileList.
> -       aFileList postOpen.
> -       window position: aWorld topLeft + (aWorld extent - window extent // 2).
> -       aFileList directoryChangeBlock: [ :newDir |
> -               self update: actionRow in: window fileTypeRow: fileTypeRow morphUp: nil.
> -               self enableTypeButtons: fileTypeButtons info: fileTypeInfo forDir: newDir.
> -       ].
> -       aFileList directory: aFileList directory.
> -       window adoptPaneColor: (Color r: 0.548 g: 0.677 b: 1.0).
> -       window becomeModal.
> -       ^ window openInWorld: aWorld.!
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewImageViewer (in category 'morphic ui') -----
> - morphicViewImageViewer
> -
> -       | dir aFileList window midLine fixedSize |
> -
> -       dir := FileDirectory default.
> -       aFileList := self new directory: dir.
> -       aFileList optionalButtonSpecs: aFileList specsForImageViewer.
> -       aFileList fileSelectionBlock: [ :entry :myPattern |
> -               entry isDirectory ifTrue: [
> -                       false
> -               ] ifFalse: [
> -                       #('bmp' 'gif' 'jpg' 'form' 'png') includes:
> -                                        (FileDirectory extensionFor: entry name asLowercase)
> -               ]
> -       ].
> -       window := (SystemWindow labelled: dir pathName) model: aFileList.
> -
> -       fixedSize := 25.
> -       midLine := 0.4.
> -       self addFullPanesTo: window from: {
> -               {aFileList optionalButtonRow. 0 @ 0 corner: 1 @ 0.
> -                               0@0 corner: 0@fixedSize}.
> -               {aFileList morphicDirectoryTreePane. 0@0 corner: midLine@1.
> -                               0@fixedSize corner: 0@0}.
> -               {aFileList morphicFileListPane. midLine @ 0 corner: 1@1.
> -                               0@fixedSize corner: 0@0}.
> -       }.
> -       aFileList postOpen.
> -       ^ window !
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewNoFile (in category 'morphic ui') -----
> - morphicViewNoFile
> -
> -       | dir aFileList window midLine fixedSize |
> -
> -       dir := FileDirectory default.
> -       aFileList := self new directory: dir.
> -       window := (SystemWindow labelled: dir pathName) model: aFileList.
> -
> -       fixedSize := 25.
> -       midLine := 0.4.
> -       self addFullPanesTo: window from: {
> -               {aFileList morphicPatternPane. 0@0 corner: 0.3@0. 0@0 corner: 0@fixedSize}.
> -               {aFileList optionalButtonRow. 0.3 @ 0 corner: 1@0. 0@0 corner: 0@fixedSize}.
> -               {aFileList morphicDirectoryTreePane. 0@0 corner: midLine@1. 0@fixedSize corner: 0@0}.
> -               {aFileList morphicFileListPane. midLine @ 0 corner: 1@1. 0@fixedSize corner: 0@0}.
> -       }.
> -       aFileList postOpen.
> -       ^ window !
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewProjectLoader (in category 'morphic ui') -----
> - morphicViewProjectLoader
> -
> -       | dir aFileList window midLine fixedSize |
> -
> -       dir := FileDirectory default.
> -       aFileList := self new directory: dir.
> -       aFileList optionalButtonSpecs: aFileList servicesForProjectLoader.
> -       aFileList fileSelectionBlock: self projectOnlySelectionBlock.
> -       window := (SystemWindow labelled: dir pathName) model: aFileList.
> -
> -       fixedSize := 25.
> -       midLine := 0.4.
> -       self addFullPanesTo: window from: {
> -               {aFileList optionalButtonRow. 0 @ 0 corner: 1 @ 0. 0@0 corner: 0@fixedSize}.
> -               {aFileList morphicDirectoryTreePane. 0@0 corner: midLine@1. 0@fixedSize corner: 0@0}.
> -               {aFileList morphicFileListPane. midLine @ 0 corner: 1@1. 0@fixedSize corner: 0@0}.
> -       }.
> -       aFileList postOpen.
> -       ^ window !
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewProjectLoader2InWorld: (in category 'blue ui') -----
> - morphicViewProjectLoader2InWorld: aWorld
> -
> -       ^self morphicViewProjectLoader2InWorld: aWorld reallyLoad: true!
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewProjectLoader2InWorld:reallyLoad: (in category 'blue ui') -----
> - morphicViewProjectLoader2InWorld: aWorld reallyLoad: aBoolean
> -
> -       ^self
> -               morphicViewProjectLoader2InWorld: aWorld
> -               reallyLoad: aBoolean
> -               dirFilterType: #initialDirectoryList
> - !
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewProjectLoader2InWorld:reallyLoad:dirFilterType: (in category 'blue ui') -----
> - morphicViewProjectLoader2InWorld: aWorld reallyLoad: aBoolean dirFilterType: aSymbol
> -
> -       | window aFileList buttons treePane textColor1 fileListPane pane2a pane2b treeExtent filesExtent |
> -
> -       window := AlignmentMorphBob1 newColumn.
> -       window hResizing: #shrinkWrap; vResizing: #shrinkWrap.
> -       textColor1 := Color r: 0.742 g: 0.839 b: 1.0.
> -       aFileList := self new directory: FileDirectory default.
> -       aFileList
> -               optionalButtonSpecs: aFileList servicesForProjectLoader;
> -               fileSelectionBlock: (
> -                       aSymbol == #limitedSuperSwikiDirectoryList ifTrue: [
> -                               MessageSend receiver: self selector: #projectOnlySelectionMethod:
> -                       ] ifFalse: [
> -                               self projectOnlySelectionBlock
> -                       ]
> -               );
> -               "dirSelectionBlock: self hideSqueakletDirectoryBlock;"
> -               modalView: window.
> -       window
> -               setProperty: #FileList toValue: aFileList;
> -               wrapCentering: #center; cellPositioning: #topCenter;
> -               borderWidth: ColorTheme current dialogBorderWidth;
> -               borderColor: ColorTheme current dialogBorderColor;
> -               useRoundedCorners.
> -       buttons := {{'OK'. ColorTheme current okColor}. {'Cancel'. ColorTheme current cancelColor}} collect: [ :each |
> -               self blueButtonText: each first textColor: textColor1 color: each second inWindow: window
> -       ].
> -
> -       aWorld width < 800 ifTrue: [
> -               treeExtent := 150@300.
> -               filesExtent := 350@300.
> -       ] ifFalse: [
> -               treeExtent := 250@300.
> -               filesExtent := 350@300.
> -       ].
> -       (treePane := aFileList morphicDirectoryTreePaneFiltered: aSymbol)
> -               extent: treeExtent;
> -               retractable: false;
> -               borderWidth: 0.
> -       fileListPane := aFileList morphicFileListPane
> -               extent: filesExtent;
> -               retractable: false;
> -               borderWidth: 0.
> -       window
> -               addARow: {
> -                       window fancyText: 'Load A Project' translated font: Preferences standardEToysTitleFont color: textColor1
> -               };
> -               addARowCentered: {
> -                       buttons first.
> -                       (Morph new extent: 30@5) color: Color transparent.
> -                       buttons second
> -               };
> -               addARow: {
> -                       window fancyText: 'Please select a project' translated  font: Preferences standardEToysFont color: textColor1
> -               };
> -               addARow: {
> -                               (window inAColumn: {(pane2a := window inARow: {window inAColumn: {treePane}})
> -                                       useRoundedCorners;
> -                                       layoutInset: 0;
> -                                       borderWidth: ColorTheme current dialogPaneBorderWidth;
> -                                       borderColor: ColorTheme current dialogPaneBorderColor
> -                               }) layoutInset: 10.
> -                               (window inAColumn: {(pane2b := window inARow: {window inAColumn: {fileListPane}})
> -                                       useRoundedCorners;
> -                                       layoutInset: 0;
> -                                       borderWidth: ColorTheme current dialogPaneBorderWidth;
> -                                       borderColor: ColorTheme current dialogPaneBorderColor
> -                               }) layoutInset: 10.
> -               }.
> -       window fullBounds.
> -       window fillWithRamp: ColorTheme current dialogRampOrColor oriented: 0.65.
> -       pane2a fillWithRamp: ColorTheme current dialogPaneRampOrColor oriented: (0.7 @ 0.35).
> -       pane2b fillWithRamp: ColorTheme current dialogPaneRampOrColor oriented: (0.7 @ 0.35).
> - "
> -       buttons do: [ :each |
> -               each fillWithRamp: ColorTheme current dialogButtonsRampOrColor oriented: (0.75 @ 0).
> -       ].
> - "
> -       buttons first
> -               on: #mouseUp
> -               send: (aBoolean ifTrue: [#okHitForProjectLoader] ifFalse: [#okHit])
> -               to: aFileList.
> -       buttons second on: #mouseUp send: #cancelHit to: aFileList.
> -       aFileList postOpen.
> -       window position: aWorld topLeft + (aWorld extent - window extent // 2).
> -       window adoptPaneColor: (Color r: 0.548 g: 0.677 b: 1.0).
> -       window becomeModal.
> -       ^ window openInWorld: aWorld.!
>
> Item was removed:
> - ----- Method: FileList2 class>>morphicViewProjectSaverFor: (in category 'blue ui') -----
> - morphicViewProjectSaverFor: aProject
> - "
> - (FileList2 morphicViewProjectSaverFor: Project current) openInWorld
> - "
> -       | window aFileList buttons treePane pane2 textColor1 option treeExtent buttonData buttonRow |
> -
> -       textColor1 := Color r: 0.742 g: 0.839 b: 1.0.
> -       aFileList := self new directory: ServerDirectory projectDefaultDirectory.
> -       aFileList dirSelectionBlock: self hideSqueakletDirectoryBlock.
> -       window := AlignmentMorphBob1 newColumn.
> -       window hResizing: #shrinkWrap; vResizing: #shrinkWrap.
> -       aFileList modalView: window.
> -       window
> -               setProperty: #FileList toValue: aFileList;
> -               wrapCentering: #center; cellPositioning: #topCenter;
> -               borderWidth: ColorTheme current dialogBorderWidth;
> -               borderColor: ColorTheme current dialogBorderColor;
> -               useRoundedCorners.
> -
> -       buttonData := Preferences enableLocalSave
> -                               ifTrue: [{
> -                                                       {'Save'. #okHit. 'Save in the place specified below, and in the Squeaklets folder on your local disk'. ColorTheme current okColor}.
> -                                                       {'Save on local disk only'. #saveLocalOnlyHit. 'saves in the Squeaklets folder'. ColorTheme current okColor}.
> -                                                       {'Cancel'. #cancelHit. 'return without saving'. ColorTheme current cancelColor}
> -                                               }]
> -                               ifFalse: [{
> -                                                       {'Save'. #okHit. 'Save in the place specified below, and in the Squeaklets folder on your local disk'. ColorTheme current okColor}.
> -                                                       {'Cancel'. #cancelHit. 'return without saving'. ColorTheme current cancelColor}
> -                                               }].
> -       buttons := buttonData collect: [ :each |
> -               (self blueButtonText: each first textColor: textColor1 color: each fourth inWindow: window)
> -                       setBalloonText: each third translated;
> -                       hResizing: #shrinkWrap;
> -                       on: #mouseUp send: each second to: aFileList
> -       ].
> -
> -       option := aProject world
> -               valueOfProperty: #SuperSwikiPublishOptions
> -               ifAbsent: [#initialDirectoryList].
> -       aProject world removeProperty: #SuperSwikiPublishOptions.
> -
> -       treeExtent := World height < 500
> -                                               ifTrue: [ 350@150 ]
> -                                               ifFalse: [ 350@300 ].
> -
> -       (treePane := aFileList morphicDirectoryTreePaneFiltered: option)
> -               extent: treeExtent;
> -               retractable: false;
> -               borderWidth: 0.
> -       window
> -               addARowCentered: {
> -                       window fancyText: 'Publish This Project' translated font: Preferences standardEToysTitleFont color: textColor1
> -               }.
> -       buttonRow := OrderedCollection new.
> -       buttons do: [:button | buttonRow add: button] separatedBy: [buttonRow add: ((Morph new extent: 30@5) color: Color transparent)].
> -
> - "     addARowCentered: {
> -                       buttons first.
> -                       (Morph new extent: 30@5) color: Color transparent.
> -                       buttons second.
> -                       (Morph new extent: 30@5) color: Color transparent.
> -                       buttons third
> -               };"
> -       window
> -               addARowCentered: buttonRow;
> -               addARowCentered: { (window inAColumn: {(ProjectViewMorph on: aProject) lock}) layoutInset: 4};
> -               addARowCentered: {
> -                       window fancyText: 'Please select a folder' translated font: Preferences standardEToysFont color: textColor1
> -               };
> -               addARow: {
> -                       (
> -                               window inAColumn: {
> -                                       (pane2 := window inARow: {window inAColumn: {treePane}})
> -                                               useRoundedCorners;
> -                                               layoutInset: 0;
> -                                               borderWidth: ColorTheme current dialogPaneBorderWidth;
> -                                               borderColor: ColorTheme current dialogPaneBorderColor
> -                               }
> -                       ) layoutInset: 10
> -               }.
> -       window fullBounds.
> -       window fillWithRamp: ColorTheme current dialogRampOrColor oriented: 0.65.
> -       pane2 fillWithRamp: ColorTheme current dialogPaneRampOrColor oriented: (0.7 @ 0.35).
> - "
> -       buttons do: [ :each |
> -               each fillWithRamp: ColorTheme current dialogButtonsRampOrColor oriented: (0.75 @ 0).
> -       ].
> - "
> -       window setProperty: #morphicLayerNumber toValue: 11.
> -       aFileList postOpen.
> -       window adoptPaneColor: (Color r: 0.548 g: 0.677 b: 1.0).
> -       ^ window !
>
> Item was removed:
> - ----- Method: FileList2 class>>openMorphicViewInWorld (in category 'instance creation') -----
> - openMorphicViewInWorld
> -       "FileList2 openMorphicViewInWorld"
> -       ^self morphicView openInWorld!
>
> Item was removed:
> - ----- Method: FileList2 class>>projectOnlySelectionBlock (in category 'as yet unclassified') -----
> - projectOnlySelectionBlock
> -
> -       ^[ :entry :myPattern |
> -               entry isDirectory ifTrue: [
> -                       false
> -               ] ifFalse: [
> -                       #('*.pr' '*.pr.gz' '*.project') anySatisfy: [ :each | each match: entry name]
> -               ]
> -       ]!
>
> Item was removed:
> - ----- Method: FileList2 class>>projectOnlySelectionMethod: (in category 'as yet unclassified') -----
> - projectOnlySelectionMethod: incomingEntries
> -
> -       | versionsAccepted |
> -
> -       "this shows only the latest version of each project"
> -       versionsAccepted := Dictionary new.
> -       incomingEntries do: [ :entry | | basicInfoTuple basicVersion basicName |
> -               entry isDirectory ifFalse: [
> -                       (#('*.pr' '*.pr.gz' '*.project') anySatisfy: [ :each | each match: entry name]) ifTrue: [
> -                               basicInfoTuple := Project parseProjectFileName: entry name.
> -                               basicName := basicInfoTuple first.
> -                               basicVersion := basicInfoTuple second.
> -                               ((versionsAccepted includesKey: basicName) and:
> -                                               [(versionsAccepted at: basicName) first > basicVersion]) ifFalse: [
> -                                       versionsAccepted at: basicName put: {basicVersion. entry}
> -                               ].
> -                       ]
> -               ]
> -       ].
> -       ^versionsAccepted asArray collect: [ :each | each second]!
>
> Item was removed:
> - ----- Method: FileList2 class>>prototypicalToolWindow (in category 'instance creation') -----
> - prototypicalToolWindow
> -       "Answer an example of myself seen in a tool window, for the benefit of parts-launching tools"
> -
> -       ^ self morphicView applyModelExtent!
>
> Item was removed:
> - ----- Method: FileList2 class>>selectionBlockForSuffixes: (in category 'as yet unclassified') -----
> - selectionBlockForSuffixes: anArray
> -
> -       ^[ :entry :myPattern |
> -               entry isDirectory ifTrue: [
> -                       false
> -               ] ifFalse: [
> -                       anArray anySatisfy: [ :each | each match: entry name]
> -               ]
> -       ]!
>
> Item was removed:
> - ----- Method: FileList2 class>>textRow: (in category 'utility') -----
> - textRow: aString
> -
> -       ^AlignmentMorph newRow
> -               wrapCentering: #center; cellPositioning: #leftCenter;
> -               color: Color transparent;
> -               layoutInset: 0;
> -               addMorph: (
> -                       AlignmentMorph newColumn
> -                       wrapCentering: #center; cellPositioning: #topCenter;
> -                       color: Color transparent;
> -                       vResizing: #shrinkWrap;
> -                       layoutInset: 0;
> -                       addMorph: (
> -                               AlignmentMorph newRow
> -                               wrapCentering: #center; cellPositioning: #leftCenter;
> -                               color: Color transparent;
> -                               hResizing: #shrinkWrap;
> -                               vResizing: #shrinkWrap;
> -                               layoutInset: 0;
> -                               addMorph: ((StringMorph contents: aString) color: Color blue; lock)
> -                       )
> -               )!
>
> Item was removed:
> - ----- Method: FileList2 class>>update:in:fileTypeRow:morphUp: (in category 'morphic ui') -----
> - update: actionRow in: window fileTypeRow: fileTypeRow morphUp: morph
> -
> -       | fileTypeInfo info2 buttons textColor1 fileSuffixes fileActions aFileList fileTypeString |
> -
> -       (morph notNil and:[(morph valueOfProperty: #enabled) not]) ifTrue: [^self].
> -       fileTypeRow submorphsDo: [ :sub |
> -               sub color: (
> -                       sub == morph
> -                               ifTrue: [Color white]
> -                               ifFalse: [(sub valueOfProperty: #enabled)
> -                                                       ifTrue: [Color transparent] ifFalse: [Color gray]]
> -               ).
> -       ].
> -       fileTypeString := morph isNil ifTrue:['xxxx'] ifFalse:[morph valueOfProperty: #buttonText].
> -
> -       aFileList := window valueOfProperty: #FileList.
> -       textColor1 := Color r: 0.742 g: 0.839 b: 1.0.
> -       actionRow removeAllMorphs.
> -       fileTypeInfo := self endingSpecs.
> -       info2 := fileTypeInfo detect: [ :each | each first = fileTypeString] ifNone: [ nil ].
> -       info2 isNil
> -               ifTrue:[
> -                       buttons := OrderedCollection new
> -               ]
> -               ifFalse:[
> -                       fileSuffixes := info2 second.
> -                       fileActions := info2 third.
> -                       buttons := fileActions collect: [ :each | aFileList blueButtonForService: each textColor: textColor1 inWindow: window ].
> -                       buttons do: [ :each |
> -                               each fillWithRamp: ColorTheme current okColor oriented: (0.75 @ 0).
> -                       ].
> -               ].
> -       buttons addLast: (self
> -                                                               blueButtonText: 'Cancel'
> -                                                               textColor: textColor1
> -                                                               color: ColorTheme current cancelColor
> -                                                               inWindow: window
> -                                                               balloonText: 'Cancel this search' selector: #cancelHit recipient: aFileList).
> -       buttons do: [ :each | actionRow addMorphBack: each].
> -       window fullBounds.
> -       fileSuffixes isNil ifFalse:[
> -               aFileList fileSelectionBlock: (
> -                       self selectionBlockForSuffixes: (fileSuffixes collect: [ :each | '*.',each])
> -               ).
> -       ].
> -       aFileList updateFileList.!
>
> Item was removed:
> - ----- Method: FileList2>>addNewDirectory (in category 'own services') -----
> - addNewDirectory
> -       super addNewDirectory.
> -       self updateDirectory.!
>
> Item was removed:
> - ----- Method: FileList2>>blueButtonForService:textColor:inWindow: (in category 'user interface') -----
> - blueButtonForService: aService textColor: textColor inWindow: window
> -       | block result |
> -       block := [self fullName isNil
> -                               ifTrue: [self inform: 'Please select a file' translated]
> -                               ifFalse: [aService performServiceFor: self]].
> -       result := window
> -                               fancyText: aService buttonLabel capitalized translated
> -                               font: Preferences standardEToysFont
> -                               color: textColor.
> -       result setProperty: #buttonText toValue: aService buttonLabel capitalized;
> -                hResizing: #rigid;
> -                extent: 100 @ 20;
> -                layoutInset: 4;
> -                borderWidth: ColorTheme current dialogButtonBorderWidth;
> -                useRoundedCorners;
> -                setBalloonText: aService label.
> -       result
> -               on: #mouseUp
> -               send: #value
> -               to: block.
> -       ^ result!
>
> Item was removed:
> - ----- Method: FileList2>>cancelHit (in category 'private') -----
> - cancelHit
> -
> -       modalView delete.
> -       directory := fileName := currentDirectorySelected := nil.!
>
> Item was removed:
> - ----- Method: FileList2>>changeDirectoryTo: (in category 'volume list and pattern') -----
> - changeDirectoryTo: aFileDirectory
> -       "Change directory as requested."
> -
> -       self directory: aFileDirectory.
> -       self updateDirectory!
>
> Item was removed:
> - ----- Method: FileList2>>currentDirectorySelected (in category 'private') -----
> - currentDirectorySelected
> -       ^ currentDirectorySelected
> - !
>
> Item was removed:
> - ----- Method: FileList2>>deleteDirectory (in category 'own services') -----
> - deleteDirectory
> -       super deleteDirectory.
> -       self updateDirectory.!
>
> Item was removed:
> - ----- Method: FileList2>>dirSelectionBlock: (in category 'initialization') -----
> - dirSelectionBlock: aBlock
> -       dirSelectionBlock := aBlock!
>
> Item was removed:
> - ----- Method: FileList2>>directory (in category 'volume list and pattern') -----
> - directory
> -
> -       ^directory!
>
> Item was removed:
> - ----- Method: FileList2>>directory: (in category 'initialization') -----
> - directory: dir
> -       "Set the path of the volume to be displayed."
> -
> -       self okToChange ifFalse: [^ self].
> -
> -       self modelSleep.
> -       directory := dir.
> -       self modelWakeUp.
> -
> -       sortMode == nil ifTrue: [sortMode := #date].
> -       volList := Array with: '[]'.
> -       directory ifNotNil: [
> -               volList := volList, directory pathParts.  "Nesting suggestion from RvL"
> -       ].
> -       volList := volList withIndexCollect: [:each :i | ( String new: i-1 withAll: $ ), each].
> -       self changed: #relabel.
> -       self changed: #volumeList.
> -       self pattern: pattern.
> -       directoryChangeBlock ifNotNil: [directoryChangeBlock value: directory].!
>
> Item was removed:
> - ----- Method: FileList2>>directoryChangeBlock: (in category 'initialization') -----
> - directoryChangeBlock: aBlockOrNil
> -
> -       directoryChangeBlock := aBlockOrNil.!
>
> Item was removed:
> - ----- Method: FileList2>>directoryNamesFor: (in category 'private') -----
> - directoryNamesFor: item
> -       "item may be file directory or server directory"
> -       | entries |
> -       entries := item directoryNames.
> -       dirSelectionBlock ifNotNil:[entries := entries select: dirSelectionBlock].
> -       ^entries!
>
> Item was removed:
> - ----- Method: FileList2>>dropDestinationDirectory:event: (in category 'drag''n''drop') -----
> - dropDestinationDirectory: dest event: evt
> -       "Answer a FileDirectory representing the drop destination in the directory hierarchy morph dest"
> - self isThisEverCalled.
> -       ^ (dest itemFromPoint: evt position) withoutListWrapper!
>
> Item was removed:
> - ----- Method: FileList2>>fileSelectionBlock: (in category 'initialization') -----
> - fileSelectionBlock: aBlock
> -
> -       fileSelectionBlock := aBlock!
>
> Item was removed:
> - ----- Method: FileList2>>getSelectedDirectory (in category 'private') -----
> - getSelectedDirectory
> -       ok == true ifFalse: [^ nil].
> -       ^ currentDirectorySelected
> - !
>
> Item was removed:
> - ----- Method: FileList2>>getSelectedFile (in category 'private') -----
> - getSelectedFile
> -       "Answer a filestream on the selected file.  If it cannot be opened for read/write, try read-only before giving up; answer nil if unsuccessful"
> -
> -       ok == true ifFalse: [^ nil].
> -       directory ifNil: [^ nil].
> -       fileName ifNil: [^ nil].
> -       ^ (directory oldFileNamed: fileName) ifNil:
> -               [directory readOnlyFileNamed: fileName]!
>
> Item was removed:
> - ----- Method: FileList2>>importImage (in category 'own services') -----
> - importImage
> -       "Import the given image file and store the resulting Form in the default Imports"
> -
> -       | fname image |
> -       fname := fileName sansPeriodSuffix.
> -       image := Form fromFileNamed: self fullName.
> -       Imports default importImage: image named: fname.
> - !
>
> Item was removed:
> - ----- Method: FileList2>>initialDirectoryList (in category 'initialization') -----
> - initialDirectoryList
> -
> -       | dirList |
> -       dirList := (FileDirectory on: '') directoryNames collect: [ :each |
> -               FileDirectoryWrapper with: (FileDirectory on: each) name: each model: self].
> -       dirList isEmpty ifTrue:[
> -               dirList := Array with: (FileDirectoryWrapper
> -                       with: FileDirectory default
> -                       name: FileDirectory default localName
> -                       model: self)].
> -       dirList := dirList,(
> -               ServerDirectory serverNames collect: [ :n | | nameToShow dir |
> -                       dir := ServerDirectory serverNamed: n.
> -                       nameToShow := n.
> -                       (dir directoryWrapperClass with: dir name: nameToShow model: self)
> -                               balloonText: dir realUrl
> -               ]
> -       ).
> -       ^dirList!
>
> Item was removed:
> - ----- Method: FileList2>>initialize (in category 'initialize-release') -----
> - initialize
> -
> -       super initialize.
> -       showDirsInFileList := false.
> -       fileSelectionBlock := [ :entry :myPattern |
> -               entry isDirectory ifTrue: [
> -                       showDirsInFileList
> -               ] ifFalse: [
> -                       myPattern = '*' or: [myPattern match: entry name]
> -               ]
> -       ].
> -       dirSelectionBlock := [ :dirName | true].!
>
> Item was removed:
> - ----- Method: FileList2>>isDirectoryList: (in category 'drag''n''drop') -----
> - isDirectoryList: aMorph
> -       ^aMorph isKindOf: SimpleHierarchicalListMorph!
>
> Item was removed:
> - ----- Method: FileList2>>labelString (in category 'initialization') -----
> - labelString
> -       ^ (directory ifNil: [^'[]']) pathName contractTo: 50!
>
> Item was removed:
> - ----- Method: FileList2>>limitedSuperSwikiDirectoryList (in category 'initialization') -----
> - limitedSuperSwikiDirectoryList
> -
> -       | dirList localDirName localDir |
> -
> -       dirList := OrderedCollection new.
> -       ServerDirectory serverNames do: [ :n | | dir nameToShow |
> -               dir := ServerDirectory serverNamed: n.
> -               dir isProjectSwiki ifTrue: [
> -                       nameToShow := n.
> -                       dirList add: ((dir directoryWrapperClass with: dir name: nameToShow model: self)
> -                               balloonText: dir realUrl)
> -               ].
> -       ].
> -       ServerDirectory localProjectDirectories do: [ :each |
> -               dirList add: (FileDirectoryWrapper with: each name: each localName model: self)
> -       ].
> -       "Make sure the following are always shown, but not twice"
> -       localDirName := SecurityManager default untrustedUserDirectory.
> -       localDir := FileDirectory on: localDirName.
> -       ((ServerDirectory localProjectDirectories collect: [:each | each pathName]) includes: localDirName)
> -                       ifFalse: [dirList add: (FileDirectoryWrapper with: localDir name: localDir localName model: self)].
> -       FileDirectory default pathName = localDirName
> -                       ifFalse: [dirList add: (FileDirectoryWrapper with: FileDirectory default name: FileDirectory default localName model: self)].
> -       (dirList anySatisfy: [:each | each withoutListWrapper acceptsUploads])
> -               ifFalse: [dirList add: (FileDirectoryWrapper with: FileDirectory default name: FileDirectory default localName model: self)].
> -       ^dirList!
>
> Item was removed:
> - ----- Method: FileList2>>limitedSuperSwikiPublishDirectoryList (in category 'initialization') -----
> - limitedSuperSwikiPublishDirectoryList
> -
> -       | dirList localDirName localDir |
> -
> -       dirList := self publishingServers.
> -       ServerDirectory localProjectDirectories do: [ :each |
> -               dirList add: (FileDirectoryWrapper with: each name: each localName model: self)].
> -
> -       "Make sure the following are always shown, but not twice"
> -       localDirName := SecurityManager default untrustedUserDirectory.
> -       localDir := FileDirectory on: localDirName.
> -       ((ServerDirectory localProjectDirectories collect: [:each | each pathName]) includes: localDirName)
> -                       ifFalse: [dirList add: (FileDirectoryWrapper with: localDir name: localDir localName model: self)].
> -       FileDirectory default pathName = localDirName
> -                       ifFalse: [dirList add: (FileDirectoryWrapper with: FileDirectory default name: FileDirectory default localName model: self)].
> -       ^dirList!
>
> Item was removed:
> - ----- Method: FileList2>>listForPattern: (in category 'volume list and pattern') -----
> - listForPattern: pat
> -       "Make the list be those file names which match the pattern."
> -
> -       | sizePad newList entries |
> -       directory ifNil: [^#()].
> -       entries := (Preferences eToyLoginEnabled
> -               and: [Utilities authorNamePerSe notNil])
> -               ifTrue: [directory matchingEntries: {'submittedBy: ' , Utilities authorName.} ]
> -               ifFalse: [directory entries].
> -       (fileSelectionBlock isKindOf: MessageSend) ifTrue: [
> -               fileSelectionBlock arguments: {entries}.
> -               newList := fileSelectionBlock value.
> -               fileSelectionBlock arguments: #().
> -       ] ifFalse: [
> -               newList := entries select: [:entry | fileSelectionBlock value: entry value: pat].
> -       ].
> -       newList := newList asArray sort: self sortBlock.
> -       sizePad := (newList inject: 0 into: [:mx :entry | mx max: entry fileSize])
> -                                       asStringWithCommas size - 1.
> -       ^newList collect: [ :e | self fileNameFormattedFrom: e sizePad: sizePad ]!
>
> Item was removed:
> - ----- Method: FileList2>>listForPatterns: (in category 'volume list and pattern') -----
> - listForPatterns: anArray
> -       "Make the list be those file names which match the patterns."
> -
> -       | sizePad newList |
> -       directory ifNil: [^#()].
> -       (fileSelectionBlock isKindOf: MessageSend) ifTrue: [
> -               fileSelectionBlock arguments: {directory entries}.
> -               newList := fileSelectionBlock value.
> -               fileSelectionBlock arguments: #().
> -       ] ifFalse: [
> -               newList := Set new.
> -               anArray do: [ :pat |
> -                       newList addAll: (directory entries select: [:entry | fileSelectionBlock value: entry value: pat]) ].
> -       ].
> -       newList := newList asArray sort: self sortBlock.
> -       sizePad := (newList inject: 0 into: [:mx :entry | mx max: entry fileSize])
> -                                       asStringWithCommas size.
> -       ^newList collect: [ :e | self fileNameFormattedFrom: e sizePad: sizePad ]!
>
> Item was removed:
> - ----- Method: FileList2>>modalView: (in category 'private') -----
> - modalView: aSystemWindowOrSuch
> -
> -       modalView := aSystemWindowOrSuch!
>
> Item was removed:
> - ----- Method: FileList2>>morphicDirectoryTreePane (in category 'user interface') -----
> - morphicDirectoryTreePane
> -
> -       ^self morphicDirectoryTreePaneFiltered: #initialDirectoryList
> - !
>
> Item was removed:
> - ----- Method: FileList2>>morphicDirectoryTreePaneFiltered: (in category 'user interface') -----
> - morphicDirectoryTreePaneFiltered: aSymbol
> -       ^(SimpleHierarchicalListMorph
> -               on: self
> -               list: aSymbol
> -               selected: #currentDirectorySelected
> -               changeSelected: #setSelectedDirectoryTo:
> -               menu: #volumeMenu:
> -               keystroke: nil)
> -                       autoDeselect: false;
> -                       enableDrag: false;
> -                       enableDrop: true;
> -                       yourself
> -
> - !
>
> Item was removed:
> - ----- Method: FileList2>>morphicFileContentsPane (in category 'user interface') -----
> - morphicFileContentsPane
> -
> -       ^PluggableTextMorph
> -               on: self
> -               text: #contents
> -               accept: #put:
> -               readSelection: #contentsSelection
> -               menu: #fileContentsMenu:shifted:
> - !
>
> Item was removed:
> - ----- Method: FileList2>>morphicFileListPane (in category 'user interface') -----
> - morphicFileListPane
> -
> -       ^(PluggableListMorph
> -               on: self
> -               list: #fileList
> -               selected: #fileListIndex
> -               changeSelected: #fileListIndex:
> -               menu: #fileListMenu:)
> -                       enableDrag: true;
> -                       enableDrop: false;
> -                       yourself
> -
> - !
>
> Item was removed:
> - ----- Method: FileList2>>morphicPatternPane (in category 'user interface') -----
> - morphicPatternPane
> -    | pane |
> -     pane := PluggableTextMorph
> -               on: self
> -               text: #pattern
> -               accept: #pattern:.
> -     pane acceptOnCR: true.
> -    ^pane
> -
> - !
>
> Item was removed:
> - ----- Method: FileList2>>okHit (in category 'private') -----
> - okHit
> -
> -       ok := true.
> -       currentDirectorySelected
> -               ifNil: [ Beeper beep ]
> -               ifNotNil: [
> -                       self class lastSelDir: directory.
> -                       modalView delete ]!
>
> Item was removed:
> - ----- Method: FileList2>>okHitForProjectLoader (in category 'private') -----
> - okHitForProjectLoader
> -
> -       | areaOfProgress |
> -       fileName ifNil: [^ self].
> -       ok := true.
> -       areaOfProgress := modalView firstSubmorph.
> -       [
> -               areaOfProgress setProperty: #deleteOnProgressCompletion toValue: modalView.
> -               self openProjectFromFile.
> -               modalView delete.       "probably won't get here"
> -       ]
> -               on: ProgressTargetRequestNotification
> -               do: [ :ex | ex resume: areaOfProgress].
> -
> -
> - !
>
> Item was removed:
> - ----- Method: FileList2>>okayAndCancelServices (in category 'own services') -----
> - okayAndCancelServices
> -       "Answer ok and cancel services"
> -
> -       ^ {self serviceOkay. self serviceCancel}!
>
> Item was removed:
> - ----- Method: FileList2>>openImageInWindow (in category 'own services') -----
> - openImageInWindow
> -       "Handle five file formats: GIF, JPG, PNG, Form stoteOn: (run coded), and BMP.
> -       Fail if file format is not recognized."
> -
> -       | image myStream |
> -       myStream := (directory readOnlyFileNamed: fileName) binary.
> -       [image := Form fromBinaryStream: myStream.
> -       Project current openImage: image name: fileName saveResource: false]
> -               ensure: [myStream close]
> - !
>
> Item was removed:
> - ----- Method: FileList2>>openProjectFromFile (in category 'own services') -----
> - openProjectFromFile
> -       "Reconstitute a Morph from the selected file, presumed to be represent
> -       a Morph saved via the SmartRefStream mechanism, and open it in an
> -       appropriate Morphic world."
> -
> -       Project canWeLoadAProjectNow ifFalse: [^ self].
> -       ProjectViewMorph
> -               openFromDirectory: directory
> -               andFileName: fileName
> - !
>
> Item was removed:
> - ----- Method: FileList2>>optionalButtonRow (in category 'initialization') -----
> - optionalButtonRow
> -       "Answer the button row associated with a file list"
> -
> -       | aRow |
> -       aRow := AlignmentMorph newRow beSticky.
> -       aRow color: Color transparent.
> -       aRow clipSubmorphs: true.
> -       aRow layoutInset: 5@1; cellInset: 6.
> -       self universalButtonServices do:  "just the three sort-by items"
> -                       [:service |
> -                               aRow addMorphBack: (service buttonToTriggerIn: self).
> -                               (service selector  == #sortBySize)
> -                                       ifTrue:
> -                                               [aRow addTransparentSpacerOfSize: (4@0)]].
> -       aRow setNameTo: 'buttons'.
> -       aRow setProperty: #buttonRow toValue: true.  "Used for dynamic retrieval later on"
> -       ^ aRow!
>
> Item was removed:
> - ----- Method: FileList2>>optionalButtonSpecs (in category 'initialization') -----
> - optionalButtonSpecs
> -
> -       ^optionalButtonSpecs ifNil: [super optionalButtonSpecs]!
>
> Item was removed:
> - ----- Method: FileList2>>optionalButtonSpecs: (in category 'initialization') -----
> - optionalButtonSpecs: anArray
> -
> -       optionalButtonSpecs := anArray!
>
> Item was removed:
> - ----- Method: FileList2>>postOpen (in category 'private') -----
> - postOpen
> -
> -       directory ifNotNil: [
> -               self changed: #(openPath) , directory pathParts.
> -       ].
> - !
>
> Item was removed:
> - ----- Method: FileList2>>publishingServers (in category 'initialization') -----
> - publishingServers
> -
> -       | dirList |
> -
> -       dirList := OrderedCollection new.
> -       ServerDirectory serverNames do: [ :n | | dir nameToShow |
> -               dir := ServerDirectory serverNamed: n.
> -               (dir isProjectSwiki and: [dir acceptsUploads])
> -                        ifTrue: [
> -                               nameToShow := n.
> -                               dirList add: ((dir directoryWrapperClass with: dir name: nameToShow model: self)
> -                                       balloonText: dir realUrl)]].
> -       ^dirList!
>
> Item was removed:
> - ----- Method: FileList2>>removeLinefeeds (in category 'own services') -----
> - removeLinefeeds
> -       "Remove any line feeds by converting to CRs instead.  This is a temporary implementation for 3.6 only... should be removed during 3.7alpha."
> -       | fileContents |
> -       fileContents := ((FileStream readOnlyFileNamed: self fullName) wantsLineEndConversion: true) contentsOfEntireFile.
> -       (FileStream newFileNamed: self fullName)
> -               nextPutAll: fileContents;
> -               close.!
>
> Item was removed:
> - ----- Method: FileList2>>saveLocalOnlyHit (in category 'private') -----
> - saveLocalOnlyHit
> -       ok := true.
> -       modalView delete.
> -       directory := fileName := nil.
> -       currentDirectorySelected := #localOnly.!
>
> Item was removed:
> - ----- Method: FileList2>>serviceCancel (in category 'own services') -----
> - serviceCancel
> -       "Answer a service for hitting the cancel button"
> -
> -       ^ (SimpleServiceEntry new
> -               provider: self label: 'cancel' selector: #cancelHit
> -               description: 'hit here to cancel ')
> -               buttonLabel: 'cancel'!
>
> Item was removed:
> - ----- Method: FileList2>>serviceOkay (in category 'own services') -----
> - serviceOkay
> -       "Answer a service for hitting the okay button"
> -
> -       ^ (SimpleServiceEntry new
> -               provider: self label: 'okay' selector: #okHit
> -               description: 'hit here to accept the current selection')
> -               buttonLabel: 'ok'!
>
> Item was removed:
> - ----- Method: FileList2>>serviceOpenProjectFromFile (in category 'own services') -----
> - serviceOpenProjectFromFile
> -       "Answer a service for opening a .pr project file"
> -
> -       ^ SimpleServiceEntry
> -               provider: self
> -               label: 'load as project'
> -               selector: #openProjectFromFile
> -               description: 'open project from file'
> -               buttonLabel: 'load'!
>
> Item was removed:
> - ----- Method: FileList2>>servicesForFolderSelector (in category 'own services') -----
> - servicesForFolderSelector
> -       "Answer the ok and cancel servies for the folder selector"
> -
> -       ^ self okayAndCancelServices!
>
> Item was removed:
> - ----- Method: FileList2>>servicesForProjectLoader (in category 'own services') -----
> - servicesForProjectLoader
> -       "Answer the services to show in the button pane for the project loader"
> -
> -       ^ {self serviceSortByName. self serviceSortByDate. self serviceSortBySize. self serviceOpenProjectFromFile}!
>
> Item was removed:
> - ----- Method: FileList2>>setSelectedDirectoryTo: (in category 'private') -----
> - setSelectedDirectoryTo: aFileDirectoryWrapper
> -       currentDirectorySelected := aFileDirectoryWrapper.
> -       self directory: aFileDirectoryWrapper withoutListWrapper.
> -       brevityState := #FileList.
> -       "self addPath: path."
> -       self changed: #fileList.
> -       self changed: #contents.
> -       self changed: #currentDirectorySelected.!
>
> Item was removed:
> - ----- Method: FileList2>>specsForImageViewer (in category 'as yet unclassified') -----
> - specsForImageViewer
> -
> -        ^{self serviceSortByName. self serviceSortByDate. self serviceSortBySize }!
>
> Item was removed:
> - ----- Method: FileList2>>universalButtonServices (in category 'initialization') -----
> - universalButtonServices
> -       "Answer the services to be reflected in the receiver's buttons"
> -
> -       ^ self optionalButtonSpecs!
>
> Item was removed:
> - ----- Method: FileList2>>updateDirectory (in category 'initialization') -----
> - updateDirectory
> -       "directory has been changed externally, by calling directory:.
> -       Now change the view to reflect the change."
> -       self changed: #currentDirectorySelected.
> -       self postOpen.!
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Tools-fbs.484.mcz

Frank Shearar-3
On 12 July 2013 21:04, Chris Muller <[hidden email]> wrote:
> Good riddance.  :)

As mentioned elsewhere, I had to revert this because it's used in
loads of places (like MC, particularly).

FileList2 is perfectly functional, but in terms of its dependencies
it's a bit bonkers. It uses things with unenlightening names like
AlignmentMorphBob1.

It could be redeemed by being rewritten to use ToolBuilder, at which
point I could live with a name like "FileList2". (Because, really, if
it's the replacement that the "2" implies, _replace_ FileList.)

That just needs someone to actually do it! (I claim sanctuary in (a)
trying to make layers in the modules, (b) trying to convert
ArchiveViewer to ToolBuilder and (c) trying to figure out how to model
a table widget to implement (b).

frank