Skip to content

Commit

Permalink
When closing a browser ask before discarding edits.
Browse files Browse the repository at this point in the history
Includes workaround pharo issue pharo-project/pharo#15646, #okToChange returning true incorrectly. 
See correct implementation in JadeiteWindowPrsenter>>okToChange. 

Rename okToChangeSelections to `canDiscardEdits` to conform with spec2 naming and simpler code.
  • Loading branch information
ericwinger committed Nov 30, 2023
1 parent a57f3c9 commit 23dca17
Show file tree
Hide file tree
Showing 9 changed files with 71 additions and 23 deletions.
6 changes: 6 additions & 0 deletions Jadeite-Browser/JadeiteBrowser.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,12 @@ JadeiteBrowser >> methodsListPresenter [
^ (tabs pages at: tabs selectedPageIndex) methodListPresenter
]

{ #category : 'testing' }
JadeiteBrowser >> okToClose [

^self activePresenter canDiscardEdits
]

{ #category : 'actions' }
JadeiteBrowser >> openBrowserTab [

Expand Down
13 changes: 13 additions & 0 deletions Jadeite-Browser/JadeiteBrowserPresenter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -539,6 +539,19 @@ JadeiteBrowserPresenter >> buildProjectTab [
name: 'projectInfoTab'
]

{ #category : 'testing' }
JadeiteBrowserPresenter >> canDiscardEdits [

self methodSourcePresenter hasUnacceptedEdits ifTrue: [
(MessageBox confirm:
'You have unsaved changes. Discard changes and continue?')
ifTrue: [
self methodSourcePresenter hasUnacceptedEdits: false.
^ true ].
^ false ].
^ true
]

{ #category : 'as yet unclassified' }
JadeiteBrowserPresenter >> categoriesMenuStrings [

Expand Down
13 changes: 13 additions & 0 deletions Jadeite-MethodBrowser/JadeiteMethodListPresenter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,19 @@ JadeiteMethodListPresenter >> browseMethodHistory [
^JadeiteMethodHistoryBrowser showOnClass: methodService classService selector: methodService
]

{ #category : 'testing' }
JadeiteMethodListPresenter >> canDiscardEdits [

self methodSourcePresenter hasUnacceptedEdits ifTrue: [
(MessageBox confirm:
'You have unsaved changes. Discard changes and continue?')
ifTrue: [
self methodSourcePresenter hasUnacceptedEdits: false.
^ true ]
ifFalse: [ ^ false ] ].
^ true
]

{ #category : 'as yet unclassified' }
JadeiteMethodListPresenter >> cleanupComparisonBrowser [
self todo:[comparisonPresenter
Expand Down
2 changes: 1 addition & 1 deletion Jadeite-SupportClasses/JadeiteListAdapter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ JadeiteListAdapter >> buildWidget [
datasource := SpMorphicListDataSource new.
datasource model: self model.
widget := JadeiteTableMorph new "<<<Jadeite change here"
selectionConfirmationBlock: [ self presenter okToChangeSelections ]; "<<<Jadeite change here"
selectionConfirmationBlock: [ self presenter canDiscardEdits ]; "<<<Jadeite change here"
dataSource: datasource;
hideColumnHeaders;
enableSearch;
Expand Down
18 changes: 9 additions & 9 deletions Jadeite-SupportClasses/JadeiteListPresenter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ JadeiteListPresenter class >> newNameSortedList [
^ inst
]

{ #category : 'testing' }
JadeiteListPresenter >> canDiscardEdits [

^self owner canDiscardEdits
]

{ #category : 'selection' }
JadeiteListPresenter >> clear [

Expand Down Expand Up @@ -72,12 +78,6 @@ JadeiteListPresenter >> newEmptyModel [
^ ListModel on: OrderedCollection new
]

{ #category : 'testing' }
JadeiteListPresenter >> okToChangeSelections [

^self owner okToChangeSelections
]

{ #category : 'api' }
JadeiteListPresenter >> parentPresenter [

Expand Down Expand Up @@ -116,13 +116,13 @@ JadeiteListPresenter >> retrievePresenter [
{ #category : 'testing' }
JadeiteListPresenter >> selectIndex: anArray [

self okToChangeSelections ifFalse: [ ^ self ].
self canDiscardEdits ifFalse: [ ^ self ].
^ super selectIndex: anArray
]

{ #category : 'selection' }
JadeiteListPresenter >> selection: anObject [
self okToChangeSelections ifFalse:[^self].
self canDiscardEdits ifFalse:[^self].
^self selectItem: anObject
]

Expand Down Expand Up @@ -152,7 +152,7 @@ JadeiteListPresenter >> selections [

{ #category : 'selection' }
JadeiteListPresenter >> selections: aCollection [
self okToChangeSelections ifFalse:[^self].
self canDiscardEdits ifFalse:[^self].
self selectItems: aCollection
]

Expand Down
12 changes: 6 additions & 6 deletions Jadeite-SupportClasses/JadeiteNotebookPresenter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ Class {
#category : 'Jadeite-SupportClasses'
}

{ #category : 'testing' }
JadeiteNotebookPresenter >> canDiscardEdits [

^self owner canDiscardEdits
]

{ #category : 'accessing' }
JadeiteNotebookPresenter >> currentCard [
^self selectedPage
]

{ #category : 'testing' }
JadeiteNotebookPresenter >> okToChangeSelections [

^self owner okToChangeSelections
]
2 changes: 1 addition & 1 deletion Jadeite-SupportClasses/JadeiteTableAdapter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Class {
JadeiteTableAdapter >> buildWidget [

widget := JadeiteTableMorph new "<<<Jadeite change here"
selectionConfirmationBlock: [ self presenter okToChangeSelections ]; "<<<Jadeite change here"
selectionConfirmationBlock: [ self presenter canDiscardEdits ]; "<<<Jadeite change here"
hResizing: #spaceFill;
vResizing: #spaceFill;
intercellSpacing: self class intercellSpacing;
Expand Down
12 changes: 6 additions & 6 deletions Jadeite-SupportClasses/JadeiteTablePresenter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ JadeiteTablePresenter class >> new [
^super new beResizable
]

{ #category : 'testing' }
JadeiteTablePresenter >> canDiscardEdits [

^self owner canDiscardEdits
]

{ #category : 'displaying' }
JadeiteTablePresenter >> invalidate [
self refresh.
Expand Down Expand Up @@ -50,12 +56,6 @@ JadeiteTablePresenter >> newEmptyModel [
^ ListModel on: OrderedCollection new
]

{ #category : 'testing' }
JadeiteTablePresenter >> okToChangeSelections [

^self owner okToChangeSelections
]

{ #category : 'api - selection' }
JadeiteTablePresenter >> resetSelection [
self unselectAll
Expand Down
16 changes: 16 additions & 0 deletions Jadeite-SupportClasses/JadeiteWindowPresenter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,19 @@ JadeiteWindowPresenter class >> adapterName [

^ #JadeiteMorphicWindowAdapter
]

{ #category : 'private' }
JadeiteWindowPresenter >> okToChange [

self flag: #TODO. "Maybe wrong?"
self presenter canDiscardEdits ifFalse: [ ^ false ].
"Solicit cancel from view"
self changed: #wantToChange.
^ self canDiscardEdits
]

{ #category : 'testing' }
JadeiteWindowPresenter >> okToClose [

^self presenter okToClose
]

0 comments on commit 23dca17

Please sign in to comment.