Coverage Report - org.homeunix.thecave.buddi.view.dialogs.schedule.MultipleWeeksEachMonthCard
 
Classes in this File Line Coverage Branch Coverage Complexity
MultipleWeeksEachMonthCard
68%
30/44
0%
0/16
1.571
 
 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.ScheduleFrequencyDayOfWeek;
 16  
 import org.homeunix.thecave.buddi.i18n.keys.ScheduleFrequencyWeek;
 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 MultipleWeeksEachMonthCard extends MossPanel implements ScheduleCard {
 25  
         public static final long serialVersionUID = 0;
 26  
 
 27  1165
         private final MossScrollingComboBox multipleWeeksDayChooser = new MossScrollingComboBox(ScheduleFrequencyDayOfWeek.values());
 28  
         
 29  
         private final JCheckBox multipleWeeksMonthlyFirstWeek;
 30  
         private final JCheckBox multipleWeeksMonthlySecondWeek;
 31  
         private final JCheckBox multipleWeeksMonthlyThirdWeek;
 32  
         private final JCheckBox multipleWeeksMonthlyFourthWeek;
 33  
         
 34  
         public MultipleWeeksEachMonthCard() {
 35  1165
                 super(true);
 36  
                 
 37  1165
                 multipleWeeksMonthlyFirstWeek = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyWeek.SCHEDULE_WEEK_FIRST.toString()));
 38  1165
                 multipleWeeksMonthlySecondWeek = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyWeek.SCHEDULE_WEEK_SECOND.toString()));
 39  1165
                 multipleWeeksMonthlyThirdWeek = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyWeek.SCHEDULE_WEEK_THIRD.toString()));
 40  1165
                 multipleWeeksMonthlyFourthWeek = new JCheckBox(TextFormatter.getTranslation(ScheduleFrequencyWeek.SCHEDULE_WEEK_FOURTH.toString()));        
 41  
                 
 42  1165
                 open();
 43  1165
         }
 44  
         
 45  
         @Override
 46  
         public void init() {
 47  1165
                 super.init();
 48  
 
 49  1165
                 this.setLayout(new BorderLayout());
 50  1165
                 JPanel multipleWeeksMonthlyTop = new JPanel(new FlowLayout(FlowLayout.LEFT));
 51  1165
                 multipleWeeksMonthlyTop.add(new JLabel(TextFormatter.getTranslation(BuddiKeys.AND_REPEATING_EVERY)));
 52  1165
                 multipleWeeksMonthlyTop.add(multipleWeeksDayChooser);
 53  1165
                 multipleWeeksMonthlyTop.add(new JLabel(TextFormatter.getTranslation(BuddiKeys.ON_EACH_OF_THE_FOLLOWING_WEEKS)));
 54  1165
                 this.add(multipleWeeksMonthlyTop, BorderLayout.NORTH);
 55  1165
                 JPanel multipleWeeksMonthlyCheckboxes = new JPanel(new GridLayout(0, 1));
 56  1165
                 multipleWeeksMonthlyCheckboxes.add(multipleWeeksMonthlyFirstWeek);
 57  1165
                 multipleWeeksMonthlyCheckboxes.add(multipleWeeksMonthlySecondWeek);
 58  1165
                 multipleWeeksMonthlyCheckboxes.add(multipleWeeksMonthlyThirdWeek);
 59  1165
                 multipleWeeksMonthlyCheckboxes.add(multipleWeeksMonthlyFourthWeek);
 60  1165
                 this.add(multipleWeeksMonthlyCheckboxes, BorderLayout.EAST);
 61  
                 
 62  1165
                 multipleWeeksDayChooser.setRenderer(new TranslatorListCellRenderer());
 63  1165
         }
 64  
         
 65  
         @Override
 66  
         public void setEnabled(boolean enabled) {
 67  1165
                 super.setEnabled(enabled);
 68  
                 
 69  1165
                 multipleWeeksDayChooser.setEnabled(enabled);
 70  
                 
 71  1165
                 multipleWeeksMonthlyFirstWeek.setEnabled(enabled);
 72  1165
                 multipleWeeksMonthlySecondWeek.setEnabled(enabled);
 73  1165
                 multipleWeeksMonthlyThirdWeek.setEnabled(enabled);
 74  1165
                 multipleWeeksMonthlyFourthWeek.setEnabled(enabled);
 75  1165
         }
 76  
         
 77  
         public int getScheduleDay() {
 78  0
                 return multipleWeeksDayChooser.getSelectedIndex();
 79  
         }
 80  
         
 81  
         public int getScheduleWeek() {
 82  0
                 int scheduleWeek = 0;
 83  
 
 84  0
                 scheduleWeek += (multipleWeeksMonthlyFirstWeek.isSelected() ? 1 : 0);
 85  0
                 scheduleWeek += (multipleWeeksMonthlySecondWeek.isSelected() ? 2 : 0);
 86  0
                 scheduleWeek += (multipleWeeksMonthlyThirdWeek.isSelected() ? 4 : 0);
 87  0
                 scheduleWeek += (multipleWeeksMonthlyFourthWeek.isSelected() ? 8 : 0);
 88  
 
 89  0
                 return scheduleWeek;
 90  
         }
 91  
         
 92  
         public int getScheduleMonth() {
 93  0
                 return 0; //TODO This used to be -1.  Check if this change is correct or not.
 94  
         }
 95  
         
 96  
         public void loadSchedule(ScheduledTransaction s) {
 97  0
                 multipleWeeksDayChooser.setSelectedIndex(s.getScheduleDay());
 98  
                 
 99  
                 //Load the checkmarks, using bit bashing logic
 100  0
                 multipleWeeksMonthlyFirstWeek.setSelected((s.getScheduleWeek() & 1) != 0);
 101  0
                 multipleWeeksMonthlySecondWeek.setSelected((s.getScheduleWeek() & 2) != 0);
 102  0
                 multipleWeeksMonthlyThirdWeek.setSelected((s.getScheduleWeek() & 4) != 0);
 103  0
                 multipleWeeksMonthlyFourthWeek.setSelected((s.getScheduleWeek() & 8) != 0);
 104  0
         }
 105  
 }