PluggableHierarchicalList.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 02 Sep 2022 11:25:39 +0100
branchjv
changeset 6261 9b7eb7159d29
parent 6260 a9f10fa83270
permissions -rw-r--r--
Fix loong standing bug with some menus not being translated / resolved This has happened with browser "View" menu when sometimes it had the slice resolved and sometimes not. It turned out that it was because the code disabled resources (and therefore slices) resolution when processing shortcuts, so the menu was created and cached unresolved. This fixes the issue. eXept apparently run into the same problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4770
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
5814
70d07365a2d4 Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4770
diff changeset
     2
 COPYRIGHT (c) 2015 Jan Vrany
6260
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
     3
 COPYRIGHT (c) 2022 LabWare
4770
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
              All Rights Reserved
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 This software is furnished under a license and may be used
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
 only in accordance with the terms of that license and with the
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 inclusion of the above copyright notice.   This software may not
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 be provided or otherwise made available to, or used by, any
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 other person.  No title to or ownership of the software is
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
 hereby transferred.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
"
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
"{ Package: 'stx:libwidg2' }"
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
"{ NameSpace: Smalltalk }"
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
HierarchicalList subclass:#PluggableHierarchicalList
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	instanceVariableNames:'childBlock labelBlock iconBlock'
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	classVariableNames:''
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	poolDictionaries:''
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
	category:'Views-Support'
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
!
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
!PluggableHierarchicalList class methodsFor:'documentation'!
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
copyright
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
"
5814
70d07365a2d4 Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4770
diff changeset
    28
 COPYRIGHT (c) 2015 Jan Vrany
6260
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
    29
 COPYRIGHT (c) 2022 LabWare
4770
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
              All Rights Reserved
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
 This software is furnished under a license and may be used
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
 only in accordance with the terms of that license and with the
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
 be provided or otherwise made available to, or used by, any
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
 other person.  No title to or ownership of the software is
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
 hereby transferred.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
"
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
!
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
documentation
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
"
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
    A customizable hierarchical tree list for ad-hoc trees
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
    [author:]
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
        Jan Vrany <jan.vrany@fit.cvut.cz>
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    [instance variables:]
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    [class variables:]
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    [see also:]
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
        protocol examples
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
"
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
! !
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
!PluggableHierarchicalList class methodsFor:'examples'!
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
example1
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    | window view list |
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    "
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    PluggableHierarchicalList example1
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    "
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    window := StandardSystemView new; extent:300@300.  
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    window label: self class name , '>> #example1'.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    view := ScrollableView for:HierarchicalListView origin:0.0@0.0 corner:1.0@1.0 in: window.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    list := PluggableHierarchicalList new.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    list childBlock:[ :parent | 1 to: 5 collect: [:i | parent copyWith: i ] ].
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    list labelBlock:[ :child  | 'Section ' , child printString ].
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    list root: #(1).
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    view list: list.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    window open.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    "Created: / 21-05-2015 / 19:05:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
! !
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
!PluggableHierarchicalList methodsFor:'accessing'!
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
childBlock
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    ^ childBlock
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
!
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
childBlock:aBlock
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    childBlock := aBlock.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
!
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
iconBlock
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    ^ iconBlock
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
!
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
iconBlock:aBlock
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    iconBlock := aBlock.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
!
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
labelBlock
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    ^ labelBlock
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
!
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
labelBlock:aBlock
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
    labelBlock := aBlock.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
! !
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
!PluggableHierarchicalList methodsFor:'accessing-root'!
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
root:anObject
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    | item |
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
    item := HierarchicalItemWithLabelAndIconAndValue new.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    item label: (labelBlock notNil ifTrue:[ labelBlock value: anObject ] ifFalse:[ anObject displayString ]).
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
    item icon:  (iconBlock notNil ifTrue:[ iconBlock value: anObject ] ifFalse:[ nil ]).
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    item value: anObject. 
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
    super root: item.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
    "Created: / 21-05-2015 / 19:17:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6260
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   119
!
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   120
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   121
roots: aCollection
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   122
    | rootItem |
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   123
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   124
    rootItem := HierarchicalItemWithLabelAndIconAndValue new.
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   125
    rootItem label: 'Root'.
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   126
    rootItem children: (aCollection collect: [ :child |
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   127
        | childItem |
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   128
        childItem := HierarchicalItemWithLabelAndIconAndValue new.
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   129
        childItem label: (labelBlock notNil ifTrue:[ labelBlock value: child ] ifFalse:[ child displayString ]).
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   130
        childItem icon:  (iconBlock notNil ifTrue:[ iconBlock value: child] ifFalse:[ nil ]).
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   131
        childItem value: child.   
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   132
        childItem parent: rootItem 
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   133
    ]).
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   134
    rootItem expand.
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   135
    super root: rootItem.
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   136
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   137
    "Created: / 29-07-2022 / 17:19:07 / Jan Vrany <jan.vrany@labware.com>"
4770
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
! !
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
!PluggableHierarchicalList methodsFor:'protocol'!
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
childrenFor: parentItem
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
    | parent children |
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
    parent := parentItem value.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
    children := childBlock value: parent.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
    ^ children collect:[ :child |
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
        | childItem |
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
        childItem := HierarchicalItemWithLabelAndIconAndValue new.
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
        childItem label: (labelBlock notNil ifTrue:[ labelBlock value: child ] ifFalse:[ child displayString ]).
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
        childItem icon:  (iconBlock notNil ifTrue:[ iconBlock value: child] ifFalse:[ nil ]).
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
        childItem value: child.   
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
        childItem parent: parentItem
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
    ]
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
    "Created: / 21-05-2015 / 19:19:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
! !
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
6260
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   159
!PluggableHierarchicalList class methodsFor:'documentation'!
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   160
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   161
version_HG
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   162
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   163
    ^ '$Changeset: <not expanded> $'
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   164
! !
a9f10fa83270 Add utility method `PluggableHierarchicalList >> roots:`
Jan Vrany <jan.vrany@labware.com>
parents: 5814
diff changeset
   165