Coverage Report - org.homeunix.thecave.buddi.view.dialogs.schedule.MultipleMonthsEachYearCard
 
Classes in this File Line Coverage Branch Coverage Complexity
MultipleMonthsEachYearCard
64%
54/84
0%
0/48
2.714
 
 1  
 /*
 2  
  * Created on Aug 18, 2007 by wyatt
 3  
  */
 4  
 package org.homeunix.thecave.buddi.view.dialogs.schedule;
 5  
 
 6  
 import java.awt.BorderLayout;
 7  
 import java.awt.FlowLayout;
 8  
 import java.awt.GridLayout;
 9  
 
 10  
 import javax.swing.JCheckBox;
 11  
 import javax.swing.JLabel;
 12  
 import javax.swing.JPanel;
 13  
 
 14  
 import org.homeunix.thecave.buddi.i18n.BuddiKeys;
 15  
 import org.homeunix.thecave.buddi.i18n.keys.ScheduleFrequencyDayOfMonth;
 16  
 import org.homeunix.thecave.buddi.i18n.keys.ScheduleFrequencyMonth;
 17  
 import org.homeunix.thecave.buddi.model.ScheduledTransaction;
 18  
 import org.homeunix.thecave.buddi.plugin.api.util.TextFormatter;
 19  
 import org.homeunix.thecave.buddi.view.swing.TranslatorListCellRenderer;
 20  
 
 21  
 import ca.digitalcave.moss.swing.MossPanel;
 22  
 import ca.digitalcave.moss.swing.MossScrollingComboBox;
 23  
 
 24  
 public class MultipleMonthsEachYearCard extends MossPanel implements ScheduleCard {
 25  
         public static final long serialVersionUID = 0;
 26  
 
 27  1165
         private final MossScrollingComboBox multipleMonthsDateChooser = new MossScrollingComboBox(ScheduleFrequencyDayOfMonth.values());
 28  
         
 29  
         private final JCheckBox multipleMonthsYearlyJanuary;
 30  
         private final JCheckBox multipleMonthsYearlyFebruary;
 31  
         private final JCheckBox multipleMonthsYearlyMarch;
 32  
         private final JCheckBox multipleMonthsYearlyApril;
 33  
         private final JCheckBox multipleMonthsYearlyMay;
 34  
         private final JCheckBox multipleMonthsYearlyJune;
 35  
         private final JCheckBox multipleMonthsYearlyJuly;
 36  
         private final JCheckBox multipleMonthsYearlyAugust;
 37  
         private final JCheckBox multipleMonthsYearlySeptember;
 38  
         private final JCheckBox multipleMonthsYearlyOctober;
 39  
         private final JCheckBox multipleMonthsYearlyNovember;
 40  
         private final JCheckBox multipleMonthsYearlyDecember;
 41  
 
 42  
         public MultipleMonthsEachYearCard() {
 43  1165
                 super(true);
 44  
                 
 45  1165
                 multipleMonthsYearlyJanuary = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyMonth.SCHEDULE_MONTH_JANUARY.toString()));
 46  1165
                 multipleMonthsYearlyFebruary = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyMonth.SCHEDULE_MONTH_FEBRUARY.toString()));
 47  1165
                 multipleMonthsYearlyMarch = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyMonth.SCHEDULE_MONTH_MARCH.toString()));
 48  1165
                 multipleMonthsYearlyApril = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyMonth.SCHEDULE_MONTH_APRIL.toString()));
 49  1165
                 multipleMonthsYearlyMay = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyMonth.SCHEDULE_MONTH_MAY.toString()));
 50  1165
                 multipleMonthsYearlyJune = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyMonth.SCHEDULE_MONTH_JUNE.toString()));
 51  1165
                 multipleMonthsYearlyJuly = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyMonth.SCHEDULE_MONTH_JULY.toString()));
 52  1165
                 multipleMonthsYearlyAugust = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyMonth.SCHEDULE_MONTH_AUGUST.toString()));
 53  1165
                 multipleMonthsYearlySeptember = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyMonth.SCHEDULE_MONTH_SEPTEMBER.toString()));
 54  1165
                 multipleMonthsYearlyOctober = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyMonth.SCHEDULE_MONTH_OCTOBER.toString()));
 55  1165
                 multipleMonthsYearlyNovember = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyMonth.SCHEDULE_MONTH_NOVEMBER.toString()));
 56  1165
                 multipleMonthsYearlyDecember = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyMonth.SCHEDULE_MONTH_DECEMBER.toString()));
 57  
 
 58  1165
                 open();
 59  1165
         }
 60  
         
 61  
         @Override
 62  
         public void init() {
 63  1165
                 super.init();
 64  
 
 65  1165
                 this.setLayout(new BorderLayout());
 66  1165
                 JPanel multipleMonthsYearlyTop = new JPanel(new FlowLayout(FlowLayout.LEFT));
 67  1165
                 multipleMonthsYearlyTop.add(new JLabel(TextFormatter.getTranslation(BuddiKeys.AND_REPEATING_ON_THE)));
 68  1165
                 multipleMonthsYearlyTop.add(multipleMonthsDateChooser);
 69  1165
                 multipleMonthsYearlyTop.add(new JLabel(TextFormatter.getTranslation(BuddiKeys.ON_EACH_OF_THE_FOLLOWING_MONTHS)));
 70  1165
                 this.add(multipleMonthsYearlyTop, BorderLayout.NORTH);
 71  1165
                 JPanel multipleMonthsYearlyCheckboxes = new JPanel(new GridLayout(4, 0));
 72  1165
                 multipleMonthsYearlyCheckboxes.add(multipleMonthsYearlyJanuary);
 73  1165
                 multipleMonthsYearlyCheckboxes.add(multipleMonthsYearlyFebruary);
 74  1165
                 multipleMonthsYearlyCheckboxes.add(multipleMonthsYearlyMarch);
 75  1165
                 multipleMonthsYearlyCheckboxes.add(multipleMonthsYearlyApril);
 76  1165
                 multipleMonthsYearlyCheckboxes.add(multipleMonthsYearlyMay);
 77  1165
                 multipleMonthsYearlyCheckboxes.add(multipleMonthsYearlyJune);
 78  1165
                 multipleMonthsYearlyCheckboxes.add(multipleMonthsYearlyJuly);
 79  1165
                 multipleMonthsYearlyCheckboxes.add(multipleMonthsYearlyAugust);
 80  1165
                 multipleMonthsYearlyCheckboxes.add(multipleMonthsYearlySeptember);
 81  1165
                 multipleMonthsYearlyCheckboxes.add(multipleMonthsYearlyOctober);
 82  1165
                 multipleMonthsYearlyCheckboxes.add(multipleMonthsYearlyNovember);
 83  1165
                 multipleMonthsYearlyCheckboxes.add(multipleMonthsYearlyDecember);
 84  1165
                 this.add(multipleMonthsYearlyCheckboxes, BorderLayout.EAST);
 85  
                 
 86  1165
                 multipleMonthsDateChooser.setRenderer(new TranslatorListCellRenderer());
 87  1165
         }
 88  
         
 89  
         @Override
 90  
         public void setEnabled(boolean enabled) {
 91  1165
                 super.setEnabled(enabled);
 92  
                 
 93  1165
                 multipleMonthsDateChooser.setEnabled(enabled);
 94  
                 
 95  1165
                 multipleMonthsYearlyJanuary.setEnabled(enabled);
 96  1165
                 multipleMonthsYearlyFebruary.setEnabled(enabled);
 97  1165
                 multipleMonthsYearlyMarch.setEnabled(enabled);
 98  1165
                 multipleMonthsYearlyApril.setEnabled(enabled);
 99  1165
                 multipleMonthsYearlyMay.setEnabled(enabled);
 100  1165
                 multipleMonthsYearlyJune.setEnabled(enabled);
 101  1165
                 multipleMonthsYearlyJuly.setEnabled(enabled);
 102  1165
                 multipleMonthsYearlyAugust.setEnabled(enabled);
 103  1165
                 multipleMonthsYearlySeptember.setEnabled(enabled);
 104  1165
                 multipleMonthsYearlyOctober.setEnabled(enabled);
 105  1165
                 multipleMonthsYearlyNovember.setEnabled(enabled);
 106  1165
                 multipleMonthsYearlyDecember.setEnabled(enabled);
 107  1165
         }
 108  
         
 109  
         public int getScheduleDay() {
 110  
                 //To make it nicer to read in the data file, we add 1 
 111  
                 // to the index.  Don't forget to subtract one when we load it!
 112  0
                 return multipleMonthsDateChooser.getSelectedIndex() + 1;
 113  
         }
 114  
         
 115  
         public int getScheduleWeek() {
 116  0
                 return 0;
 117  
         }
 118  
         
 119  
         public int getScheduleMonth() {
 120  0
                 int value = 0;
 121  
 
 122  
                 //Returns a value representing all selected months.  We store these
 123  
                 // in the bit values: January = 1, February = 2, March = 4, April = 8,
 124  
                 // etc up to December = 2048.  To extract these again, you just have
 125  
                 // to AND the value with a bitmask of January = 1, etc; if the
 126  
                 // resulting value is 0, that month is not selected, if != 0, it is.
 127  0
                 value += (multipleMonthsYearlyJanuary.isSelected() ? 1 : 0 );
 128  0
                 value += (multipleMonthsYearlyFebruary.isSelected() ? 2 : 0 );
 129  0
                 value += (multipleMonthsYearlyMarch.isSelected() ? 4 : 0 );
 130  0
                 value += (multipleMonthsYearlyApril.isSelected() ? 8 : 0 );
 131  0
                 value += (multipleMonthsYearlyMay.isSelected() ? 16 : 0 );
 132  0
                 value += (multipleMonthsYearlyJune.isSelected() ? 32 : 0 );
 133  0
                 value += (multipleMonthsYearlyJuly.isSelected() ? 64 : 0 );
 134  0
                 value += (multipleMonthsYearlyAugust.isSelected() ? 128 : 0 );
 135  0
                 value += (multipleMonthsYearlySeptember.isSelected() ? 256 : 0 );
 136  0
                 value += (multipleMonthsYearlyOctober.isSelected() ? 512 : 0 );
 137  0
                 value += (multipleMonthsYearlyNovember.isSelected() ? 1024 : 0 );
 138  0
                 value += (multipleMonthsYearlyDecember.isSelected() ? 2048 : 0 );
 139  
 
 140  0
                 return value;
 141  
         }
 142  
         
 143  
         public void loadSchedule(ScheduledTransaction s) {
 144  
                 //To make it nicer to read in the data file, we subtract 1 
 145  
                 // from the index.  Don't forget to add one when we get it!
 146  0
                 multipleMonthsDateChooser.setSelectedIndex(s.getScheduleDay() - 1);
 147  
                 
 148  
                 //Load the checkmarks, using bit bashing logic
 149  0
                 multipleMonthsYearlyJanuary.setSelected((s.getScheduleMonth() & 1) != 0);
 150  0
                 multipleMonthsYearlyFebruary.setSelected((s.getScheduleMonth() & 2) != 0);
 151  0
                 multipleMonthsYearlyMarch.setSelected((s.getScheduleMonth() & 4) != 0);
 152  0
                 multipleMonthsYearlyApril.setSelected((s.getScheduleMonth() & 8) != 0);
 153  0
                 multipleMonthsYearlyMay.setSelected((s.getScheduleMonth() & 16) != 0);
 154  0
                 multipleMonthsYearlyJune.setSelected((s.getScheduleMonth() & 32) != 0);
 155  0
                 multipleMonthsYearlyJuly.setSelected((s.getScheduleMonth() & 64) != 0);
 156  0
                 multipleMonthsYearlyAugust.setSelected((s.getScheduleMonth() & 128) != 0);
 157  0
                 multipleMonthsYearlySeptember.setSelected((s.getScheduleMonth() & 256) != 0);
 158  0
                 multipleMonthsYearlyOctober.setSelected((s.getScheduleMonth() & 512) != 0);
 159  0
                 multipleMonthsYearlyNovember.setSelected((s.getScheduleMonth() & 1024) != 0);
 160  0
                 multipleMonthsYearlyDecember.setSelected((s.getScheduleMonth() & 2048) != 0);        
 161  0
         }
 162  
 }