tools/JavaSourceDocument.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 09 Sep 2013 10:33:09 +0100
branchdevelopment
changeset 2718 b3fe904a2fc7
parent 2717 16564a7101b8
child 2721 ceb9ed115183
permissions -rw-r--r--
Use eclipse-based highlighter for both class and method highlighting. Leave pure lexical highlighting as an option, but not configurable. See JavaSourceHighlighter>>doLexicalHighlightingOnly.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2697
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:libjava/tools' }"
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Object subclass:#JavaSourceDocument
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
     4
	instanceVariableNames:'javaClass sourceText sourceTree sourceLineEnds sourceTreeLock'
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
     5
	classVariableNames:'Cache CacheSize Job'
2697
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	poolDictionaries:''
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	category:'Languages-Java-Tools-Source'
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!JavaSourceDocument class methodsFor:'documentation'!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
documentation
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
"
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
    JavaSourceDocument object keeps various useful information about one source 
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
    15
    file. In particular, it keeps parse tree and pre-highlighted source.
2697
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
    [author:]
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
        Jan Vrany <jan.vrany@fit.cvut.cz>
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
    [instance variables:]
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
    [class variables:]
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
    [see also:]
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
"
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
! !
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
!JavaSourceDocument class methodsFor:'initialization'!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
initialize
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    "Invoked at system start or when the class is dynamically loaded."
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
    "/ please change as required (and remove this comment)
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    CacheSize := 25.
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
    37
    Cache := OrderedCollection new: CacheSize * 2 "To avoid excessive shifting...".
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
    38
    Job := BackgroundQueueProcessingJob named: 'java parsing job' on:[:block | block value ].
2697
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
    40
    "Modified: / 06-09-2013 / 17:45:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2697
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
! !
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
!JavaSourceDocument class methodsFor:'instance creation'!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
for: aJavaClass
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    ^self new javaClass: aJavaClass.
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    "Created: / 30-08-2013 / 01:46:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
! !
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
!JavaSourceDocument class methodsFor:'accessing'!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
cachedDocumentFor: aJavaClass
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    "Returns a cached document for given class or nil if no cached 
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
     document is found."
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
    Cache withIndexDo:[:document :index|
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
        document javaClass == aJavaClass ifTrue:[
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
            "/ Move that document towards the end so it'll be less likely
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
            "/ to be removed
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
            index < Cache size ifTrue:[
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
                Cache swap: index with: index + 1.                
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
            ].
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
            ^ document.
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
        ]
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    ].
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    ^ nil
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    "Created: / 30-08-2013 / 01:27:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
cachedDocumentFor: aJavaClass put: aJavaSourceDocument
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    "Stores given source document in the cache"
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    self assert: aJavaSourceDocument javaClass == aJavaClass.
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    Cache size = CacheSize ifTrue:[
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
        Cache removeFirst.
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    ].
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    Cache addLast: aJavaSourceDocument
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    "Created: / 30-08-2013 / 01:42:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
! !
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
!JavaSourceDocument methodsFor:'accessing'!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
javaClass
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    ^ javaClass
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
javaClass:aJavaClass
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
    91
    aJavaClass == javaClass ifTrue:[
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
    92
        ^ self
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
    93
    ].
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
    94
    javaClass notNil ifTrue:[
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
    95
        self error: 'Class already set!!'
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
    96
    ].
2697
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    javaClass := aJavaClass.
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
    98
    self initializeSourceTree.
2697
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   100
    "Modified: / 06-09-2013 / 17:51:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2697
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
2717
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   103
sourceLineToOffset: lineNr
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   104
    lineNr == 1 ifTrue:[ ^ 1 ].
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   105
    ^  (sourceLineEnds at: lineNr - 1) + 1.
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   106
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   107
    "Created: / 08-09-2013 / 10:52:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   108
!
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   109
2697
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
sourceText
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    ^ sourceText
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
sourceText:aText
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    sourceText := aText.
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
sourceTree
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   119
    sourceTree isNil ifTrue:[
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   120
        sourceTreeLock notNil ifTrue:[
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   121
            sourceTreeLock wait.
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   122
        ].
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   123
    ].
2697
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
    ^ sourceTree
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   126
    "Modified: / 06-09-2013 / 22:58:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2697
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
! !
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
!JavaSourceDocument methodsFor:'debugging'!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
inspector2TabParseTree
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
    SmallSense::ParseNodeInspector notNil ifTrue:[
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
        ^self newInspector2Tab
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
            label: 'Parse Tree';
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
            priority: 35;
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
            application: (SmallSense::ParseNodeInspector new node: sourceTree source: sourceText)
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
    ].
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
    ^nil
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
    "Created: / 30-08-2013 / 01:59:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
!
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
inspector2Tabs
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
    | tabs |
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
    tabs := super inspector2Tabs.
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
    (SmallSense::ParseNodeInspector notNil and:[sourceTree notNil and:[sourceText notNil]]) ifTrue:[
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
        tabs := tabs , #(inspector2TabParseTree)
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
    ].
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
    ^tabs
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
    "Created: / 30-08-2013 / 02:00:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
! !
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   156
!JavaSourceDocument methodsFor:'initialization-private'!
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   157
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   158
initializeSourceRefsInMethods
2717
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   159
    | typeName  typeNode |
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   160
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   161
    typeName := javaClass lastName.
2717
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   162
    (typeName includes: $$) ifTrue: [
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   163
        | components |
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   164
2717
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   165
        components := typeName tokensBasedOn: $$.
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   166
        typeNode := sourceTree types 
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   167
                detect: [:each | each name = components first ].
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   168
        2 to: components size do: [:i | 
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   169
            typeNode := typeNode memberTypes 
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   170
                    detect: [:each | each name = (components at: i) ].
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   171
        ].
2717
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   172
    ] ifFalse: [
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   173
        typeNode := sourceTree types detect: [:each | each name = typeName ].
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   174
    ].
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   175
    javaClass methodDictionary 
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   176
        keysAndValuesDo: [:selector :method | 
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   177
            | descriptor  methodName  methodNodes  methodNode  source |
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   178
2718
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   179
            method isJavaMethod ifTrue:[
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   180
                descriptor := method descriptor.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   181
                methodName := descriptor name.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   182
                methodName = '<init>' ifTrue: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   183
                    methodName := typeName.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   184
                ].
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   185
                methodNodes := typeNode methods 
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   186
                        select: [:each | 
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   187
                            each selector = methodName 
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   188
                                and: [ each arguments size == descriptor parameters size ]
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   189
                        ].
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   190
                methodNodes notEmptyOrNil ifTrue: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   191
                    methodNodes size == 1 ifTrue: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   192
                        methodNode := methodNodes anElement.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   193
                    ] ifFalse: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   194
                        method hasLineNumberInformation ifTrue: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   195
                            | line0  offset0 |
2717
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   196
2718
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   197
                            line0 := method lineNumberForPC: 1.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   198
                            offset0 := self sourceLineToOffset: line0.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   199
                            methodNodes := typeNode methods 
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   200
                                    select: [:each | 
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   201
                                        offset0 between: each declarationSourceStart
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   202
                                            and: each declarationSourceEnd + 1
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   203
                                    ].
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   204
                            methodNodes size == 1 ifTrue: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   205
                                methodNode := methodNodes anElement.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   206
                            ]
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   207
                        ].
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   208
                        methodNode isNil ifTrue: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   209
                            | 
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   210
                            "/ OK, search by parameter types...
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   211
                             i |
2717
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   212
2718
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   213
                            i := 1.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   214
                            [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   215
                                (methodNodes size > 1) and: [ i <= descriptor parameters size ]
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   216
                            ] whileTrue: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   217
                                | descr  descrArgTypeName  descrArgDimensions |
2717
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   218
2718
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   219
                                descr := descriptor parameters at: i.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   220
                                descrArgTypeName := descr javaClassName.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   221
                                descrArgDimensions := descr dimensions.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   222
                                descrArgTypeName first == $[ ifTrue: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   223
                                    descrArgTypeName := (JavaDescriptor baseTypes at: descrArgTypeName second) 
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   224
                                            javaName.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   225
                                    descrArgDimensions := descrArgDimensions + 1.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   226
                                ].
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   227
                                methodNodes := methodNodes 
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   228
                                        select: [:each | 
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   229
                                            | nodeArgType  nodeArgDimensions |
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   230
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   231
                                            nodeArgType := (each arguments at: i) type getTypeName asStringWith: $/.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   232
                                            nodeArgDimensions := (each arguments at: i) type dimensions.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   233
                                            descrArgDimensions == nodeArgDimensions 
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   234
                                                and: [ descrArgTypeName includesSubString: nodeArgType ]
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   235
                                        ].
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   236
                                i := i + 1.
2717
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   237
                            ].
2718
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   238
                            methodNodes isEmpty ifTrue: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   239
                                self error: 'No matching method node!!'.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   240
                            ].
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   241
                            methodNodes size > 1 ifTrue: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   242
                                self error: 'Cannot determine method!!'.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   243
                            ].
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   244
                            methodNode := methodNodes anElement.
2717
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   245
                        ].
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   246
                    ].
2718
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   247
                    methodNode notNil ifTrue: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   248
                        source := JavaSourceRef new.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   249
                        source offset: methodNode declarationSourceStart.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   250
                        source 
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   251
                            length: methodNode declarationSourceEnd - methodNode declarationSourceStart 
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   252
                                    + 1.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   253
                        method setSource: source.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   254
                    ] ifFalse: [
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   255
                        self error: 'Cannot determine method!!'.
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   256
                    ]
2717
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   257
                ].
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   258
            ].
16564a7101b8 Initial support for displaying only selected method's source in browser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2716
diff changeset
   259
        ]
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   260
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   261
    "Created: / 07-09-2013 / 01:43:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2718
b3fe904a2fc7 Use eclipse-based highlighter for both class and method highlighting.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2717
diff changeset
   262
    "Modified: / 09-09-2013 / 10:28:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2716
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   263
!
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   264
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   265
initializeSourceTree
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   266
    sourceTreeLock := Semaphore new.
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   267
    Job 
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   268
        add: [
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   269
            [
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   270
                | source  unit  parser |
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   271
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   272
                source := javaClass theNonMetaclass source.
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   273
                source notNil ifTrue: [
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   274
                    unit := (Java classForName: 'stx.libjava.tools.source.JavaSource') new.
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   275
                    unit setContents: source.
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   276
                    parser := (Java classForName: 'stx.libjava.tools.source.JavaSourceParser') 
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   277
                            new.
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   278
                    sourceTree := parser parse: unit diet: true.
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   279
                    sourceLineEnds := parser scanner getLineEnds.
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   280
                    self initializeSourceRefsInMethods.
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   281
                ].
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   282
            ] ensure: [
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   283
                sourceTreeLock signal.
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   284
                sourceTreeLock := nil.
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   285
            ]
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   286
        ]
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   287
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   288
    "Created: / 06-09-2013 / 17:50:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   289
    "Modified: / 07-09-2013 / 01:59:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   290
! !
1cca77810e04 Initial support for source file partitioning using eclipse parser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2708
diff changeset
   291
2708
648286432b9a More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2697
diff changeset
   292
!JavaSourceDocument class methodsFor:'documentation'!
648286432b9a More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2697
diff changeset
   293
648286432b9a More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2697
diff changeset
   294
version_HG
648286432b9a More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2697
diff changeset
   295
648286432b9a More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2697
diff changeset
   296
    ^ '$Changeset: <not expanded> $'
648286432b9a More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2697
diff changeset
   297
! !
648286432b9a More support fro browser (senders/implementors, field references)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2697
diff changeset
   298
2697
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
d5110c6822c6 Introducion a JavaSourceDocument.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
JavaSourceDocument initialize!