]> git.mxchange.org Git - addressbook-lib.git/blobdiff - Addressbook/src/org/mxchange/addressbook/client/gui/AddressbookFrame.java
Introduced initTable()
[addressbook-lib.git] / Addressbook / src / org / mxchange / addressbook / client / gui / AddressbookFrame.java
index c0f132fc73134c745269e4533221519bb99f29bb..b403bf745dad36d6a09a342143a84101210a031f 100644 (file)
@@ -19,6 +19,8 @@ package org.mxchange.addressbook.client.gui;
 import java.awt.BorderLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.text.MessageFormat;
@@ -30,10 +32,13 @@ import javax.swing.JMenu;
 import javax.swing.JMenuBar;
 import javax.swing.JMenuItem;
 import javax.swing.JPanel;
+import javax.swing.JTable;
+import javax.swing.table.TableModel;
 import org.mxchange.addressbook.BaseFrameworkSystem;
-import org.mxchange.addressbook.FrameAlreadyInitializedException;
 import org.mxchange.addressbook.application.AddressbookApplication;
 import org.mxchange.addressbook.client.Client;
+import org.mxchange.addressbook.exceptions.FrameAlreadyInitializedException;
+import org.mxchange.addressbook.model.address.AddressTableModel;
 
 /**
  *
@@ -67,6 +72,16 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
      */
     private JMenuItem addOwnItem;
 
+    /**
+     * Instance to table model
+     */
+    private TableModel dataModel;
+
+    /**
+     * Table instance
+     */
+    private JTable dataTable;
+
     /**
      * Frame instance for "edit own data"
      */
@@ -109,7 +124,7 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
     @Override
     public void doShutdown () {
        // First only show shutdown status
-       this.statusLabel.setText(this.getBundle().getString("AddressbookFrame.statusLabel.shutdown.text"));
+       this.updateStatus("shutdown");
     }
 
     /**
@@ -138,7 +153,7 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
        this.frame.setVisible(true);
 
        // All done here
-       this.statusLabel.setText(this.getBundle().getString("AddressbookFrame.statusLabel.done.text"));
+       this.updateStatus("done");
     }
 
     /**
@@ -146,7 +161,7 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
      * accessible) means that any other object can initialize components which
      * you may not want.
      * 
-     * @throws org.mxchange.addressbook.FrameAlreadyInitializedException If this method has been called twice
+     * @throws org.mxchange.addressbook.exceptions.FrameAlreadyInitializedException If this method has been called twice
      */
     @Override
     public void init () throws FrameAlreadyInitializedException {
@@ -176,6 +191,20 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
        return this.isInitialized;
     }
 
+    /**
+     * Shuts down the application.
+     */
+    @Override
+    public void shutdownApplication () {
+       // 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.");
+           return;
+       }
+       this.getClient().getApplication().doShutdown();
+    }
+
     /**
      * Initialize components
      */
@@ -194,7 +223,7 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
            @Override
            public void windowClosed(final WindowEvent e) {
                // Shutdown application cleanly
-               self.getClient().getApplication().doShutdown();
+               self.shutdownApplication();
            }
 
            /**
@@ -204,7 +233,7 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
            @Override
            public void windowClosing(final WindowEvent e) {
                // Also shutdown cleanly here
-               self.getClient().getApplication().doShutdown();
+               self.shutdownApplication();
            }
        });
 
@@ -220,8 +249,8 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
        // Init menu system
        initMenuSystem();
 
-       // Init status label (which needs to be updated
-       this.statusLabel = new JLabel(this.getBundle().getString("AddressbookFrame.statusLabel.initializing.text"));
+       // Init table
+       initTable();
 
        // Init status panel
        initStatusPanel();
@@ -254,7 +283,7 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
             */
            @Override
            public void actionPerformed (final ActionEvent e) {
-               self.getClient().getApplication().doShutdown();
+               self.shutdownApplication();
            }
        });
 
@@ -319,6 +348,10 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
      * Initializes status panel
      */
     private void initStatusPanel () {
+       // Init status label (which needs to be updated
+       this.statusLabel = new JLabel();
+       this.updateStatus("initializing");
+
        // Init status bar in south
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
@@ -328,4 +361,40 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
        // Add panel to frame
        this.frame.add(panel, BorderLayout.SOUTH);
     }
+
+    /**
+     * Initializes the table which will show all contacts
+     */
+    private void initTable () {
+       // Instance table model
+       this.dataModel = new AddressTableModel(this.getClient());
+
+       // Instance table
+       this.dataTable = new JTable(this.dataModel);
+
+       // Add mouse listener
+       this.dataTable.addMouseListener(new MouseAdapter() {
+           /**
+            * If the user peformed a click on a cell
+            * 
+            * @param e Mouse event instance
+            */
+           @Override
+           public void mouseClicked(final MouseEvent e) {
+           }
+       });
+
+       // Add table to frame
+       this.frame.add(this.dataTable);
+    }
+
+    /**
+     * Updates status to given type
+     * 
+     * @param type Status type
+     */
+    private void updateStatus (final String type) {
+       // Set status message
+       this.statusLabel.setText(this.getBundle().getString("AddressbookFrame.statusLabel." + type + ".text"));
+    }
 }