Skip to content

Commit 6b9c9b6

Browse files
add context menu items to run selected tests
1 parent 7a0b4e9 commit 6b9c9b6

File tree

1 file changed

+43
-7
lines changed

1 file changed

+43
-7
lines changed

sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.xtend

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,15 @@ import java.awt.event.ActionListener
2727
import java.awt.event.FocusEvent
2828
import java.awt.event.FocusListener
2929
import java.text.DecimalFormat
30+
import java.util.ArrayList
3031
import javax.swing.Box
3132
import javax.swing.DefaultComboBoxModel
3233
import javax.swing.JComboBox
3334
import javax.swing.JComponent
3435
import javax.swing.JLabel
36+
import javax.swing.JMenuItem
3537
import javax.swing.JPanel
38+
import javax.swing.JPopupMenu
3639
import javax.swing.JProgressBar
3740
import javax.swing.JScrollPane
3841
import javax.swing.JSplitPane
@@ -62,9 +65,9 @@ class RunnerPanel implements FocusListener, ActionListener {
6265
ToolbarButton refreshButton
6366
ToolbarButton rerunButton
6467
ToolbarButton rerunWorksheetButton
65-
DefaultComboBoxModel<ComboBoxItem<String,String>> runComboBoxModel
68+
DefaultComboBoxModel<ComboBoxItem<String, String>> runComboBoxModel
6669
ToolbarButton clearButton
67-
JComboBox<ComboBoxItem<String,String>> runComboBox
70+
JComboBox<ComboBoxItem<String, String>> runComboBox
6871
JLabel statusLabel
6972
JLabel testCounterValueLabel
7073
JLabel errorCounterValueLabel
@@ -75,6 +78,8 @@ class RunnerPanel implements FocusListener, ActionListener {
7578
JProgressBar progressBar;
7679
TestOverviewTableModel testOverviewTableModel
7780
JTable testOverviewTable
81+
JMenuItem testOverviewRunMenuItem
82+
JMenuItem testOverviewRunWorksheetMenuItem
7883
JTextArea testIdTextArea
7984
JTextField testOwnerTextField
8085
JTextField testPackageTextField
@@ -100,6 +105,8 @@ class RunnerPanel implements FocusListener, ActionListener {
100105

101106
private def resetDerived() {
102107
testOverviewTable.rowSorter.sortKeys = null
108+
testOverviewRunMenuItem.enabled = false
109+
testOverviewRunWorksheetMenuItem.enabled = false
103110
testIdTextArea.text = null
104111
testOwnerTextField.text = null
105112
testPackageTextField.text = null
@@ -141,7 +148,8 @@ class RunnerPanel implements FocusListener, ActionListener {
141148
currentRun = run
142149
testOverviewTableModel.model = run.tests
143150
resetDerived
144-
runComboBox.selectedItem = run.name
151+
val item = new ComboBoxItem<String, String>(currentRun.reporterId, currentRun.name)
152+
runComboBox.selectedItem = item
145153
}
146154
}
147155

@@ -213,6 +221,16 @@ class RunnerPanel implements FocusListener, ActionListener {
213221
testErrorStackTextArea.caret.visible = false
214222
}
215223
}
224+
225+
private def getPathListFromSelectedTests() {
226+
val pathList = new ArrayList<String>
227+
for (row : testOverviewTable.selectedRows) {
228+
val test = testOverviewTableModel.getTest(row)
229+
val path = '''«test.ownerName».«test.objectName».«test.procedureName»'''
230+
pathList.add(path)
231+
}
232+
return pathList
233+
}
216234

217235
override actionPerformed(ActionEvent e) {
218236
if (e.source == refreshButton) {
@@ -239,9 +257,15 @@ class RunnerPanel implements FocusListener, ActionListener {
239257
currentRun = null
240258
setModel(run)
241259
update(run.reporterId)
260+
} else if (e.source == testOverviewRunMenuItem) {
261+
val runner = new UtplsqlRunner(pathListFromSelectedTests, currentRun.connectionName)
262+
runner.runTestAsync
263+
} else if (e.source == testOverviewRunWorksheetMenuItem) {
264+
val worksheet = new UtplsqlWorksheetRunner(pathListFromSelectedTests, currentRun.connectionName)
265+
worksheet.runTestAsync
242266
}
243267
}
244-
268+
245269
private static def formatDateTime(String dateTime) {
246270
if (dateTime === null) {
247271
return null
@@ -296,8 +320,10 @@ class RunnerPanel implements FocusListener, ActionListener {
296320
tabIndex = 0
297321
}
298322
p.testDetailTabbedPane.selectedIndex = tabIndex
323+
p.testOverviewRunMenuItem.enabled = true
324+
p.testOverviewRunWorksheetMenuItem.enabled = true
299325
}
300-
}
326+
}
301327
}
302328

303329
static class FailuresRowListener implements ListSelectionListener {
@@ -552,7 +578,17 @@ class RunnerPanel implements FocusListener, ActionListener {
552578
val timeFormatRenderer = new TimeFormatRenderer
553579
timeFormatRenderer.horizontalAlignment = JLabel.RIGHT
554580
overviewTableTime.cellRenderer = timeFormatRenderer
555-
val testOverviewScrollPane = new JScrollPane(testOverviewTable)
581+
val testOverviewScrollPane = new JScrollPane(testOverviewTable)
582+
583+
// Context menu for test overview
584+
val testOverviewPopupMenu = new JPopupMenu
585+
testOverviewRunMenuItem = new JMenuItem("Run test", UtplsqlResources.getIcon("RUN_ICON"));
586+
testOverviewRunMenuItem.addActionListener(this)
587+
testOverviewPopupMenu.add(testOverviewRunMenuItem)
588+
testOverviewRunWorksheetMenuItem = new JMenuItem("Run test in new worksheet", UtplsqlResources.getIcon("RUN_WORKSHEET_ICON"));
589+
testOverviewRunWorksheetMenuItem.addActionListener(this)
590+
testOverviewPopupMenu.add(testOverviewRunWorksheetMenuItem)
591+
testOverviewTable.componentPopupMenu = testOverviewPopupMenu
556592

557593
// Test tabbed pane (Test Properties)
558594
// - Id
@@ -663,7 +699,7 @@ class RunnerPanel implements FocusListener, ActionListener {
663699
c.gridy = 4
664700
c.gridwidth = 1
665701
c.gridheight = 1
666-
c.insets = new Insets(5, 5, 0, 0) // top, left, bottom, right
702+
c.insets = new Insets(5, 10, 0, 0) // top, left, bottom, right
667703
c.anchor = GridBagConstraints::NORTHWEST
668704
c.fill = GridBagConstraints::NONE
669705
c.weightx = 0

0 commit comments

Comments
 (0)