diff --git a/src/NewTools-FileBrowser-Tests/StBreadcrumbPresenterTest.class.st b/src/NewTools-FileBrowser-Tests/StBreadcrumbPresenterTest.class.st index ce7994cc..276f6594 100644 --- a/src/NewTools-FileBrowser-Tests/StBreadcrumbPresenterTest.class.st +++ b/src/NewTools-FileBrowser-Tests/StBreadcrumbPresenterTest.class.st @@ -11,14 +11,16 @@ Class { { #category : 'running' } StBreadcrumbPresenterTest >> setUp [ + super setUp. - windowPathUI := StPathBreadcrumbPresenter - owner: fileSystemPresenter - on: fileSystemModel + windowPathUI := StPathBreadcrumbPresenter + owner: fileSystemPresenter + on: fileSystemModel ] { #category : 'running' } StBreadcrumbPresenterTest >> tearDown [ + windowPathUI withWindowDo: [ :window | window close ]. super tearDown ] diff --git a/src/NewTools-FileBrowser-Tests/StOpenFilePresenterTest.class.st b/src/NewTools-FileBrowser-Tests/StOpenFilePresenterTest.class.st index 490df6d3..103dc45a 100644 --- a/src/NewTools-FileBrowser-Tests/StOpenFilePresenterTest.class.st +++ b/src/NewTools-FileBrowser-Tests/StOpenFilePresenterTest.class.st @@ -55,6 +55,59 @@ StOpenFilePresenterTest >> testSelectFile [ self assert: selectedFile equals: root / 'sth.ext' ] +{ #category : 'tests' } +StOpenFilePresenterTest >> testSelectFileWithMultipleSelection [ + + | selectedFile | + dialog beMultipleSelection. + window := dialog openDialog. + self assert: dialog currentDirectory equals: root. + dialog selectFile: root / 'sth.ext'. + + self assert: dialog selectedEntry equals: root / 'sth.ext'. + + selectedFile := dialog confirm. + + self assert: selectedFile equals: root / 'sth.ext' +] + +{ #category : 'tests' } +StOpenFilePresenterTest >> testSelectFileWithMultipleSelectionAccessingEntries [ + + | selectedFile | + dialog beMultipleSelection. + window := dialog openDialog. + self assert: dialog currentDirectory equals: root. + dialog selectFile: root / 'sth.ext'. + + "Multiple selection mode in tables only set the 'first' item and ignores the remaining items" + self assertCollection: dialog selectedEntries hasSameElements: { root / 'sth.ext' }. + + selectedFile := dialog confirm. + + self assert: selectedFile equals: root / 'sth.ext' +] + +{ #category : 'tests' } +StOpenFilePresenterTest >> testSelectedEntriesMultipleSelection [ + + window := dialog openDialog. + dialog selectFiles: { root / 'sth.ext' . root / 'patate.png' }. + self + assertCollection: dialog selectedEntries + hasSameElements: { root / 'sth.ext' . root / 'patate.png' }. + +] + +{ #category : 'tests' } +StOpenFilePresenterTest >> testSelectedEntriesSingleSelection [ + + window := dialog openDialog. + dialog selectFile: root / 'sth.ext'. + self assertCollection: dialog selectedEntries hasSameElements: { root / 'sth.ext' }. + +] + { #category : 'tests' } StOpenFilePresenterTest >> testSetTitle [ diff --git a/src/NewTools-FileBrowser/StFileDialogPresenter.class.st b/src/NewTools-FileBrowser/StFileDialogPresenter.class.st index b4ca83f0..8e68cbad 100644 --- a/src/NewTools-FileBrowser/StFileDialogPresenter.class.st +++ b/src/NewTools-FileBrowser/StFileDialogPresenter.class.st @@ -295,8 +295,9 @@ StFileDialogPresenter >> isolate [ { #category : 'accessing - ui' } StFileDialogPresenter >> nameText [ "Answer a with the text in the name presenter used to display the currently selected file/directory or a manually entered name" - - ^ fileNavigationSystem nameText text. + + ^ fileNavigationSystem nameText text + ] { #category : 'accessing' } @@ -316,12 +317,10 @@ StFileDialogPresenter >> open [ ^ self openDialog ] -{ #category : 'opening' } +{ #category : 'showing' } StFileDialogPresenter >> openModal [ super openModal cancelled ifTrue: [ ^ nil ]. - self isMultipleSelection - ifFalse: [ ^ self selectedEntry ]. ^ self selectedEntries ] diff --git a/src/NewTools-FileBrowser/StFileNavigationSystemPresenter.class.st b/src/NewTools-FileBrowser/StFileNavigationSystemPresenter.class.st index 4cfb8e89..6ad6eb2d 100644 --- a/src/NewTools-FileBrowser/StFileNavigationSystemPresenter.class.st +++ b/src/NewTools-FileBrowser/StFileNavigationSystemPresenter.class.st @@ -210,6 +210,7 @@ StFileNavigationSystemPresenter >> fileNameLayout [ { #category : 'accessing' } StFileNavigationSystemPresenter >> fileReferenceTable [ + ^ fileReferenceTable ] @@ -444,6 +445,13 @@ StFileNavigationSystemPresenter >> previousButton [ ^ previousButton ] +{ #category : 'menu - accessing' } +StFileNavigationSystemPresenter >> selectEntries: aCollection [ + "Set a of representing user's selections" + + self fileReferenceTable selectItems: aCollection +] + { #category : 'menu - accessing' } StFileNavigationSystemPresenter >> selectedEntries [ "Answer a of representing user's selections" @@ -496,6 +504,7 @@ StFileNavigationSystemPresenter >> updateFileReferenceTable [ "Update the receiver's contents according to the current directory and apply configured filters" | items | + items := (filtersDropList selectedItem ifNil: [ filter ]) applyOn: self currentDirectoryChildren. StFileBrowserSettings showHiddenFiles ifFalse: [ items := items reject: [ :file | file isHidden ] ]. fileReferenceTable items: items diff --git a/src/NewTools-FileBrowser/StFileSystemPresenter.class.st b/src/NewTools-FileBrowser/StFileSystemPresenter.class.st index 5e9231a9..11b9fdda 100644 --- a/src/NewTools-FileBrowser/StFileSystemPresenter.class.st +++ b/src/NewTools-FileBrowser/StFileSystemPresenter.class.st @@ -135,6 +135,7 @@ StFileSystemPresenter >> expandPath: aFileReference [ { #category : 'accessing' } StFileSystemPresenter >> fileNavigationSystem [ + ^ fileNavigationSystem ] diff --git a/src/NewTools-FileBrowser/StOpenFileOrDirectoryPresenter.class.st b/src/NewTools-FileBrowser/StOpenFileOrDirectoryPresenter.class.st index 9b47f85b..b38981f8 100644 --- a/src/NewTools-FileBrowser/StOpenFileOrDirectoryPresenter.class.st +++ b/src/NewTools-FileBrowser/StOpenFileOrDirectoryPresenter.class.st @@ -27,3 +27,25 @@ StOpenFileOrDirectoryPresenter >> confirmLabel [ StOpenFileOrDirectoryPresenter >> initialTitle [ ^ self subclassResponsibility ] + +{ #category : 'utilities' } +StOpenFileOrDirectoryPresenter >> selectFiles: aCollectionOfFiles [ + "Be ware that updating the name text from the file navigation system, would unselect all files" + + self beMultipleSelection. + self fileNavigationSystem selectedEntries = aCollectionOfFiles + ifFalse: [ self fileNavigationSystem selectEntries: aCollectionOfFiles ] +] + +{ #category : 'menu - accessing' } +StOpenFileOrDirectoryPresenter >> selectedEntries [ + "Answer a of user's selected s " + + | entries | + ((entries := self fileNavigationSystem selectedEntries) + anySatisfy: [ : entry | (entry exists not and: [ entry isDirectory ]) ]) + ifTrue: [ + self inform: 'Only files could be selected (no directories)'. + ^ nil ]. + ^ entries +] diff --git a/src/NewTools-FileBrowser/StOpenFilePresenter.class.st b/src/NewTools-FileBrowser/StOpenFilePresenter.class.st index 98b28e24..33d92aad 100644 --- a/src/NewTools-FileBrowser/StOpenFilePresenter.class.st +++ b/src/NewTools-FileBrowser/StOpenFilePresenter.class.st @@ -120,16 +120,3 @@ StOpenFilePresenter >> isMultipleSelection [ ^ self fileNavigationSystem isMultipleSelection ] - -{ #category : 'menu - accessing' } -StOpenFilePresenter >> selectedEntries [ - "Answer a of user's selected s " - - | entries | - ((entries := self fileNavigationSystem selectedEntries) - anySatisfy: [ : entry | (entry exists not and: [ entry isDirectory ]) ]) - ifTrue: [ - self inform: 'Only files could be selected (no directories)'. - ^ nil ]. - ^ entries -]