@Override
 public void actionPerformed(ActionEvent e) {
   if (dbm.isDatabaseOpen()) {
     File newFile = gui.showSaveDialog();
     if (newFile != null) {
       try {
         dbm.saveAs(newFile);
       } catch (IOException ex) {
         log.error("error saving database", ex);
         gui.showMessageDialog(
             ex.getMessage(), I18n.getString("TITLE_DATABASE_ERROR"), JOptionPane.ERROR_MESSAGE);
       }
     }
   }
 }
  SaveAsDatabaseAction(Gui gui) {
    this.gui = gui;
    this.dbm = gui.getWeapon().getDatabaseManager();
    I18n.setText(this, "ACTION_SAVE_AS");

    // enable on load
    gui.getWeapon()
        .getEventSupport()
        .addPropertyChangeListener(
            EventType.DATABASE_STATE,
            new PropertyChangeListener() {
              @Override
              public void propertyChange(PropertyChangeEvent e) {
                DatabaseState state = (DatabaseState) e.getNewValue();
                setEnabled(state == DatabaseState.OPEN_CLEAN || state == DatabaseState.OPEN_DIRTY);
              }
            });
    setEnabled(dbm.isDatabaseOpen());
  }