Skip to content

Commit

Permalink
ready to separate additionnal selecters
Browse files Browse the repository at this point in the history
  • Loading branch information
plantec committed Mar 26, 2024
1 parent 036720e commit 7bea983
Show file tree
Hide file tree
Showing 18 changed files with 172 additions and 89 deletions.
1 change: 1 addition & 0 deletions src/Toplo-Examples/ToSandBox.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -1443,6 +1443,7 @@ ToSandBox class >> example_SelectMultiFiltrableWithHideSelected [

| select innerWindow |
select := ToSelectElement new.
select inspect.
select hideSelected: true.
select dataAccessor updateAllWith: self statesOfAmerica.
select strategy: ToMultipleSelectStrategy new.
Expand Down
40 changes: 0 additions & 40 deletions src/Toplo-Widget-List/ToAbstractSelectionModelSelecter.class.st
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
Class {
#name : #ToAbstractSelectionModelSelecter,
#superclass : #Object,
#instVars : [
'operator',
'selectionModel'
],
#category : #'Toplo-Widget-List-Selection-Selecter'
}

Expand All @@ -14,12 +10,6 @@ ToAbstractSelectionModelSelecter >> copySelectionFrom: aSourceSelectionModel [
self subclassResponsibility
]

{ #category : #accessing }
ToAbstractSelectionModelSelecter >> currentIndex [

^ self subclassResponsibility
]

{ #category : #operations }
ToAbstractSelectionModelSelecter >> deselectAll [

Expand Down Expand Up @@ -56,24 +46,6 @@ ToAbstractSelectionModelSelecter >> nextSelectableIndex [
^ self subclassResponsibility
]

{ #category : #accessing }
ToAbstractSelectionModelSelecter >> operateSilently [

^ false
]

{ #category : #accessing }
ToAbstractSelectionModelSelecter >> operator [

^ operator
]

{ #category : #accessing }
ToAbstractSelectionModelSelecter >> operator: anOperator [

operator := anOperator
]

{ #category : #private }
ToAbstractSelectionModelSelecter >> previousDeselectedIndex [

Expand Down Expand Up @@ -127,15 +99,3 @@ ToAbstractSelectionModelSelecter >> selectOnlyIndexes: anArray [

self subclassResponsibility
]

{ #category : #accessing }
ToAbstractSelectionModelSelecter >> selectedIndexes [

^ self subclassResponsibility
]

{ #category : #accessing }
ToAbstractSelectionModelSelecter >> selectionModel: aSelectionModel [

selectionModel := aSelectionModel
]
21 changes: 21 additions & 0 deletions src/Toplo-Widget-List/ToAdditionalSelectionModel.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Class {
#name : #ToAdditionalSelectionModel,
#superclass : #ToSelectionModel,
#instVars : [
'uniqueId'
],
#category : #'Toplo-Widget-List-Selection-Model'
}

{ #category : #accessing }
ToAdditionalSelectionModel >> uniqueId [

uniqueId ifNil: [ Error signal: 'A uniqueId should not be nil' ].
^ uniqueId
]

{ #category : #accessing }
ToAdditionalSelectionModel >> uniqueId: anObject [

uniqueId := anObject
]
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ ToAdditionalSelectionModelSelecter >> eventClass [
ToAdditionalSelectionModelSelecter >> onInstalledIn: aListElement [

operator := ToAdditionalSelectionModelOperator on: aListElement withEventClass: self eventClass.
selectionModel := aListElement newSelectionModel.
selectionModel := aListElement newAdditionalSelectionModel.
selectionModel onInstalledIn: aListElement.
self beMultipleSelection.

Expand Down
8 changes: 8 additions & 0 deletions src/Toplo-Widget-List/ToBasicListElement.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,14 @@ ToBasicListElement >> initialize [
nodeReleaser := self defaultNodeReleaser
]

{ #category : #'instance creation' }
ToBasicListElement >> newAdditionalSelectionModel [

^ ToAdditionalSelectionModel new
itemCountGetter: [ self dataSource itemCount ];
yourself
]

{ #category : #'instance creation' }
ToBasicListElement >> newPrimarySelectionModel [

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Class {
#name : #ToDisabledSelectionModelSelecter,
#superclass : #ToAdditionalSelectionModelSelecter,
#superclass : #ToPredefinedAdditionalSelectionModelSelecter,
#category : #'Toplo-Widget-List-Selection-Selecter'
}

Expand Down
26 changes: 26 additions & 0 deletions src/Toplo-Widget-List/ToEffectiveSelectionModelSelecter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ Class {
#name : #ToEffectiveSelectionModelSelecter,
#superclass : #ToAbstractSelectionModelSelecter,
#instVars : [
'operator',
'selectionModel',
'multiple'
],
#category : #'Toplo-Widget-List-Selection-Selecter'
Expand Down Expand Up @@ -160,6 +162,18 @@ ToEffectiveSelectionModelSelecter >> nextSelectableIndexToScrollTo [
ifFalse: [ 0 ] ]
]

{ #category : #accessing }
ToEffectiveSelectionModelSelecter >> operator [

^ operator
]

{ #category : #accessing }
ToEffectiveSelectionModelSelecter >> operator: aSelectionModelOperator [

operator := aSelectionModelOperator
]

{ #category : #private }
ToEffectiveSelectionModelSelecter >> previousDeselectedIndex [

Expand Down Expand Up @@ -296,6 +310,18 @@ ToEffectiveSelectionModelSelecter >> selectedIndexes [
^ selectionModel selectedIndexes
]

{ #category : #accessing }
ToEffectiveSelectionModelSelecter >> selectionModel [

^ selectionModel
]

{ #category : #accessing }
ToEffectiveSelectionModelSelecter >> selectionModel: aSelectionModel [

selectionModel := aSelectionModel
]

{ #category : #operations }
ToEffectiveSelectionModelSelecter >> shiftSelection: anInteger from: anIndex [

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Class {
#name : #ToHiddenSelectionModelSelecter,
#superclass : #ToAdditionalSelectionModelSelecter,
#superclass : #ToPredefinedAdditionalSelectionModelSelecter,
#category : #'Toplo-Widget-List-Selection-Selecter'
}

Expand Down
17 changes: 13 additions & 4 deletions src/Toplo-Widget-List/ToListElement.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,7 @@ ToListElement >> initialize [

super initialize.
self secondarySelectionMode: self defaultSecondarySelectionMode.
self addEventHandler: self defaultSecondarySelectionEventHandler.
unselectableSelecter := ToUnselectableSelectionModelSelecter on: self.
disabledSelecter := ToDisabledSelectionModelSelecter on: self.
hiddenSelecter := ToHiddenSelectionModelSelecter on: self
self addEventHandler: self defaultSecondarySelectionEventHandler
]

{ #category : #'instance creation' }
Expand Down Expand Up @@ -140,6 +137,18 @@ ToListElement >> secondarySelectionModel [
^ self secondarySelectionMode selectionModel
]

{ #category : #accessing }
ToListElement >> selectionMode: aSelectionMode [

super selectionMode: aSelectionMode.
unselectableSelecter ifNotNil: [ unselectableSelecter onUninstalledIn: self ].
disabledSelecter ifNotNil: [ disabledSelecter onUninstalledIn: self ].
hiddenSelecter ifNotNil: [ hiddenSelecter onUninstalledIn: self ].
unselectableSelecter := ToUnselectableSelectionModelSelecter on: self.
disabledSelecter := ToDisabledSelectionModelSelecter on: self.
hiddenSelecter := ToHiddenSelectionModelSelecter on: self
]

{ #category : #accessing }
ToListElement >> unselectableSelecter [

Expand Down
57 changes: 30 additions & 27 deletions src/Toplo-Widget-List/ToListElementSelectionModel.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,34 @@ Class {
}

{ #category : #accessing }
ToListElementSelectionModel >> additionalSelectionModels [
ToListElementSelectionModel >> additionalDependentSelectionModels [

^ self subclassResponsibility
]

{ #category : #accessing }
ToListElementSelectionModel >> allDependentSelectionModels [

^ Array streamContents: [ :stream |
stream nextPutAll: self standardDependentSelectionModels.
stream nextPutAll: self additionalDependentSelectionModels ]
]

{ #category : #copying }
ToListElementSelectionModel >> copySelectionFrom: anotherSelectionModel [

super copySelectionFrom: anotherSelectionModel.
self unselectableSelectionModelDo: [ :sm |
self allDependentSelectionModels do: [ :sm |
sm copySelectionFrom:
anotherSelectionModel unselectableSelectionModel ].
self disabledSelectionModelDo: [ :sm |
sm copySelectionFrom: anotherSelectionModel disabledSelectionModel ].
self hiddenSelectionModelDo: [ :sm |
sm copySelectionFrom: anotherSelectionModel hiddenSelectionModel ]
(anotherSelectionModel dependentSelectionModelWithId: sm uniqueId) ]
]

{ #category : #accessing }
ToListElementSelectionModel >> dependentSelectionModelWithId: anUniqueId [

^ self allDependentSelectionModels
detect: [ :sm | sm uniqueId = anUniqueId ]
ifNone: [ ]
]

{ #category : #updating }
Expand Down Expand Up @@ -126,14 +138,6 @@ ToListElementSelectionModel >> nextSelectableIndexStartingAt: anIndex [
^ 0
]

{ #category : #accessing }
ToListElementSelectionModel >> otherSelectionModels [

^ Array streamContents: [ :stream |
stream nextPutAll: self standardAdditionalSelectionModels.
stream nextPutAll: self additionalSelectionModels ]
]

{ #category : #accessing }
ToListElementSelectionModel >> previousSelectableIndexStartingAt: anIndex [

Expand Down Expand Up @@ -187,15 +191,15 @@ ToListElementSelectionModel >> shift: aGap from: aStartIndex for: anEventTarget
| count |
count := aGap abs.
self deselectIndex: aStartIndex to: aStartIndex + count - 1 ].
self otherSelectionModels do: [ :sm |
self allDependentSelectionModels do: [ :sm |
sm shift: aGap from: aStartIndex ].

" ** super send after **"
super shift: aGap from: aStartIndex for: anEventTarget
]

{ #category : #accessing }
ToListElementSelectionModel >> standardAdditionalSelectionModels [
ToListElementSelectionModel >> standardDependentSelectionModels [

^ {
self disabledSelectionModel.
Expand All @@ -206,16 +210,15 @@ ToListElementSelectionModel >> standardAdditionalSelectionModels [
{ #category : #updating }
ToListElementSelectionModel >> transferIndex: anIndex from: anotherPrimarySelectionModel as: targetIndex [

super transferIndex: anIndex from: anotherPrimarySelectionModel as: targetIndex.
anotherPrimarySelectionModel disabledSelectionModelDo: [ :sm | (sm containsIndex: anIndex)
ifTrue: [ self disabledSelectionModelDo: [ :osm | osm selectIndex: targetIndex ] ]
ifFalse: [ self disabledSelectionModelDo: [ :osm | osm deselectIndex: targetIndex ] ] ].
anotherPrimarySelectionModel unselectableSelectionModelDo: [ :sm | (sm containsIndex: anIndex)
ifTrue: [ self unselectableSelectionModelDo: [ :osm | osm selectIndex: targetIndex ] ]
ifFalse: [ self unselectableSelectionModelDo: [ :osm | osm deselectIndex: targetIndex ] ] ].
anotherPrimarySelectionModel hiddenSelectionModelDo: [ :sm | (sm containsIndex: anIndex)
ifTrue: [ self hiddenSelectionModelDo: [ :osm | osm selectIndex: targetIndex ] ]
ifFalse: [ self hiddenSelectionModelDo: [ :osm | osm deselectIndex: targetIndex ] ] ]
super
transferIndex: anIndex
from: anotherPrimarySelectionModel
as: targetIndex.
self allDependentSelectionModels do: [ :sm |
(anotherPrimarySelectionModel dependentSelectionModelWithId: sm uniqueId) ifNotNil: [ :otherSm |
(otherSm containsIndex: anIndex)
ifTrue: [ sm selectIndex: targetIndex ]
ifFalse: [ sm deselectIndex: targetIndex ] ] ]
]

{ #category : #updating }
Expand Down
30 changes: 21 additions & 9 deletions src/Toplo-Widget-List/ToListPrimarySelectionModel.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@ Class {
#name : #ToListPrimarySelectionModel,
#superclass : #ToListElementSelectionModel,
#instVars : [
'additionalSelectionModels',
'disabledSelectionModel',
'hiddenSelectionModel',
'unselectableSelectionModel'
'unselectableSelectionModel',
'additionalDependentSelectionModels'
],
#category : #'Toplo-Widget-List-Selection-Model'
}

{ #category : #accessing }
ToListPrimarySelectionModel >> additionalSelectionModels [
ToListPrimarySelectionModel >> additionalDependentSelectionModels [

^ additionalSelectionModels
^ additionalDependentSelectionModels
]

{ #category : #accessing }
Expand All @@ -25,7 +25,9 @@ ToListPrimarySelectionModel >> disabledSelectionModel [
{ #category : #accessing }
ToListPrimarySelectionModel >> disabledSelectionModel: aSelectionModel [

disabledSelectionModel := aSelectionModel
disabledSelectionModel := aSelectionModel.
disabledSelectionModel ifNil: [ ^ self ].
aSelectionModel uniqueId: #disabled
]

{ #category : #accessing }
Expand All @@ -37,14 +39,16 @@ ToListPrimarySelectionModel >> hiddenSelectionModel [
{ #category : #accessing }
ToListPrimarySelectionModel >> hiddenSelectionModel: aSelectionModel [

hiddenSelectionModel := aSelectionModel
hiddenSelectionModel := aSelectionModel.
hiddenSelectionModel ifNil: [ ^ self ].
aSelectionModel uniqueId: #hidden
]

{ #category : #initialization }
ToListPrimarySelectionModel >> initialize [

super initialize.
additionalSelectionModels := #( )
additionalDependentSelectionModels := #( )
]

{ #category : #'api - hooks' }
Expand All @@ -54,7 +58,13 @@ ToListPrimarySelectionModel >> onUninstalledIn: aListElement [
disabledSelectionModel := nil.
hiddenSelectionModel := nil.
unselectableSelectionModel := nil.
additionalSelectionModels := nil
additionalDependentSelectionModels := nil
]

{ #category : #accessing }
ToListPrimarySelectionModel >> uniqueId [

^ #primary
]

{ #category : #accessing }
Expand All @@ -66,5 +76,7 @@ ToListPrimarySelectionModel >> unselectableSelectionModel [
{ #category : #accessing }
ToListPrimarySelectionModel >> unselectableSelectionModel: aSelectionModel [

unselectableSelectionModel := aSelectionModel
unselectableSelectionModel := aSelectionModel.
aSelectionModel ifNil: [ ^ self ].
aSelectionModel uniqueId: #unselectable
]
Loading

0 comments on commit 7bea983

Please sign in to comment.