Coverage Report - org.cesilko.rachota.gui.DateDialog
 
Classes in this File Line Coverage Branch Coverage Complexity
DateDialog
83%
175/209
56%
17/30
1.636
DateDialog$1
50%
2/4
N/A
1.636
DateDialog$2
100%
4/4
N/A
1.636
DateDialog$3
100%
4/4
N/A
1.636
DateDialog$4
50%
2/4
N/A
1.636
DateDialog$5
100%
4/4
N/A
1.636
DateDialog$6
50%
2/4
N/A
1.636
DateDialog$7
50%
2/4
N/A
1.636
DateDialog$8
100%
4/4
N/A
1.636
DateDialog$9
100%
4/4
N/A
1.636
 
 1  1150245
 /*
 2  
  * The contents of this file are subject to the terms of the Common Development
 3  
  * and Distribution License (the License). You may not use this file except in
 4  
  * compliance with the License.
 5  
  *
 6  
  * You can obtain a copy of the License at http://rachota.sourceforge.net/license.txt.
 7  
  * 
 8  
  *
 9  
  * When distributing Covered Code, include this CDDL Header Notice in each file
 10  
  * and include the License file at http://rachota.sourceforge.net/license.txt.
 11  
  * If applicable, add the following below the CDDL Header, with the fields
 12  
  * enclosed by brackets [] replaced by your own identifying information:
 13  
  * "Portions Copyrighted [year] [name of copyright owner]"
 14  
  * The Original Software is Rachota.
 15  
  * The Initial Developer of the Original Software is Jiri Kovalsky
 16  
  * Portions created by Jiri Kovalsky are Copyright (C) 2006
 17  
  * All Rights Reserved.
 18  
  *
 19  
  * Contributor(s): Jiri Kovalsky
 20  
  * Created on 18. srpen 2006  22:14
 21  
  * DateDialog.java
 22  
  */
 23  
 
 24  
 package org.cesilko.rachota.gui;
 25  
 
 26  
 import java.awt.Color;
 27  
 import java.awt.Dimension;
 28  
 import java.awt.Font;
 29  
 import java.awt.event.KeyEvent;
 30  
 import java.text.SimpleDateFormat;
 31  
 import java.util.Calendar;
 32  
 import java.util.Date;
 33  
 import javax.swing.JLabel;
 34  
 import javax.swing.SpinnerDateModel;
 35  
 import org.cesilko.rachota.core.Day;
 36  
 import org.cesilko.rachota.core.Plan;
 37  
 import org.cesilko.rachota.core.Translator;
 38  
 
 39  
 /** Dialog for user friendly selecting date to be displayed in Day View.
 40  
  * @author Jiri Kovalsky
 41  
  */
 42  
 public class DateDialog extends javax.swing.JDialog {
 43  
     
 44  
     /** Identifies dialog for switching current day view. */
 45  
     public static final int TYPE_SWITCH_DATE = 0;
 46  
     /** Identifies dialog for copying task to different day. */
 47  
     public static final int TYPE_COPY_TASK = 1;
 48  
     /** Type of dialog. */
 49  
     private int type;
 50  
     
 51  
     /** Creates new form DateDialog */
 52  1150245
     public DateDialog(java.awt.Frame parent, Date date, int type) {
 53  1150245
         initComponents();
 54  1150245
         this.type = type;
 55  1150245
         switch (type) {
 56  
             case TYPE_SWITCH_DATE:
 57  173142
                 lbSelectDate.setText(Translator.getTranslation("DATEDIALOG.SELECT_DATE"));
 58  173142
                 break;
 59  
             default:
 60  977103
                 lbSelectDate.setText(Translator.getTranslation("DATEDIALOG.COPY_TASK"));
 61  
         }
 62  1150245
         setLocationRelativeTo(parent);
 63  1150245
         Calendar calendar = Calendar.getInstance();
 64  1150245
         SimpleDateFormat sdf = new SimpleDateFormat("MMMMMMMMMMMMMMMMM");
 65  14953185
         for (int i = 0; i < 12; i++) {
 66  13802940
             calendar.set(Calendar.MONTH, i);
 67  13802940
             cmbMonth.addItem(sdf.format(calendar.getTime()));
 68  
         }
 69  1150245
         calendar.setTime(date);
 70  1150245
         spYear.setValue(date);
 71  1150245
         spYear.setEditor(new javax.swing.JSpinner.DateEditor(spYear, "yyyy"));
 72  1150245
         cmbMonth.setSelectedIndex(calendar.get(Calendar.MONTH));
 73  1150245
         this.date = date;
 74  1150245
         updateDays();
 75  1150245
         pack();
 76  1150245
     }
 77  
 
 78  
     private void updateDays() {
 79  7267327
         pnDays.removeAll();
 80  7267327
         String dateFormat = Translator.getTranslation("FORMAT.DATE");
 81  7267327
         SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
 82  7267327
         txtDate.setText(sdf.format(date));
 83  7267327
         Calendar calendar = Calendar.getInstance();
 84  7267327
         calendar.setTime(date);
 85  7267327
         int dayNumber = calendar.get(Calendar.DAY_OF_MONTH);
 86  7267327
         int numberOfDays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
 87  7267327
         Font font = getFont();
 88  7267327
         JLabel specimen = new JLabel("31");
 89  7267327
         specimen.setFont(font);
 90  7267327
         specimen.setBorder(javax.swing.BorderFactory.createEtchedBorder());
 91  7267327
         Dimension size = specimen.getPreferredSize();
 92  7267327
         size.setSize(size.getWidth() + 2, size.getHeight() + 2);
 93  227706099
         for (int i = 0; i < numberOfDays; i++) {
 94  220438772
             calendar.set(Calendar.DAY_OF_MONTH, i+1);
 95  220438772
             JLabel day = new JLabel(new Integer(i+1).toString());
 96  220438772
             day.setPreferredSize(size);
 97  220438772
             day.setHorizontalAlignment(JLabel.CENTER);
 98  220438772
             int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
 99  220438772
             if ((dayOfWeek == Calendar.SATURDAY) | (dayOfWeek == Calendar.SUNDAY)) day.setFont(font.deriveFont(Font.BOLD));
 100  156447709
             else day.setFont(font);
 101  220438772
             if (dayNumber == i+1) {
 102  7267327
                 day.setForeground(Color.BLUE);
 103  7267327
                 day.setBorder(javax.swing.BorderFactory.createEtchedBorder());
 104  7267327
                 day.setFont(font.deriveFont(Font.BOLD));
 105  
             }
 106  220438772
             java.awt.GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints();
 107  220438772
             gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
 108  220438772
             gridBagConstraints.gridx = i % 7;
 109  220438772
             gridBagConstraints.gridy = i / 7;
 110  220438772
             day.addMouseListener(new java.awt.event.MouseAdapter() {
 111  
                 public void mouseClicked(java.awt.event.MouseEvent evt) {
 112  0
                     lbDayMouseClicked(evt);
 113  0
                 }
 114  
             });
 115  220438772
             pnDays.add(day, gridBagConstraints);
 116  
         }
 117  7267327
         previousYear = (Date) spYear.getValue();
 118  7267327
         repaint();
 119  7267327
         pack();
 120  7267327
     }
 121  
     
 122  
     /** Returns font that should be used for all widgets in this component
 123  
      * based on the language preferences specified by user.
 124  
      * @return Font to be used in this component.
 125  
      */
 126  
     public java.awt.Font getFont() {
 127  88960425
         return Tools.getFont();
 128  
     }
 129  
     
 130  
     /** This method is called from within the constructor to
 131  
      * initialize the form.
 132  
      * WARNING: Do NOT modify this code. The content of this method is
 133  
      * always regenerated by the Form Editor.
 134  
      */
 135  
     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
 136  
     private void initComponents() {
 137  
         java.awt.GridBagConstraints gridBagConstraints;
 138  
 
 139  1150245
         lbSelectDate = new javax.swing.JLabel();
 140  1150245
         cmbMonth = new javax.swing.JComboBox();
 141  1150245
         spYear = new javax.swing.JSpinner();
 142  1150245
         pnDays = new javax.swing.JPanel();
 143  1150245
         txtDate = new javax.swing.JTextField();
 144  1150245
         btOK = new javax.swing.JButton();
 145  1150245
         btCancel = new javax.swing.JButton();
 146  
 
 147  1150245
         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
 148  1150245
         setTitle(Translator.getTranslation("DATEDIALOG.TITLE"));
 149  1150245
         addMouseListener(new java.awt.event.MouseAdapter() {
 150  
             public void mouseEntered(java.awt.event.MouseEvent evt) {
 151  1280585
                 formMouseEntered(evt);
 152  1280585
             }
 153  
         });
 154  1150245
         getContentPane().setLayout(new java.awt.GridBagLayout());
 155  
 
 156  1150245
         lbSelectDate.setFont(getFont());
 157  1150245
         lbSelectDate.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
 158  1150245
         lbSelectDate.setLabelFor(cmbMonth);
 159  1150245
         lbSelectDate.setText(Translator.getTranslation("DATEDIALOG.SELECT_DATE"));
 160  1150245
         gridBagConstraints = new java.awt.GridBagConstraints();
 161  1150245
         gridBagConstraints.gridwidth = 2;
 162  1150245
         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
 163  1150245
         getContentPane().add(lbSelectDate, gridBagConstraints);
 164  
 
 165  1150245
         cmbMonth.setFont(getFont());
 166  1150245
         cmbMonth.addActionListener(new java.awt.event.ActionListener() {
 167  
             public void actionPerformed(java.awt.event.ActionEvent evt) {
 168  2300490
                 cmbMonthActionPerformed(evt);
 169  2300490
             }
 170  
         });
 171  1150245
         cmbMonth.addKeyListener(new java.awt.event.KeyAdapter() {
 172  
             public void keyPressed(java.awt.event.KeyEvent evt) {
 173  0
                 cmbMonthKeyPressed(evt);
 174  0
             }
 175  
         });
 176  1150245
         gridBagConstraints = new java.awt.GridBagConstraints();
 177  1150245
         gridBagConstraints.gridy = 1;
 178  1150245
         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
 179  1150245
         gridBagConstraints.weightx = 1.0;
 180  1150245
         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
 181  1150245
         getContentPane().add(cmbMonth, gridBagConstraints);
 182  
 
 183  1150245
         spYear.setFont(getFont());
 184  1150245
         spYear.setModel(new SpinnerDateModel());
 185  1150245
         spYear.addChangeListener(new javax.swing.event.ChangeListener() {
 186  
             public void stateChanged(javax.swing.event.ChangeEvent evt) {
 187  3816592
                 spYearStateChanged(evt);
 188  3816592
             }
 189  
         });
 190  1150245
         gridBagConstraints = new java.awt.GridBagConstraints();
 191  1150245
         gridBagConstraints.gridy = 1;
 192  1150245
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 193  1150245
         gridBagConstraints.weightx = 1.0;
 194  1150245
         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
 195  1150245
         getContentPane().add(spYear, gridBagConstraints);
 196  
 
 197  1150245
         pnDays.setBorder(javax.swing.BorderFactory.createEtchedBorder());
 198  1150245
         pnDays.addKeyListener(new java.awt.event.KeyAdapter() {
 199  
             public void keyPressed(java.awt.event.KeyEvent evt) {
 200  0
                 pnDaysKeyPressed(evt);
 201  0
             }
 202  
         });
 203  1150245
         pnDays.setLayout(new java.awt.GridBagLayout());
 204  1150245
         gridBagConstraints = new java.awt.GridBagConstraints();
 205  1150245
         gridBagConstraints.gridy = 2;
 206  1150245
         gridBagConstraints.gridwidth = 2;
 207  1150245
         gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
 208  1150245
         gridBagConstraints.weighty = 1.0;
 209  1150245
         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
 210  1150245
         getContentPane().add(pnDays, gridBagConstraints);
 211  
 
 212  1150245
         txtDate.setEditable(false);
 213  1150245
         txtDate.setFont(getFont());
 214  1150245
         txtDate.setHorizontalAlignment(javax.swing.JTextField.CENTER);
 215  1150245
         txtDate.setToolTipText(Translator.getTranslation("DATEDIALOG.TXT_DATE_TOOLTIP"));
 216  1150245
         txtDate.addMouseListener(new java.awt.event.MouseAdapter() {
 217  
             public void mouseClicked(java.awt.event.MouseEvent evt) {
 218  0
                 txtDateMouseClicked(evt);
 219  0
             }
 220  
         });
 221  1150245
         gridBagConstraints = new java.awt.GridBagConstraints();
 222  1150245
         gridBagConstraints.gridy = 3;
 223  1150245
         gridBagConstraints.gridwidth = 2;
 224  1150245
         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 225  1150245
         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
 226  1150245
         getContentPane().add(txtDate, gridBagConstraints);
 227  
 
 228  1150245
         btOK.setFont(getFont());
 229  1150245
         btOK.setMnemonic(Translator.getMnemonic("DATEDIALOG.BT_OK"));
 230  1150245
         btOK.setText(Translator.getTranslation("DATEDIALOG.BT_OK"));
 231  1150245
         btOK.setToolTipText(Translator.getTranslation("DATEDIALOG.BT_OK_TOOLTIP"));
 232  1150245
         btOK.addActionListener(new java.awt.event.ActionListener() {
 233  
             public void actionPerformed(java.awt.event.ActionEvent evt) {
 234  838344
                 btOKActionPerformed(evt);
 235  838344
             }
 236  
         });
 237  1150245
         gridBagConstraints = new java.awt.GridBagConstraints();
 238  1150245
         gridBagConstraints.gridy = 4;
 239  1150245
         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
 240  1150245
         gridBagConstraints.weightx = 1.0;
 241  1150245
         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
 242  1150245
         getContentPane().add(btOK, gridBagConstraints);
 243  
 
 244  1150245
         btCancel.setFont(getFont());
 245  1150245
         btCancel.setMnemonic(Translator.getMnemonic("DATEDIALOG.BT_CANCEL"));
 246  1150245
         btCancel.setText(Translator.getTranslation("DATEDIALOG.BT_CANCEL"));
 247  1150245
         btCancel.setToolTipText(Translator.getTranslation("DATEDIALOG.BT_CANCEL_TOOLTIP"));
 248  1150245
         btCancel.addActionListener(new java.awt.event.ActionListener() {
 249  
             public void actionPerformed(java.awt.event.ActionEvent evt) {
 250  55160
                 btCancelActionPerformed(evt);
 251  55160
             }
 252  
         });
 253  1150245
         gridBagConstraints = new java.awt.GridBagConstraints();
 254  1150245
         gridBagConstraints.gridy = 4;
 255  1150245
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 256  1150245
         gridBagConstraints.weightx = 1.0;
 257  1150245
         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
 258  1150245
         getContentPane().add(btCancel, gridBagConstraints);
 259  
 
 260  1150245
         pack();
 261  1150245
     }// </editor-fold>//GEN-END:initComponents
 262  
 
 263  0
 private void pnDaysKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_pnDaysKeyPressed
 264  0
     if (evt.getKeyCode() == KeyEvent.VK_ENTER)
 265  0
         btOKActionPerformed(null);
 266  0
     if (evt.getKeyCode() == KeyEvent.VK_ESCAPE)
 267  0
         btCancelActionPerformed(null);
 268  0
 }//GEN-LAST:event_pnDaysKeyPressed
 269  
 
 270  0
 private void cmbMonthKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_cmbMonthKeyPressed
 271  0
     if (evt.getKeyCode() == KeyEvent.VK_ENTER)
 272  0
         btOKActionPerformed(null);
 273  0
     if (evt.getKeyCode() == KeyEvent.VK_ESCAPE)
 274  0
         btCancelActionPerformed(null);
 275  0
 }//GEN-LAST:event_cmbMonthKeyPressed
 276  
 
 277  0
     private void txtDateMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_txtDateMouseClicked
 278  0
         Calendar calendar = Calendar.getInstance();
 279  0
         calendar.setTime(new Date());
 280  0
         spYear.setValue(new Date());
 281  0
         cmbMonth.setSelectedIndex(calendar.get(Calendar.MONTH));
 282  0
         date = new Date();
 283  0
         updateDays();
 284  0
     }//GEN-LAST:event_txtDateMouseClicked
 285  
 
 286  0
     private void lbDayMouseClicked(java.awt.event.MouseEvent evt) {
 287  0
         JLabel selectedDay = (JLabel) evt.getComponent();
 288  0
         Calendar calendar = Calendar.getInstance();
 289  0
         calendar.setTime(date);
 290  0
         calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(selectedDay.getText()));
 291  0
         if (type==TYPE_COPY_TASK) {
 292  0
             Plan plan = Plan.getDefault();
 293  0
             Day day = plan.getDay(calendar.getTime());
 294  0
             boolean today = plan.isToday(day);
 295  0
             boolean future = plan.isFuture(day);
 296  0
             if (!(today | future)) return;
 297  
         }
 298  0
         date = calendar.getTime();
 299  0
         updateDays();
 300  0
     }
 301  
 
 302  3816592
     private void spYearStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spYearStateChanged
 303  3816592
         Calendar calendar = Calendar.getInstance();
 304  3816592
         calendar.setTime((Date) spYear.getValue());
 305  3816592
         int year = calendar.get(Calendar.YEAR);
 306  3816592
         if (year < 1970) spYear.setValue(previousYear);
 307  
         else {
 308  3816592
             calendar = Calendar.getInstance();
 309  3816592
             calendar.set(Calendar.YEAR, year);
 310  3816592
             calendar.set(Calendar.MONTH, cmbMonth.getSelectedIndex());
 311  3816592
             calendar.set(Calendar.DAY_OF_MONTH, 1);
 312  3816592
             date = calendar.getTime();
 313  3816592
             updateDays();
 314  
         }
 315  3816592
     }//GEN-LAST:event_spYearStateChanged
 316  
 
 317  2300490
     private void cmbMonthActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbMonthActionPerformed
 318  2300490
         Calendar calendar = Calendar.getInstance();
 319  2300490
         calendar.setTime((Date) spYear.getValue());
 320  2300490
         calendar.set(Calendar.MONTH, cmbMonth.getSelectedIndex());
 321  2300490
         calendar.set(Calendar.DAY_OF_MONTH, 1);
 322  2300490
         date = calendar.getTime();
 323  2300490
         updateDays();
 324  2300490
     }//GEN-LAST:event_cmbMonthActionPerformed
 325  
 
 326  55160
     private void btCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelActionPerformed
 327  55160
         setVisible(false);
 328  55160
     }//GEN-LAST:event_btCancelActionPerformed
 329  
 
 330  838344
     private void btOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btOKActionPerformed
 331  838344
         switch (type) {
 332  
             case TYPE_SWITCH_DATE:
 333  127156
                 firePropertyChange("date_selected_switch", null, date);
 334  127156
                 break;
 335  
             default:
 336  711188
                 firePropertyChange("date_selected_copy_task", null, date);
 337  
         }
 338  838344
         setVisible(false);
 339  838344
     }//GEN-LAST:event_btOKActionPerformed
 340  
 
 341  1280585
     private void formMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseEntered
 342  1280585
         Tools.recordActivity();
 343  1280585
     }//GEN-LAST:event_formMouseEntered
 344  
     
 345  
     // Variables declaration - do not modify//GEN-BEGIN:variables
 346  
     private javax.swing.JButton btCancel;
 347  
     private javax.swing.JButton btOK;
 348  
     private javax.swing.JComboBox cmbMonth;
 349  
     private javax.swing.JLabel lbSelectDate;
 350  
     private javax.swing.JPanel pnDays;
 351  
     private javax.swing.JSpinner spYear;
 352  
     private javax.swing.JTextField txtDate;
 353  
     // End of variables declaration//GEN-END:variables
 354  1150245
     private Date date = new Date();
 355  1150245
     private Date previousYear = new Date();
 356  
 }