Buggy code:
private static final int INTERVAL_DEFAULT = 10000 ; private int intervalValue = RespTimeGraphVisualizer . INTERVAL_DEFAULT ; private final JLabeledTextField intervalField = new JLabeledTextField ( JMeterUtils . getResString ( "graph_resp_time_interval_label" ) , 7 ) ; private final JButton intervalButton = new JButton ( JMeterUtils . getResString ( "graph_resp_time_interval_reload" ) ) ; private final JButton displayButton = new JButton ( JMeterUtils . getResString ( "aggregate_graph_display" ) ) ; private final JButton saveGraph = new JButton ( JMeterUtils . getResString ( "aggregate_graph_save" ) ) ; private final JCheckBox samplerSelection = new JCheckBox ( JMeterUtils . getResString ( "graph_resp_time_series_selection" ) , false ) ; private final JTextField samplerMatchLabel = new JTextField ( ) ; private final JButton applyFilterBtn = new JButton ( JMeterUtils . getResString ( "graph_apply_filter" ) ) ; private final JCheckBox caseChkBox = new JCheckBox ( JMeterUtils . getResString ( "search_text_chkbox_case" ) , false ) ; private final JCheckBox regexpChkBox = new JCheckBox ( JMeterUtils . getResString ( "search_text_chkbox_regexp" ) , true ) ; private final JComboBox titleFontNameList = new JComboBox ( StatGraphProperties . getFontNameMap ( ) . keySet ( ) . toArray ( ) ) ; private final JComboBox titleFontSizeList = new JComboBox ( StatGraphProperties . fontSize ) ; private final JComboBox titleFontStyleList = new JComboBox ( StatGraphProperties . getFontStyleMap ( ) . keySet ( ) . toArray ( ) ) ; private final JComboBox fontNameList = new JComboBox ( StatGraphProperties . getFontNameMap ( ) . keySet ( ) . toArray ( ) ) ; private final JComboBox fontSizeList = new JComboBox ( StatGraphProperties . fontSize ) ; private final JComboBox fontStyleList = new JComboBox ( StatGraphProperties . getFontStyleMap ( ) . keySet ( ) . toArray ( ) ) ; private final JComboBox legendPlacementList = new JComboBox ( StatGraphProperties . getPlacementNameMap ( ) . keySet ( ) . toArray ( ) ) ; private final JComboBox pointShapeLine = new JComboBox ( StatGraphProperties . getPointShapeMap ( ) . keySet ( ) . toArray ( ) ) ; private final JComboBox strokeWidthList = new JComboBox ( StatGraphProperties . strokeWidth ) ; private final JCheckBox numberShowGrouping = new JCheckBox ( JMeterUtils . getResString ( "aggregate_graph_number_grouping" ) , true ) ; private final JButton syncWithName = new JButton ( JMeterUtils . getResString ( "aggregate_graph_sync_with_name" ) ) ; private final JLabeledTextField graphTitle = new JLabeledTextField ( JMeterUtils . getResString ( "graph_resp_time_title_label" ) ) ; private final JLabeledTextField xAxisTimeFormat = new JLabeledTextField ( JMeterUtils . getResString ( "graph_resp_time_xaxis_time_format" ) , 10 ) ; private final JLabeledTextField maxValueYAxisLabel = new JLabeledTextField ( JMeterUtils . getResString ( "aggregate_graph_yaxis_max_value" ) , 5 ) ; private final JCheckBox dynamicGraphSize = new JCheckBox ( JMeterUtils . getResString ( "aggregate_graph_dynamic_size" ) ) ; private final JLabeledTextField graphWidth = new JLabeledTextField ( JMeterUtils . getResString ( "aggregate_graph_width" ) , 6 ) ; private final JLabeledTextField graphHeight = new JLabeledTextField ( JMeterUtils . getResString ( "aggregate_graph_height" ) , 6 ) ; private final JLabeledTextField incrScaleYAxis = new JLabeledTextField ( JMeterUtils . getResString ( "aggregate_graph_increment_scale" ) , 5 ) ; private long minStartTime = Long . MAX_VALUE ; private long maxStartTime = Long . MIN_VALUE ; private final Map < String , RespTimeGraphLineBean > seriesNames = new LinkedHashMap < String , RespTimeGraphLineBean > ( ) ; private final Map < String , Map < Long , StatCalculatorLong > > pList = new LinkedHashMap < String , Map < Long , StatCalculatorLong > > ( ) ; private long durationTest = 0 ; private int colorIdx = 0 ; private Pattern pattern = null ; private transient Matcher matcher = null ; private final List < Color > listColors = Colors . getColors ( ) ; private final List < RespTimeGraphDataBean > internalList = new ArrayList < RespTimeGraphDataBean > ( ) ; public RespTimeGraphVisualizer ( ) { } @ Override public void add ( final SampleResult sampleResult ) { } public void makeGraph ( ) { } public double [ ] [ ] getData ( ) { } @ Override public String getLabelResource ( ) { } @ Override public void clearData ( ) { } private void init ( ) { } @ Override public void actionPerformed ( ActionEvent event ) { boolean forceReloadData = false ; final Object eventSource = event . getSource ( ) ; if ( eventSource == ( displayButton ) ) { actionMakeGraph ( ) ; } else if ( eventSource == ( saveGraph ) ) { saveGraphToFile = true ; try { <START_BUG> ActionRouter . getInstance ( ) . getAction ( SAVE_GRAPHICS , SaveGraphics . class . getName ( ) ) . doAction ( new ActionEvent ( this , 1 , ActionNames . SAVE_GRAPHICS ) ) ; <END_BUG> } catch ( Exception e ) { RespTimeGraphVisualizer . log . error ( e . getMessage ( ) ) ; } } else if ( eventSource == ( syncWithName ) ) { graphTitle . setText ( namePanel . getName ( ) ) ; } else if ( eventSource == ( dynamicGraphSize ) ) { if ( dynamicGraphSize . isSelected ( ) ) { graphWidth . setEnabled ( false ) ; graphHeight . setEnabled ( false ) ; } else { graphWidth . setEnabled ( true ) ; graphHeight . setEnabled ( true ) ; } } else if ( eventSource == ( samplerSelection ) ) { if ( samplerSelection . isSelected ( ) ) { samplerMatchLabel . setEnabled ( true ) ; applyFilterBtn . setEnabled ( true ) ; caseChkBox . setEnabled ( true ) ; regexpChkBox . setEnabled ( true ) ; } else { samplerMatchLabel . setEnabled ( false ) ; applyFilterBtn . setEnabled ( false ) ; caseChkBox . setEnabled ( false ) ; regexpChkBox . setEnabled ( false ) ; forceReloadData = true ; } } if ( ( ( eventSource == ( applyFilterBtn ) ) || ( eventSource == ( intervalButton ) ) ) || forceReloadData ) { if ( eventSource == ( intervalButton ) ) { intervalValue = Integer . parseInt ( intervalField . getText ( ) ) ;

Fix:
ActionRouter . getInstance ( ) . getAction ( SAVE_GRAPHICS , SaveGraphics . class . getName ( ) ) . doAction ( new ActionEvent ( this , event . getID ( ) , ActionNames . SAVE_GRAPHICS ) ) ;