|
15 | 15 | */ |
16 | 16 | package org.utplsql.sqldev.runner |
17 | 17 |
|
| 18 | +import java.awt.Dimension |
| 19 | +import java.awt.Toolkit |
18 | 20 | import java.sql.Connection |
19 | 21 | import java.text.SimpleDateFormat |
20 | 22 | import java.util.Date |
21 | 23 | import java.util.List |
22 | 24 | import java.util.UUID |
23 | 25 | import java.util.logging.Logger |
| 26 | +import javax.swing.JFrame |
24 | 27 | import oracle.dbtools.raptor.utils.Connections |
25 | 28 | import org.utplsql.sqldev.dal.RealtimeReporterDao |
26 | 29 | import org.utplsql.sqldev.dal.RealtimeReporterEventConsumer |
@@ -185,15 +188,40 @@ class UtplsqlRunner implements RealtimeReporterEventConsumer { |
185 | 188 | } |
186 | 189 | } |
187 | 190 |
|
188 | | - def runTestAsync() { |
189 | | - // show dockable |
190 | | - val dockable = RunnerFactory.dockable as RunnerView |
191 | | - if (dockable === null) { |
| 191 | + private def isRunningInSqlDeveloper() { |
| 192 | + return connectionName !== null |
| 193 | + } |
| 194 | + |
| 195 | + private def initGUI() { |
| 196 | + var RunnerView dockable = null |
| 197 | + if (runningInSqlDeveloper && (dockable = RunnerFactory.dockable as RunnerView) === null) { |
192 | 198 | logger.severe('''Error getting utPLSQL dockable. Cannot run utPLSQL test.''') |
| 199 | + return false |
193 | 200 | } else { |
194 | | - RunnerFactory.showDockable; |
195 | | - panel = dockable.runnerPanel |
| 201 | + if (runningInSqlDeveloper) { |
| 202 | + RunnerFactory.showDockable; |
| 203 | + panel = dockable.runnerPanel |
| 204 | + } else { |
| 205 | + val frame = new JFrame("utPLSQL Runner Panel") |
| 206 | + frame.defaultCloseOperation = JFrame.EXIT_ON_CLOSE; |
| 207 | + panel = new RunnerPanel |
| 208 | + frame.add(panel.getGUI) |
| 209 | + val frameSize = new Dimension(500, 500) |
| 210 | + frame.minimumSize = frameSize |
| 211 | + frame.preferredSize = frameSize |
| 212 | + frame.pack |
| 213 | + val dim = Toolkit.getDefaultToolkit().getScreenSize(); |
| 214 | + frame.setLocation(dim.width / 2 - frame.getSize().width / 2, dim.height / 2 - frame.getSize().height / 2); |
| 215 | + frame.setVisible(true) |
| 216 | + } |
196 | 217 | initRun |
| 218 | + } |
| 219 | + return true |
| 220 | + } |
| 221 | + |
| 222 | + def runTestAsync() { |
| 223 | + // start tests when the GUI has been successfully initialized. |
| 224 | + if (initGUI) { |
197 | 225 | // the producer |
198 | 226 | val Runnable producer = [|produce] |
199 | 227 | producerThread = new Thread(producer) |
|
0 commit comments