@Override
    public void propertyChange(PropertyChangeEvent e) {
        String prop = e.getPropertyName();

        if (isVisible()
                && (e.getSource() == optionPane)
                && (JOptionPane.VALUE_PROPERTY.equals(prop)
                || JOptionPane.INPUT_VALUE_PROPERTY.equals(prop))) {
            Object value = optionPane.getValue();

            if (value == JOptionPane.UNINITIALIZED_VALUE) {
                //ignore reset
                return;
            }

            optionPane.setValue(JOptionPane.UNINITIALIZED_VALUE);

            if (OK_BUTTON.equals(value)) {
                typedText = textField.getText();
                if (nameValidator.isValid(typedText)) {

                    clearAndHide();
                } else {

                    textField.selectAll();
                    JOptionPane.showMessageDialog(
                            CustomJDialog.this,
                            "Имя \"" + typedText + "\" использовать нельзя. Пожалуйста введите другое имя.",
                            "Ошибка",
                            JOptionPane.ERROR_MESSAGE);
                    typedText = null;
                    textField.requestFocusInWindow();
                }
            } else {
                typedText = null;
                clearAndHide();
            }
        }
    }