<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:"Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}
@font-face
        {font-family:Aptos;
        panose-1:2 11 0 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Iosevka Fixed SS16";
        panose-1:2 0 5 9 3 0 0 0 0 4;}
@font-face
        {font-family:"Times New Roman \(Body CS\)";
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"\@Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:10.0pt;
        font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Iosevka Fixed SS16";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1290891625;
        mso-list-template-ids:1293331942;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16";color:#212121">In addition to SWinxy very good comments, allow me to suggest a few more items:</span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16";color:#212121"> </span><span style="color:#212121"><o:p></o:p></span></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoNormal" style="color:#212121;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">ability to set the date format, locale, calendar separately</span><o:p></o:p></li><li class="MsoNormal" style="color:#212121;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">possibly show additional information such as week numbers</span><o:p></o:p></li><li class="MsoNormal" style="color:#212121;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">make sure the new component is fully accessible</span><o:p></o:p></li><li class="MsoNormal" style="color:#212121;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">option to grey out or hide past or future dates</span><o:p></o:p></li><li class="MsoNormal" style="color:#212121;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">ability to highlight / decorate certain days (e.g. holidays), today's date, and weekends</span><o:p></o:p></li><li class="MsoNormal" style="color:#212121;mso-list:l0 level1 lfo1"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">ability to show more than one month, either vertically, horizontally, or in a grid</span><o:p></o:p></li></ul>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16";color:#212121"> </span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16";color:#212121">another suggestion is possibly consider making it consistent with the JavaFX DatePicker:</span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><a href="https://github.com/andy-goryachev-oracle/Test/blob/main/screenshots/Screenshot%202024-08-23%20at%2009.02.31.png">https://github.com/andy-goryachev-oracle/Test/blob/main/screenshots/Screenshot%202024-08-23%20at%2009.02.31.png</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16";color:#212121">and lastly, the implementation should be cognizant of the time zones, to avoid bugs like this one <a href="https://github.com/yui/yui2/pull/15" title="https://github.com/yui/yui2/pull/15"><span style="color:#0078D7">https://github.com/yui/yui2/pull/15</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16";color:#212121"> </span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16";color:#212121">cheers,</span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16";color:#212121"> </span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16";color:#212121">-andy</span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<div id="mail-editor-reference-message-container">
<div>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">client-libs-dev <client-libs-dev-retn@openjdk.org> on behalf of SWinxy <swinxythecat@gmail.com><br>
<b>Date: </b>Thursday, August 22, 2024 at 11:08<br>
<b>To: </b>Tejesh R <tejesh.r@oracle.com><br>
<b>Cc: </b>client-libs-dev@openjdk.java.net <client-libs-dev@openjdk.java.net><br>
<b>Subject: </b>Re: Seeking feedback on a possible JDatePicker Swing component<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:12.0pt">Tejesh, I think it would be a nice feature, and I would be happy to help with it. There are a lot of considerations for displaying calendars. I don't think we should have the date
 & time combined into one UI component, but separate components, the former of which I'll focus on here. There are two parts to it: first is textbox(es), and second a calendar grid. Here are some requirements that I can think of right now:<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">- Start of the week. Different regions of the world have the week start on different days, usually Sunday or Monday, but some start on Saturday. [1] macOS and Windows both let you change this to any day of
 the week. On macOS, this is defined by NSCalendar's firstWeekday.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">- Should there be one text field, or should there be three for day-month-year? Allow the dev to choose? If multiple text boxes, the ways to traverse to the next field should include the period, space, slash,
 and dash keys in addition to the tab key. (This is because people can type 10/10/10 or 10.10.10 all at once and not have to press tab.) Pasting in a date should be supported in either case, and converted to the displayed locale.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">- The UI should update in response to a notification from the system that the user has changed their preferred calendar format.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">- Either way we have the text box, allowing the developer to choose if they want a text box with a popup calendar grid or one that is in the same panel would be ideal. (That is, they add it to the same panel
 themself.)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">- The calendar grid should be able to be oriented horizontally or vertically. (When the calendar moves around, does it go left-right or up-down?) Calendar grids often show the previous and next months' dates
 as padding when the start and end of the month aren't cleanly cut by the start and ends of the week. When going horizontally, the developer should have the option to show or hide those dates. When vertical, the developer should be able to decide if the grid
 is continuous or interrupted. (To pad with numbers or to pad with empty space.)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">- UI for changing the month and year of the grid. This can take the form of left-right arrows, scrolling, and/or dropdown for the month and a text field for the year.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Extra things:<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:12.0pt">- Calendar type. Most people use Gregorian, but a small number of people can choose otherwise for their systems. macOS gives me a bunch of options, but Windows only allows me to do Gregorian. This is a "wow
 wouldn't it be cool" optional feature.<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">- A 'today' button, which selects the current date.<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:12.0pt">- How to represent a date range with a calendar and a textbox, I'm not sure. The easy workaround would be to have the developer create two of these date pickers. But a way to select a range would be welcome.<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">- If we do also have a component for time, should we allow for the changing of timezones in the UI? Timezones are too much imo.<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">I'm relying on screenshots on Google for date pickers and NSDatePicker for what features they have. I'm sure I would be able to make use of this somewhere in my own Swing app.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">SWinxy<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">[1] <a href="https://en.wikipedia.org/wiki/Week" target="_blank">https://en.wikipedia.org/wiki/Week</a><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">On Thu, Aug 22, 2024 at 2:29</span><span style="font-size:12.0pt;font-family:"Arial",sans-serif"> </span><span style="font-size:12.0pt">AM Tejesh R <<a href="mailto:tejesh.r@oracle.com" target="_blank">tejesh.r@oracle.com</a>>
 wrote:<o:p></o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-IN" style="font-size:12.0pt;color:black">Hello Swing Community,</span><span lang="EN-IN" style="font-size:12.0pt">
<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-IN" style="font-size:12.0pt"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-IN" style="font-size:12.0pt;color:black">Swing has a rich set of UI components in the core Java Platform.<br>
But it lacks a Date Picker which is a significant gap for many applications and so we are considering revisiting the idea of a Date Picker in core Swing.</span><span lang="EN-IN" style="font-size:12.0pt"><br>
<span style="color:black"><br>
The function core of a DatePicker is to let a user select a day [and time?], or range of days [and time ? ],<br>
within optional application specified constraints.<br>
<br>
The JXDatePicker component was previously explored as part of the long defunct external SwingX project.</span><br>
<span style="color:black">This proposal does not imply reviving JXDatePicker, but being informed by it and date pickers for other platforms.</span><br>
<br>
<span style="color:black">Before even starting on this, we are seeking feedback from the community<br>
</span> <br>
<span style="color:black">- Is it of interest ?</span><br>
<br>
<span style="color:black">- Would you use it ?</span><br>
<br>
<span style="color:black">- What features must it have ?</span><br>
<br>
<span style="color:black">- What features are nice to have ?</span><br>
<br>
<span style="color:black">- Do you have any experiences of other date pickers that reinforce those responses ?</span><br>
<br>
<span style="color:black">- Anything else ?</span><br>
<br>
If we move forward, we would propose a JEP and also expect that we would deliver it first as a preview feature [1] , so that it may evolve in response to feedback before becoming final.<br>
<br>
<span style="color:black">Please let us know your thoughts and suggestions on this proposal.</span>
<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-IN" style="font-size:12.0pt"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-IN" style="font-size:12.0pt;color:black">Regards,</span><span lang="EN-IN" style="font-size:12.0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-IN" style="font-size:12.0pt;color:black">Tejesh R.</span><span lang="EN-IN" style="font-size:12.0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-IN" style="font-size:12.0pt;color:black">JDK client team</span><span lang="EN-IN" style="font-size:12.0pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-IN" style="font-size:12.0pt"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-IN" style="font-size:12.0pt;color:black">[1]
<a href="https://openjdk.org/jeps/12" target="_blank">https://openjdk.org/jeps/12</a></span><span lang="EN-IN" style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</body>
</html>