org.teamapps.ux.component.calendar.SimpleCalendar Maven / Gradle / Ivy
/*-
* ========================LICENSE_START=================================
* TeamApps
* ---
* Copyright (C) 2014 - 2024 TeamApps.org
* ---
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* =========================LICENSE_END==================================
*/
package org.teamapps.ux.component.calendar;
import com.ibm.icu.text.DateFormat;
import com.ibm.icu.util.TimeZone;
import org.teamapps.data.extract.BeanPropertyExtractor;
import java.util.Date;
import java.util.List;
public class SimpleCalendar extends Calendar> {
public SimpleCalendar() {
super(new SimpleCalendarModel());
setPropertyExtractor(new BeanPropertyExtractor>().addProperty("description",
event -> {
com.ibm.icu.util.Calendar calendar = com.ibm.icu.util.Calendar.getInstance(TimeZone.getTimeZone(getTimeZone().getId()), getSessionContext().getULocale());
DateFormat timeFormatter = DateFormat.getTimeInstance(calendar, DateFormat.SHORT, getSessionContext().getULocale());
return timeFormatter.format(Date.from(event.getStartInstant()))
+ "\u2009-\u2009"
+ timeFormatter.format(Date.from(event.getEndInstant()));
}));
}
public SimpleCalendar(List> events) {
super(new SimpleCalendarModel<>(events));
}
public void setEvents(List> events) {
((SimpleCalendarModel) getModel()).setEvents(events);
}
public void addEvent(SimpleCalendarEvent event) {
((SimpleCalendarModel) getModel()).addEvent(event);
}
public void removeEvent(SimpleCalendarEvent event) {
((SimpleCalendarModel) getModel()).removeEvent(event);
}
}