org.columba.addressbook.gui.dialog.contact.FullNameDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.columba.addressbook.gui.dialog.contact.FullNameDialog.java

Source

// The contents of this file are subject to the Mozilla Public License Version
// 1.1
//(the "License"); you may not use this file except in compliance with the
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
//
//Software distributed under the License is distributed on an "AS IS" basis,
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
//for the specific language governing rights and
//limitations under the License.
//
//The Original Code is "The Columba Project"
//
//The Initial Developers of the Original Code are Frederik Dietz and Timo
// Stich.
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
//
//All Rights Reserved.

package org.columba.addressbook.gui.dialog.contact;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.SwingConstants;

import org.columba.addressbook.util.AddressbookResourceLoader;
import org.columba.core.gui.base.ButtonWithMnemonic;
import org.columba.core.gui.base.LabelWithMnemonic;
import org.columba.core.gui.base.SingleSideEtchedBorder;

import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;

/**
 * A dialog for editing a contact's full name.
 */

public class FullNameDialog extends JDialog implements ActionListener {
    private JLabel titleLabel;

    private JTextField namePrefixTextField;

    private JLabel fornameLabel;

    private JTextField firstNameTextField;

    private JLabel middlenameLabel;

    private JTextField middleNameTextField;

    private JLabel lastnameLabel;

    private JTextField lastNameTextField;

    private JLabel suffixLabel;

    private JTextField nameSuffixTextField;

    private JButton okButton;

    private JButton cancelButton;

    private boolean success = false;

    public FullNameDialog(JDialog frame) {
        super(frame, AddressbookResourceLoader.getString("dialog", "contact", "edit_fullname"), true);

        initComponents();
        layoutComponents();

        pack();
        setLocationRelativeTo(null);
    }

    public boolean getResult() {
        return success;
    }

    /**
     * @return Returns the firstNameTextField.
     */
    public JTextField getFirstNameTextField() {
        return firstNameTextField;
    }

    /**
     * @return Returns the lastNameTextField.
     */
    public JTextField getLastNameTextField() {
        return lastNameTextField;
    }

    /**
     * @return Returns the middleNameTextField.
     */
    public JTextField getMiddleNameTextField() {
        return middleNameTextField;
    }

    /**
     * @return Returns the namePrefixTextField.
     */
    public JTextField getNamePrefixTextField() {
        return namePrefixTextField;
    }

    /**
     * @return Returns the nameSuffixTextField.
     */
    public JTextField getNameSuffixTextField() {
        return nameSuffixTextField;
    }

    protected void layoutComponents() {
        JPanel mainPanel = new JPanel();
        mainPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));

        FormLayout layout = new FormLayout("right:default, 3dlu, default:grow", "");

        DefaultFormBuilder b = new DefaultFormBuilder(layout, mainPanel);
        b.setRowGroupingEnabled(true);

        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(mainPanel, BorderLayout.CENTER);

        b.append(titleLabel);
        b.append(namePrefixTextField);

        b.append(fornameLabel);
        b.append(firstNameTextField);

        b.append(middlenameLabel);
        b.append(middleNameTextField);

        b.append(lastnameLabel);
        b.append(lastNameTextField);

        b.append(suffixLabel);
        b.append(nameSuffixTextField);

        JPanel bottomPanel = new JPanel(new BorderLayout());
        bottomPanel.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP));

        JPanel buttonPanel = new JPanel(new GridLayout(1, 2, 10, 0));
        buttonPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
        bottomPanel.add(buttonPanel, BorderLayout.EAST);

        cancelButton = new ButtonWithMnemonic(AddressbookResourceLoader.getString(null, "cancel"));
        cancelButton.setActionCommand("CANCEL");
        cancelButton.addActionListener(this);
        buttonPanel.add(cancelButton);
        okButton = new ButtonWithMnemonic(AddressbookResourceLoader.getString(null, "ok"));
        okButton.setActionCommand("OK");
        okButton.addActionListener(this);
        buttonPanel.add(okButton);

        getRootPane().registerKeyboardAction(this, "CANCEL", KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
                JComponent.WHEN_IN_FOCUSED_WINDOW);

        getRootPane().setDefaultButton(okButton);
        getContentPane().add(bottomPanel, BorderLayout.SOUTH);
    }

    protected void initComponents() {
        titleLabel = new LabelWithMnemonic(AddressbookResourceLoader.getString("dialog", "contact", "title"));
        namePrefixTextField = new JTextField(20);
        titleLabel.setLabelFor(namePrefixTextField);
        fornameLabel = new LabelWithMnemonic(
                AddressbookResourceLoader.getString("dialog", "contact", "first_name"));
        firstNameTextField = new JTextField(20);
        fornameLabel.setLabelFor(firstNameTextField);
        middlenameLabel = new LabelWithMnemonic(
                AddressbookResourceLoader.getString("dialog", "contact", "middle_name"));
        middleNameTextField = new JTextField(20);
        middlenameLabel.setLabelFor(middleNameTextField);
        lastnameLabel = new LabelWithMnemonic(
                AddressbookResourceLoader.getString("dialog", "contact", "last_name"));
        lastNameTextField = new JTextField(20);
        lastnameLabel.setLabelFor(lastNameTextField);
        suffixLabel = new LabelWithMnemonic(AddressbookResourceLoader.getString("dialog", "contact", "suffix"));
        nameSuffixTextField = new JTextField(20);
        suffixLabel.setLabelFor(nameSuffixTextField);
    }

    public void actionPerformed(ActionEvent event) {
        if (event.getActionCommand().equals("OK")) {

            // check if firstname, middlename or lastname contain only valid
            // characters

            if (firstNameTextField.getText() != null) {
                // contains "," comma character
                if (firstNameTextField.getText().indexOf(",") != -1) {
                    JOptionPane.showInternalMessageDialog(this, "Firstname can't contain comma character.");
                    return;
                }
            }

            if (middleNameTextField.getText() != null) {
                // contains "," comma character
                if (middleNameTextField.getText().indexOf(",") != -1) {
                    JOptionPane.showInternalMessageDialog(this, "Middle name can't contain comma character.");
                    return;
                }
            }

            if (lastNameTextField.getText() != null) {
                // contains "," comma character
                if (lastNameTextField.getText().indexOf(",") != -1) {
                    JOptionPane.showInternalMessageDialog(this, "Lastname can't contain comma character.");
                    return;
                }
            }

            success = true;
            setVisible(false);
        } else if (event.getActionCommand().equals("CANCEL")) {
            success = false;
            setVisible(false);
        }

    }

    public String getFormattedName() {
        StringBuffer buf = new StringBuffer();

        if (namePrefixTextField.getText().length() > 0) {
            buf.append(namePrefixTextField.getText() + " ");
        }

        if (firstNameTextField.getText().length() > 0) {
            buf.append(firstNameTextField.getText() + " ");
        }

        if (middleNameTextField.getText().length() > 0) {
            buf.append(middleNameTextField.getText() + " ");
        }

        if (lastNameTextField.getText().length() > 0) {
            buf.append(lastNameTextField.getText() + " ");
        }

        if (nameSuffixTextField.getText().length() > 0) {
            buf.append(nameSuffixTextField.getText() + " ");
        }

        return buf.toString();
    }
}