Tools__GenericToolbox.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 19 Jul 2017 09:42:32 +0200
branchjv
changeset 17619 edb119820fcb
parent 17304 3eea1002b141
permissions -rw-r--r--
Issue #154: Set window style using `#beToolWindow` to indicate that the minirunner window is kind of support tool rather than some X11 specific code (which does not work on Windows of course) See https://swing.fit.cvut.cz/projects/stx-jv/ticket/154
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17250
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     1
"
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     2
 COPYRIGHT (c) 2014 by eXept Software AG
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     3
              All Rights Reserved
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     4
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     5
 This software is furnished under a license and may be used
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     6
 only in accordance with the terms of that license and with the
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     7
 inclusion of the above copyright notice. This software may not
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     8
 be provided or otherwise made available to, or used by, any
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
     9
 other person. No title to or ownership of the software is
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    10
 hereby transferred.
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    11
"
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
"{ Package: 'stx:libtool' }"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
"{ NameSpace: Tools }"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
Toolbox subclass:#GenericToolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	instanceVariableNames:''
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	classVariableNames:''
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	poolDictionaries:''
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	category:'Interface-Tools'
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
!GenericToolbox class methodsFor:'documentation'!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
17250
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    25
copyright
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    26
"
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    27
 COPYRIGHT (c) 2014 by eXept Software AG
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    28
              All Rights Reserved
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    29
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    30
 This software is furnished under a license and may be used
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    31
 only in accordance with the terms of that license and with the
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    32
 inclusion of the above copyright notice. This software may not
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    33
 be provided or otherwise made available to, or used by, any
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    34
 other person. No title to or ownership of the software is
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    35
 hereby transferred.
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    36
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    37
"
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    38
!
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
    39
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
documentation
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    A generic toolbox for languages that compiles into Smalltalk/X bytecode.
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
    Although it's a good idea to provide specialized toolbox each of those
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
    languages, GenericToolbox is a good basis.
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    A GenericToolbox is also a default toolbox if ProgrammingLanguage does
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
    not specify one.
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    [author:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
        Jan Vrany <jan.vrany@fit.cvut.cz>
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    [instance variables:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    [class variables:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    [see also:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
        Tools::Toolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
        Tools::SmalltalkToolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
        Tools::JavaToolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
        ProgrammingLanguage
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
! !
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
14025
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    64
!GenericToolbox methodsFor:'accessing-methods'!
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    65
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    66
globalsReferencedByMethods: methods
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    67
    "Returns a list of globals (classes) referenced by given methods"
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    68
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    69
    | detector globals |
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    70
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    71
    detector := [ :literal :method :recurse | 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    72
        literal isSymbol ifTrue:[
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    73
            | cls ns |
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    74
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    75
            ns := method mclass nameSpace.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    76
            (ns notNil and:[ (cls := environment at: literal) notNil]) ifTrue:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    77
                globals add: cls.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    78
            ] ifFalse:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    79
                (cls := environment at: literal) notNil ifTrue:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    80
                    globals add: cls.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    81
                ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    82
            ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    83
        ] ifFalse:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    84
            (recurse and:[ literal isArray ]) ifTrue:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    85
                literal do:[:each | detector value: each value: method value: recurse ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    86
            ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    87
        ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    88
    ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    89
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    90
    globals := Set new.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    91
    methods do:[:m |  
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    92
        | recurse |
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    93
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    94
        "/ If the method is method spec, the do recurse into
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    95
        "/ literal array when searching for globals, otherwise
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    96
        "/ do not.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    97
        recurse := m resourceType == #canvas.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    98
        m literalsDo:[:each | detector value: each value: m value: recurse ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    99
    ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   100
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   101
    ^ globals.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   102
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   103
    "Created: / 24-02-2014 / 16:25:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   104
! !
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   105
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
!GenericToolbox class methodsFor:'documentation'!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
version
17250
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
   109
    ^ '$Header$'
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
version_CVS
17250
8691e91d072c #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 14025
diff changeset
   113
    ^ '$Header$'
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
! !
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115