package org.jivesoftware.sparkplugin.phonebook.ui;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import org.jivesoftware.resource.SparkRes;
import org.jivesoftware.spark.plugin.phone.resource.PhoneRes;
import org.jivesoftware.spark.util.GraphicUtils;
import org.jivesoftware.sparkplugin.phonebook.BookManager;
public class EntryFrame extends JFrame
{
private static final long serialVersionUID = -8956851041216444903L;
private JTextField tfName, tfNumber;
private PhonebookUI parent;
private BookManager manager;
public static final int TYP_ADD = 0;
public static final int TYP_EDIT = 1;
private int typ = 0;;
private String name, number;
public EntryFrame(PhonebookUI parent, BookManager manager, int typ) {
this.parent = parent;
this.manager = manager;
this.typ = typ;
init();
}
private void init() {
JPanel pName = new JPanel();
JPanel pNumber = new JPanel();
JPanel pBtn = new JPanel();
tfName = new JTextField();
tfNumber = new JTextField();
JButton btnOK = new JButton(PhoneRes.getIString("btn.ok"));
JButton btnCancel = new JButton(PhoneRes.getIString("btn.cancel"));
btnCancel.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
EntryFrame.this.dispose();
}
});
btnOK.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(tfName.getText() != null
&& !tfName.getText().trim().equals("")
&& tfNumber.getText() != null
&& !tfNumber.getText().trim().equals("")) {
// choose between edit or add
if(typ == TYP_EDIT) {
// if there where problems, don't close the dialog
if(!manager.update(manager.getPhonebookEntry(name, number), tfName.getText(), tfNumber.getText()))
return;
}
else if(!manager.add(tfName.getText(), tfNumber.getText())) {
JOptionPane.showMessageDialog(EntryFrame.this, PhoneRes.getIString("book.exists"),
PhoneRes.getIString("book.warning"), JOptionPane.WARNING_MESSAGE);
return;
}
EntryFrame.this.dispose();
parent.loadEntries();
}
else {
JOptionPane.showMessageDialog(EntryFrame.this, PhoneRes.getIString("book.fillFields"),
PhoneRes.getIString("book.warning"), JOptionPane.WARNING_MESSAGE);
}
}
});
pName.setLayout(new BoxLayout(pName, BoxLayout.X_AXIS));
pName.setBorder(new EmptyBorder(5,5,5,5));
pName.add(new JLabel(PhoneRes.getIString("book.name") + ":"));
pName.add(Box.createHorizontalStrut(17));
pName.add(tfName);
pNumber.setLayout(new BoxLayout(pNumber, BoxLayout.X_AXIS));
pNumber.setBorder(new EmptyBorder(5,5,5,5));
pNumber.add(new JLabel(PhoneRes.getIString("book.number") + ":"));
pNumber.add(Box.createHorizontalStrut(5));
pNumber.add(tfNumber);
pBtn.setLayout(new BoxLayout(pBtn, BoxLayout.X_AXIS));
pBtn.setBorder(new EmptyBorder(5,5,5,5));
pBtn.add(btnOK);
pBtn.add(Box.createHorizontalStrut(5));
pBtn.add(btnCancel);
this.setLayout(new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS));
this.add(pName);
this.add(pNumber);
this.add(pBtn);
this.setResizable(false);
this.setIconImage(SparkRes.getImageIcon(SparkRes.ADDRESS_BOOK_16x16).getImage());
this.setSize(new Dimension(250,130));
if(typ == TYP_ADD) {
this.setTitle(PhoneRes.getIString("frame.add"));
}
else if(typ == TYP_EDIT) {
this.setTitle(PhoneRes.getIString("frame.edit"));
}
}
public void setName(String name) {
tfName.setText(name);
this.name = name;
}
public void setNumber(String number) {
tfNumber.setText(number);
this.number = number;
}
public void invoke() {
GraphicUtils.centerWindowOnComponent(this, parent);
this.setVisible(true);
}
}