package jfxtras.scene.control.agenda.icalendar.trial; import java.time.LocalDateTime; import java.util.List; import java.util.Locale; import java.util.ResourceBundle; import java.util.stream.Collectors; import java.util.stream.IntStream; import javafx.application.Application; import javafx.stage.Stage; import jfxtras.icalendarfx.VCalendar; import jfxtras.icalendarfx.components.VEvent; import jfxtras.internal.scene.control.skin.agenda.icalendar.base24hour.Settings; import jfxtras.internal.scene.control.skin.agenda.icalendar.base24hour.popup.EditDisplayableScene; import jfxtras.internal.scene.control.skin.agenda.icalendar.base24hour.popup.SimpleEditSceneFactory; import jfxtras.scene.control.agenda.Agenda; import jfxtras.scene.control.agenda.Agenda.Appointment; import jfxtras.scene.control.agenda.icalendar.ICalendarAgenda; import jfxtras.scene.control.agenda.icalendar.ICalendarStaticComponents; import jfxtras.scene.control.agenda.icalendar.agenda.AgendaTestAbstract; import jfxtras.scene.control.agenda.icalendar.factories.DefaultRecurrenceFactory; import jfxtras.scene.control.agenda.icalendar.factories.RecurrenceFactory; /** * Demo of edit VEvent popup * * @author David Bal * */ public class EditComponentPopupTrial extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { ResourceBundle resources = ResourceBundle.getBundle("jfxtras.ICalendarAgenda", Locale.getDefault()); Settings.setup(resources); VCalendar myCalendar = new VCalendar(); VEvent vevent = ICalendarStaticComponents.getDaily1(); myCalendar.addChild(vevent); RecurrenceFactory<Appointment> recurrenceFactory = new DefaultRecurrenceFactory(AgendaTestAbstract.DEFAULT_APPOINTMENT_GROUPS); // default VComponent store - for Appointments, if other implementation used make new store recurrenceFactory.setStartRange(LocalDateTime.of(2016, 5, 15, 0, 0)); recurrenceFactory.setEndRange(LocalDateTime.of(2016, 5, 22, 0, 0)); List<Appointment> newAppointments = recurrenceFactory.makeRecurrences(vevent); Appointment appointment = newAppointments.get(2); List<String> categories = IntStream.range(0, 24) .mapToObj(i -> new String("group" + (i < 10 ? "0" : "") + i)) .collect(Collectors.toList()); Object[] params = new Object[] { myCalendar, appointment.getStartTemporal(), appointment.getEndTemporal(), categories }; EditDisplayableScene scene = SimpleEditSceneFactory.newScene(vevent, params); String agendaSheet = Agenda.class.getResource("/jfxtras/internal/scene/control/skin/agenda/" + Agenda.class.getSimpleName() + ".css").toExternalForm(); scene.getStylesheets().addAll(ICalendarAgenda.ICALENDAR_STYLE_SHEET, agendaSheet); primaryStage.setScene(scene); primaryStage.setTitle("ICalendar Edit Popup Demo"); primaryStage.show(); scene.getEditDisplayableTabPane().iTIPMessagesProperty().addListener((obs, oldValue, newValue) -> { newValue.forEach(message -> myCalendar.processITIPMessage(message)); myCalendar.getVEvents().stream().forEach(System.out::println); primaryStage.hide(); }); } }