@Override
    public void update(Observable o, Object value)
    {
        if (o instanceof RecordManager)
        {
            updateLastNames(RecordManager.getInstance().getUniqueLastNames());
            final GivingRecord selectedRecord = RecordManager.getInstance().getSelectedRecord();
            if (selectedRecord != null) {
                try {
                    picker.setDate(SDF.parse(selectedRecord.getDateString()));
                } catch (PropertyVetoException e) {
                    e.printStackTrace();
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                lastNameCombo.setSelectedItem(selectedRecord.getLastName());
                firstNameCombo.setSelectedItem(selectedRecord.getFirstName());
                if (!selectedRecord.getFundType().isEmpty()) {
                    fundType.setSelectedItem(selectedRecord.getFundType());
                } else {
                    fundType.setSelectedIndex(0);
                }
                checkNumberText.setText(selectedRecord.getCheckNumber());
                
                if (fundType.getSelectedItem().equals("Check")) {
                    checkNumberLabel.setEnabled(true);
                    checkNumberText.setEnabled(true);
                } else {
                    checkNumberLabel.setEnabled(false);
                    checkNumberText.setText("");
                    checkNumberText.setEnabled(false);
                }
                
                for (CategoryInputPair input : categoryInputs) {
                    final String category = input.getLabel().getText();
                    final Double amountForCategory = selectedRecord.getAmountForCategory(category);
                    final String amountText = simpleCurrencyFormat.format(amountForCategory);
                    input.getInputField().setText(amountText);
                }
                addUpdateButton.setText("Update");
            } else {
                lastNameCombo.setSelectedIndex(0);
                fundType.setSelectedIndex(0);
                checkNumberText.setText("");
                for (CategoryInputPair input : categoryInputs) {
                    input.getInputField().setText("");
                }
                addUpdateButton.setText("Add");
            }
        } else if (o instanceof Settings) {
            initComponents();
        }
    }