Skip to content

Commit

Permalink
+ ToBarElement>>nodeAutoDistribution
Browse files Browse the repository at this point in the history
+ ToBarNodeVisibilityEvent
  • Loading branch information
plantec committed May 22, 2024
1 parent a73a1f2 commit 636eb17
Show file tree
Hide file tree
Showing 31 changed files with 257 additions and 147 deletions.
26 changes: 22 additions & 4 deletions src/Toplo-Examples/ToSandBox.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -1085,7 +1085,7 @@ ToSandBox class >> example_ListWithPanes [
ToSandBox class >> example_NodeContainerWithStatesOfAmerica [

| l |
l := ToLinearBarElement new.
l := ToBarElement new.
l addEventHandler: (BlEventHandler
on: ToListPrimarySelectionChangedEvent
do: [ :evt | evt traceCr ]).
Expand Down Expand Up @@ -2711,18 +2711,18 @@ ToSandBox class >> example_menuBar2 [
{ #category : #'node bar' }
ToSandBox class >> example_nodeBar [

| bar mainPane barPane confPane verticalSwitch wrappingSwitch scrollingSwitch |
| bar mainPane barPane confPane verticalSwitch wrappingSwitch scrollingSwitch autoDistributionSwitch |
mainPane := ToPane horizontal.
mainPane matchParent.
mainPane padding: (BlInsets all: 5).
confPane := ToPane vertical.
confPane width: 150.
confPane width: 200.
barPane := ToPane vertical.
barPane matchParent.
mainPane addChildren: {
confPane.
barPane }.
bar := ToLinearBarElement new.
bar := ToBarElement new.

bar hMatchParent.
bar vFitContent.
Expand Down Expand Up @@ -2776,6 +2776,24 @@ ToSandBox class >> example_nodeBar [
v := event current.
bar nodeScrolling: v ]).

autoDistributionSwitch := ToSwitchButton new labelText:
'Auto-distribution'.
autoDistributionSwitch endToStart: true.
autoDistributionSwitch startFlexible: true.
autoDistributionSwitch hMatchParent.

confPane addChild: autoDistributionSwitch.
autoDistributionSwitch addEventHandler: (BlEventHandler
on: ToCheckableCheckEvent
do: [ :event |
| v |
v := event current.
bar nodeAutoDistribution: v ]).

bar
addEventHandlerOn: ToBarNodeVisibilityEvent
do: [ :event |
event invisibleNodes ifNotEmpty: [ :in | in traceCr ] ].
bar nodeScrolling: false.
bar nodeAutoDistribution: false.
bar inspect.
Expand Down
8 changes: 4 additions & 4 deletions src/Toplo-Widget-ElementBar/ToElementBarDep.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ ToElementBarDep >> initialize [
nodeAutoDistribution := false.
self dataAccessor: ToObservableCollection new.
self selectionMode: self defaultSelectionMode.
self addEventHandler: ToElementBarEventHandler new.
self addEventHandler: ToElementBarEventHandlerDep new.
self addEventHandlerOn: ToPlaceholderShownEvent do: [ :event |
self flag: 'The width of 14???. It should be handled via a skin'.
event placeholder padding: (BlInsets left: 14).
Expand Down Expand Up @@ -119,7 +119,7 @@ ToElementBarDep >> newPrimarySelectionModel [
{ #category : #skin }
ToElementBarDep >> newRawSkin [

^ ToElementBarSkin new
^ ToElementBarSkinDep new
]

{ #category : #accessing }
Expand Down Expand Up @@ -182,7 +182,7 @@ ToElementBarDep >> nodes [
{ #category : #'accessing - selection' }
ToElementBarDep >> notifySelectionChanged [

self dispatchEvent: ToElementBarSelectionChanged new
self dispatchEvent: ToElementBarSelectionChangedDep new
]

{ #category : #layout }
Expand All @@ -209,7 +209,7 @@ ToElementBarDep >> removeNode: aNode [
index := aNode holder position.
self selectionModel deselectIndex: index.
self onSelectionChanged.
self fireEvent: ToElementBarSelectionChanged new
self fireEvent: ToElementBarSelectionChangedDep new
]

{ #category : #'accessing - selection' }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
Class {
#name : #ToElementBarEventHandler,
#name : #ToElementBarEventHandlerDep,
#superclass : #BlCustomEventHandler,
#category : #'Toplo-Widget-ElementBar'
}

{ #category : #'element events handling' }
ToElementBarEventHandler >> elementAddedToSceneGraphEvent: anEvent [
ToElementBarEventHandlerDep >> elementAddedToSceneGraphEvent: anEvent [

| bar |
bar := anEvent currentTarget.
Expand All @@ -14,7 +14,7 @@ ToElementBarEventHandler >> elementAddedToSceneGraphEvent: anEvent [
]

{ #category : #'element handlers' }
ToElementBarEventHandler >> elementBarSelectionChanged: anEvent [
ToElementBarEventHandlerDep >> elementBarSelectionChanged: anEvent [

| bar |
bar := anEvent currentTarget.
Expand All @@ -24,16 +24,16 @@ ToElementBarEventHandler >> elementBarSelectionChanged: anEvent [
]

{ #category : #'api - accessing' }
ToElementBarEventHandler >> eventsToHandle [
ToElementBarEventHandlerDep >> eventsToHandle [

^ {
BlElementAddedToSceneGraphEvent.
ToElementBarSelectionChanged.
ToElementBarSelectionChangedDep.
ToLayoutOrientationChangedEvent }
]

{ #category : #'element handlers' }
ToElementBarEventHandler >> layoutOrientationChangedEvent: anEvent [
ToElementBarEventHandlerDep >> layoutOrientationChangedEvent: anEvent [

anEvent currentTarget onLayoutOrientationChanged
]
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
Class {
#name : #ToElementBarSelectionChanged,
#name : #ToElementBarSelectionChangedDep,
#superclass : #BlEvent,
#category : #'Toplo-Widget-ElementBar'
}

{ #category : #sending }
ToElementBarSelectionChanged >> sendTo: anObject [
ToElementBarSelectionChangedDep >> sendTo: anObject [

anObject elementBarSelectionChanged: self
]
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
Class {
#name : #ToElementBarSkin,
#name : #ToElementBarSkinDep,
#superclass : #ToGeneralButtonSkin,
#category : #'Toplo-Widget-ElementBar'
}

{ #category : #'event handling' }
ToElementBarSkin >> hoveredLookEvent: anEvent [
ToElementBarSkinDep >> hoveredLookEvent: anEvent [

super hoveredLookEvent: anEvent.
anEvent elementDo: [ :e |
e mouseCursor: Cursor normal ]
]

{ #category : #'event handling' }
ToElementBarSkin >> installLookEvent: anEvent [
ToElementBarSkinDep >> installLookEvent: anEvent [

super installLookEvent: anEvent.
anEvent elementDo: [ :e |
Expand All @@ -22,13 +22,13 @@ ToElementBarSkin >> installLookEvent: anEvent [
]

{ #category : #'accessing - shortcuts' }
ToElementBarSkin >> shortcutsToInstallIn: aSelect [
ToElementBarSkinDep >> shortcutsToInstallIn: aSelect [

^ Array streamContents: [ :stream | ]
]

{ #category : #'event handling' }
ToElementBarSkin >> uninstallLookEvent: anEvent [
ToElementBarSkinDep >> uninstallLookEvent: anEvent [

super uninstallLookEvent: anEvent.
anEvent elementDo: [ :e |
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Class {
#name : #ToLinearBarElement,
#name : #ToBarElement,
#superclass : #ToAbstractListElement,
#instVars : [
'nodeWrapping',
Expand All @@ -9,8 +9,14 @@ Class {
#category : #'Toplo-Widget-List-Core'
}

{ #category : #layout }
ToBarElement >> checkVisibleNodes [

self nodeContainer checkVisibleNodes
]

{ #category : #initialization }
ToLinearBarElement >> configureLayout [
ToBarElement >> configureLayout [

self isHorizontal
ifTrue: [
Expand All @@ -21,48 +27,49 @@ ToLinearBarElement >> configureLayout [
self constraintsDo: [ :c |
c vertical matchParent.
c horizontal fitContent ] ].
self nodeContainer configureLayoutIn: self
self nodeContainer configureLayoutIn: self.
self checkVisibleNodes
]

{ #category : #initialization }
ToLinearBarElement >> defaultDataSource [
ToBarElement >> defaultDataSource [

^ ToInfiniteCollectionDataSource new
]

{ #category : #initialization }
ToLinearBarElement >> defaultEventHandler [
ToBarElement >> defaultEventHandler [

^ ToListElementEventHandler new
]

{ #category : #initialization }
ToLinearBarElement >> defaultNodeContainer [
ToBarElement >> defaultNodeContainer [

^ ToLinearBarInnerElement onLinearBarElement: self
^ ToInnerBarElement onLinearBarElement: self
]

{ #category : #initialization }
ToLinearBarElement >> defaultNodeManagerClass [
ToBarElement >> defaultNodeManagerClass [

^ ToLinearBarNodeManager
^ ToBarNodeManager
]

{ #category : #accessing }
ToLinearBarElement >> fakeDataItem: aDataItem [
ToBarElement >> fakeDataItem: aDataItem [

self nodeContainer fakeDataItem: aDataItem
]

{ #category : #'t - orientable - orientation' }
ToLinearBarElement >> horizontal: aBoolean [
ToBarElement >> horizontal: aBoolean [

super horizontal: aBoolean.
self configureLayout
]

{ #category : #initialization }
ToLinearBarElement >> initialize [
ToBarElement >> initialize [

super initialize.
nodeWrapping := true.
Expand All @@ -72,52 +79,52 @@ ToLinearBarElement >> initialize [
]

{ #category : #initialization }
ToLinearBarElement >> installNodeContainer [
ToBarElement >> installNodeContainer [

self configureLayout
]

{ #category : #accessing }
ToLinearBarElement >> nodeAutoDistribution [
ToBarElement >> nodeAutoDistribution [

^ nodeAutoDistribution
]

{ #category : #accessing }
ToLinearBarElement >> nodeAutoDistribution: aBoolean [
ToBarElement >> nodeAutoDistribution: aBoolean [

nodeAutoDistribution := aBoolean.
self configureLayout
]

{ #category : #accessing }
ToLinearBarElement >> nodeScrolling [
ToBarElement >> nodeScrolling [

^ nodeScrolling
]

{ #category : #accessing }
ToLinearBarElement >> nodeScrolling: aBoolean [
ToBarElement >> nodeScrolling: aBoolean [

nodeScrolling := aBoolean.
self configureLayout
]

{ #category : #accessing }
ToLinearBarElement >> nodeWrapping [
ToBarElement >> nodeWrapping [

^ nodeWrapping
]

{ #category : #accessing }
ToLinearBarElement >> nodeWrapping: aBoolean [
ToBarElement >> nodeWrapping: aBoolean [

nodeWrapping := aBoolean.
self configureLayout
]

{ #category : #'t - orientable - orientation' }
ToLinearBarElement >> vertical: aBoolean [
ToBarElement >> vertical: aBoolean [

super vertical: aBoolean.
self configureLayout
Expand Down
25 changes: 25 additions & 0 deletions src/Toplo-Widget-List/ToBarNode.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
Class {
#name : #ToBarNode,
#superclass : #ToNode,
#category : #'Toplo-Widget-List-Node'
}

{ #category : #initialization }
ToBarNode >> autoDistribute: aBoolean [

aBoolean
ifTrue: [
self constraintsDo: [ :c |
self holder listElement isHorizontal
ifTrue: [ c horizontal matchParent ]
ifFalse: [ c vertical matchParent ] ] ]
ifFalse: [ self setInitialLayoutConstraints ]
]

{ #category : #initialization }
ToBarNode >> setInitialLayoutConstraints [

self constraintsDo: [ :c |
c horizontal fitContent.
c vertical fitContent ]
]
Loading

0 comments on commit 636eb17

Please sign in to comment.