/** if a button is pressed ... */
  public void actionPerformed(ActionEvent evt) {
    try {
      String acmd = evt.getActionCommand();

      if (acmd.equals(ACTION_CMD_PRINT)) {

        this.chartPanel.createChartPrintJob();

      } else if (acmd.equals(ACTION_CMD_SAVE_AS)) {

        this.chartPanel.doSaveAs();

      } else if (acmd.equals(ACTION_CMD_ZOOM_IN)) {

        ChartRenderingInfo info = chartPanel.getChartRenderingInfo();
        Rectangle2D rect = info.getChartArea();
        chartPanel.setZoomInFactor(ZOOM_FACTOR);
        chartPanel.zoomInDomain(rect.getCenterX(), rect.getCenterY());
      } else if (acmd.equals(ACTION_CMD_ZOOM_OUT)) {

        ChartRenderingInfo info = chartPanel.getChartRenderingInfo();
        Rectangle2D rect = info.getChartArea();
        chartPanel.setZoomOutFactor(1 / ZOOM_FACTOR);
        chartPanel.zoomOutDomain(rect.getCenterX(), rect.getCenterY());

      } else if (acmd.equals(ACTION_CMD_ZOOM_TO_FIT)) {
        // X-axis (has no fixed borders)
        chartPanel.restoreAutoBounds();
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }