extensions.st
changeset 783 5248328a4ac3
parent 782 233433804211
child 785 95aeb39712d5
--- a/extensions.st	Fri Dec 26 13:59:44 2014 +0100
+++ b/extensions.st	Fri Dec 26 21:02:39 2014 +0100
@@ -868,6 +868,52 @@
 
 !Tools::NewSystemBrowser methodsFor:'menus extensions-custom refactorings'!
 
+classMenuExtensionNavigateToTestCase: aMenu
+    "Adds menu item to class list window and tries to guess test case class
+    name. If test case class exists then opens a new tab with this class selected."
+    <menuextension: #classMenu>
+
+    | item index |
+
+    item := MenuItem label: (resources string: 'Open Test Case Class') 
+        itemValue: [ 
+            | className testClassName testClass |
+
+            className := self theSingleSelectedClass theNonMetaclass name.
+            testClassName := (className, 'Tests') asSymbol.
+            testClass := environment at: testClassName ifAbsent: nil.
+            testClass isNil ifTrue: [ 
+                | extensionTestClassName |
+
+                "Small hack for my extension test cases"
+                extensionTestClassName := ('Custom', className, 'Tests') asSymbol.
+                testClass := environment at: extensionTestClassName ifAbsent: nil.
+            ].
+
+            testClass notNil ifTrue: [ 
+                self createBuffer; 
+                    switchToClass: testClass;
+                    selectProtocol: #tests
+            ] ifFalse: [ 
+                self information: 'Test Case named ', testClassName, ' not found'
+            ].
+        ].
+
+    item enabled: [ self theSingleSelectedClass notNil ].
+
+    index := aMenu indexOfMenuItemForWhich:[:each | each label = 'Generate' ].
+    index ~~ 0 ifTrue:[
+        aMenu addItem:item beforeIndex:index + 1.
+    ] ifFalse:[
+        aMenu addItem:item.
+    ].
+
+    "Created: / 26-12-2014 / 16:54:30 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+    "Modified: / 26-12-2014 / 18:55:18 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!Tools::NewSystemBrowser methodsFor:'menus extensions-custom refactorings'!
+
 codeViewMenuExtensionCustomRefactorings:aMenu 
     <menuextension: #codeViewMenu>