extensions.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 26 Jan 2014 23:47:27 +0000
changeset 506 b611cc119554
child 534 f89b11cd6fa5
permissions -rw-r--r--
Added support for custom menu building and injecting into class browser's menus. Added CustomPerspective, an enum-like class describing a use's view `perspective` - class, instance variable, method, package etc. Added methods here and there to make to bring whole thing to life. Added CustomFooBarBazGenerator as an example.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
506
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'jn:refactoring_custom' }"!
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
!Tools::NewSystemBrowser methodsFor:'menus extensions-custom refactorings'!
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
classMenuExtensionCustomRefactorings:aMenu 
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
    <menuextension: #classMenu>
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
    | item  index  perspective  context |
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
    item := MenuItem label:(resources string:'Generate - Custom').
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
    perspective := CustomPerspective classPerspective.
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
    context := CustomContext perspective:perspective
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
            state:self navigationState.
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
    item submenuChannel:[ CustomMenuBuilder buildMenuForContext:context ].
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
    index := aMenu indexOfMenuItemForWhich:[:each | each label = 'Generate' ].
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
    index ~~ 0 ifTrue:[
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
        aMenu addItem:item beforeIndex:index + 1.
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
    ] ifFalse:[
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
        aMenu addItem:item.
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
    ].
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
    "Created: / 26-01-2014 / 13:22:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
    "Modified: / 26-01-2014 / 23:36:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
! !
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
!jn_refactoring_custom class methodsFor:'documentation'!
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
extensionsVersion_HG
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
    ^ '$Changeset: <not expanded> $'
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
! !