Coverage Report - org.homeunix.thecave.buddi.view.dialogs.AccountTypeEditorDialog
 
Classes in this File Line Coverage Branch Coverage Complexity
AccountTypeEditorDialog
0%
0/77
0%
0/16
2
AccountTypeEditorDialog$1
0%
0/4
N/A
2
AccountTypeEditorDialog$2
0%
0/4
N/A
2
 
 1  
 /*
 2  
  * Created on Aug 6, 2007 by wyatt
 3  
  */
 4  
 package org.homeunix.thecave.buddi.view.dialogs;
 5  
 
 6  
 import java.awt.BorderLayout;
 7  
 import java.awt.FlowLayout;
 8  
 import java.awt.GridLayout;
 9  
 import java.awt.event.ActionEvent;
 10  
 import java.awt.event.ActionListener;
 11  
 import java.awt.event.FocusEvent;
 12  
 import java.awt.event.FocusListener;
 13  
 import java.awt.event.KeyAdapter;
 14  
 import java.awt.event.KeyEvent;
 15  
 import java.util.logging.Logger;
 16  
 
 17  
 import javax.swing.ButtonGroup;
 18  
 import javax.swing.JButton;
 19  
 import javax.swing.JLabel;
 20  
 import javax.swing.JOptionPane;
 21  
 import javax.swing.JPanel;
 22  
 import javax.swing.JRadioButton;
 23  
 
 24  
 import org.homeunix.thecave.buddi.i18n.BuddiKeys;
 25  
 import org.homeunix.thecave.buddi.i18n.keys.ButtonKeys;
 26  
 import org.homeunix.thecave.buddi.model.AccountType;
 27  
 import org.homeunix.thecave.buddi.model.Document;
 28  
 import org.homeunix.thecave.buddi.model.impl.ModelFactory;
 29  
 import org.homeunix.thecave.buddi.model.prefs.PrefsModel;
 30  
 import org.homeunix.thecave.buddi.plugin.api.exception.ModelException;
 31  
 import org.homeunix.thecave.buddi.plugin.api.util.TextFormatter;
 32  
 import org.homeunix.thecave.buddi.util.InternalFormatter;
 33  
 import org.homeunix.thecave.buddi.view.AccountTypeListFrame;
 34  
 
 35  
 import ca.digitalcave.moss.common.OperatingSystemUtil;
 36  
 import ca.digitalcave.moss.swing.MossDialog;
 37  
 import ca.digitalcave.moss.swing.MossHintTextField;
 38  
 
 39  
 public class AccountTypeEditorDialog extends MossDialog implements ActionListener {
 40  
 
 41  
         public static final long serialVersionUID = 0;
 42  
 
 43  
         private final MossHintTextField name;
 44  
         private final JRadioButton credit;
 45  
         private final JRadioButton debit;
 46  
 
 47  
         private final JButton ok;
 48  
         private final JButton cancel;
 49  
 
 50  
         private final AccountType selected;
 51  
         private final Document model;
 52  
 
 53  
         public AccountTypeEditorDialog(AccountTypeListFrame frame, AccountType selected) {
 54  0
                 super(frame);
 55  
 
 56  0
                 this.selected = selected;
 57  0
                 this.model = (Document) frame.getDocument();
 58  
 
 59  0
                 name = new MossHintTextField(PrefsModel.getInstance().getTranslator().get(BuddiKeys.HINT_NAME));
 60  0
                 credit = new JRadioButton(PrefsModel.getInstance().getTranslator().get(BuddiKeys.CREDIT));
 61  0
                 debit = new JRadioButton(PrefsModel.getInstance().getTranslator().get(BuddiKeys.DEBIT));
 62  
 
 63  0
                 ok = new JButton(PrefsModel.getInstance().getTranslator().get(ButtonKeys.BUTTON_OK));
 64  0
                 cancel = new JButton(PrefsModel.getInstance().getTranslator().get(ButtonKeys.BUTTON_CANCEL));
 65  0
         }
 66  
 
 67  
         public void init() {
 68  0
                 super.init();
 69  0
                 JPanel textPanel = new JPanel(new BorderLayout());
 70  0
                 JPanel textPanelLeft = new JPanel(new GridLayout(0, 1));
 71  0
                 JPanel textPanelRight = new JPanel(new GridLayout(0, 1));
 72  0
                 textPanel.add(textPanelLeft, BorderLayout.WEST);
 73  0
                 textPanel.add(textPanelRight, BorderLayout.EAST);
 74  
 
 75  0
                 textPanelLeft.add(new JLabel(PrefsModel.getInstance().getTranslator().get(BuddiKeys.NAME)));
 76  0
                 textPanelLeft.add(new JLabel(PrefsModel.getInstance().getTranslator().get(BuddiKeys.DEBIT_CREDIT_TYPE)));
 77  0
                 textPanelLeft.add(new JLabel(""));
 78  
 
 79  0
                 textPanelRight.add(name);
 80  0
                 textPanelRight.add(debit);
 81  0
                 textPanelRight.add(credit);
 82  
                 
 83  0
                 ButtonGroup group = new ButtonGroup();
 84  0
                 group.add(credit);
 85  0
                 group.add(debit);
 86  
 
 87  0
                 ok.setPreferredSize(InternalFormatter.getButtonSize(ok));
 88  0
                 cancel.setPreferredSize(InternalFormatter.getButtonSize(cancel));
 89  
                 
 90  0
                 name.setPreferredSize(InternalFormatter.getComponentSize(cancel, 150));
 91  
 
 92  0
                 ok.addActionListener(this);
 93  0
                 cancel.addActionListener(this);
 94  
 
 95  0
                 name.addKeyListener(new KeyAdapter(){
 96  
                         @Override
 97  
                         public void keyReleased(KeyEvent e) {
 98  0
                                 super.keyReleased(e);
 99  
 
 100  0
                                 updateButtons();
 101  0
                         }
 102  
                 });
 103  
 
 104  0
                 FocusListener focusListener = new FocusListener(){
 105  0
                         public void focusGained(FocusEvent e) {}
 106  
                         public void focusLost(FocusEvent e) {
 107  0
                                 updateButtons();
 108  0
                         }
 109  
                 };
 110  
 
 111  0
                 ok.addFocusListener(focusListener);
 112  0
                 cancel.addFocusListener(focusListener);
 113  0
                 name.addFocusListener(focusListener);
 114  0
                 credit.addFocusListener(focusListener);
 115  0
                 debit.addFocusListener(focusListener);
 116  
 
 117  0
                 JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
 118  0
                 if (OperatingSystemUtil.isMac()){
 119  0
                         buttonPanel.add(cancel);                        
 120  0
                         buttonPanel.add(ok);
 121  
                 }
 122  
                 else {
 123  0
                         buttonPanel.add(ok);
 124  0
                         buttonPanel.add(cancel);
 125  
                 }
 126  
 
 127  0
                 this.getRootPane().setDefaultButton(ok);
 128  0
                 this.setLayout(new BorderLayout());
 129  0
                 this.add(textPanel, BorderLayout.CENTER);
 130  0
                 this.add(buttonPanel, BorderLayout.SOUTH);
 131  0
         }
 132  
 
 133  
         public void updateButtons() {
 134  0
                 super.updateButtons();
 135  
 
 136  0
                 ok.setEnabled(name.getText() != null && name.getText().length() > 0);
 137  0
         }
 138  
 
 139  
         public void updateContent() {
 140  0
                 super.updateContent();
 141  
 
 142  0
                 if (selected == null){
 143  0
                         name.setText("");
 144  0
                         debit.setSelected(true);
 145  
                 }
 146  
                 else {
 147  0
                         name.setText(PrefsModel.getInstance().getTranslator().get(selected.getName()));
 148  0
                         if (selected.isCredit())
 149  0
                                 credit.setSelected(true);
 150  
                         else
 151  0
                                 debit.setSelected(true);
 152  
                 }
 153  0
         }
 154  
 
 155  
         public void actionPerformed(ActionEvent e) {
 156  0
                 if (e.getSource().equals(ok)){
 157  
                         AccountType at;
 158  
                         try {
 159  0
                                 if (selected == null){
 160  0
                                         at = ModelFactory.createAccountType(name.getText(), credit.isSelected());
 161  0
                                         Logger.getLogger(this.getClass().getName()).finest("Created new AccountType " + at);
 162  
 
 163  0
                                         model.addAccountType(at);
 164  
                                 }
 165  
                                 else {
 166  0
                                         at = selected;
 167  0
                                         at.setName(name.getText());
 168  0
                                         at.setCredit(credit.isSelected());
 169  
                                 }
 170  
                                 
 171  0
                                 closeWindow();
 172  
                         }
 173  0
                         catch (ModelException me){
 174  0
                                 String[] options = new String[1];
 175  0
                                 options[0] = TextFormatter.getTranslation(ButtonKeys.BUTTON_OK);
 176  
 
 177  0
                                 JOptionPane.showOptionDialog(this, 
 178  
                                                                 TextFormatter.getTranslation(BuddiKeys.ACCOUNT_TYPE_EDITOR_ERROR_UPDATING_ACCOUNT_TYPE), 
 179  
                                                                 TextFormatter.getTranslation(BuddiKeys.ERROR), 
 180  
                                                                 JOptionPane.OK_CANCEL_OPTION,
 181  
                                                                 JOptionPane.INFORMATION_MESSAGE,
 182  
                                                                 null,
 183  
                                                                 options,
 184  
                                                                 options[0]);
 185  0
                         }
 186  
 
 187  0
                 }
 188  0
                 else if (e.getSource().equals(cancel)){
 189  0
                         closeWindow();
 190  
                 }
 191  0
         }
 192  
 }