- JavaListInspectorView
class: JavaListInspectorView
- JavaFormalParameterNode
class: JavaFormalParameterNode
- JavaTypeNode
class: JavaTypeNode
- JavaScanner
class: JavaScanner
- JavaArrayTypeNode
class: JavaArrayTypeNode
- JavaParser
class: JavaParser
- JavaCommentNode
class: JavaCommentNode
- JavaIntTypeNode
class: JavaIntTypeNode
- JavaParseNodeBuilder
class: JavaParseNodeBuilder
- JavaMethodDeclaratorNode
class: JavaMethodDeclaratorNode
- JavaScannerBase
class: JavaScannerBase
- JavaFloatTypeNode
class: JavaFloatTypeNode
- JavaDocNode
class: JavaDocNode
- JavaClassOrInterfaceTypeNode
class: JavaClassOrInterfaceTypeNode
- stx_libjava_tools
class: stx_libjava_tools
- JavaSettingsApplication
class: JavaSettingsApplication
- JavaLongTypeNode
class: JavaLongTypeNode
- JavaParserII
class: JavaParserII
- JavaSourceReference
class: JavaSourceReference
- JavaCharTypeNode
class: JavaCharTypeNode
- JavaParser_Eclipse
class: JavaParser_Eclipse
- JavaSyntaxHighlighter
class: JavaSyntaxHighlighter
- JavaMethodNode
class: JavaMethodNode
- JavaBooleanTypeNode
class: JavaBooleanTypeNode
- JavaDoubleTypeNode
class: JavaDoubleTypeNode
- JavaSetInspectorView
class: JavaSetInspectorView
- JavaParseNode
class: JavaParseNode
- JavaVoidTypeNode
class: JavaVoidTypeNode
- JavaMapInspectorView
class: JavaMapInspectorView
- JavaParserI
class: JavaParserI
- extensions
...
"
COPYRIGHT (c) 1996-2011 by Claus Gittinger
New code and modifications done at SWING Research Group [1]:
COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
SWING Research Group, Czech Technical University in Prague
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
[1] Code written at SWING Research Group contains a signature
of one of the above copright owners. For exact set of such code,
see the differences between this version and version stx:libjava
as of 1.9.2010
"
"{ Package: 'stx:libjava/tools' }"
Object subclass:#JavaSyntaxHighlighter_Old
instanceVariableNames:'preferences elements cachedStringEmphasis cachedStringColor
sourceText'
classVariableNames:''
poolDictionaries:''
category:'Languages-Java-Tools'
!
JavaParseNodeBuilder subclass:#Builder
instanceVariableNames:'highlighter'
classVariableNames:''
poolDictionaries:''
privateIn:JavaSyntaxHighlighter_Old
!
!JavaSyntaxHighlighter_Old class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 1996-2011 by Claus Gittinger
New code and modifications done at SWING Research Group [1]:
COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
SWING Research Group, Czech Technical University in Prague
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
[1] Code written at SWING Research Group contains a signature
of one of the above copright owners. For exact set of such code,
see the differences between this version and version stx:libjava
as of 1.9.2010
"
! !
!JavaSyntaxHighlighter_Old class methodsFor:'formatting'!
formatClass: javaClass
^self new formatClassDefinition: javaClass source in: javaClass
"Created: / 15-12-2011 / 21:54:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatClassDefinition:source in:class
^self new formatClassDefinition:source in:class
"Created: / 04-08-2011 / 23:44:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatClassDefinition:source in:class elementsInto: elements
^self new formatClassDefinition:source in:class elementsInto: elements
"Created: / 04-08-2011 / 23:44:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatExpression:source in:class
^self new formatExpression:source in:class
"Created: / 04-08-2011 / 23:45:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatExpression:source in:class elementsInto: elements
^self new formatExpression:source in:class elementsInto: elements
"Created: / 04-08-2011 / 23:43:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatMethod:mth source:source in:class
^self formatMethod: mth source: source in: class using: UserPreferences current
"Created: / 11-02-2012 / 18:18:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatMethod:mth source:source in:class using: preferences
^self new formatMethod:mth source:source in:class using: preferences
"Created: / 04-08-2011 / 23:45:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatMethod:mth source:source in:class using: preferences elementsInto: elements
^self new formatMethod:mth source:source in:class using: preferences elementsInto: elements
"Created: / 04-08-2011 / 23:42:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaSyntaxHighlighter_Old methodsFor:'formatting'!
formatClassDefinition:source in:class
^ self format: source kind: #start
"Created: / 04-08-2011 / 23:44:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatClassDefinition:source in:class elementsInto: els
elements := els.
^self formatClassDefinition:source in:class
"Created: / 04-08-2011 / 23:44:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatExpression:source in:class
^ self format: source kind: #'K_EXPRESSION'
"Created: / 04-08-2011 / 23:45:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatExpression:source in:class elementsInto: els
elements := els.
^self formatExpression:source in:class
"Created: / 04-08-2011 / 23:43:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatMethod:mth source:source in:class using: prefs
preferences := prefs.
^ self format: source kind: #start
"Created: / 04-08-2011 / 23:45:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatMethod:mth source:source in:class using: prefs elementsInto: els
preferences := prefs.
elements := els.
^self formatMethod:mth source:source in:class using: prefs
"Created: / 04-08-2011 / 23:42:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaSyntaxHighlighter_Old methodsFor:'formatting - private'!
format: source kind: kind
| stream parser builder |
source isText ifTrue:[
sourceText := source copy
] ifFalse:[
sourceText := source asText.
].
preferences isNil ifTrue:[
preferences := UserPreferences current.
].
stream := source asPetitStream.
builder := Builder new.
builder highlighter: self.
parser := Parser new.
parser builder: builder.
parser stream: stream.
(parser perform: kind) parse: stream.
^sourceText.
"Created: / 17-11-2011 / 23:24:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaSyntaxHighlighter_Old methodsFor:'syntax detection'!
markArgumentIdentifierFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences argumentIdentifierEmphasis) color:(preferences argumentIdentifierColor)
!
markClassVariableIdentifierFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences classVariableIdentifierEmphasis) color:(preferences classVariableIdentifierColor)
"Modified: / 31.3.1998 / 18:02:14 / cg"
!
markCommentFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences commentEmphasis) color:(preferences commentColor)
!
markConstantFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences constantEmphasis) color:(preferences constantColor)
!
markFrom:pos1 to:pos2 withEmphasis:fontEmp color:clrIn
|e p2 clr|
clr := clrIn onDevice:Screen current.
clr = Color black ifTrue:[
e := fontEmp
] ifFalse:[
fontEmp isNil ifTrue:[
e := (#color->clr)
] ifFalse:[
e := Text addEmphasis:fontEmp to:(#color->clr).
]
].
(p2 := pos2) isNil ifTrue:[
p2 := sourceText size
] ifFalse:[
p2 := p2 min:sourceText size
].
sourceText emphasizeFrom:pos1 to:p2 with:e
"Created: / 31.3.1998 / 13:26:53 / cg"
"Modified: / 1.4.1998 / 12:51:56 / cg"
!
markFunctionNameFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences methodSelectorEmphasis) color:(preferences methodSelectorColor)
!
markGlobalClassIdentifierFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences globalClassIdentifierEmphasis) color:(preferences globalClassIdentifierColor)
"Modified: / 31.3.1998 / 18:02:14 / cg"
"Created: / 4.3.1999 / 12:53:02 / cg"
!
markGlobalIdentifierFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences globalIdentifierEmphasis) color:(preferences globalIdentifierColor)
"Modified: / 31.3.1998 / 18:02:14 / cg"
!
markIdentifierFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences identifierEmphasis) color:(preferences identifierColor)
!
markInstVarIdentifierFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences instVarIdentifierEmphasis) color:(preferences instVarIdentifierColor)
"Created: / 16.4.1998 / 18:35:40 / cg"
"Modified: / 16.4.1998 / 18:37:30 / cg"
!
markKeyword:kw from:pos1 to:pos2
|em clr|
( #( 'if' 'else'
'while'
'for'
'do'
'return'
'from'
) includes:kw) ifTrue:[
em := preferences controlFlowSelectorEmphasis.
clr := preferences controlFlowSelectorColor.
] ifFalse:[
em := preferences jsKeywordEmphasis.
clr := preferences jsKeywordColor.
].
self
markFrom:pos1 to:pos2
withEmphasis:em color:clr
"Modified: / 19-05-2010 / 15:07:59 / cg"
!
markLocalIdentifierFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences localIdentifierEmphasis) color:(preferences localIdentifierColor)
!
markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNodeOrNil numArgs:numArgs
|fg selectorSymbol check ok rec em currentEnvironment currentSuperclasses currentSubclasses classToCompileFor fullSelectorCheck|
fg := preferences selectorColor.
em := preferences selectorEmphasis.
(currentEnvironment notNil
and:[ (((currentEnvironment _localVariables ? #()) contains:[:local | local name = selectorString])
or:[((currentEnvironment _argVariables ? #()) contains:[:local | local name = selectorString])])
])
ifTrue:[
"/ a local call
] ifFalse:[
selectorSymbol := (self translatedSmalltalkSelectorFor:selectorString numArgs:numArgs) asSymbolIfInterned.
selectorSymbol isNil ifTrue:[
fg := Color red.
] ifFalse:[
fullSelectorCheck == true ifTrue:[
aReceiverNodeOrNil notNil ifTrue:[
check := [:cls | (cls includesSelector:selectorSymbol)
or:[cls class includesSelector:selectorSymbol]].
ok := false.
"/ limit search if possible
(classToCompileFor notNil
and:[aReceiverNodeOrNil isSelf or:[aReceiverNodeOrNil isSuper]]) ifTrue:[
currentSuperclasses isNil ifTrue:[
currentSuperclasses := classToCompileFor withAllSuperclasses.
].
ok := currentSuperclasses contains:check.
(ok not and:[aReceiverNodeOrNil isSelf]) ifTrue:[
currentSubclasses isNil ifTrue:[
currentSubclasses := classToCompileFor allSubclasses.
].
ok := currentSubclasses contains:check.
].
] ifFalse:[
aReceiverNodeOrNil isConstant ifTrue:[
ok := aReceiverNodeOrNil evaluate class withAllSuperclasses contains:check.
] ifFalse:[
(aReceiverNodeOrNil isGlobal
and:[(rec := aReceiverNodeOrNil evaluate) isBehavior]) ifTrue:[
ok := rec class withAllSuperclasses contains:check.
] ifFalse:[
ok := Smalltalk allClasses contains:check
]
]
].
ok ifFalse:[
em := preferences unimplementedSelectorEmphasis.
fg := preferences unimplementedSelectorColor.
]
]
]
].
].
self
markFrom:pos1 to:pos2
withEmphasis:em color:fg
"Modified: / 04-10-2011 / 19:48:48 / cg"
!
markSelfFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences selfEmphasis) color:(preferences selfColor)
!
markStringFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences stringEmphasis) color:(preferences stringColor)
!
markUnknownIdentifierFrom:pos1 to:pos2
self
markFrom:pos1 to:pos2
withEmphasis:(preferences unknownIdentifierEmphasis) color:(preferences unknownIdentifierColor)
!
markVariable:v from:pos to:endPos
"support for syntaxColoring"
|type globalValue nameSym|
type := v type.
(type == #BlockArg
or:[type == #MethodArg]) ifTrue:[
self markArgumentIdentifierFrom:pos to:endPos.
^ self
].
(type == #BlockVariable
or:[type == #MethodVariable]) ifTrue:[
self markLocalIdentifierFrom:pos to:endPos.
^ self
].
(type == #GlobalVariable) ifTrue:[
nameSym := v name asSymbolIfInterned.
(nameSym isNil
or:[(Smalltalk includesKey:nameSym) not]) ifTrue:[
self markUnknownIdentifierFrom:pos to:endPos.
^ self
].
globalValue := Smalltalk at:nameSym ifAbsent:nil.
globalValue isBehavior ifTrue:[
self markGlobalClassIdentifierFrom:pos to:endPos.
] ifFalse:[
self markGlobalIdentifierFrom:pos to:endPos.
].
^ self
].
(type == #ClassVariable) ifTrue:[
self markClassVariableIdentifierFrom:pos to:endPos.
^ self
].
(type == #InstanceVariable) ifTrue:[
self markInstVarIdentifierFrom:pos to:endPos.
^ self
].
self markIdentifierFrom:pos to:endPos.
"Created: / 16.4.1998 / 18:49:34 / cg"
"Modified: / 4.3.1999 / 12:56:13 / cg"
! !
!JavaSyntaxHighlighter_Old::Builder methodsFor:'accessing'!
highlighter
^ highlighter
!
highlighter:something
highlighter := something.
! !
!JavaSyntaxHighlighter_Old::Builder methodsFor:'building'!
newComment: text
highlighter markCommentFrom:start to: stop.
^super newComment: text
"Created: / 09-03-2012 / 17:11:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
newJavaDoc: text
highlighter markCommentFrom:start to: stop.
^super newJavaDoc: text
"Created: / 09-03-2012 / 17:11:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaSyntaxHighlighter_Old class methodsFor:'documentation'!
version_HG
^ '$Changeset: <not expanded> $'
!
version_SVN
^ '§Id§'
! !