@@ -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