1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
| public class CalendarWeekViewer extends JPanel implements ActionListener, ItemListener {
Calendar calendar;
DateFormat dateFormatter;
CalendarWeekTableModel tableModel;
JLabel monthLabel, yearLabel;
JTable table;
int anneeChoisit;
private WeekPanel weekPanel;
public CalendarWeekViewer(String uneAnnee) {
Annee annee = new Annee();
anneeChoisit = annee.anneeChoisit(uneAnnee);
int anneeDefinitif = 0;
calendar = Calendar.getInstance();
int anneeActuelle;
anneeActuelle = calendar.get(Calendar.YEAR);
if(anneeActuelle < anneeChoisit){
anneeDefinitif = anneeChoisit - anneeActuelle;
calendar.add(Calendar.YEAR, +anneeDefinitif);
}else if(anneeActuelle > anneeChoisit){
anneeDefinitif = anneeActuelle - anneeChoisit;
calendar.add(Calendar.YEAR, -anneeDefinitif);
}else{
calendar.add(Calendar.YEAR, 0);
}
calendar.set(Calendar.MONTH,Calendar.SEPTEMBER); // on se positionne sur le mois de septembre (le début de notre liste de semaines)
calendar.set(Calendar.WEEK_OF_MONTH, 1); // on se positionne sur la première semaine du mois
calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek()); // on se positionne sur le premier jour officiel
dateFormatter = new SimpleDateFormat("MMMM yyyy");
createComponents();
}
private void createComponents() {
JCheckBox saturdayCheck = new JCheckBox("Samedi");
JCheckBox sundayCheck = new JCheckBox("Dimanche");
JLabel holidays = new JLabel("Jours Non-ouvrés");
JPanel checkBox = new JPanel();
checkBox.add(saturdayCheck);
checkBox.add(sundayCheck);
saturdayCheck.addItemListener(this);
sundayCheck.addItemListener(this);
yearLabel = new JLabel("Année : "+anneeChoisit+ "-"+(anneeChoisit+1));
yearLabel.setFont(new Font(null, Font.BOLD, 20));
monthLabel = new JLabel(getWeekLabel());
monthLabel.setFont(new Font(null, Font.PLAIN, 18));
monthLabel.setVerticalAlignment(JLabel.CENTER);
monthLabel.setHorizontalAlignment(JLabel.CENTER);
tableModel = new CalendarWeekTableModel(calendar);
table = new JTable((TableModel)tableModel);
table.setPreferredScrollableViewportSize(new Dimension(1400, 600));
table.setDefaultRenderer(String.class, new CalendarWeekRenderer());
table.setRowHeight(200);
TableColumnModel tableColumnModel = table.getColumnModel();
for (int i=0; i < tableColumnModel.getColumnCount(); ++i) {
TableColumn tableColumn = tableColumnModel.getColumn(i);
tableColumn.setPreferredWidth(200);
}
JScrollPane tableScrollPane = new JScrollPane(table);
JPanel southPanel = new JPanel(new BorderLayout()); // le panel intermédiaire
// on créé le weekPanel
weekPanel = new WeekPanel(this, calendar);
// on met le weekPanel dans le panel intermédiaire
southPanel.add(weekPanel, BorderLayout.SOUTH);
JPanel panneau1 = new JPanel(new BorderLayout());
panneau1.setPreferredSize(new Dimension(1400, 600));
panneau1.add(monthLabel, BorderLayout.NORTH);
panneau1.add(tableScrollPane, BorderLayout.CENTER);
panneau1.add(southPanel, BorderLayout.SOUTH);
JPanel panneau3 = new JPanel(new BorderLayout());
JPanel panneau2 = new JPanel(new BorderLayout());
panneau2.add(yearLabel, BorderLayout.WEST);
panneau2.add(checkBox, BorderLayout.EAST);
panneau3.add(panneau2, BorderLayout.NORTH);
panneau3.add(panneau1);
this.add(panneau3);
}
public void setWeek(Calendar selection) {
calendar.setTime( selection.getTime());
monthLabel.setText(getWeekLabel());
tableModel.fireTableStructureChanged();
weekPanel.updateSelection();
}
private String getWeekLabel() {
Calendar calendar = Calendar.getInstance(); // on créé un nouveau calendar pour pas modifier le calendar qui nous sert pour savoir quelle semaine on affiche
calendar.setTime(this.calendar.getTime()); // on recopie dedans la date actuellement mise dans le calendar qui ser pour savoir quelle semaine on affiche
int week = calendar.get(Calendar.WEEK_OF_YEAR); // on récupère le numéro de la semaine
// le premier jour de cette semaine
Date premierJour = calendar.getTime();
int monthPremierJour = calendar.get(Calendar.MONTH); // bug ici (il y avait int monthPremierJour = calendar.get(Calendar.MONDAY); donc n'importe quoi)!!!
// le dernier jour de cette semaine
calendar.add(Calendar.WEEK_OF_YEAR, 1);
calendar.add(Calendar.DAY_OF_WEEK, -1);
Date dernierJour = calendar.getTime();
int monthDernierJour = calendar.get(Calendar.MONTH);
return WeekPanel.getWeekLabel(week, premierJour, dernierJour, monthPremierJour, monthDernierJour);
}
public void actionPerformed(ActionEvent arg0) {
}
@Override
public void itemStateChanged(ItemEvent arg0) {
}
} |
Partager