3375 ]. |
3375 ]. |
3376 ]. |
3376 ]. |
3377 rest := subMenuPath copyFrom:2. |
3377 rest := subMenuPath copyFrom:2. |
3378 menuPanel := subMenu := item submenu. |
3378 menuPanel := subMenu := item submenu. |
3379 |
3379 |
3380 subMenuPath do:[:pathComponent| |
3380 rest do:[:pathComponent| |
3381 subMenu notNil ifTrue:[ |
3381 subMenu notNil ifTrue:[ |
3382 menuPanel := subMenu. |
3382 menuPanel := subMenu. |
3383 subItem := subMenu itemAt:pathComponent. |
3383 subItem := subMenu itemAt:pathComponent. |
3384 subItem isNil ifTrue:[ |
3384 subItem isNil ifTrue:[ |
3385 subMenu := nil |
3385 subMenu := nil |
3386 ] ifFalse:[ |
3386 ] ifFalse:[ |
3387 subMenu := subItem submenu. |
3387 subMenu := subItem submenu. |
3388 ] |
3388 ] |
3389 ]. |
3389 ]. |
3390 ]. |
3390 ]. |
|
3391 subMenu notNil ifTrue:[ |
|
3392 menuPanel := subMenu. |
|
3393 ] |
3391 ]. |
3394 ]. |
3392 |
3395 |
3393 "/ look if not already in the panel |
3396 "/ look if not already in the panel |
3394 (self findItem:newItem inMenuPanel:menuPanel) ~~ 0 ifTrue:[ |
3397 (self findItem:newItem inMenuPanel:menuPanel) ~~ 0 ifTrue:[ |
3395 "item already exists - do nothing" |
3398 "item already exists - do nothing" |
3396 ^ self. |
3399 ^ self. |
3397 ]. |
3400 ]. |
3398 "/ ok, not there; search for the position to put the item |
3401 |
|
3402 "/ ok, search for the position to put the item |
3399 |
3403 |
3400 freeMenuIndex := 0. |
3404 freeMenuIndex := 0. |
3401 itemNameOrNil notNil ifTrue:[ |
3405 itemNameOrNil notNil ifTrue:[ |
3402 freeMenuIndex := menuPanel findFirst:[:i| i nameKey = itemNameOrNil]. |
3406 freeMenuIndex := menuPanel findFirst:[:i| i nameKey = itemNameOrNil]. |
3403 freeMenuIndex == 0 ifTrue:[ |
3407 freeMenuIndex == 0 ifTrue:[ |
3404 freeMenuIndex := menuPanel findFirst:[:i| i activeHelpKey = itemNameOrNil |
3408 freeMenuIndex := menuPanel findFirst:[:i| i itemValue = itemNameOrNil]. |
3405 or:[i label = itemNameOrNil]]. |
3409 freeMenuIndex == 0 ifTrue:[ |
|
3410 freeMenuIndex := menuPanel findFirst:[:i| i activeHelpKey = itemNameOrNil |
|
3411 or:[i label = itemNameOrNil]]. |
|
3412 ] |
3406 ] |
3413 ] |
3407 ]. |
3414 ]. |
3408 freeMenuIndex == 0 ifTrue:[ |
3415 freeMenuIndex == 0 ifTrue:[ |
3409 freeMenuIndex := before ifTrue:1 ifFalse:[menuPanel numberOfItems + 1]. |
3416 freeMenuIndex := before ifTrue:1 ifFalse:[menuPanel numberOfItems + 1]. |
3410 ] ifFalse:[ |
3417 ] ifFalse:[ |