/** Invoked when an action occurs. */
  public void actionPerformed(final ActionEvent e) {

    final ReportDesignerContext reportDesignerContext = getReportDesignerContext();
    final ReportRenderContext activeContext = getActiveContext();
    if (activeContext == null) {
      return;
    }

    if (activeContext.isChanged()) {
      // ask the user and maybe save the report..
      final int option =
          JOptionPane.showConfirmDialog(
              reportDesignerContext.getParent(),
              Messages.getInstance()
                  .getString("PublishToServerAction.ReportModifiedWarning.Message"),
              Messages.getInstance().getString("PublishToServerAction.ReportModifiedWarning.Title"),
              JOptionPane.YES_NO_CANCEL_OPTION,
              JOptionPane.WARNING_MESSAGE);
      if (option == JOptionPane.YES_OPTION) {
        if (SaveReportAction.saveReport(
                reportDesignerContext, activeContext, reportDesignerContext.getParent())
            == false) {
          return;
        }
      }
      if (option == JOptionPane.CANCEL_OPTION) {
        return;
      }
    }

    final PublishToServerTask publishToServerTask =
        new PublishToServerTask(reportDesignerContext, reportDesignerContext.getParent());
    final LoginTask loginTask =
        new LoginTask(
            reportDesignerContext, reportDesignerContext.getParent(), publishToServerTask);

    SwingUtilities.invokeLater(loginTask);
  }