Skip to content

Commit 77f9f0b

Browse files
fixes #124 handles double-click event on tree-table view
open package body at the position of the first failed assert when a test is selected. open the package spec at the position of test declaration when a test is selected. open the package spec at line 1 if a the node contains only one package.
1 parent 34c1dbc commit 77f9f0b

File tree

1 file changed

+61
-13
lines changed

1 file changed

+61
-13
lines changed

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

+61-13
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,19 @@ public boolean include(final RowFilter.Entry<? extends TestOverviewTableModel, ?
405405
}
406406
}
407407

408+
private void openItemNode(final ItemNode node) {
409+
if (!node.getPackageName().equals("***")) {
410+
final UtplsqlDao dao = new UtplsqlDao(DatabaseTools.getConnection(currentRun.getConnectionName()));
411+
final String source = dao.getSource(node.getOwnerName(), "PACKAGE", node.getPackageName().toUpperCase()).trim();
412+
final UtplsqlParser parser = new UtplsqlParser(source);
413+
int line = 1;
414+
if (node.getUserObject() instanceof Test) {
415+
line = parser.getLineOf(node.getProcedureName());
416+
}
417+
openEditor(node.getOwnerName(), "PACKAGE", node.getPackageName().toUpperCase(), line, 1);
418+
}
419+
}
420+
408421
private void openTest(final Test test) {
409422
final UtplsqlDao dao = new UtplsqlDao(DatabaseTools.getConnection(currentRun.getConnectionName()));
410423
final String source = dao.getSource(test.getOwnerName(), "PACKAGE", test.getObjectName().toUpperCase()).trim();
@@ -414,11 +427,21 @@ private void openTest(final Test test) {
414427
}
415428

416429
private void openSelectedTest() {
417-
final int rowIndex = testOverviewTable.getSelectedRow();
418-
if (rowIndex != -1) {
419-
final int row = testOverviewTable.convertRowIndexToModel(rowIndex);
420-
final Test test = testOverviewTableModel.getTest(row);
421-
openTest(test);
430+
if (!showSuitesCheckBoxMenuItem.isSelected()) {
431+
// table
432+
final int rowIndex = testOverviewTable.getSelectedRow();
433+
if (rowIndex != -1) {
434+
final int row = testOverviewTable.convertRowIndexToModel(rowIndex);
435+
final Test test = testOverviewTableModel.getTest(row);
436+
openTest(test);
437+
}
438+
} else {
439+
// tree-table
440+
TreePath path = testOverviewTreeTable.getTree().getSelectionPath();
441+
if (path != null) {
442+
ItemNode itemNode = (ItemNode) path.getLastPathComponent();
443+
openItemNode(itemNode);
444+
}
422445
}
423446
}
424447

@@ -427,14 +450,27 @@ private void openSelectedFailure() {
427450
if (rowIndex != -1) {
428451
final int row = failuresTable.convertRowIndexToModel(rowIndex);
429452
final Expectation expectation = failuresTableModel.getExpectation(row);
430-
final Test test = testOverviewTableModel
431-
.getTest(testOverviewTable.convertRowIndexToModel(testOverviewTable.getSelectedRow()));
432-
final Integer callerLine = expectation.getCallerLine();
433-
if (callerLine != null) {
434-
openEditor(test.getOwnerName(), "PACKAGE BODY", test.getObjectName().toUpperCase(),
435-
expectation.getCallerLine(), 1);
453+
Test test = null;
454+
if (!showSuitesCheckBoxMenuItem.isSelected()) {
455+
// table
456+
test = testOverviewTableModel
457+
.getTest(testOverviewTable.convertRowIndexToModel(testOverviewTable.getSelectedRow()));
436458
} else {
437-
openTest(test);
459+
// tree-table
460+
TreePath path = testOverviewTreeTable.getTree().getSelectionPath();
461+
if (path != null) {
462+
ItemNode itemNode = (ItemNode) path.getLastPathComponent();
463+
test = ((Test)itemNode.getUserObject());
464+
}
465+
}
466+
if (test != null) {
467+
final Integer callerLine = expectation.getCallerLine();
468+
if (callerLine != null) {
469+
openEditor(test.getOwnerName(), "PACKAGE BODY", test.getObjectName().toUpperCase(),
470+
expectation.getCallerLine(), 1);
471+
} else {
472+
openTest(test);
473+
}
438474
}
439475
}
440476
}
@@ -1412,7 +1448,19 @@ public Component getTableCellRendererComponent(final JTable table, final Object
14121448
testOverviewCodeCoverageMenuItem.setEnabled(true);
14131449
}
14141450
});
1415-
1451+
testOverviewTreeTable.addMouseListener(new MouseAdapter() {
1452+
@Override
1453+
public void mouseClicked(final MouseEvent e) {
1454+
if (e.getClickCount() == 2) {
1455+
if (failuresTable.getSelectedRowCount() == 1) {
1456+
// open failure only if a Test node is selected
1457+
openSelectedFailure();
1458+
} else {
1459+
openSelectedTest();
1460+
}
1461+
}
1462+
}
1463+
});
14161464
final JTree overviewTreeTableName = testOverviewTreeTable.getTree();
14171465
overviewTreeTableName.setCellRenderer(new DefaultTreeCellRenderer() {
14181466
private static final long serialVersionUID = 580783625740405285L;

0 commit comments

Comments
 (0)