508 ! |
507 ! |
509 |
508 |
510 addLabel:aLabel selector:aSelector after:aLabelOrSelectorOrNumber |
509 addLabel:aLabel selector:aSelector after:aLabelOrSelectorOrNumber |
511 "insert another label/selector pair at some place. |
510 "insert another label/selector pair at some place. |
512 Being very friendly here, allowing label-string, selector or numeric |
511 Being very friendly here, allowing label-string, selector or numeric |
513 index for the argument aLabelOrSelectorOrNumber" |
512 index for the argument aLabelOrSelectorOrNumber. |
|
513 |
|
514 To be independent of the entries label, we recommend you use the selector |
|
515 as index; in systems which translate strings for national variants, |
|
516 this makes your code easier to maintain." |
|
517 |
|
518 ^ self addLabel:aLabel |
|
519 selector:aSelector |
|
520 before:(self indexOf:aLabelOrSelectorOrNumber) + 1 |
|
521 " |
|
522 |v1 v2 v3 v4| |
|
523 |
|
524 v1 := CodeView new realize. |
|
525 |
|
526 v2 := CodeView new realize. |
|
527 v2 middleButtonMenu menuView addLabel:'new entry' selector:#foo after:'paste'. |
|
528 |
|
529 v3 := CodeView new realize. |
|
530 v3 middleButtonMenu menuView addLabel:'new entry' selector:#foo after:#others. |
|
531 |
|
532 v4 := CodeView new realize. |
|
533 v4 middleButtonMenu menuView addLabel:'new entry' selector:#foo after:1. |
|
534 " |
|
535 ! |
|
536 |
|
537 addLabel:aLabel selector:aSelector before:aLabelOrSelectorOrNumber |
|
538 "insert another label/selector pair at some place. |
|
539 Being very friendly here, allowing label-string, selector or numeric |
|
540 index for the argument aLabelOrSelectorOrNumber. |
|
541 |
|
542 To be independent of the entries label, we recommend you use the selector |
|
543 as index; in systems which translate strings for national variants, |
|
544 this makes your code easier to maintain." |
514 |
545 |
515 |idx| |
546 |idx| |
516 |
547 |
517 list isNil ifTrue:[ |
548 list isNil ifTrue:[ |
518 ^ self addLabel:aLabel selector:aSelector |
549 ^ self addLabel:aLabel selector:aSelector |
519 ]. |
550 ]. |
520 " |
551 " |
521 be user friendly - allow both label or selector |
552 be user friendly - allow both label or selector |
522 to be passed |
553 to be passed |
523 " |
554 " |
524 aLabelOrSelectorOrNumber isInteger ifTrue:[ |
555 idx := self indexOf:aLabelOrSelectorOrNumber. |
525 idx := aLabelOrSelectorOrNumber |
|
526 ] ifFalse:[ |
|
527 idx := list indexOf:aLabelOrSelectorOrNumber ifAbsent:[selectors indexOf:aLabelOrSelectorOrNumber]. |
|
528 ]. |
|
529 (idx between:0 and:list size) ifFalse:[ |
|
530 "add to end" |
|
531 ^ self addLabel:aLabel selector:aSelector |
|
532 ]. |
|
533 |
|
534 list := list asOrderedCollection add:aLabel beforeIndex:(idx + 1). |
|
535 selectors := selectors asOrderedCollection add:aSelector beforeIndex:(idx + 1). |
|
536 enableFlags := enableFlags asOrderedCollection add:true beforeIndex:(idx + 1). |
|
537 subMenus notNil ifTrue:[ |
|
538 subMenus := subMenus asOrderedCollection add:nil beforeIndex:(idx + 1). |
|
539 ]. |
|
540 args notNil ifTrue:[ |
|
541 args := args asOrderedCollection add:nil beforeIndex:(idx + 1). |
|
542 ]. |
|
543 self recomputeSize |
|
544 |
|
545 " |
|
546 |v| |
|
547 CodeView new realize. |
|
548 v := CodeView new realize. |
|
549 v middleButtonMenu menuView addLabel:'new entry' selector:#foo after:'paste'. |
|
550 " |
|
551 ! |
|
552 |
|
553 addLabel:aLabel selector:aSelector before:aLabelOrSelectorOrNumber |
|
554 "insert another label/selector pair at some place. |
|
555 Being very friendly here, allowing label-string, selector or numeric |
|
556 index for the argument aLabelOrSelectorOrNumber" |
|
557 |
|
558 |idx| |
|
559 |
|
560 list isNil ifTrue:[ |
|
561 ^ self addLabel:aLabel selector:aSelector |
|
562 ]. |
|
563 " |
|
564 be user friendly - allow both label or selector |
|
565 to be passed |
|
566 " |
|
567 aLabelOrSelectorOrNumber isInteger ifTrue:[ |
|
568 idx := aLabelOrSelectorOrNumber |
|
569 ] ifFalse:[ |
|
570 idx := list indexOf:aLabelOrSelectorOrNumber ifAbsent:[selectors indexOf:aLabelOrSelectorOrNumber]. |
|
571 ]. |
|
572 (idx between:1 and:list size) ifFalse:[ |
556 (idx between:1 and:list size) ifFalse:[ |
573 "add to end" |
557 "add to end" |
574 ^ self addLabel:aLabel selector:aSelector |
558 ^ self addLabel:aLabel selector:aSelector |
575 ]. |
559 ]. |
576 |
560 |
577 list := list asOrderedCollection add:aLabel beforeIndex:idx. |
561 list := list asOrderedCollection. |
578 selectors := selectors asOrderedCollection add:aSelector beforeIndex:idx. |
562 list add:aLabel beforeIndex:idx. |
579 enableFlags := enableFlags asOrderedCollection add:true beforeIndex:idx. |
563 selectors := selectors asOrderedCollection. |
|
564 selectors add:aSelector beforeIndex:idx. |
|
565 enableFlags := enableFlags asOrderedCollection. |
|
566 enableFlags add:true beforeIndex:idx. |
580 subMenus notNil ifTrue:[ |
567 subMenus notNil ifTrue:[ |
581 subMenus := subMenus asOrderedCollection add:nil beforeIndex:idx. |
568 subMenus := subMenus asOrderedCollection. |
|
569 subMenus add:nil beforeIndex:idx. |
582 ]. |
570 ]. |
583 args notNil ifTrue:[ |
571 args notNil ifTrue:[ |
584 args := args asOrderedCollection add:nil beforeIndex:idx. |
572 args := args asOrderedCollection. |
|
573 args add:nil beforeIndex:idx. |
585 ]. |
574 ]. |
586 self recomputeSize |
575 self recomputeSize |
587 |
576 |
588 " |
577 " |
589 |v| |
578 |v1 v2 v3 v4| |
590 CodeView new realize. |
579 |
591 v := CodeView new realize. |
580 v1 := CodeView new realize. |
592 v middleButtonMenu menuView addLabel:'new entry' selector:#foo before:'paste'. |
581 |
|
582 v2 := CodeView new realize. |
|
583 v2 middleButtonMenu menuView addLabel:'new entry' selector:#foo before:'paste'. |
|
584 |
|
585 v3 := CodeView new realize. |
|
586 v3 middleButtonMenu menuView addLabel:'new entry' selector:#foo before:#again. |
|
587 |
|
588 v4 := CodeView new realize. |
|
589 v4 middleButtonMenu menuView addLabel:'new entry' selector:#foo before:1. |
593 " |
590 " |
594 ! |
591 ! |
595 |
592 |
596 remove:indexOrName |
593 remove:indexOrName |
597 "remove the label at index" |
594 "remove the label at index" |