import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
+import java.io.IOException;
+import java.sql.SQLException;
import java.text.MessageFormat;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.DefaultComboBoxModel;
-import javax.swing.InputVerifier;
+import javax.swing.JButton;
import javax.swing.JComboBox;
-import javax.swing.JComponent;
import javax.swing.JDialog;
+import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
+import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.table.TableModel;
-import org.mxchange.addressbook.BaseFrameworkSystem;
+import org.mxchange.addressbook.BaseAddressbookSystem;
import org.mxchange.addressbook.application.AddressbookApplication;
-import org.mxchange.addressbook.client.Client;
-import org.mxchange.addressbook.contact.Gender;
-import org.mxchange.addressbook.exceptions.FrameAlreadyInitializedException;
-import org.mxchange.addressbook.model.contact.ContactTableModel;
+import org.mxchange.addressbook.exceptions.ContactAlreadyAddedException;
+import org.mxchange.addressbook.manager.contact.ManageableAddressbookContact;
+import org.mxchange.jcore.client.Client;
+import org.mxchange.jcore.client.gui.ClientFrame;
+import org.mxchange.jcore.contact.Contact;
+import org.mxchange.jcore.contact.Gender;
+import org.mxchange.jcore.exceptions.FrameAlreadyInitializedException;
+import org.mxchange.jcore.model.swing.contact.ContactTableModel;
/**
*
* @author Roland Haeder
*/
-public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame {
+public class AddressbookFrame extends BaseAddressbookSystem implements ClientFrame {
/**
* Own instance
/**
* Whether this frame has been initialized
*/
- private boolean isInitialized;
-
- /**
- * Layout instance
- */
- private GridLayout layout;
+ private boolean initialized;
/**
* Status label needs to be updated
// Set client here
this.setClient(client);
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
+ }
+
+ @Override
+ public Contact doEnterOwnData () {
+ // Trace message
+ this.getLogger().trace("CALLED!"); //NOI18N
+
+ // Is the "add contact" window visible?
+ if (this.addContact.isVisible()) {
+ // Something bad happened
+ throw new IllegalStateException("Window addContact is already visible."); //NOI18N
+ }
+
+ // Disable main window
+ this.frame.setEnabled(false);
+
+ // Make other window visible
+ this.addContact.setVisible(true);
+
+ // Trace message
+ this.getLogger().trace("Returning null : EXIT!"); //NOI18N
+
+ // Return value is not supported
+ return null;
}
/**
*/
@Override
public void doShutdown () {
+ // Trace message
+ this.getLogger().trace("CALLED!"); //NOI18N
+
// First only show shutdown status
this.updateStatus("shutdown"); //NOI18N
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
+ }
+
+
+ /**
+ * Enables main window (frame)
+ */
+ @Override
+ public void enableMainWindow () {
+ // Trace message
+ this.getLogger().trace("CALLED!"); //NOI18N
+
+ // Enable it again
+ this.frame.setEnabled(true);
+
+ // Request focus for this window
+ this.frame.requestFocus();
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
}
/**
// Debug line
this.getLogger().trace(MessageFormat.format("client={0}: CALLED!", client)); //NOI18N
+ // Get and cast manager instance
+ ManageableAddressbookContact manager = (ManageableAddressbookContact) this.getClient().getManager();
+
// Has the user entered own data?
- if (this.getClient().getContactManager().isOwnContactAdded()) {
+ if (manager.isOwnContactAdded()) {
// Debug message
this.getLogger().debug("Disabling menus: isOwnContactAdded()=false"); //NOI18N
// All done here
this.updateStatus("done"); //NOI18N
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
}
/**
* you may not want.
*
* @throws
- * org.mxchange.addressbook.exceptions.FrameAlreadyInitializedException If
+ * org.mxchange.jcore.exceptions.FrameAlreadyInitializedException If
* this method has been called twice
*/
@Override
this.initComponents();
// Set flag
- this.isInitialized = true;
+ this.initialized = true;
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
}
/**
*/
@Override
public final boolean isInitialized () {
- return this.isInitialized;
+ return this.initialized;
}
/**
*/
@Override
public void shutdownApplication () {
+ // Trace message
+ this.getLogger().trace("CALLED!"); //NOI18N
+
// To do this, the frame must be initialized
if (!this.isInitialized()) {
// Not initalized, so bad call
this.getLogger().fatal("Bad call of shutdownApplication(). Please report this."); //NOI18N
return;
}
- this.getClient().getApplication().doShutdown();
+
+ // Call shutdown method
+ try {
+ this.getClient().getApplication().doShutdown();
+ } catch (final SQLException | IOException ex) {
+ // Abort here
+ this.abortProgramWithException(ex);
+ }
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
+ }
+
+ /**
+ * Adds a new menu item with given key to menu instance
+ *
+ * @param menu Menu instance to add item to
+ * @param key Message key part
+ * @param listener Listener instance
+ */
+ private void addMenuItem (final JMenu menu, final String key, final ActionListener listener) {
+ // Trace message
+ this.getLogger().trace(MessageFormat.format("menu={0},key={1},listener={2} - CALLED!", menu, key, listener)); //NOI18N
+
+ // New instance
+ JMenuItem item = this.initMenuItemWithTooltip(key);
+
+ // Add listener
+ item.addActionListener(listener);
+
+ // Add item -> menu
+ menu.add(item);
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
+ }
+
+ /**
+ * Adds a JTextField with label and tool tip to given panel
+ *
+ * @param panel Panel instance to add text field
+ * @param key Part of message key from resource bundle
+ * @param fieldLength Length of text field
+ */
+ private void addTextFieldWithLabelToPanel (final JPanel panel, final String key, final int fieldLength) {
+ // Trace message
+ this.getLogger().trace(MessageFormat.format("panel={0},key={1},fieldLength={2} - CALLED!", panel, key, fieldLength)); //NOI18N
+
+ // Init label for given key
+ JLabel label = new JLabel(this.getBundle().getString(String.format("AddressbookFrame.%s.text", key))); //NOI18N
+
+ // And input box wih tool tip
+ JTextField field = new JTextField(fieldLength);
+ field.setToolTipText(this.getBundle().getString(String.format("AddressbookFrame.%s.toolTipText", key))); //NOI18N
+
+ // Add both to panel
+ panel.add(label);
+ panel.add(field);
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
}
/**
return title;
}
+ /**
+ * Initializes "add" and "cancel" buttons
+ */
+ private void initAddCancelButtons () {
+ // Trace message
+ this.getLogger().trace("CALLED!"); //NOI18N
+
+ // Init panel
+ JPanel panel = new JPanel();
+ panel.setLayout(new GridLayout(1, 2, 10, 10));
+
+ // Generate "add" button
+ JButton addButton = new JButton(this.getBundle().getString("AddressbookFrame.button.addAddress.text"));
+
+ // Add listener
+ addButton.addActionListener(new AddActionListener(this.addContact, this));
+
+ // Add button to panel
+ panel.add(addButton);
+
+ // Generate "cancel" button
+ JButton cancelButton = new JButton(this.getBundle().getString("AddressbookFrame.button.cancel.text"));
+
+ // Add listener
+ cancelButton.addActionListener(new CancelActionListener(this.addContact, this));
+
+ // Add button to panel
+ panel.add(cancelButton);
+
+ // Add panel to main panel
+ this.addContact.add(panel);
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
+ }
+
/**
* Initializes "add contact" dialog
*/
private void initAddContactDialog () {
+ // Trace message
+ this.getLogger().trace("CALLED!"); //NOI18N
+
// Instance dialog and set title
this.addContact = new JDialog();
this.addContact.setTitle(this.generateFrameTitle("dialog.addContact")); //NOI18N
// Only hide it on close and make it appear in middle of screen
this.addContact.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
- this.addContact.setLocationRelativeTo(null);
+ this.addContact.setLocationRelativeTo(this.frame);
// Set always on top and auto-focus
this.addContact.setAlwaysOnTop(true);
// Initial dimension
this.addContact.setSize(500, 500);
+ // And it is not resizeable
+ this.addContact.setResizable(false);
+
/*
* Add listener which asks for confirmation, if data has been entered
* but not saved yet. The user may appriciate this ... ;-)
*
* @TODO Unfinished
*/
+ this.addContact.addWindowListener(new WindowAdapter() {
+ /**
+ * Invoked when a window has been closed.
+ */
+ @Override
+ public void windowClosed (final WindowEvent e) {
+ // Enable main window again
+ AddressbookFrame.getSelfInstance(null).enableMainWindow();
+ }
+
+ /**
+ * Invoked when a window is in the process of being closed. The
+ * close operation can be overridden at this point.
+ */
+ @Override
+ public void windowClosing (final WindowEvent e) {
+ e.getWindow().dispose();
+ }
+ });
+
// Init 3 panels:
// 1) "name" panel
- initNameDataPanel();
+ initNameDataPanel(this.addContact);
// 2) "address" panel
- initAddressDataPanel();
+ initAddressDataPanel(this.addContact);
// 3) "other" panel
- initOtherDataPanel();
+ initOtherDataPanel(this.addContact);
+
+ // 4) "Add" and "Cancel" buttons, combined they are unique for this dialog
+ initAddCancelButtons();
// x)Only for developing:
- /*
- * DEBUG:
- */ this.addContact.setVisible(true);
+ /* DEBUG: */ this.addContact.setVisible(true);
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
}
/**
* Initializes address panel
+ *
+ * @param dialog A JDialog instance to this components to
*/
- private void initAddressDataPanel () {
+ private void initAddressDataPanel (final JDialog dialog) {
+ // Trace message
+ this.getLogger().trace("CALLED!"); //NOI18N
+
// Panel "address" input boxes
JPanel addressPanel = new JPanel();
- addressPanel.setLayout(new BoxLayout(addressPanel, BoxLayout.Y_AXIS));
+ addressPanel.setLayout(new GridLayout(0, 4, 3, 3));
// Set border to titled version
addressPanel.setBorder(new TitledBorder(this.generateBorderTitle("address"))); //NOI18N
- // Init all elements:
- // 1) Street and number together
- JPanel streetNumberPanel = new JPanel();
- streetNumberPanel.setLayout(new GridLayout(1, 4, 5, 5));
-
- // Label for street
- JLabel streetLabel = new JLabel(this.getBundle().getString("AddressbookFrame.street.text"));
-
- // Init text field with label
- JTextField street = new JTextField(20);
- street.setToolTipText(this.getBundle().getString("AddressbookFrame.street.tooltipText"));
-
- // Add both to street panel
- streetNumberPanel.add(streetLabel);
- streetNumberPanel.add(street);
+ // Add text field for street
+ this.addTextFieldWithLabelToPanel(addressPanel, "street", 20); //NOI18N
// Number label
JLabel numberLabel = new JLabel(this.getBundle().getString("AddressbookFrame.number.text"));
// And text field, but only accept numbers
- JTextField number = new JTextField(4);
- number.setToolTipText(this.getBundle().getString("AddressbookFrame.number.tooltipText"));
-
- // Add number verifier
- number.setInputVerifier(new InputVerifier() {
-
- /**
- * Method to verify that the entered data is a number.
- *
- * @param input Input to verify
- * @return Whether the data is a number
- */
- @Override
- public boolean verify (final JComponent input) {
- // Cast on text field
- JTextField text = (JTextField) input;
-
- // Default is passed
- boolean isValid = true;
-
- // Try to convert input text to a number
- try {
- int num = Integer.valueOf(text.getText());
- } catch (final NumberFormatException ex) {
- // Didn't work
- isValid = false;
- }
-
- // Return status
- return isValid;
- }
- });
+ JFormattedTextField number = new JFormattedTextField();
+ number.setToolTipText(this.getBundle().getString("AddressbookFrame.number.toolTipText"));
// Add both to street panel
- streetNumberPanel.add(numberLabel);
- streetNumberPanel.add(number);
-
- // Add panel to address panel
- addressPanel.add(streetNumberPanel);
-
- // 2) ZIP code and ccity name
- JPanel zipCityPanel = new JPanel();
- zipCityPanel.setLayout(new GridLayout(1, 4, 5, 5));
+ addressPanel.add(numberLabel);
+ addressPanel.add(number);
// Label for ZIP code, again numbers only
JLabel zipLabel = new JLabel(this.getBundle().getString("AddressbookFrame.zip.text"));
// Init text field with label
- JTextField zip = new JTextField(20);
- zip.setToolTipText(this.getBundle().getString("AddressbookFrame.zip.tooltipText"));
-
- // Add number verifier
- zip.setInputVerifier(new InputVerifier() {
-
- /**
- * Method to verify that the entered data is a number.
- *
- * @param input Input to verify
- * @return Whether the data is a number
- */
- @Override
- public boolean verify (final JComponent input) {
- // Cast on text field
- JTextField text = (JTextField) input;
-
- // Default is passed
- boolean isValid = true;
-
- // Try to convert input text to a number
- try {
- int num = Integer.valueOf(text.getText());
- } catch (final NumberFormatException ex) {
- // Didn't work
- isValid = false;
- }
-
- // Return status
- return isValid;
- }
- });
+ JFormattedTextField zip = new JFormattedTextField();
+ zip.setToolTipText(this.getBundle().getString("AddressbookFrame.zip.toolTipText"));
// Add both to street panel
- zipCityPanel.add(zipLabel);
- zipCityPanel.add(zip);
+ addressPanel.add(zipLabel);
+ addressPanel.add(zip);
- // Label for street
- JLabel cityLabel = new JLabel(this.getBundle().getString("AddressbookFrame.city.text"));
-
- // Init text field with label
- JTextField city = new JTextField(20);
- city.setToolTipText(this.getBundle().getString("AddressbookFrame.city.tooltipText"));
-
- // Add both to street panel
- zipCityPanel.add(cityLabel);
- zipCityPanel.add(city);
-
- // Add panel to address panel
- addressPanel.add(zipCityPanel);
+ // Add text field for city name
+ this.addTextFieldWithLabelToPanel(addressPanel, "city", 20); //NOI18N
// Add panel to dialog
- this.addContact.add(addressPanel);
+ dialog.add(addressPanel);
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
}
/**
// Init other windows
initOtherDialogs();
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
+ }
+
+ /**
+ * Initializes a menu item instance with tool tip
+ *
+ * @param key Message key part
+ * @return A finished JMenuItem instance
+ */
+ private JMenuItem initMenuItemWithTooltip (final String key) {
+ // Debug line
+ this.getLogger().trace(MessageFormat.format("key={0} - CALLED!", key)); //NOI18N
+
+ JMenuItem item = new JMenuItem(this.getBundle().getString(String.format("AddressbookFrame.menuItem.%s.text", key))); //NOI18N
+ item.setToolTipText(this.getBundle().getString(String.format("AddressbookFrame.menuItem.%s.toolTipText", key))); //NOI18N
+
+ // Trace message
+ this.getLogger().trace(MessageFormat.format("item={0} - EXIT!", item)); //NOI18N
+
+ // Return it
+ return item;
}
/**
* Initializes the menu system
*/
private void initMenuSystem () {
+ // Trace message
+ this.getLogger().trace("CALLED!"); //NOI18N
+
// Init menu bar, menu and item instances
JMenuBar menuBar = new JMenuBar();
JMenu menu;
// Add menu items:
// 1.x) Exit program (should be last)
- item = new JMenuItem(this.getBundle().getString("AddressbookFrame.menuItem.exitProgram.text"));
- item.setToolTipText(this.getBundle().getString("AddressbookFrame.menuItem.exitProgram.toolTipText"));
-
- // Add listener to exit menu
- item.addActionListener(new ActionListener() {
+ this.addMenuItem(menu, "exitProgram", new ActionListener() { //NOI18N
/**
* If the user has performed this action
*
}
});
- // Add item -> menu
- menu.add(item);
-
// Add menu -> menu bar
menuBar.add(menu);
menu = new JMenu(this.getBundle().getString("AddressbookFrame.menu.addressbook.text"));
// 2.1) Add own data
- this.addOwnItem = new JMenuItem(this.getBundle().getString("AddressbookFrame.menuItem.addOwnData.text"));
- this.addOwnItem.setToolTipText(this.getBundle().getString("AddressbookFrame.menuItem.addOwnData.toolTipText"));
+ this.addOwnItem = this.initMenuItemWithTooltip("addOwnData"); //NOI18N
// Add listener to exit menu
this.addOwnItem.addActionListener(new ActionListener() {
*/
@Override
public void actionPerformed (final ActionEvent e) {
- self.getClient().getContactManager().doEnterOwnData();
+ try {
+ ManageableAddressbookContact manager = (ManageableAddressbookContact) self.getClient().getManager();
+ manager.doEnterOwnData();
+ } catch (final ContactAlreadyAddedException ex) {
+ // Already added, log away
+ // @TODO maybe output message here?
+ self.logException(ex);
+ }
}
});
menu.add(this.addOwnItem);
// 2.2) Edit own data
- this.editOwnItem = new JMenuItem(this.getBundle().getString("AddressbookFrame.menuItem.editOwnData.text"));
- this.editOwnItem.setToolTipText(this.getBundle().getString("AddressbookFrame.menuItem.editOwnData.toolTipText"));
+ this.editOwnItem = this.initMenuItemWithTooltip("editOwnData"); //NOI18N
// Add listener to exit menu
this.editOwnItem.addActionListener(new ActionListener() {
*/
@Override
public void actionPerformed (final ActionEvent e) {
- self.getClient().getContactManager().doChangeOwnData();
+ ManageableAddressbookContact manager = (ManageableAddressbookContact) self.getClient().getManager();
+ manager.doChangeOwnData();
}
});
// Add item -> menu
menu.add(this.editOwnItem);
+ // Init more menus:
+ // 1) Add new contact
+ this.addMenuItem(menu, "addNewContact", new ActionListener() { //NOI18N
+ /**
+ * If the user has performed this action
+ *
+ * @param e An instance of an ActionEvent class
+ */
+ @Override
+ public void actionPerformed (final ActionEvent e) {
+ ManageableAddressbookContact manager = (ManageableAddressbookContact) self.getClient().getManager();
+ manager.doAddOtherAddress();
+ }
+ });
+
// Add menu -> menu bar
menuBar.add(menu);
// Add menu bar -> frame
this.frame.add(menuBar, BorderLayout.NORTH);
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
}
/**
* Initializes name panel
+ *
+ * @param dialog A JDialog instance to this components to
*/
- private void initNameDataPanel () {
+ private void initNameDataPanel (final JDialog dialog) {
+ // Trace message
+ this.getLogger().trace(MessageFormat.format("dialog={0} - CALLED!", dialog)); //NOI18N
+
// Panel "name" input boxes
JPanel namePanel = new JPanel();
- namePanel.setLayout(new BoxLayout(namePanel, BoxLayout.Y_AXIS));
+ namePanel.setLayout(new GridLayout(0, 2, 3, 3));
// Set border to titled version
namePanel.setBorder(new TitledBorder(this.generateBorderTitle("name"))); //NOI18N
- // Panel for gender
- JPanel gPanel = new JPanel();
- gPanel.setLayout(new GridLayout(1, 2, 5, 5));
-
// Gender text field
JLabel gLabel = new JLabel(this.getBundle().getString("AddressbookFrame.gender.text"));
// Init gender combo box with tool tip
JComboBox<Gender> gender = new JComboBox<>(new DefaultComboBoxModel<>(genders));
- gender.setToolTipText(this.getBundle().getString("AddressbookFrame.gender.tooltipText"));
+ gender.setToolTipText(this.getBundle().getString("AddressbookFrame.gender.toolTipText"));
// Add both to gender panel
- gPanel.add(gLabel);
- gPanel.add(gender);
+ namePanel.add(gLabel);
+ namePanel.add(gender);
- // Add gender panel to "name" panel
- namePanel.add(gPanel);
+ // Add text field for surname
+ this.addTextFieldWithLabelToPanel(namePanel, "surname", 20); //NOI18N
- // Panel for surname
- JPanel sPanel = new JPanel();
- sPanel.setLayout(new GridLayout(1, 2, 5, 5));
+ // Add text field for family name
+ this.addTextFieldWithLabelToPanel(namePanel, "familyName", 20); //NOI18N
- // New label for surname is not needed
- JLabel sLabel = new JLabel(this.getBundle().getString("AddressbookFrame.surname.text"));
+ // Finally add panel to dialog
+ dialog.add(namePanel);
- // And input box wih tool tip
- JTextField surname = new JTextField(20);
- surname.setToolTipText(this.getBundle().getString("AddressbookFrame.surname.tooltipText"));
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
+ }
+
+ /**
+ * Initializes "other" data panel
+ *
+ * @param dialog A JDialog instance to this components to
+ * @todo Fill this with life
+ */
+ private void initOtherDataPanel (final JDialog dialog) {
+ // Trace message
+ this.getLogger().trace(MessageFormat.format("dialog={0} - CALLED!", dialog)); //NOI18N
- // Add both to surname panel
- sPanel.add(sLabel);
- sPanel.add(surname);
+ // Panel "other" input boxes
+ JPanel otherPanel = new JPanel();
+ otherPanel.setLayout(new GridLayout(0, 2, 3, 3));
+ otherPanel.setBorder(new TitledBorder(this.generateBorderTitle("other"))); //NOI18N
- // Add surname panel to "name" panel
- namePanel.add(sPanel);
+ // Add text field for email address
+ this.addTextFieldWithLabelToPanel(otherPanel, "emailAddress", 20); //NOI18N
- // Panel for surname
- JPanel fPanel = new JPanel();
- fPanel.setLayout(new GridLayout(1, 2));
+ // Add text field for phone number
+ this.addTextFieldWithLabelToPanel(otherPanel, "phoneNumber", 20); //NOI18N
- // New label for surname is not needed
- JLabel fLabel = new JLabel(this.getBundle().getString("AddressbookFrame.familyName.text"));
+ // Add text field for cellphone number
+ this.addTextFieldWithLabelToPanel(otherPanel, "cellphoneNumber", 20); //NOI18N
- // And input box wih tool tip
- JTextField familyName = new JTextField(20);
- familyName.setToolTipText(this.getBundle().getString("AddressbookFrame.familyName.tooltipText"));
+ // Add text field for fax number
+ this.addTextFieldWithLabelToPanel(otherPanel, "faxNumber", 20); //NOI18N
- // Add both to surname panel
- fPanel.add(fLabel);
- fPanel.add(familyName);
+ // Init label
+ JLabel commentLabel = new JLabel(this.getBundle().getString("AddressbookFrame.comment.text"));
- // Add family namepanel to "name" panel
- namePanel.add(fPanel);
+ // Init text area with tool tip
+ JTextArea comment = new JTextArea(5, 20);
+ comment.setToolTipText(this.getBundle().getString("AddressbookFrame.comment.toolTipText"));
+
+ // Add both to panel
+ otherPanel.add(commentLabel);
+ otherPanel.add(comment);
// Finally add panel to dialog
- this.addContact.add(namePanel);
- }
+ dialog.add(otherPanel);
- /**
- * Initializes "other" data panel
- */
- private void initOtherDataPanel () {
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
}
/**
* Initialize other dialogs (e.g. "Add contact")
*/
private void initOtherDialogs () {
+ // Trace message
+ this.getLogger().trace("CALLED!"); //NOI18N
+
// Init other windows:
// 1) Add contact
initAddContactDialog();
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
}
/**
* Initializes status panel
*/
private void initStatusPanel () {
+ // Trace message
+ this.getLogger().trace("CALLED!"); //NOI18N
+
// Init status label (which needs to be updated
this.statusLabel = new JLabel();
this.updateStatus("initializing"); //NOI18N
// Add panel to frame
this.frame.add(panel, BorderLayout.SOUTH);
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
}
/**
* Initializes the table which will show all contacts
*/
private void initTable () {
+ // Trace message
+ this.getLogger().trace("CALLED!"); //NOI18N
+
// Instance table model
this.dataModel = new ContactTableModel(this.getClient());
// Add pane to frame
this.frame.add(scroller, BorderLayout.CENTER);
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
}
/**
* @param type Status type
*/
private void updateStatus (final String type) {
+ // Trace message
+ this.getLogger().trace(MessageFormat.format("type={0} - CALLED!", type)); //NOI18N
+
// Set status message
this.statusLabel.setText(this.getBundle().getString(String.format("AddressbookFrame.statusLabel.%s.text", type))); //NOI18N
+
+ // Trace message
+ this.getLogger().trace("EXIT!"); //NOI18N
+ }
+
+ /**
+ * Class for "add address" button
+ */
+ private static class AddActionListener extends BaseAddressbookSystem implements ActionListener {
+ /**
+ * Dialog instance
+ */
+ private final JDialog dialog;
+
+ /**
+ * Frame (not JFrame) instance
+ */
+ private final ClientFrame frame;
+
+ /**
+ * Constructor for action listener
+ *
+ * @param dialog Dialog instance to call back
+ * @param frame Frame instance (not JFrame)
+ */
+ protected AddActionListener (final JDialog dialog, final ClientFrame frame) {
+ // Set dialog and frame here
+ this.dialog = dialog;
+ this.frame = frame;
+ }
+
+ /**
+ * If the action has been performed
+ *
+ * @param e The performed action event
+ */
+ @Override
+ public void actionPerformed (final ActionEvent e) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+ }
+
+ /**
+ * Class for "cancel address" button
+ */
+ private static class CancelActionListener extends BaseAddressbookSystem implements ActionListener {
+ /**
+ * Dialog instance
+ */
+ private final JDialog dialog;
+
+ /**
+ * Frame (not JFrame) instance
+ */
+ private final ClientFrame frame;
+
+ /**
+ * Constructor for action listener
+ *
+ * @param dialog Dialog instance to call back
+ * @param frame Frame instance (not JFrame)
+ */
+ protected CancelActionListener (final JDialog dialog, final ClientFrame frame) {
+ // Set dialog and frame here
+ this.dialog = dialog;
+ this.frame = frame;
+ }
+
+ /**
+ * If the action has been performed
+ *
+ * @param e The performed action event
+ */
+ @Override
+ public void actionPerformed (final ActionEvent e) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
}
}