Initial support for senders/implementors menu for Java invocations.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 25 Sep 2013 10:28:40 +0100
changeset 105 d925e1672ac7
parent 104 3b05b2d777dd
child 106 1ab781eac004
Initial support for senders/implementors menu for Java invocations.
SmallSense__CodeNavigationService.st
--- a/SmallSense__CodeNavigationService.st	Tue Sep 24 23:02:47 2013 +0100
+++ b/SmallSense__CodeNavigationService.st	Wed Sep 25 10:28:40 2013 +0100
@@ -16,6 +16,7 @@
 	privateIn:CodeNavigationService
 !
 
+
 !CodeNavigationService class methodsFor:'accessing'!
 
 label
@@ -27,6 +28,23 @@
     "Modified: / 23-09-2013 / 10:27:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!CodeNavigationService methodsFor:'accessing'!
+
+browser
+    ^ codeView browser.
+
+    "Created: / 24-09-2013 / 23:38:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+environment
+    | browser |
+
+    browser := self browser.
+    ^ browser notNil ifTrue:[browser environment] ifFalse:[Smalltalk]
+
+    "Created: / 24-09-2013 / 23:38:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !CodeNavigationService methodsFor:'event handling'!
 
 button1Press
@@ -109,10 +127,25 @@
     ].
 
     "Created: / 23-09-2013 / 03:52:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showMenu: menu
+    menuShown := menu.
+    menuShown notNil ifTrue:[
+        menuShown showAtPointer
+    ].
+
+    "Created: / 24-09-2013 / 23:43:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !CodeNavigationService::Navigator methodsFor:'accessing'!
 
+browser
+    ^ service browser
+
+    "Created: / 24-09-2013 / 23:37:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 button
     ^ button
 !
@@ -121,6 +154,12 @@
     button := something.
 !
 
+environment
+    ^ service environment
+
+    "Created: / 24-09-2013 / 23:37:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 service
     ^ service
 !
@@ -139,6 +178,31 @@
 
 !CodeNavigationService::Navigator methodsFor:'navigation - Java'!
 
+navigateToMessageSend: node
+    | binding className selector toolbox |
+
+    binding := node binding .
+    binding isNil ifTrue:[ ^ nil ].
+    className := binding declaringClass compoundName asStringWith: $/.
+    selector := binding selector , binding signature.
+
+    toolbox := JavaToolbox new
+                browser: self browser;
+                environment: self environment;
+                yourself.
+    button == 1 ifTrue:[
+         service showMenu: (toolbox implementorMenuFor: selector inClassNamed: className).
+         ^ self.
+    ].
+    button == 1 ifTrue:[
+         service showMenu: (toolbox sendersMenuFor: selector inClassNamed: className).
+         ^ self.
+    ].
+
+    "Created: / 24-09-2013 / 23:10:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-09-2013 / 10:01:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 navigateToTypeReference: node
 
     "Created: / 24-09-2013 / 10:16:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -171,3 +235,10 @@
     "Created: / 24-09-2013 / 10:06:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!CodeNavigationService class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+