Please take time to read the code disclaimer.
/**
* 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;
}
}