// PayeesPanel package org.javamoney.examples.ez.money.gui.dialog.preferences; import static org.javamoney.examples.ez.money.model.DataTypeKeys.PAYEE; import static org.javamoney.examples.ez.money.utility.IDHelper.MessageKeys.IN_USE; import static org.javamoney.examples.ez.money.utility.IDHelper.MessageKeys.UNABLE_TO_REMOVE; import java.awt.GridBagConstraints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import org.javamoney.examples.ez.money.model.persisted.payee.Payee; import org.javamoney.examples.ez.money.utility.IDHelper; import org.javamoney.examples.ez.money.utility.TransactionHelper; /** * This class facilitates managing the payees. */ public final class PayeesPanel extends DataElementPanel { /** * Constructs a new preferences panel. */ public PayeesPanel() { super(PreferencesKeys.PAYEES); buildPanel(); } /** * This method updates this panel's collection. */ @Override public void updateView() { displayCollectables(); getChooser().selectFirst(); } ////////////////////////////////////////////////////////////////////////////// // Start of protected methods. ////////////////////////////////////////////////////////////////////////////// /** * This method prompts the user for a new unique identifier. */ @Override protected void edit() { Payee payee = (Payee)getChooser().getSelectedElement(); String identifier = IDHelper.promptForEdit(PAYEE, payee.getIdentifier()); if(identifier != null) { String temp = payee.getIdentifier(); // Store for mass update. boolean result = getCollection().changeIdentifier(payee, identifier); if(result == false) { // It is safe to assume it already existed. if((result = IDHelper.confirmMerge()) == true) { getCollection().remove(payee); // Since elements are not case sensitive, add it again just incase it // doesn't exist but failed to change. getCollection().add(new Payee(identifier)); payee = (Payee)getCollection().get(identifier); } } if(result == true) { // Update all transactions, the view, and select the edited element. TransactionHelper.massUpdate(TransactionHelper.MassUpdateFieldKeys.PAYEE, temp, identifier); displayCollectables(); getChooser().setSelectedCollectable(payee); } } } ////////////////////////////////////////////////////////////////////////////// // Start of private methods. ////////////////////////////////////////////////////////////////////////////// private void add() { String identifier = IDHelper.promptForAdd(PAYEE); if(identifier != null) { Payee payee = new Payee(identifier); if(getCollection().add(payee) == true) { // Update view and select the new element. displayCollectables(); getChooser().setSelectedCollectable(payee); } else { // It is safe to assume it already existed. IDHelper.showMessage(IN_USE, PAYEE); } } } private void buildPanel() { ActionHandler handler = new ActionHandler(); // Build panel. setFill(GridBagConstraints.BOTH); add(createChooserPanel(handler), 0, 0, 1, 1, 100, 100); add(createButtonPanel(handler), 0, 1, 1, 1, 0, 0); } private void displayCollectables() { getChooser().displayCollectables(); enableLinks(); showProperChooserPanel(); } private void remove() { if(IDHelper.confirmRemoval(PAYEE) == true) { Payee payee = (Payee)getChooser().getSelectedElement(); if(getCollection().remove(payee) == true) { // Update all transactions and the view. TransactionHelper.massUpdate(TransactionHelper.MassUpdateFieldKeys.PAYEE, payee.getIdentifier(), ""); displayCollectables(); if(getChooser().length() != 0) { getChooser().selectFirst(); } } else { IDHelper.showMessage(UNABLE_TO_REMOVE, PAYEE); } } } ////////////////////////////////////////////////////////////////////////////// // Start of inner classes. ////////////////////////////////////////////////////////////////////////////// private class ActionHandler implements ActionListener { public void actionPerformed(ActionEvent event) { String command = event.getActionCommand(); if(command.equals(ACTION_ADD) == true) { add(); } else if(command.equals(ACTION_EDIT) == true) { edit(); } else if(command.equals(ACTION_REMOVE) == true) { remove(); } } } }