/** * Ajout d'un Event dans l'IHM * * @param ev L'Event avec ses infos complémentaires */ private void addEvent(JCalendarEvent jEvent) { EventInfos ev = jEvent.getEventInfos(); Event event = jEvent.getEventInfos().getEvent(); int startHour = event.getStartTime().getHour(); int startMin = event.getStartTime().getMinute(); int endHour = event.getEndTime().getHour(); int endMin = event.getEndTime().getMinute(); int maxCol = checkList.size(); if (startHour < START_HOUR) { startHour = START_HOUR; } if (endHour > END_HOUR) { endHour = END_HOUR; } int startPosition = (startHour - START_HOUR) * (60 / MINUTES_BY_SPLIT) + Tools.floor(startMin, MINUTES_BY_SPLIT) / MINUTES_BY_SPLIT; int endPosition = (endHour - START_HOUR) * (60 / MINUTES_BY_SPLIT) + Tools.floor(endMin, MINUTES_BY_SPLIT) / MINUTES_BY_SPLIT; content.add( jEvent, "width 0:100%:100%, grow, cell " + ev.getColumn() + " " + startPosition + " " + maxCol / ev.getWidth() + " " + (endPosition - startPosition)); }
/** * Permet de sélectionner l'évenement passé en paramètre et de déselectionné les évenements * concurrents * * @param jEvent L'évènement que l'on souhaite sélectionner */ public void setSelected(JCalendarEvent jEvent) { int startHour, startMin, endHour, endMin, startPosition, endPosition; boolean done = false; JCalendarEvent tempJEvent = null; Event event = jEvent.getEventInfos().getEvent(); startHour = event.getStartTime().getHour(); startMin = event.getStartTime().getMinute(); endHour = event.getEndTime().getHour(); endMin = event.getEndTime().getMinute(); if (startHour < START_HOUR) { startHour = START_HOUR; } if (endHour > END_HOUR) { endHour = END_HOUR; } if (startHour > END_HOUR || endHour < START_HOUR) { done = true; } startPosition = (startHour - START_HOUR) * (60 / MINUTES_BY_SPLIT) + Tools.floor(startMin, MINUTES_BY_SPLIT) / MINUTES_BY_SPLIT; endPosition = (endHour - START_HOUR) * (60 / MINUTES_BY_SPLIT) + Tools.floor(endMin, MINUTES_BY_SPLIT) / MINUTES_BY_SPLIT; if (!done) { for (int i = 0; i < checkList.size(); i++) { for (int j = startPosition; j < endPosition; j++) { if (checkList.get(i)[j] == jEvent) { checkList.get(i)[j].setSelected(true); } else { if (checkList.get(i)[j] != null) { checkList.get(i)[j].setSelected(false); } } } } } }
/** * Ajout d'une Day, avec parcourt des différents Events et gestion des Events en conflit * * @param day La Day à ajouter */ public void addDay(Day day) { int startHour, startMin, endHour, endMin, startPosition, endPosition; boolean selected; DateTime date = day.getDate(); String dayName = date.getDayOfWeek(true) + " " + date.toString(); title.setText(dayName); JCalendarEvent jEvent, tempJEvent; int col, row; boolean empty, done; // On parcourt tous les Events de la Day passé en paramètre for (Event event : day.getEventsList()) { startHour = event.getStartTime().getHour(); startMin = event.getStartTime().getMinute(); endHour = event.getEndTime().getHour(); endMin = event.getEndTime().getMinute(); if (startHour < START_HOUR) { startHour = START_HOUR; } if (endHour > END_HOUR) { endHour = END_HOUR; } done = false; if (startHour > END_HOUR || endHour < START_HOUR) { done = true; } startPosition = (startHour - START_HOUR) * (60 / MINUTES_BY_SPLIT) + Tools.floor(startMin, MINUTES_BY_SPLIT) / MINUTES_BY_SPLIT; endPosition = (endHour - START_HOUR) * (60 / MINUTES_BY_SPLIT) + Tools.floor(endMin, MINUTES_BY_SPLIT) / MINUTES_BY_SPLIT; row = startPosition; col = 0; jEvent = new JCalendarEvent(this, new EventInfos(event, 0, 0), false); while (!done) { selected = (col == 0); // On vérifie si le tableau contient assez de colonnes if (checkList.size() < col + 1) { checkList.add(new JCalendarEvent[NB_SPLIT]); } empty = true; // On vérifie que la colonne courante est bien vide là où on veut ajouter l'Event while (empty && row < endPosition) { empty = checkList.get(col)[row] == null; if (!empty) { // Si l'event est déjà présent sur Google (même UID) on le considère DONE if (checkList .get(col)[row] .getEventInfos() .getEvent() .getUid() .equals(event.getUid())) { done = true; } } row++; } // Si la position est libre, on ajoute l'Event if (empty) { jEvent.getEventInfos().setWidth(col + 1); jEvent.getEventInfos().setColumn(col + 1); jEvent.setSelected(selected); eventsList.add(jEvent); // On ajoute l'Event à la liste des Events // Pour chaque Event de la checkList on met à jour les largeurs for (int i = 0; i < checkList.size(); i++) { for (int j = startPosition; j < endPosition; j++) { if (i == col) { // Si c'est la colonne courante, on ajoute simplement l'Event courant checkList.get(i)[j] = jEvent; } else { // Si c'est une autre colonne, on renseigne le fait qu'il y a des Events simultanés tempJEvent = checkList.get(i)[j]; if (tempJEvent != null) { tempJEvent.getEventInfos().setWidth(col + 1); } } } } done = true; } // Si la position n'est pas libre, on passe à la colonne suivante col++; } } }