1515package org.utplsql.sqldev.menu
1616
1717import java.net.URL
18+ import java.util.ArrayList
1819import java.util.logging.Logger
1920import javax.swing.JEditorPane
2021import oracle.dbtools.raptor.navigator.db.DBNavigatorWindow
@@ -31,6 +32,7 @@ import oracle.ide.config.Preferences
3132import oracle.ide.controller.Controller
3233import oracle.ide.controller.IdeAction
3334import oracle.ide.editor.Editor
35+ import oracle.ide.model.Element
3436import org.utplsql.sqldev.UtplsqlWorksheet
3537import org.utplsql.sqldev.dal.UtplsqlDao
3638import org.utplsql.sqldev.model.URLTools
@@ -80,22 +82,26 @@ class UtplsqlController implements Controller {
8082 }
8183 }
8284 } else if (view instanceof DBNavigatorWindow ) {
83- if (context. selection. length == 1 ) {
84- val element = context. selection. get(0 )
85- if (Connections . instance. isConnectionOpen(context. URL . connectionName)) {
86- val dao = new UtplsqlDao (Connections . instance. getConnection(context. URL . connectionName))
87- if (preferences. checkRunUtplsqlTest && dao. utAnnotationManagerInstalled) {
88- if (element instanceof DatabaseConnection ) {
89- action. enabled = dao. containsUtplsqlTest(element. connection. schema)
90- } else if (element instanceof ObjectFolder ) {
91- action. enabled = dao. containsUtplsqlTest(element. URL . schema)
92- } else if (element instanceof PlSqlNode ) {
93- action. enabled = dao. containsUtplsqlTest(element. owner, element. objectName)
94- } else if (element instanceof ChildObjectElement ) {
95- action. enabled = dao. containsUtplsqlTest(element. URL . schema, element. URL . memberObject, element. shortLabel)
85+ action. enabled = true
86+ // disable action if a node in the selection is not runnable
87+ for (i : 0 .. < context. selection. length) {
88+ if (action. enabled) {
89+ val element = context. selection. get(i)
90+ if (Connections . instance. isConnectionOpen(context. URL . connectionName)) {
91+ val dao = new UtplsqlDao (Connections . instance. getConnection(context. URL . connectionName))
92+ if (preferences. checkRunUtplsqlTest && dao. utAnnotationManagerInstalled) {
93+ if (element instanceof DatabaseConnection ) {
94+ action. enabled = dao. containsUtplsqlTest(element. connection. schema)
95+ } else if (element instanceof ObjectFolder ) {
96+ action. enabled = dao. containsUtplsqlTest(element. URL . schema)
97+ } else if (element instanceof PlSqlNode ) {
98+ action. enabled = dao. containsUtplsqlTest(element. owner, element. objectName)
99+ } else if (element instanceof ChildObjectElement ) {
100+ action. enabled = dao. containsUtplsqlTest(element. URL . schema, element. URL . memberObject, element. shortLabel)
101+ }
96102 }
97103 } else {
98- action. enabled = true
104+ action. enabled = false
99105 }
100106 }
101107 }
@@ -104,10 +110,9 @@ class UtplsqlController implements Controller {
104110 }
105111 return false
106112 }
107-
108- private def getPath (Context context ) {
113+
114+ private def getPath (Object element ) {
109115 var String path
110- val element = context. selection. get(0 )
111116 if (element instanceof DatabaseConnection ) {
112117 path = element. connection. schema
113118 } else if (element instanceof ObjectFolder ) {
@@ -120,7 +125,16 @@ class UtplsqlController implements Controller {
120125 path = " "
121126 }
122127 logger. fine(' ' ' path: «path»' ' ' )
123- return path
128+ return path
129+ }
130+
131+ private def getPathList (Context context ) {
132+ val pathList = new ArrayList<String > ()
133+ for (i : 0 .. < context. selection. length) {
134+ val element = context. selection. get(i)
135+ pathList. add(element. path)
136+ }
137+ return pathList
124138 }
125139
126140 private def getURL (Context context ) {
@@ -167,8 +181,8 @@ class UtplsqlController implements Controller {
167181 if (url !== null ) {
168182 val connectionName = url. connectionName
169183 logger. fine(' ' ' connectionName: «connectionName»' ' ' )
170- val path = context. path
171- val utPlsqlWorksheet = new UtplsqlWorksheet (path , connectionName)
184+ val pathList = context. pathList
185+ val utPlsqlWorksheet = new UtplsqlWorksheet (pathList , connectionName)
172186 utPlsqlWorksheet. runTestAsync
173187 }
174188 }
0 commit comments