gt:     if (oldName != null) {
context: /******************************************************************************
   * Copyright: GPL v3                                                          *
   *                                                                            *
   * This program is free software: you can redistribute it and/or modify       *
   * it under the terms of the GNU General Public License as published by       *
   * the Free Software Foundation, either version 3 of the License, or          *
   * (at your option) any later version.                                        *
   *                                                                            *
   * This program is distributed in the hope that it will be useful,            *
   * but WITHOUT ANY WARRANTY; without even the implied warranty of             *
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              *
   * GNU General Public License for more details.                               *
   *                                                                            *
   * You should have received a copy of the GNU General Public License          *
   * along with this program.  If not, see <http://www.gnu.org/licenses/>.      *
   ******************************************************************************/
  
  package dba.gui.newRelation.auxClasses;
  
  import dba.utils.GetIcons;
  import dba.utils.Localization;
  import dba.utils.WizardEnum;
  import dba.utils.constants;
  import dbaCore.data.Database;
  import dbaCore.data.RelationSchema;
  import net.miginfocom.swing.MigLayout;
  
  import javax.swing.*;
  import javax.swing.event.ListSelectionEvent;
  import javax.swing.event.ListSelectionListener;
  import javax.swing.table.TableColumn;
  import java.awt.*;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import java.awt.event.FocusAdapter;
  import java.awt.event.FocusEvent;
  
  /**
   * Class to provide a JPanel with all Functions needed for the Wizard
   * Card0
   *
   * @author Andreas Freitag
   */
  public class AddRelationNameAttributePanel extends JPanel implements constants {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    private JTextField txtRelName;
    private JTextField txtAttrName;
    private JTable table;
    private AttributeTableModel tableModel;
    private RelationSchema tmpRelation;
    private Database database;
    private JLabel lblAlreadyExisting;
    private JButton btnDelete;
    private Localization locale;
    private WizardEnum type;
  
    /**
     * Create the panel to set Relationname and adding Attributes
     *
     * @param relation Relation to edit (empty relation for the 'New Relation
     *                 Wizard')
     * @param db       Database Object
     */
    public AddRelationNameAttributePanel(RelationSchema relation, Database db, WizardEnum wizardType) {
      super();
      locale = Localization.getInstance();
  
      GetIcons getIcons = GetIcons.getInstance();
  
      ImageIcon iconAdd = getIcons.getButtonAdd();
      ImageIcon iconDelete = getIcons.getButtonDelete();
  
      type = wizardType;
  
      database = db;
      tmpRelation = relation;
      setLayout(new MigLayout("wrap 2, fillx", "[grow][grow, 160:160:160]"));
      lblAlreadyExisting = new JLabel(locale.getString("WIZ_AttrExisting"));
      JButton btnAdd = new JButton(locale.getString("Add"), iconAdd);
      btnAdd.setEnabled(false);
      btnAdd.setHorizontalAlignment(SwingConstants.LEFT);
      btnDelete = new JButton(locale.getString("Delete"), iconDelete);
      btnDelete.setEnabled(false);
      btnDelete.setHorizontalAlignment(SwingConstants.LEFT);
      btnDelete.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
          int selectedRow = table.getSelectedRow();
          tableModel.removeRow(selectedRow);
          txtAttrName.selectAll();
          txtAttrName.requestFocus();
        }
      });
  
      tableModel = new AttributeTableModel(tmpRelation.getAttributes(), database, tmpRelation);
      table = new JTable(tableModel);
  
      TableColumn colFk = table.getColumnModel().getColumn(3);
      colFk.setCellEditor(null);
  
      txtRelName = new JTextField();
  
      // Label Relation Name
      JLabel lblRelationName = new JLabel(locale.getString("WIZ_AttrRelName"));
      add(lblRelationName, "span");
  
      // Textfield Relation Name
      if (relation.getName() == null || relation.getName().isEmpty()) {
        txtRelName.setText(locale.getString("WIZ_AttrNameQuestion"));
      } else {
        txtRelName.setText(relation.getName());
      }
      txtRelName.requestFocus();
      txtRelName.selectAll();
  
      txtRelName.addFocusListener(new FocusAdapter() {
        @Override
        public void focusLost(FocusEvent e) {
          String oldName = null;
          if (type == WizardEnum.EDIT) {
            oldName = tmpRelation.getName();
          }
  
          if (checkIfRelationExists(txtRelName.getText(), oldName) || txtRelName.getText().isEmpty() || txtRelName
            .getText().equals(locale.getString("WIZ_AttrNameQuestion"))) {
            lblAlreadyExisting.setVisible(true);
            AddRelationNameAttributePanel.this.firePropertyChange("RelName", null, false);
          } else {
            database.updateFkRelationNames(tmpRelation.getName(), txtRelName.getText());
            tmpRelation.setName(txtRelName.getText());
            lblAlreadyExisting.setVisible(false);
            AddRelationNameAttributePanel.this.firePropertyChange("RelName", null, true);
          }
        }
      });
      add(txtRelName, "growx");
  
      // Label Relation already existing
      lblAlreadyExisting.setToolTipText(locale.getString("WIZ_AttrTooltip"));
      lblAlreadyExisting.setForeground(Color.RED);
      add(lblAlreadyExisting, "growx");
      lblAlreadyExisting.setVisible(false);
  
      // Label Attribute Name
      JLabel lblAttributeName = new JLabel(locale.getString("AttrName"));
      add(lblAttributeName, "spanx, growx");
  
      // Textfield Attribute Name
      txtAttrName = new JTextField();
      txtAttrName.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
          addAttribute();
        }
      });
      txtAttrName.getDocument().addDocumentListener(new CustomDocumentListener(btnAdd));
      add(txtAttrName, "growx");
  
      // Button Add
      btnAdd.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
          addAttribute();
          txtAttrName.requestFocus();
        }
      });
      add(btnAdd, "growx");
  
      // Table Attributes
      JScrollPane scrollpane = new JScrollPane(table);
      table.getTableHeader().setResizingAllowed(false);
      table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
      table.getTableHeader().setReorderingAllowed(false);
      table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
      table.getColumnModel().getColumn(1).setPreferredWidth(360);
      table.getColumnModel().getColumn(1).setMinWidth(360);
      table.getColumnModel().getColumn(1).setMaxWidth(360);
      table.getColumnModel().getColumn(2).setPreferredWidth(30);
      table.getColumnModel().getColumn(2).setMinWidth(30);
      table.getColumnModel().getColumn(2).setMaxWidth(30);
      table.getColumnModel().getColumn(3).setPreferredWidth(30);
      table.getColumnModel().getColumn(3).setMinWidth(30);
      table.getColumnModel().getColumn(3).setMaxWidth(30);
      table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
      add(scrollpane, "spany, growx, growy");
  
      ListSelectionModel listSelectionModel = table.getSelectionModel();
      listSelectionModel.addListSelectionListener(new ListSelectionListener() {
        @Override
        public void valueChanged(ListSelectionEvent e) {
          ListSelectionModel lsm = (ListSelectionModel) e.getSource();
          btnDelete.setEnabled(!lsm.isSelectionEmpty());
        }
      });
  
      // Button Delete
      add(btnDelete, "aligny top, growx");
    }
  
    /**
     * Add Attribute (with name from Textfield) to Relation
     */
    private void addAttribute() {
      if (txtAttrName.getText().isEmpty()) {
        return;
      }
      if (!tmpRelation.addAttribute(txtAttrName.getText())) {
        JOptionPane.showMessageDialog(this, locale.getString("Attribute") + " '" + txtAttrName.getText() + "' " +
          locale.getString("WIZ_AttrDialogExisting"));
        txtAttrName.selectAll();
        return;
      }
  
      table.revalidate();
      txtAttrName.selectAll();
    }
  
    /**
     * @param relName Relation Name to check, if existing in database
     * @param oldName Current name of relation (only needed in EditMode.) In
     *                NewMode give null
     * @return true if name exists or false if name does not exist
     */
    private boolean checkIfRelationExists(String relName, String oldName) {
  
  