Buggy code:
private JLabeledTextField maxLengthXAxisLabel = new JLabeledTextField ( JMeterUtils . getResString ( "aggregate_graph_max_length_xaxis_label" ) , 8 ) ; private JLabeledTextField maxValueYAxisLabel = new JLabeledTextField ( JMeterUtils . getResString ( "aggregate_graph_yaxis_max_value" ) , 8 ) ; private JCheckBox dynamicGraphSize = new JCheckBox ( JMeterUtils . getResString ( "aggregate_graph_dynamic_size" ) ) ; private JLabeledTextField graphWidth = new JLabeledTextField ( JMeterUtils . getResString ( "aggregate_graph_width" ) , 6 ) ; private JLabeledTextField graphHeight = new JLabeledTextField ( JMeterUtils . getResString ( "aggregate_graph_height" ) , 6 ) ; private String yAxisLabel = JMeterUtils . getResString ( "aggregate_graph_response_time" ) ; private String yAxisTitle = JMeterUtils . getResString ( "aggregate_graph_ms" ) ; private boolean saveGraphToFile = false ; private int defaultWidth = 400 ; private int defaultHeight = 300 ; private JComboBox columnsList = new JComboBox ( GRAPH_COLUMNS ) ; private List < BarGraph > eltList = new ArrayList < BarGraph > ( ) ; private JCheckBox columnSelection = new JCheckBox ( JMeterUtils . getResString ( "aggregate_graph_column_selection" ) , false ) ; private JTextField columnMatchLabel = new JTextField ( ) ; private JButton applyFilterBtn = new JButton ( JMeterUtils . getResString ( "graph_apply_filter" ) ) ; private JCheckBox caseChkBox = new JCheckBox ( JMeterUtils . getResString ( "search_text_chkbox_case" ) , false ) ; private JCheckBox regexpChkBox = new JCheckBox ( JMeterUtils . getResString ( "search_text_chkbox_regexp" ) , true ) ; private JComboBox titleFontNameList = new JComboBox ( StatGraphProperties . getFontNameMap ( ) . keySet ( ) . toArray ( ) ) ; private JComboBox titleFontSizeList = new JComboBox ( StatGraphProperties . fontSize ) ; private JComboBox titleFontStyleList = new JComboBox ( StatGraphProperties . getFontStyleMap ( ) . keySet ( ) . toArray ( ) ) ; private JComboBox valueFontNameList = new JComboBox ( StatGraphProperties . getFontNameMap ( ) . keySet ( ) . toArray ( ) ) ; private JComboBox valueFontSizeList = new JComboBox ( StatGraphProperties . fontSize ) ; private JComboBox valueFontStyleList = new JComboBox ( StatGraphProperties . getFontStyleMap ( ) . keySet ( ) . toArray ( ) ) ; private JComboBox fontNameList = new JComboBox ( StatGraphProperties . getFontNameMap ( ) . keySet ( ) . toArray ( ) ) ; private JComboBox fontSizeList = new JComboBox ( StatGraphProperties . fontSize ) ; private JComboBox fontStyleList = new JComboBox ( StatGraphProperties . getFontStyleMap ( ) . keySet ( ) . toArray ( ) ) ; private JComboBox legendPlacementList = new JComboBox ( StatGraphProperties . getPlacementNameMap ( ) . keySet ( ) . toArray ( ) ) ; private JCheckBox drawOutlinesBar = new JCheckBox ( JMeterUtils . getResString ( "aggregate_graph_draw_outlines" ) , true ) ; private JCheckBox numberShowGrouping = new JCheckBox ( JMeterUtils . getResString ( "aggregate_graph_number_grouping" ) , true ) ; private JCheckBox valueLabelsVertical = new JCheckBox ( JMeterUtils . getResString ( "aggregate_graph_value_labels_vertical" ) , true ) ; private Color colorBarGraph = Color . YELLOW ; private Color colorForeGraph = Color . BLACK ; private int nbColToGraph = 1 ; private Pattern pattern = null ; private transient Matcher matcher = null ; public StatGraphVisualizer ( ) { } private static final TableCellRenderer [ ] RENDERERS = new TableCellRenderer [ ] { null , null , null , null , null , null , null , new NumberRenderer ( "#0.00%" ) , new RateRenderer ( "#.0" ) , new NumberRenderer ( "#.0" ) } ; public static boolean testFunctors ( ) { } @ Override public String getLabelResource ( ) { } @ Override public void add ( final SampleResult res ) { } @ Override public void clearData ( ) { } private void init ( ) { } public void makeGraph ( ) { } public double [ ] [ ] getData ( ) { } public String [ ] getAxisLabels ( ) { } private String [ ] getLegendLabels ( ) { } private Color [ ] getBackColors ( ) { } private int getNbColumns ( ) { } public List < List < Object > > getAllTableData ( ) { } @ 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 ) { StatGraphVisualizer . log . error ( e . getMessage ( ) ) ; } } else if ( eventSource == ( saveTable ) ) { JFileChooser chooser = FileDialoger . promptToSaveFile ( "statistics.csv" ) ; if ( chooser == null ) { return ; } FileWriter writer = null ; try { writer = new FileWriter ( chooser . getSelectedFile ( ) ) ; CSVSaveService . saveCSVStats ( getAllTableData ( ) , writer , ( saveHeaders . isSelected ( ) ? COLUMNS : null ) ) ; } catch ( FileNotFoundException e ) { StatGraphVisualizer . log . warn ( e . getMessage ( ) ) ; } catch ( IOException e ) { StatGraphVisualizer . log . warn ( e . getMessage ( ) ) ; } finally { JOrphanUtils . closeQuietly ( writer ) ; } } else if ( eventSource == ( chooseForeColor ) ) { Color color = JColorChooser . showDialog ( null , JMeterUtils . getResString ( "aggregate_graph_choose_color" ) , colorBarGraph ) ; if ( color != null ) { colorForeGraph = color ; } } else if ( eventSource == ( syncWithName ) ) { graphTitle . setText ( namePanel . getName ( ) ) ; } else if ( eventSource == ( dynamicGraphSize ) ) { if ( dynamicGraphSize . isSelected ( ) ) { graphWidth . setEnabled ( false ) ; graphHeight . setEnabled ( false ) ; }

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