Please take time to read the code disclaimer.

<--Go back to Kent's Projects

<--Go back to project post

/**
 * AccountsFrame.java
 *
 * Created on Nov 29, 2011, 7:14:52 AM
 */
package employeesystem;

import backend.*;
import java.awt.*;
import java.util.*;
import javax.swing.*;
import silverlining.*;

/**
 *
 * @author Kent
 */
public class AccountsFrame extends javax.swing.JFrame {

  private DefaultListModel accountsListModel = new DefaultListModel();
  private AccountGenerator ag;
  private LinkedList accountTextFields = new LinkedList();

  /** 
   * Creates new form AccountsFrame
   * @param ag 
   */
  public AccountsFrame(AccountGenerator ag) {
    this.ag = ag;
    initComponents();
    myInitComponents();
    StaticClass.centerAndPack(this);
  }

  /** This method is called from within the constructor to
   * initialize the form.
   * WARNING: Do NOT modify this code. The content of this method is
   * always regenerated by the Form Editor.
   */
  @SuppressWarnings("unchecked")
    // //GEN-BEGIN:initComponents
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        accountsPanel = new javax.swing.JPanel();
        accountsScrollPane = new javax.swing.JScrollPane();
        accountsList = new javax.swing.JList();
        accountsButtonPanel = new javax.swing.JPanel();
        editAccountButton = new javax.swing.JToggleButton();
        createNewAccountButton = new javax.swing.JToggleButton();
        deleteAccountButton = new javax.swing.JButton();
        viewOfficesButton = new javax.swing.JButton();
        createProgramButton = new javax.swing.JButton();
        viewProgramButton = new javax.swing.JButton();
        accountInfoPanel = new javax.swing.JPanel();
        companyNameLabel = new javax.swing.JLabel();
        companyNameTextField = new javax.swing.JTextField();
        contactNameLabel = new javax.swing.JLabel();
        contactNameTextField = new javax.swing.JTextField();
        contactPhoneLabel = new javax.swing.JLabel();
        contactPhoneTextField = new javax.swing.JTextField();
        contactEmailLabel = new javax.swing.JLabel();
        contactEmailTextField = new javax.swing.JTextField();
        logoLabel = new javax.swing.JLabel();
        spaceFillerLabel = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Accounts Management");
        setIconImage(Toolkit.getDefaultToolkit().getImage("/resources/SilverLiningLogo10%.jpg"));
        setName("Account Management"); // NOI18N
        getContentPane().setLayout(new java.awt.GridBagLayout());

        accountsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Accounts"));
        accountsPanel.setLayout(new java.awt.GridBagLayout());

        accountsList.setModel(accountsListModel);
        accountsList.setVisibleRowCount(5);
        accountsList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                accountsListValueChanged(evt);
            }
        });
        accountsScrollPane.setViewportView(accountsList);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        accountsPanel.add(accountsScrollPane, gridBagConstraints);

        accountsButtonPanel.setLayout(new java.awt.GridBagLayout());

        editAccountButton.setText("Edit Account");
        editAccountButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                editAccountButtonActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        accountsButtonPanel.add(editAccountButton, gridBagConstraints);

        createNewAccountButton.setText("Create New Account");
        createNewAccountButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                createNewAccountButtonActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        accountsButtonPanel.add(createNewAccountButton, gridBagConstraints);

        deleteAccountButton.setText("Delete Account");
        deleteAccountButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                deleteAccountButtonActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        accountsButtonPanel.add(deleteAccountButton, gridBagConstraints);

        viewOfficesButton.setText("View Offices");
        viewOfficesButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                viewOfficesButtonActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        accountsButtonPanel.add(viewOfficesButton, gridBagConstraints);

        createProgramButton.setText("Create Program");
        createProgramButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                createProgramButtonActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 10;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        accountsButtonPanel.add(createProgramButton, gridBagConstraints);

        viewProgramButton.setText("View Program");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 10;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        accountsButtonPanel.add(viewProgramButton, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
        accountsPanel.add(accountsButtonPanel, gridBagConstraints);

        accountInfoPanel.setLayout(new java.awt.GridBagLayout());

        companyNameLabel.setLabelFor(companyNameTextField);
        companyNameLabel.setText("Company Name: ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        accountInfoPanel.add(companyNameLabel, gridBagConstraints);

        companyNameTextField.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        accountInfoPanel.add(companyNameTextField, gridBagConstraints);

        contactNameLabel.setLabelFor(companyNameTextField);
        contactNameLabel.setText("Contact Name: ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        accountInfoPanel.add(contactNameLabel, gridBagConstraints);

        contactNameTextField.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        accountInfoPanel.add(contactNameTextField, gridBagConstraints);

        contactPhoneLabel.setLabelFor(companyNameTextField);
        contactPhoneLabel.setText("Contact Phone: ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        accountInfoPanel.add(contactPhoneLabel, gridBagConstraints);

        contactPhoneTextField.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        accountInfoPanel.add(contactPhoneTextField, gridBagConstraints);

        contactEmailLabel.setLabelFor(companyNameTextField);
        contactEmailLabel.setText("Contact E-mail: ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        accountInfoPanel.add(contactEmailLabel, gridBagConstraints);

        contactEmailTextField.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        accountInfoPanel.add(contactEmailTextField, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridheight = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.PAGE_START;
        gridBagConstraints.insets = new java.awt.Insets(15, 15, 15, 15);
        accountsPanel.add(accountInfoPanel, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
        getContentPane().add(accountsPanel, gridBagConstraints);

        logoLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/SLLogo10%.jpg"))); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
        getContentPane().add(logoLabel, gridBagConstraints);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.insets = new java.awt.Insets(17, 17, 17, 17);
        getContentPane().add(spaceFillerLabel, gridBagConstraints);

        pack();
    }// //GEN-END:initComponents

  private void editAccountButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editAccountButtonActionPerformed
    if (editAccountButton.isSelected()) {
      editAccountButton.setText("Submit Changes");
      setTextFieldsEnabled(true);
    } else {
      editAccountButton.setText("Edit Account");
      setTextFieldsEnabled(false);
    }
  }//GEN-LAST:event_editAccountButtonActionPerformed

  private void accountsListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_accountsListValueChanged
    updateSelectedAccount();
  }//GEN-LAST:event_accountsListValueChanged

  private void viewOfficesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_viewOfficesButtonActionPerformed
    OfficesFrame of = new OfficesFrame(getSelectedAccount());
    of.setVisible(true);
  }//GEN-LAST:event_viewOfficesButtonActionPerformed

  private void createNewAccountButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createNewAccountButtonActionPerformed
    if (createNewAccountButton.isSelected()) {
      createNewAccountButton.setText("Submit Changes");
      clearTextFields();
      accountsList.setEnabled(false);
      setTextFieldsEnabled(true);
    } else {
      createNewAccountButton.setText("Create New Office");
      accountsList.setEnabled(true);
      setTextFieldsEnabled(false);
      createNewAccount();
    }
  }//GEN-LAST:event_createNewAccountButtonActionPerformed

  private void deleteAccountButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteAccountButtonActionPerformed
    getSelectedAccount().setActive(false);
    updateList();
  }//GEN-LAST:event_deleteAccountButtonActionPerformed

  private void createProgramButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createProgramButtonActionPerformed
    String message = "Creating a new program for this account will delete"
            + StaticClass.newline + "the current program for all offices on this account and"
            + StaticClass.newline + "reassign the new one you create."
            + StaticClass.newline + "Are you sure you want to do this?"
            + StaticClass.newline + "(The deletion will occur when you actually create the program"
            + StaticClass.newline + "you can view the packs and click \"<- Go Back\" to avoid program deletion.)";    
    int choice = JOptionPane.showConfirmDialog(this, message, "Confirm Delete and Recreate", 0);
    if (choice == 0) {
      NewProgramDialog npd = new NewProgramDialog(this, true, new Office(getSelectedAccount()));
      npd.setVisible(true);
    }
  }//GEN-LAST:event_createProgramButtonActionPerformed

  //
  /**
   * This initiates components I want to initiate
   */
  private void myInitComponents() {
    groupComponents();
    updateList();
    accountsList.setSelectedIndex(0);
  }

  /**
   * This method updates the items in the accounts list
   */
  public void updateList() {
    accountsListModel.clear();
    for (Account account : ag.getAccountsList()) {
      if (account.isActive()) {
        accountsListModel.addElement(account.getNumber() + " - " + account.getName());
      }
    }
  }

  /**
   * This method connects the components into a list to be easily enabled and disabled
   */
  public void groupComponents() {
    accountTextFields.add(companyNameTextField);
    accountTextFields.add(contactNameTextField);
    accountTextFields.add(contactEmailTextField);
    accountTextFields.add(contactPhoneTextField);
  }
  //

  /**
   * This method enables / disables all the fields for the given set
   * @param fieldsList
   * @param state  
   */
  public void setTextFieldsEnabled(boolean state) {
    for (JTextField field : accountTextFields) {
      field.setEnabled(state);
    }
  }

  //
  /**
   * This method updates the information based on the selected Account
   */
  public void updateSelectedAccount() {
    Account selectedAccount = getSelectedAccount();
    companyNameTextField.setText(selectedAccount.getName());
    contactNameTextField.setText(selectedAccount.getContactName());
    contactPhoneTextField.setText(selectedAccount.getContactPhone());
    contactEmailTextField.setText(selectedAccount.getContactEmail());
  }

  //
  /**
   * This method clears the information in the text fields
   * @param fieldList 
   */
  public void clearTextFields() {
    for (JTextField field : accountTextFields) {
      field.setText("");
    }
  }

  /**
   * This creates a new object of the given type
   */
  public void createNewAccount() {
    Account newAccount = new Account();
    newAccount.setNumber("A" + Integer.toString(new Random().nextInt(999999)));
    newAccount.setName(companyNameTextField.getText());
    newAccount.setContactName(contactNameTextField.getText());
    newAccount.setContactPhone(contactPhoneTextField.getText());
    newAccount.setContactEmail(contactEmailTextField.getText());
    getAg().getAccountsList().add(newAccount);
    updateList();
  }

  //
  /**
   * This gets the selected account
   * @return account selected
   */
  public Account getSelectedAccount() {
    if (accountsList.getSelectedIndex() == -1) {
      return new Account();
    } else {
      return getAg().getAccountsList().get(accountsList.getSelectedIndex());
    }
  }

  //
  /**
   * @param args the command line arguments
   */
  public static void main(String args[]) {
    /** Set the Nimbus look and feel */
    //
        /** If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(info.getName())) {
          javax.swing.UIManager.setLookAndFeel(info.getClassName());
          break;
        }
      }
    } catch (ClassNotFoundException ex) {
      java.util.logging.Logger.getLogger(AccountsFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
      java.util.logging.Logger.getLogger(AccountsFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
      java.util.logging.Logger.getLogger(AccountsFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
      java.util.logging.Logger.getLogger(AccountsFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //

    /** Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {

      public void run() {
        new AccountsFrame(new AccountGenerator()).setVisible(true);
      }
    });
  }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel accountInfoPanel;
    private javax.swing.JPanel accountsButtonPanel;
    private javax.swing.JList accountsList;
    private javax.swing.JPanel accountsPanel;
    private javax.swing.JScrollPane accountsScrollPane;
    private javax.swing.JLabel companyNameLabel;
    private javax.swing.JTextField companyNameTextField;
    private javax.swing.JLabel contactEmailLabel;
    private javax.swing.JTextField contactEmailTextField;
    private javax.swing.JLabel contactNameLabel;
    private javax.swing.JTextField contactNameTextField;
    private javax.swing.JLabel contactPhoneLabel;
    private javax.swing.JTextField contactPhoneTextField;
    private javax.swing.JToggleButton createNewAccountButton;
    private javax.swing.JButton createProgramButton;
    private javax.swing.JButton deleteAccountButton;
    private javax.swing.JToggleButton editAccountButton;
    private javax.swing.JLabel logoLabel;
    private javax.swing.JLabel spaceFillerLabel;
    private javax.swing.JButton viewOfficesButton;
    private javax.swing.JButton viewProgramButton;
    // End of variables declaration//GEN-END:variables

  /**
   * @return the ag
   */
  public AccountGenerator getAg() {
    return ag;
  }

  /**
   * @param ag the ag to set
   */
  public void setAg(AccountGenerator ag) {
    this.ag = ag;
  }
}