Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions src/NewTools-FileBrowser-Tests/StFileSystemModelTest.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
Class {
#name : 'StFileSystemModelTest',
#superclass : 'TestCase',
#category : 'NewTools-FileBrowser-Tests-Utils',
#package : 'NewTools-FileBrowser-Tests',
#tag : 'Utils'
}

{ #category : 'tests' }
StFileSystemModelTest >> testCreateDirectory [

| model fileRef |
model := StFileSystemModel new.
model currentDirectory: self temporaryDirectory.
model history: ConfigurableHistoryIterator new.

fileRef := self temporaryDirectory / 'abc'.

model createDirectory: 'abc'.

self assert: fileRef exists.
self assert: fileRef isDirectory
]

{ #category : 'tests' }
StFileSystemModelTest >> testCreateDirectoryShouldNotDuplicateFile [

| model fileRef |
model := StFileSystemModel new.
model currentDirectory: self temporaryDirectory.

fileRef := self temporaryDirectory / 'abc'.
fileRef ensureCreateFile .
self should: [ model createDirectory: 'abc' ] raise: Error description: 'A file with that name already exists.'
]

{ #category : 'tests' }
StFileSystemModelTest >> testCreateDirectoryShouldNotDuplicateFolder [

| model fileRef |
model := StFileSystemModel new.
model currentDirectory: self temporaryDirectory.

fileRef := self temporaryDirectory / 'abc'.
fileRef ensureCreateDirectory.
self should: [ model createDirectory: 'abc' ] raise: Error description: 'A folder with that name already exists.'
]

{ #category : 'tests' }
StFileSystemModelTest >> testCreateDirectoryShouldNotWorkWithEmptyName [

| model |
model := StFileSystemModel new.
self assert: (model createDirectory: '') equals: model.
self assert: (model createDirectory: nil) equals: model.
]
20 changes: 18 additions & 2 deletions src/NewTools-FileBrowser/StFileBrowserAbstractPresenter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,10 @@ StFileBrowserAbstractPresenter >> bookmarksTreeTable [
{ #category : 'utilities' }
StFileBrowserAbstractPresenter >> createDirectory [

self model createDirectory.
self updateFileSystemPresenters.
[ self model createDirectory: (self requestDirectoryName: 'default-directory') ]
on: Error
do: [ :ex | self application alert: ex messageText ].
self updateFileSystemPresenters
]

{ #category : 'accessing' }
Expand Down Expand Up @@ -163,6 +165,20 @@ StFileBrowserAbstractPresenter >> openOnLastDirectory [
^ StFileBrowserSettings openOnLastDirectory
]

{ #category : 'utilities' }
StFileBrowserAbstractPresenter >> requestDirectoryName: defaultName [
"Open a dialog to request a directory from the user"

| answer |
answer := [ self
request: 'Folder name'
initialAnswer: defaultName
title: 'Create New Folder' ]
on: SpCancelledInteractionError
do: [ :ex | self inform: 'Cancelled'. nil ].
^ answer
]

{ #category : 'initialization' }
StFileBrowserAbstractPresenter >> resetBookmarks [
"Reset bookmarks to their defaults"
Expand Down
45 changes: 10 additions & 35 deletions src/NewTools-FileBrowser/StFileSystemModel.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -90,30 +90,19 @@ StFileSystemModel >> bookmarks: aCollectionOfGroupBookMark [
]

{ #category : 'utilities' }
StFileSystemModel >> createDirectory [
"Create a directory with a default name"
StFileSystemModel >> createDirectory: name [
"Create a directory named initialName <String>"

^ self createDirectory: 'new-folder'
]
| path |
name isEmptyOrNil ifTrue: [ ^ self ].

{ #category : 'utilities' }
StFileSystemModel >> createDirectory: initialName [
"Create a directory named initialName <String>"
path := currentDirectory / name.
path isDirectory ifTrue: [ self error: 'A folder with that name already exists.' ].
path isFile ifTrue: [ self error: 'A file with that name already exists.' ].

| name path |

(name := self requestUserDirectory: initialName) isEmptyOrNil
ifTrue: [ ^ self ].
(path := currentDirectory / name) exists
ifFalse: [
(currentDirectory / name) ensureCreateDirectory.
self openFolder: currentDirectory.
^ self ].
path isDirectory
ifTrue: [ self application alert: 'A folder with that name already exists.' ].
path isFile
ifTrue: [ self application alert: 'A file with that name already exists.' ].
self createDirectory: name
path exists ifTrue: [ ^ self ].
(currentDirectory / name) ensureCreateDirectory.
self openFolder: currentDirectory
]

{ #category : 'accessing' }
Expand Down Expand Up @@ -168,20 +157,6 @@ StFileSystemModel >> openFolder: aFileReference [
self history register: self currentDirectory.
]

{ #category : 'utilities' }
StFileSystemModel >> requestUserDirectory: initialName [
"Open a dialog to request a directory from the user"

| answer |
answer := [ self
request: 'Folder name'
initialAnswer: initialName
title: 'Create New Folder' ]
on: SpCancelledInteractionError
do: [ : ex | self inform: 'Cancelled'. nil ].
^ answer
]

{ #category : 'initialization' }
StFileSystemModel >> resetBookmarks [
"Reset the global bookmarks"
Expand Down
Loading