Compare commits

...

3 commits

Author SHA1 Message Date
Nikolay Borodin 8aa44fd5c5 Merge branch 'feat-calendar' into 'main'
Added date picker to InviteWindow

See merge request Monsterovich/lanemu!23
2024-06-13 16:20:33 +00:00
Nikolay Borodin f706cbb6d8 Code refactoring 2024-06-13 18:19:46 +02:00
Nikolay Borodin b72bddee1c Improved calendar 2024-06-13 18:18:37 +02:00
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.isDuplicate()) {
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);