Improved calendar

This commit is contained in:
Nikolay Borodin 2024-06-13 18:18:37 +02:00
parent f9cb334002
commit b72bddee1c
3 changed files with 18 additions and 7 deletions

View file

@ -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) {
}
}

View file

@ -216,6 +216,7 @@
<Component class="javax.swing.JButton" name="btnCalendar">
<Properties>
<Property name="text" type="java.lang.String" value="..."/>
<Property name="toolTipText" type="java.lang.String" value="Open calendar"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCalendarActionPerformed"/>

View file

@ -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);