refactoring_custom/SmallSense__CustomMenuBuilder.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 13 Nov 2017 22:26:12 -0300
changeset 1060 af3a048f9618
parent 833 297eb38e4eee
child 1072 a44c741ee5ef
permissions -rw-r--r--
Fixed xompletion of instance variables in inspector
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
828
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
     1
"
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
     2
A custom code generation and refactoring support for Smalltalk/X
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
     3
Copyright (C) 2013-2015 Jakub Nesveda
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
     4
Copyright (C) 2013-now  Jan Vrany
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
     5
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
     6
This library is free software; you can redistribute it and/or
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
     7
modify it under the terms of the GNU Lesser General Public
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
     8
License as published by the Free Software Foundation; either
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
     9
version 2.1 of the License.
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    10
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    11
This library is distributed in the hope that it will be useful,
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    12
but WITHOUT ANY WARRANTY; without even the implied warranty of
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    14
Lesser General Public License for more details.
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    15
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    16
You should have received a copy of the GNU Lesser General Public
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    17
License along with this library; if not, write to the Free Software
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    18
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    19
"
833
297eb38e4eee Package jn:refactoring_custom renamed to stx:goodies/smallsense/refactoring_custom
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 830
diff changeset
    20
"{ Package: 'stx:goodies/smallsense/refactoring_custom' }"
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
    21
830
1a88f5e65fe2 Classes moved to namespace SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 828
diff changeset
    22
"{ NameSpace: SmallSense }"
803
95cdac772759 Fixed failing tests caused by new STX release
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 796
diff changeset
    23
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
    24
Object subclass:#CustomMenuBuilder
795
944c5812e702 Fixed typo in CustomMenuBuilder - rename afterMenuItemLabeled to afterMenuItemLabelled
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 791
diff changeset
    25
	instanceVariableNames:'perspective menu submenuLabel afterMenuItemLabelled
809
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
    26
		generatorOrRefactoringFilter resources navigationState manager
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
    27
		errorPrinter'
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
    28
	classVariableNames:''
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
	poolDictionaries:''
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
	category:'Interface-Refactoring-Custom-UI'
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
!
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    33
!CustomMenuBuilder class methodsFor:'documentation'!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    34
828
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    35
copyright
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    36
"
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    37
A custom code generation and refactoring support for Smalltalk/X
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    38
Copyright (C) 2013-2015 Jakub Nesveda
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    39
Copyright (C) 2013-now  Jan Vrany
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    40
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    41
This library is free software; you can redistribute it and/or
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    42
modify it under the terms of the GNU Lesser General Public
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    43
License as published by the Free Software Foundation; either
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    44
version 2.1 of the License.
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    45
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    46
This library is distributed in the hope that it will be useful,
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    47
but WITHOUT ANY WARRANTY; without even the implied warranty of
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    48
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    49
Lesser General Public License for more details.
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    50
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    51
You should have received a copy of the GNU Lesser General Public
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    52
License along with this library; if not, write to the Free Software
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    53
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    54
"
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    55
!
4c5acc592dc7 Added copyright notice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 809
diff changeset
    56
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    57
documentation
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    58
"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    59
    Injects menu item with submenu filled with generators or refactorings to the given menu.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    60
    Basically helps to extend system browser (NewSystemBrowser) context menu (for example
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    61
    the menu which pop-ups after right-click on the class list).
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    62
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    63
    [author:]
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    64
        Jakub Nesveda <nesvejak@fit.cvut.cz>
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    65
"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    66
! !
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    67
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    68
!CustomMenuBuilder class methodsFor:'instance creation'!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    69
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    70
new
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    71
    "return an initialized instance"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    72
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    73
    ^ self basicNew initialize.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    74
! !
772
012d73512a98 removed duplicate code in CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 647
diff changeset
    75
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
    76
!CustomMenuBuilder class methodsFor:'building'!
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
647
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
    78
buildMenuForContext:context filter: filter
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
    79
    ^ self new buildMenuForContext:context filter: filter
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
    80
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
    81
    "Created: / 26-08-2014 / 10:12:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
628
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 626
diff changeset
    82
! !
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 626
diff changeset
    83
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    84
!CustomMenuBuilder methodsFor:'accessing'!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    85
795
944c5812e702 Fixed typo in CustomMenuBuilder - rename afterMenuItemLabeled to afterMenuItemLabelled
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 791
diff changeset
    86
afterMenuItemLabelled
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    87
    "Returns menu item label after which will be placed 
795
944c5812e702 Fixed typo in CustomMenuBuilder - rename afterMenuItemLabeled to afterMenuItemLabelled
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 791
diff changeset
    88
     new menu item with generators or refactorings"
944c5812e702 Fixed typo in CustomMenuBuilder - rename afterMenuItemLabeled to afterMenuItemLabelled
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 791
diff changeset
    89
    
944c5812e702 Fixed typo in CustomMenuBuilder - rename afterMenuItemLabeled to afterMenuItemLabelled
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 791
diff changeset
    90
    ^ afterMenuItemLabelled
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    91
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    92
    "Modified (comment): / 28-12-2014 / 23:22:55 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    93
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    94
795
944c5812e702 Fixed typo in CustomMenuBuilder - rename afterMenuItemLabeled to afterMenuItemLabelled
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 791
diff changeset
    95
afterMenuItemLabelled:aLabel 
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    96
    "see afterMenuItemLabeled"
795
944c5812e702 Fixed typo in CustomMenuBuilder - rename afterMenuItemLabeled to afterMenuItemLabelled
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 791
diff changeset
    97
    
944c5812e702 Fixed typo in CustomMenuBuilder - rename afterMenuItemLabeled to afterMenuItemLabelled
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 791
diff changeset
    98
    afterMenuItemLabelled := aLabel
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
    99
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   100
    "Modified (comment): / 28-12-2014 / 23:20:31 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   101
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   102
809
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   103
errorPrinter
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   104
    "Returns printer (like Transcript) which should print/show errors while menu building.
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   105
    Better to print errors silently than destroy IDE functionality with recurring errors."
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   106
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   107
    ^ errorPrinter
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   108
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   109
    "Modified (comment): / 01-02-2015 / 19:38:14 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   110
!
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   111
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   112
errorPrinter: aPrinter
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   113
    "see errorPrinter"
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   114
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   115
    errorPrinter := aPrinter.
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   116
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   117
    "Modified (comment): / 01-02-2015 / 19:38:59 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   118
!
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   119
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   120
generatorOrRefactoringFilter
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   121
    "Returns one argument block which is used to filter generators or refactorings"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   122
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   123
    ^ generatorOrRefactoringFilter
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   124
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   125
    "Modified (comment): / 28-12-2014 / 23:23:59 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   126
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   127
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   128
generatorOrRefactoringFilter: aOneArgBlock
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   129
    "see generatorOrRefactoringFilter"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   130
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   131
    generatorOrRefactoringFilter := aOneArgBlock
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   132
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   133
    "Modified (comment): / 28-12-2014 / 23:25:34 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   134
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   135
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   136
groupsSortBlock
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   137
    "Returns a block used to sort generator or refactoring groups"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   138
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   139
    ^ [ :a :b | 
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   140
        a size = b size ifTrue: [ 
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   141
            | i | 
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   142
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   143
            i := 1.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   144
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   145
            [ i < a size and: [ (a at:i) = (b at:i) ] ] whileTrue: [
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   146
                i := i + 1 
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   147
            ].
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   148
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   149
            (a at:i) < (b at:i)
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   150
        ] ifFalse: [
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   151
            a size < b size
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   152
        ]
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   153
    ]
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   154
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   155
    "Created: / 28-12-2014 / 20:56:43 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   156
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   157
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   158
manager
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   159
    "Returns generator or refactoring manager which is used to access them.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   160
    See CustomManager for more details."
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   161
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   162
    ^ manager
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   163
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   164
    "Modified (comment): / 28-12-2014 / 23:26:48 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   165
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   166
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   167
manager: aManager
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   168
    "see manager"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   169
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   170
    manager := aManager
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   171
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   172
    "Modified (comment): / 28-12-2014 / 23:27:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   173
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   174
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   175
menu
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   176
    "Returns menu (instance of class Menu) in which is created new
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   177
    menu item with submenu filled with generators or refactorings"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   178
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   179
    ^ menu
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   180
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   181
    "Modified (comment): / 28-12-2014 / 23:28:28 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   182
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   183
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   184
menu: aMenu
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   185
    "see menu"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   186
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   187
    menu := aMenu
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   188
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   189
    "Modified (comment): / 28-12-2014 / 23:28:51 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   190
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   191
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   192
navigationState
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   193
    "see Tools::NavigationState"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   194
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   195
    ^ navigationState
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   196
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   197
    "Modified (comment): / 28-12-2014 / 23:29:30 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   198
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   199
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   200
navigationState: aNavigationState
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   201
    "see Tools::NavigationState"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   202
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   203
    navigationState := aNavigationState
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   204
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   205
    "Created: / 28-12-2014 / 10:09:12 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   206
    "Modified (comment): / 28-12-2014 / 23:29:54 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   207
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   208
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   209
perspective
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   210
    "see CustomPerspective"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   211
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   212
    ^ perspective
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   213
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   214
    "Modified (comment): / 28-12-2014 / 23:30:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   215
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   216
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   217
perspective: aCustomPerspective
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   218
    "see CustomPerspective"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   219
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   220
    perspective := aCustomPerspective
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   221
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   222
    "Modified (comment): / 28-12-2014 / 23:30:32 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   223
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   224
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   225
resources
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   226
    "Used to translate menu labels (resources string:)"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   227
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   228
    ^ resources
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   229
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   230
    "Modified (comment): / 28-12-2014 / 23:31:49 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   231
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   232
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   233
resources: someResources
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   234
    "see resources"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   235
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   236
    resources := someResources
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   237
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   238
    "Modified (comment): / 28-12-2014 / 23:32:37 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   239
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   240
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   241
submenuLabel
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   242
    "Returns label of menu item which contains submenu with generators or refactorings"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   243
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   244
    ^ submenuLabel
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   245
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   246
    "Modified (comment): / 28-12-2014 / 23:33:38 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   247
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   248
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   249
submenuLabel: aLabel
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   250
    "see submenuLabel"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   251
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   252
    submenuLabel := aLabel
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   253
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   254
    "Modified (comment): / 28-12-2014 / 23:33:54 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   255
! !
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   256
628
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 626
diff changeset
   257
!CustomMenuBuilder methodsFor:'building'!
6f639016753b Sort generators or refactorings by their group.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 626
diff changeset
   258
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   259
buildMenu
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   260
    | item context submenuChannel |
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
   261
796
1e98cf455d2d More error prone CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 795
diff changeset
   262
    (menu isNil or: [ perspective isNil ]) ifTrue: [ 
1e98cf455d2d More error prone CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 795
diff changeset
   263
        self error: 'Attributes named menu and perspective are required.'
1e98cf455d2d More error prone CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 795
diff changeset
   264
    ].
1e98cf455d2d More error prone CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 795
diff changeset
   265
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   266
    item := MenuItem label: (resources string: submenuLabel).
830
1a88f5e65fe2 Classes moved to namespace SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 828
diff changeset
   267
    context := SmallSense::CustomBrowserContext 
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   268
                    perspective: perspective
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   269
                    state: navigationState.
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
   270
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   271
    submenuChannel := [ self buildMenuForContext: context filter: generatorOrRefactoringFilter ].
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   272
    "Do not show empty context menu"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   273
    submenuChannel value hasItems ifTrue: [ 
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   274
        item submenuChannel: submenuChannel.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   275
        self 
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   276
            placeMenuItem: item 
795
944c5812e702 Fixed typo in CustomMenuBuilder - rename afterMenuItemLabeled to afterMenuItemLabelled
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 791
diff changeset
   277
            afterMenuItemLabeled: afterMenuItemLabelled 
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   278
            forMenu: menu 
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   279
    ]
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   280
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   281
    "Created: / 27-12-2014 / 17:20:05 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
796
1e98cf455d2d More error prone CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 795
diff changeset
   282
    "Modified: / 04-01-2015 / 15:57:03 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
830
1a88f5e65fe2 Classes moved to namespace SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 828
diff changeset
   283
    "Modified: / 11-05-2015 / 09:07:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
647
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   284
!
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   285
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   286
buildMenuForContext: context filter: filter 
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   287
    | submenu generatorsAndRefactorings groups groupsMap |
647
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   288
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   289
    submenu := Menu new.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   290
    generatorsAndRefactorings := manager generatorsAndRefactoringsSelect: [ :generatorOrRefactoring |
809
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   291
        [ (generatorOrRefactoring availableInPerspective: context perspective)
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   292
            and: [ filter value: generatorOrRefactoring ]
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   293
            and: [ generatorOrRefactoring availableForProgrammingLanguagesInContext: context ]
809
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   294
            and: [ generatorOrRefactoring label notNil ]
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   295
        ] on: Error do: [ :error |
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   296
            errorPrinter showCR: 'An error occured when selecting code generators/refactorings.'.
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   297
            errorPrinter showCR: 'Class: ', generatorOrRefactoring name, ' Error: ', error asString.  
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   298
            false
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   299
        ].
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   300
    ].
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   301
647
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   302
    "/ Now, group them by group.
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   303
    groupsMap := Dictionary new.
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   304
    groups := OrderedCollection new.
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   305
    generatorsAndRefactorings do:[:each |
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   306
        | group |
647
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   307
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   308
        group := each group.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   309
        (groupsMap includesKey: group) ifTrue:[ 
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   310
            (groupsMap at: group) add: each.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   311
        ] ifFalse:[ 
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   312
            groupsMap at: group put: (OrderedCollection with: each).
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   313
            groups add: group.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   314
        ].
647
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   315
    ].
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   316
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   317
    groups sort: self groupsSortBlock.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   318
647
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   319
    groups do:[:name |  
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   320
        | items |
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   321
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   322
        items := groupsMap at: name.
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   323
        items sort:[ :a :b | a label < b label ].
647
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   324
        items do:[:each | 
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   325
            | item |
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   326
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   327
            item := MenuItem label: (resources string: each label)
647
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   328
                    itemValue:[ each executeInContextWithWaitCursor: context ].
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   329
            item enabled:[ each availableInContext: context ].
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   330
            submenu addItem:item.
647
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   331
        ].
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   332
    ] separatedBy:[ 
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   333
        submenu addSeparator.
647
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   334
    ].
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   335
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   336
    ^ submenu
647
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   337
83c6c207a7f1 More menu extensions in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 628
diff changeset
   338
    "Created: / 26-08-2014 / 10:13:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
809
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   339
    "Modified: / 01-02-2015 / 20:18:02 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   340
!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   341
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   342
placeMenuItem: aMenuItem afterMenuItemLabeled: aLabel forMenu: aMenu
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   343
    "Places a menu item after another menu item identified by label
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   344
    within given menu."    
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   345
    | index |
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   346
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   347
    index := aMenu indexOfMenuItemForWhich:[:each | each label = aLabel ].
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   348
    index ~~ 0 ifTrue:[
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   349
        "Labeled item found"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   350
        aMenu addItem: aMenuItem beforeIndex: index + 1.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   351
    ] ifFalse:[
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   352
        aMenu addItem: aMenuItem.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   353
    ].
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   354
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   355
    "Created: / 27-12-2014 / 18:45:06 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   356
! !
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   357
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   358
!CustomMenuBuilder methodsFor:'initialization'!
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   359
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   360
initialize
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   361
    "Invoked when a new instance is created."
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   362
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   363
    menu := Menu new.
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   364
    submenuLabel := 'Unknown menu label'.
791
85851bd35faa Fixed default filter with missing argument in CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 790
diff changeset
   365
    generatorOrRefactoringFilter := [ :generatorOrRefactoring | true ].
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   366
    resources := self class classResources.
830
1a88f5e65fe2 Classes moved to namespace SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 828
diff changeset
   367
    manager := SmallSense::CustomManager current.
809
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   368
    errorPrinter := Transcript
790
88f2832e656a Extended CustomMenuBuilder so that it now includes functionality from NewSystemBrowser extensions thus removes the duplication
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 779
diff changeset
   369
809
c7314e2265ca Print error silently with Transcript rather than destroy IDE usage with raised error when building menu with CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 803
diff changeset
   370
    "Modified: / 01-02-2015 / 19:31:57 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
830
1a88f5e65fe2 Classes moved to namespace SmallSense
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 828
diff changeset
   371
    "Modified: / 11-05-2015 / 09:07:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
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
   372
! !
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
772
012d73512a98 removed duplicate code in CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 647
diff changeset
   374
!CustomMenuBuilder class methodsFor:'documentation'!
012d73512a98 removed duplicate code in CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 647
diff changeset
   375
012d73512a98 removed duplicate code in CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 647
diff changeset
   376
version_HG
012d73512a98 removed duplicate code in CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 647
diff changeset
   377
012d73512a98 removed duplicate code in CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 647
diff changeset
   378
    ^ '$Changeset: <not expanded> $'
012d73512a98 removed duplicate code in CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 647
diff changeset
   379
! !
012d73512a98 removed duplicate code in CustomMenuBuilder
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 647
diff changeset
   380