MenuEvent.st
changeset 4259 94d40e23958d
child 4261 01dadd70e077
equal deleted inserted replaced
4258:b70835a4f0b2 4259:94d40e23958d
       
     1 "{ Package: 'stx:libwidg' }"
       
     2 
       
     3 WidgetEvent subclass:#MenuEvent
       
     4 	instanceVariableNames:'menu itemIndex item itemLabel itemValue'
       
     5 	classVariableNames:''
       
     6 	poolDictionaries:''
       
     7 	category:'Views-Menus'
       
     8 !
       
     9 
       
    10 MenuPanel::MenuEvent subclass:#MenuEnterItemEvent
       
    11 	instanceVariableNames:''
       
    12 	classVariableNames:''
       
    13 	poolDictionaries:''
       
    14 	privateIn:MenuEvent
       
    15 !
       
    16 
       
    17 MenuPanel::MenuEvent subclass:#MenuHideEvent
       
    18 	instanceVariableNames:''
       
    19 	classVariableNames:''
       
    20 	poolDictionaries:''
       
    21 	privateIn:MenuEvent
       
    22 !
       
    23 
       
    24 MenuPanel::MenuEvent subclass:#MenuLeaveItemEvent
       
    25 	instanceVariableNames:''
       
    26 	classVariableNames:''
       
    27 	poolDictionaries:''
       
    28 	privateIn:MenuEvent
       
    29 !
       
    30 
       
    31 MenuPanel::MenuEvent subclass:#MenuSelectItemEvent
       
    32 	instanceVariableNames:''
       
    33 	classVariableNames:''
       
    34 	poolDictionaries:''
       
    35 	privateIn:MenuEvent
       
    36 !
       
    37 
       
    38 MenuPanel::MenuEvent subclass:#MenuShowEvent
       
    39 	instanceVariableNames:''
       
    40 	classVariableNames:''
       
    41 	poolDictionaries:''
       
    42 	privateIn:MenuEvent
       
    43 !
       
    44 
       
    45 !MenuEvent class methodsFor:'documentation'!
       
    46 
       
    47 documentation
       
    48 "
       
    49     Internal menu events.
       
    50     These have been added very lately to support capture & replay inside st/x applications.
       
    51     They are used internally within a menu-widget instead of direct message sends, thus
       
    52     allowing interception and synthetization.
       
    53 
       
    54     Due to some historic leftover, there are two mechanisms for menus:
       
    55         1) the (very) old MenuView (which inherits from SelectionInListView)
       
    56         2) the newer MenuPanel.
       
    57 
       
    58     The menuView uses simple text and values and it is basically index-based.
       
    59     The menuPanel uses instances of MenuItem which contain the action information.
       
    60 
       
    61     The menuView should go away, as soon as someone finds time to convert all leftover uses
       
    62     of it in the system (mostly popupMenus in text views).
       
    63 "
       
    64 ! !
       
    65 
       
    66 !MenuEvent class methodsFor:'instance creation'!
       
    67 
       
    68 enterMenuItem:itemOrNil index:index text:textOrNil value:valueOrNil inMenu:aMenu
       
    69     |ev|
       
    70 
       
    71     ev := (MenuEnterItemEvent basicNew).
       
    72     ev item:itemOrNil index:index text:textOrNil value:valueOrNil menu:aMenu.
       
    73 
       
    74     ev selector:#processMenuEnterItemEvent:.
       
    75     ev arguments:(Array with:ev).
       
    76     ^ ev
       
    77 
       
    78     "Created: / 29-06-2011 / 12:25:55 / cg"
       
    79 !
       
    80 
       
    81 hideMenu:aMenu
       
    82     |ev|
       
    83 
       
    84     ev := (MenuHideEvent basicNew).
       
    85     ev menu:aMenu.
       
    86 
       
    87     ev selector:#processHideMenuEvent:.
       
    88     ev arguments:(Array with:ev).
       
    89     ^ ev
       
    90 
       
    91     "Created: / 29-06-2011 / 12:30:16 / cg"
       
    92 !
       
    93 
       
    94 leaveMenuItem:itemOrNil index:index text:textOrNil value:valueOrNil inMenu:aMenu
       
    95     |ev|
       
    96 
       
    97     ev := (MenuLeaveItemEvent basicNew).
       
    98     ev menu:aMenu.
       
    99     ev item:itemOrNil index:index text:textOrNil value:valueOrNil menu:aMenu.
       
   100 
       
   101     ev selector:#processMenuLeaveItemEvent:.
       
   102     ev arguments:(Array with:ev).
       
   103     ^ ev
       
   104 
       
   105     "Created: / 29-06-2011 / 12:27:51 / cg"
       
   106 !
       
   107 
       
   108 selectMenuItem:itemOrNil index:indexOrNil text:textOrNil value:valueOrNil inMenu:aMenu
       
   109     |ev|
       
   110 
       
   111     ev := (MenuSelectItemEvent basicNew).
       
   112     ev item:itemOrNil index:indexOrNil text:textOrNil value:valueOrNil menu:aMenu.
       
   113 
       
   114     ev selector:#processMenuSelectItemEvent:.
       
   115     ev arguments:(Array with:ev).
       
   116     ^ ev
       
   117 
       
   118     "Created: / 29-06-2011 / 12:29:29 / cg"
       
   119 !
       
   120 
       
   121 showMenu:aMenu
       
   122     |ev|
       
   123 
       
   124     ev := (MenuShowEvent basicNew).
       
   125     ev menu:aMenu.
       
   126 
       
   127     ev selector:#processShowMenuEvent:.
       
   128     ev arguments:(Array with:ev).
       
   129     ^ ev
       
   130 
       
   131     "Created: / 29-06-2011 / 12:30:05 / cg"
       
   132 ! !
       
   133 
       
   134 !MenuEvent methodsFor:'accessing'!
       
   135 
       
   136 item
       
   137     "attention: only menuPanels return something useful here;
       
   138      menuview will return nil"
       
   139 
       
   140     ^ item
       
   141 
       
   142     "Modified: / 29-06-2011 / 12:41:28 / cg"
       
   143 !
       
   144 
       
   145 itemIndex
       
   146     "the index (1..) of the menu item"
       
   147 
       
   148     ^ itemIndex
       
   149 
       
   150     "Modified: / 29-06-2011 / 12:41:47 / cg"
       
   151 !
       
   152 
       
   153 itemLabel
       
   154     "the item's label text. Might be nil or non-string (image or labelAndIcon)"
       
   155 
       
   156     ^ itemLabel
       
   157 
       
   158     "Modified: / 29-06-2011 / 12:42:18 / cg"
       
   159 !
       
   160 
       
   161 itemValue
       
   162     "the item's value. That is completely up to the menu-widget's user."
       
   163 
       
   164     ^ itemValue
       
   165 
       
   166     "Modified: / 29-06-2011 / 12:42:46 / cg"
       
   167 !
       
   168 
       
   169 menu
       
   170     "the item's menu; either a menuPanel or a menuView"
       
   171 
       
   172     ^ menu
       
   173 
       
   174     "Modified: / 29-06-2011 / 12:43:00 / cg"
       
   175 ! !
       
   176 
       
   177 !MenuEvent methodsFor:'instance creation'!
       
   178 
       
   179 item:itemArgOrNil index:indexArgOrNil text:textArgOrNil value:valueArgOrNil menu:aMenu
       
   180     item := itemArgOrNil.
       
   181     itemIndex := indexArgOrNil.
       
   182     itemLabel := textArgOrNil.
       
   183     itemValue := valueArgOrNil.
       
   184     menu := receiver := aMenu
       
   185 
       
   186     "Created: / 29-06-2011 / 12:40:49 / cg"
       
   187 ! !
       
   188 
       
   189 !MenuEvent class methodsFor:'documentation'!
       
   190 
       
   191 version_CVS
       
   192     ^ '$Header: /cvs/stx/stx/libwidg/MenuEvent.st,v 1.1 2011-06-29 12:14:14 cg Exp $'
       
   193 ! !