Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Eclipse Projects
Eclipse eTrice™
Eclipse eTrice
Commits
37544b82
Commit
37544b82
authored
Mar 04, 2022
by
Juergen Haug
Browse files
[ui] support keyword hover for enum keywords
parent
2a869e81
Changes
1
Hide whitespace changes
Inline
Side-by-side
plugins/org.eclipse.etrice.core.common.ui/src/org/eclipse/etrice/core/common/ui/hover/KeywordEObjectTextHover.java
View file @
37544b82
...
...
@@ -19,6 +19,7 @@ import org.eclipse.emf.ecore.EObject;
import
org.eclipse.jface.text.IRegion
;
import
org.eclipse.jface.text.ITextViewer
;
import
org.eclipse.jface.text.Region
;
import
org.eclipse.xtext.EnumLiteralDeclaration
;
import
org.eclipse.xtext.Keyword
;
import
org.eclipse.xtext.nodemodel.ILeafNode
;
import
org.eclipse.xtext.nodemodel.util.NodeModelUtils
;
...
...
@@ -32,7 +33,7 @@ import org.eclipse.xtext.util.Tuples;
import
com.google.inject.Inject
;
public
class
KeywordEObjectTextHover
extends
DispatchingEObjectTextHover
{
@Inject
protected
IEObjectHoverProvider
hoverProvider
;
...
...
@@ -58,15 +59,26 @@ public class KeywordEObjectTextHover extends DispatchingEObjectTextHover {
public
Pair
<
EObject
,
IRegion
>
resolveKeywordAt
(
XtextResource
resource
,
int
offset
)
{
IParseResult
parseResult
=
resource
.
getParseResult
();
if
(
parseResult
!=
null
)
{
ILeafNode
leaf
=
NodeModelUtils
.
findLeafNodeAtOffset
(
parseResult
.
getRootNode
(),
offset
);
if
(
leaf
!=
null
&&
leaf
.
isHidden
()
&&
leaf
.
getOffset
()
==
offset
)
{
leaf
=
NodeModelUtils
.
findLeafNodeAtOffset
(
parseResult
.
getRootNode
(),
offset
-
1
);
}
if
(
leaf
!=
null
&&
leaf
.
getGrammarElement
()
instanceof
Keyword
)
{
Keyword
keyword
=
(
Keyword
)
leaf
.
getGrammarElement
();
return
Tuples
.
create
((
EObject
)
keyword
,
(
IRegion
)
new
Region
(
leaf
.
getOffset
(),
leaf
.
getLength
()));
ILeafNode
leaf
=
findNearestLeafNode
(
parseResult
,
offset
);
if
(
leaf
!=
null
)
{
if
(
leaf
.
getGrammarElement
()
instanceof
Keyword
)
{
Keyword
keyword
=
(
Keyword
)
leaf
.
getGrammarElement
();
return
Tuples
.
create
((
EObject
)
keyword
,
(
IRegion
)
new
Region
(
leaf
.
getOffset
(),
leaf
.
getLength
()));
}
else
if
(
leaf
.
getGrammarElement
()
instanceof
EnumLiteralDeclaration
)
{
Keyword
keyword
=
((
EnumLiteralDeclaration
)
leaf
.
getGrammarElement
()).
getLiteral
();
return
Tuples
.
create
((
EObject
)
keyword
,
(
IRegion
)
new
Region
(
leaf
.
getOffset
(),
leaf
.
getLength
()));
}
}
}
return
null
;
}
private
ILeafNode
findNearestLeafNode
(
IParseResult
parseResult
,
int
offset
)
{
ILeafNode
leaf
=
NodeModelUtils
.
findLeafNodeAtOffset
(
parseResult
.
getRootNode
(),
offset
);
if
(
leaf
!=
null
&&
leaf
.
isHidden
()
&&
leaf
.
getOffset
()
==
offset
)
{
leaf
=
NodeModelUtils
.
findLeafNodeAtOffset
(
parseResult
.
getRootNode
(),
offset
-
1
);
}
return
leaf
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment