@Override
    public Object getValueAt(int row, int col) {
        // 1st row is for the Analyser, 2nd row is empty (for separation with the plugins), 3rd for Plugin label.
        if (row == 0) {
            switch (col) {
            case 0:
                return Constant.messages.getString("ascan.progress.table.analyser");
            case 3:
                return hp != null ? getElapsedTimeLabel(hp.getAnalyser().getRunningTime()) : "";
            case 4:
                return hp != null ? String.valueOf(hp.getAnalyser().getRequestCount()) : "";
            default:
                return null;
            }
        } else if (row == 1) {
            return null;
        } else if (row == 2) {
            return col == 0 ? Constant.messages.getString("ascan.progress.table.name") : null;
        }

        // Adjust row for the plugin checks.
        row -= 3;

        // First check if we're showing the plugin status list
        if (row < values.size()) {
            
            // It's an entry so show the correct values
            final ScanProgressItem item = values.get(row);
            switch (col) {
                case 0:
                    return item.getNameLabel();
                    
                case 1:
                    return item.getAttackStrenghtLabel();
                    
                case 2:
                    if (item.isCompleted() || item.isRunning() || item.isSkipped()) {
                        return item;
                        
                    } else {
                        return null;
                    }

                case 3:
                    return getElapsedTimeLabel(item.getElapsedTime());

                case 4:
                	return item.getReqCount();
                	
                case 5:
                    return item.getAlertCount();
                case 6:
                    return item.getProgressAction();

                default:
                    return null;
            }
            
        // We're in the summary "region", first print an empty
        // line and then two line of summary (tot time and to requests)
        // Maybe could be done in a better way, for example using
        // a dedicated panel positioned on top/bottom of the dialog
        } else if (row == values.size()) {
            // The first line after values should be empty
            return null;
            
        } else if (row == (values.size() + 1)) {
            // The second line after values should contains the totals
            switch (col) {
                case 0:
                    return Constant.messages.getString("ascan.progress.label.totals");                    
                
                case 3:
                    return totTime;
                    
                case 4:
                    return totRequests;                    
                case 5:
                    return hp != null ? hp.getAlertCount() : 0;
                
                default:
                    return null;
            }
        }
        return null;
    }
@ Override public Object getValueAt ( int row , int col ) { if ( row == 0 ) { switch ( col ) { case 0 : return Constant . messages . getString ( "ascan.progress.table.analyser" ) ; case 3 : return hp != null ? getElapsedTimeLabel ( hp . getAnalyser ( ) . getRunningTime ( ) ) : "" ; case 4 : return hp != null ? String . valueOf ( hp . getAnalyser ( ) . getRequestCount ( ) ) : "" ; default : return null ; } } else if ( row == 1 ) { return null ; } else if ( row == 2 ) { return col == 0 ? Constant . messages . getString ( "ascan.progress.table.name" ) : null ; } row -= 3 ; if ( row < values . size ( ) ) { final ScanProgressItem item = values . get ( row ) ; switch ( col ) { case 0 : return item . getNameLabel ( ) ; case 1 : return item . getAttackStrenghtLabel ( ) ; case 2 : if ( item . isCompleted ( ) || item . isRunning ( ) || item . isSkipped ( ) ) { return item ; } else { return null ; } case 3 : return getElapsedTimeLabel ( item . getElapsedTime ( ) ) ; case 4 : return item . getReqCount ( ) ; case 5 : return item . getAlertCount ( ) ; case 6 : return item . getProgressAction ( ) ; default : return null ; } } else if ( row == values . size ( ) ) { return null ; } else if ( row == ( values . size ( ) + 1 ) ) { switch ( col ) { case 0 : return Constant . messages . getString ( "ascan.progress.label.totals" ) ; case 3 : return totTime ; case 4 : return totRequests ; case 5 : return hp != null ? hp . getAlertCount ( ) : 0 ; default : return null ; } } return null ; }
@param row
@param col
@return