]> git.mxchange.org Git - addressbook-lib.git/blobdiff - Addressbook/src/org/mxchange/addressbook/client/gui/AddressbookFrame.java
Added a lot trace messages + sanity checks for null references and such things
[addressbook-lib.git] / Addressbook / src / org / mxchange / addressbook / client / gui / AddressbookFrame.java
index 92e8dfe375646bba016972fa4d2fc863ae1ce076..4a7a9c8a85e5abd99c433d576a4d409788f4a70a 100644 (file)
@@ -46,6 +46,7 @@ import javax.swing.table.TableModel;
 import org.mxchange.addressbook.BaseFrameworkSystem;
 import org.mxchange.addressbook.application.AddressbookApplication;
 import org.mxchange.addressbook.client.Client;
+import org.mxchange.addressbook.contact.Contact;
 import org.mxchange.addressbook.contact.Gender;
 import org.mxchange.addressbook.exceptions.FrameAlreadyInitializedException;
 import org.mxchange.addressbook.model.contact.ContactTableModel;
@@ -138,6 +139,33 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
 
                // 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.");
+               }
+
+               // 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;
        }
 
        /**
@@ -145,8 +173,33 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
         */
        @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
        }
 
        /**
@@ -176,6 +229,9 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
 
                // All done here
                this.updateStatus("done"); //NOI18N
+
+               // Trace message
+               this.getLogger().trace("EXIT!"); //NOI18N
        }
 
        /**
@@ -203,6 +259,9 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
 
                // Set flag
                this.isInitialized = true;
+
+               // Trace message
+               this.getLogger().trace("EXIT!"); //NOI18N
        }
 
        /**
@@ -221,13 +280,21 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
         */
        @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;
                }
+
+               // Call shutdown method
                this.getClient().getApplication().doShutdown();
+
+               // Trace message
+               this.getLogger().trace("EXIT!"); //NOI18N
        }
 
        /**
@@ -262,10 +329,19 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
                return title;
        }
 
+       /**
+        * Initializes "add" and "cancel" buttons
+        */
+       private void initAddCancelButtons () {
+       }
+
        /**
         * Initializes "add contact" dialog
         */
        private void initAddContactDialog () {
+               // Trace message
+               this.getLogger().trace("EXIT!"); //NOI18N
+
                // Instance dialog and set title
                this.addContact = new JDialog();
                this.addContact.setTitle(this.generateFrameTitle("dialog.addContact")); //NOI18N
@@ -284,32 +360,64 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
                // 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
+               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));
@@ -437,7 +545,10 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
                addressPanel.add(zipCityPanel);
 
                // Add panel to dialog
-               this.addContact.add(addressPanel);
+               dialog.add(addressPanel);
+
+               // Trace message
+               this.getLogger().trace("EXIT!"); //NOI18N
        }
 
        /**
@@ -492,12 +603,18 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
 
                // Init other windows
                initOtherDialogs();
+
+               // Trace message
+               this.getLogger().trace("EXIT!"); //NOI18N
        }
 
        /**
         * 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;
@@ -580,12 +697,20 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
 
                // 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("CALLED!"); //NOI18N
+
                // Panel "name" input boxes
                JPanel namePanel = new JPanel();
                namePanel.setLayout(new BoxLayout(namePanel, BoxLayout.Y_AXIS));
@@ -651,28 +776,58 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
                namePanel.add(fPanel);
 
                // Finally add panel to dialog
-               this.addContact.add(namePanel);
+               dialog.add(namePanel);
+
+               // 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 () {
+       private void initOtherDataPanel (final JDialog dialog) {
+               // Trace message
+               this.getLogger().trace("CALLED!"); //NOI18N
+
+               // Panel "other" input boxes
+               JPanel otherPanel = new JPanel();
+               otherPanel.setLayout(new BoxLayout(otherPanel, BoxLayout.Y_AXIS));
+
+               // Set border to titled version
+               otherPanel.setBorder(new TitledBorder(this.generateBorderTitle("other"))); //NOI18N
+
+               // Finally add panel to dialog
+               dialog.add(otherPanel);
+
+               // 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
@@ -685,12 +840,18 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
 
                // 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());
 
@@ -720,6 +881,9 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
 
                // Add pane to frame
                this.frame.add(scroller, BorderLayout.CENTER);
+
+               // Trace message
+               this.getLogger().trace("EXIT!"); //NOI18N
        }
 
        /**
@@ -728,7 +892,13 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
         * @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
        }
 }