From b72bddee1c1b2b31eb3f52ba152f27fa69c9a264 Mon Sep 17 00:00:00 2001 From: Nikolay Borodin Date: Thu, 13 Jun 2024 18:18:37 +0200 Subject: [PATCH] Improved calendar --- src/org/p2pvpn/gui/Calendar.java | 23 ++++++++++++++++------- src/org/p2pvpn/gui/InviteWindow.form | 1 + src/org/p2pvpn/gui/InviteWindow.java | 1 + 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/org/p2pvpn/gui/Calendar.java b/src/org/p2pvpn/gui/Calendar.java index 84e1c39..d58e766 100644 --- a/src/org/p2pvpn/gui/Calendar.java +++ b/src/org/p2pvpn/gui/Calendar.java @@ -19,7 +19,9 @@ package org.p2pvpn.gui; import com.github.lgooddatepicker.components.CalendarPanel; import com.github.lgooddatepicker.zinternaltools.CustomPopup; -import com.github.lgooddatepicker.zinternaltools.CustomPopup.CustomPopupCloseListener; +import com.github.lgooddatepicker.zinternaltools.CalendarSelectionEvent; +import com.github.lgooddatepicker.zinternaltools.YearMonthChangeEvent; +import com.github.lgooddatepicker.optionalusertools.CalendarListener; import java.awt.Component; import java.awt.Point; import java.time.LocalDate; @@ -33,8 +35,9 @@ import javax.swing.SwingUtilities; * Uses internal library methods. * @author monsterovich */ -public class Calendar implements CustomPopupCloseListener { +public class Calendar implements CalendarListener { private final CalendarPanel calendarPanel; + private CustomPopup calendarPopup; private final Component parentComponent; private final JSpinner inputField; @@ -43,17 +46,18 @@ public class Calendar implements CustomPopupCloseListener { inputField = field; calendarPanel = new CalendarPanel(); + calendarPanel.addCalendarListener(this); } void show() { Date originalDate = (Date) inputField.getModel().getValue(); calendarPanel.setSelectedDate(originalDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()); - CustomPopup calendarPopup = + calendarPopup = new CustomPopup( calendarPanel, SwingUtilities.getWindowAncestor(parentComponent), - this, + null, null); Point pointOnScreen = new Point(); @@ -64,14 +68,19 @@ public class Calendar implements CustomPopupCloseListener { calendarPanel.requestFocus(); } - public void zEventCustomPopupWasClosed(CustomPopup popup) { - LocalDate calendarDate = calendarPanel.getSelectedDate(); - if (calendarDate != null) { + public void selectedDateChanged(CalendarSelectionEvent event) { + LocalDate calendarDate = event.getSource().getSelectedDate(); + if (calendarDate != null && event.getNewDate().equals(event.getOldDate())) { Date originalDate = (Date) inputField.getModel().getValue(); Date date = Date.from(calendarDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); date.setHours(originalDate.getHours()); date.setMinutes(originalDate.getMinutes()); inputField.getModel().setValue(date); + calendarPopup.hide(); } } + + public void yearMonthChanged(YearMonthChangeEvent event) { + + } } diff --git a/src/org/p2pvpn/gui/InviteWindow.form b/src/org/p2pvpn/gui/InviteWindow.form index 8a9058f..a4505be 100644 --- a/src/org/p2pvpn/gui/InviteWindow.form +++ b/src/org/p2pvpn/gui/InviteWindow.form @@ -216,6 +216,7 @@ + diff --git a/src/org/p2pvpn/gui/InviteWindow.java b/src/org/p2pvpn/gui/InviteWindow.java index 3174b38..c1e4f69 100644 --- a/src/org/p2pvpn/gui/InviteWindow.java +++ b/src/org/p2pvpn/gui/InviteWindow.java @@ -183,6 +183,7 @@ public class InviteWindow extends javax.swing.JDialog implements ClipboardOwner grpDate.add(radDate); btnCalendar.setText("..."); + btnCalendar.setToolTipText("Open calendar"); btnCalendar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnCalendarActionPerformed(evt);