HierarchicalItemWithLabelAndIcon.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 02 Sep 2022 11:25:39 +0100
branchjv
changeset 6261 9b7eb7159d29
parent 4946 bca0c3af0b20
child 6018 82aee28e50d5
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:
2943
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
              All Rights Reserved
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
4694
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    12
"{ Package: 'stx:libwidg2' }"
2943
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
4694
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    14
"{ NameSpace: Smalltalk }"
2943
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
HierarchicalItemWithLabel subclass:#HierarchicalItemWithLabelAndIcon
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	instanceVariableNames:'icon'
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	category:'Views-Support'
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!HierarchicalItemWithLabelAndIcon class methodsFor:'documentation'!
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
copyright
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
 COPYRIGHT (c) 2006 by eXept Software AG
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
              All Rights Reserved
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 This software is furnished under a license and may be used
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 only in accordance with the terms of that license and with the
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 be provided or otherwise made available to, or used by, any
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 other person.  No title to or ownership of the software is
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 hereby transferred.
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
"
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
! !
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
4945
dde70d8f3913 added instance creation messages label:/label:icon:
Claus Gittinger <cg@exept.de>
parents: 4694
diff changeset
    39
!HierarchicalItemWithLabelAndIcon class methodsFor:'instance creation'!
dde70d8f3913 added instance creation messages label:/label:icon:
Claus Gittinger <cg@exept.de>
parents: 4694
diff changeset
    40
dde70d8f3913 added instance creation messages label:/label:icon:
Claus Gittinger <cg@exept.de>
parents: 4694
diff changeset
    41
label:aLabel icon:anIcon
dde70d8f3913 added instance creation messages label:/label:icon:
Claus Gittinger <cg@exept.de>
parents: 4694
diff changeset
    42
    ^ self new label:aLabel icon:anIcon
dde70d8f3913 added instance creation messages label:/label:icon:
Claus Gittinger <cg@exept.de>
parents: 4694
diff changeset
    43
! !
dde70d8f3913 added instance creation messages label:/label:icon:
Claus Gittinger <cg@exept.de>
parents: 4694
diff changeset
    44
2943
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
!HierarchicalItemWithLabelAndIcon methodsFor:'accessing'!
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
icon
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    "returns the icon"
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    ^ icon
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
!
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
4694
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    53
icon:anIcon
2943
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
    "set the value of the instance variable 'icon' (automatically generated)"
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
4694
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    56
    icon ~= anIcon ifTrue:[
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    57
        icon := anIcon.
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    58
        self iconChanged
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    59
    ].
2943
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
!
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
label:aLabel icon:anIcon
4946
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    63
    |anyChange labelChanged|
4694
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    64
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    65
    anyChange := false.
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    66
    (icon ~= anIcon) ifTrue:[
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    67
        icon := anIcon.
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    68
        anyChange := true
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    69
    ].
4946
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    70
    
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    71
    labelChanged := false.
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    72
    (label isString and:[aLabel isString]) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    73
        labelChanged := (label sameStringAndEmphasisAs:aLabel) not.
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    74
    ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    75
        labelChanged := (label ~= aLabel)
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    76
    ].
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    77
    labelChanged ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    78
        label := aLabel.
4694
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    79
        anyChange := true
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    80
    ].
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    81
    anyChange ifTrue:[ self changed ].
2943
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
!
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
labeled:aLabel icon:anIcon
4694
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    85
    "backward compatibility"
2943
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
4694
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    87
    self label:aLabel icon:anIcon
2943
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
! !
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
!HierarchicalItemWithLabelAndIcon class methodsFor:'documentation'!
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
version
4945
dde70d8f3913 added instance creation messages label:/label:icon:
Claus Gittinger <cg@exept.de>
parents: 4694
diff changeset
    93
    ^ '$Header$'
4946
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    94
!
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    95
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    96
version_CVS
Claus Gittinger <cg@exept.de>
parents: 4945
diff changeset
    97
    ^ '$Header$'
2943
8f42783f6e38 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
! !
4694
7f830911e3aa change messages when icon or label changes
Claus Gittinger <cg@exept.de>
parents: 2943
diff changeset
    99