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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
| public class CalendarWeekViewer extends JFrame implements ActionListener, ItemListener {
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
Calendar calendar;
DateFormat dateFormatter;
CalendarWeekTableModel tableModel;
JLabel monthLabel, yearLabel;
JTable table;
int anneeChoisit;
int anneeActuelle;
int anneeDefinitif = 0;
private WeekPanel weekPanel;
private JCheckBox saturdayCheck;
private JCheckBox sundayCheck;
private JMenuBar barreMenu;
private JMenu fichier, edition;
private JMenuItem sauvegarder, fermer, copier, coller;
private Serialiser serialise;
public CalendarWeekViewer(String uneAnnee) {
setTitle("Gestion d'emploir du temps");
setSize(1400,800);
this.setLocationRelativeTo(null);
barreMenu = new JMenuBar();
fichier = new JMenu("Fichier");
barreMenu.add(fichier);
sauvegarder = new JMenuItem("Sauvegarder");
fichier.add(sauvegarder);
sauvegarder.addActionListener(this);
fermer = new JMenuItem("Fermer");
fichier.add(fermer);
edition = new JMenu("Edition");
barreMenu.add(edition);
copier = new JMenuItem("Copier");
edition.add(copier);
coller = new JMenuItem("Coller");
edition.add(coller);
setJMenuBar(barreMenu);
Annee annee = new Annee();
anneeChoisit = annee.anneeChoisit(uneAnnee);
calendar = Calendar.getInstance();
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() {
JLabel holidays = new JLabel("Jours Non-ouvrés");
holidays.setFont(new Font(null, Font.BOLD, 12));
JPanel checkBox = new JPanel();
checkBox.add(holidays);
saturdayCheck = new JCheckBox("Samedi");
sundayCheck = new JCheckBox("Dimanche");
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.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, anneeActuelle, anneeChoisit);
// 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 event) {
Object source = event.getSource();
if(source.equals(sauvegarder)){
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("/Documents"));
int retrival = chooser.showSaveDialog(null);
if (retrival == JFileChooser.APPROVE_OPTION) {
try {
String fw = (chooser.getSelectedFile()+"_"+anneeChoisit+"_"+(anneeChoisit+1)+".dat");
serialise = new Serialiser(fw);
serialise.serialiser(this);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
@Override
public void itemStateChanged(ItemEvent event) {
Object source = event.getSource();
if (source.equals(saturdayCheck)) {
}
if (source.equals(sundayCheck)) {
}
}
} |
Partager