Java highlighting specific dates in JCalendar cell
I followed the codes here to set the colors of a specific date in Toedter's Calendar
. The problem I am facing now is that it is not highlighting the correct cell. In my example I have used 14th and 15th of June but it highlighted 8th and 9th.
And heres my code:
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date sdate= null;
String d = null;
for(int i =0;i<pd.size();i++)
d = pd.get(i).getDate();
try
sdate = (Date)formatter.parse(d);
if(events.contains(sdate))
else
events.add(sdate);
System.out.println(sdate);
catch(ParseException r)
System.out.println("error");
//arraylist of events
for(int i = 0; i < events.size(); i++)
Calendar cal1 = Calendar.getInstance();
cal1.setTime(events.get(i));
int day1 = cal1.get(Calendar.DAY_OF_MONTH);
int month1 = cal1.get(Calendar.MONTH);
int year1 = cal1.get(Calendar.YEAR);
//selected month and year on JCalendar
if(month == month1 && year == year1)
// Calculate the offset of the first day of the month
cal.set(Calendar.DAY_OF_MONTH,1);
int offset = cal.get(Calendar.DAY_OF_WEEK) -1;
component[day1 + offset ].setBackground(Color.blue);
java jcalendar
add a comment |
I followed the codes here to set the colors of a specific date in Toedter's Calendar
. The problem I am facing now is that it is not highlighting the correct cell. In my example I have used 14th and 15th of June but it highlighted 8th and 9th.
And heres my code:
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date sdate= null;
String d = null;
for(int i =0;i<pd.size();i++)
d = pd.get(i).getDate();
try
sdate = (Date)formatter.parse(d);
if(events.contains(sdate))
else
events.add(sdate);
System.out.println(sdate);
catch(ParseException r)
System.out.println("error");
//arraylist of events
for(int i = 0; i < events.size(); i++)
Calendar cal1 = Calendar.getInstance();
cal1.setTime(events.get(i));
int day1 = cal1.get(Calendar.DAY_OF_MONTH);
int month1 = cal1.get(Calendar.MONTH);
int year1 = cal1.get(Calendar.YEAR);
//selected month and year on JCalendar
if(month == month1 && year == year1)
// Calculate the offset of the first day of the month
cal.set(Calendar.DAY_OF_MONTH,1);
int offset = cal.get(Calendar.DAY_OF_WEEK) -1;
component[day1 + offset ].setBackground(Color.blue);
java jcalendar
add a comment |
I followed the codes here to set the colors of a specific date in Toedter's Calendar
. The problem I am facing now is that it is not highlighting the correct cell. In my example I have used 14th and 15th of June but it highlighted 8th and 9th.
And heres my code:
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date sdate= null;
String d = null;
for(int i =0;i<pd.size();i++)
d = pd.get(i).getDate();
try
sdate = (Date)formatter.parse(d);
if(events.contains(sdate))
else
events.add(sdate);
System.out.println(sdate);
catch(ParseException r)
System.out.println("error");
//arraylist of events
for(int i = 0; i < events.size(); i++)
Calendar cal1 = Calendar.getInstance();
cal1.setTime(events.get(i));
int day1 = cal1.get(Calendar.DAY_OF_MONTH);
int month1 = cal1.get(Calendar.MONTH);
int year1 = cal1.get(Calendar.YEAR);
//selected month and year on JCalendar
if(month == month1 && year == year1)
// Calculate the offset of the first day of the month
cal.set(Calendar.DAY_OF_MONTH,1);
int offset = cal.get(Calendar.DAY_OF_WEEK) -1;
component[day1 + offset ].setBackground(Color.blue);
java jcalendar
I followed the codes here to set the colors of a specific date in Toedter's Calendar
. The problem I am facing now is that it is not highlighting the correct cell. In my example I have used 14th and 15th of June but it highlighted 8th and 9th.
And heres my code:
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date sdate= null;
String d = null;
for(int i =0;i<pd.size();i++)
d = pd.get(i).getDate();
try
sdate = (Date)formatter.parse(d);
if(events.contains(sdate))
else
events.add(sdate);
System.out.println(sdate);
catch(ParseException r)
System.out.println("error");
//arraylist of events
for(int i = 0; i < events.size(); i++)
Calendar cal1 = Calendar.getInstance();
cal1.setTime(events.get(i));
int day1 = cal1.get(Calendar.DAY_OF_MONTH);
int month1 = cal1.get(Calendar.MONTH);
int year1 = cal1.get(Calendar.YEAR);
//selected month and year on JCalendar
if(month == month1 && year == year1)
// Calculate the offset of the first day of the month
cal.set(Calendar.DAY_OF_MONTH,1);
int offset = cal.get(Calendar.DAY_OF_WEEK) -1;
component[day1 + offset ].setBackground(Color.blue);
java jcalendar
java jcalendar
edited May 23 '17 at 10:33
Community♦
11
11
asked Jun 17 '16 at 15:23
NormanNorman
208
208
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
As an alternative to changing the components, implement IDateEvaluator
and return the desired colors, as suggested here. It's not clear where your Calendar
offset goes awry. The example below uses List::contains
to identify special dates. Just be sure to clear the time fields on the calendar dates you add()
.
import com.toedter.calendar.IDateEvaluator;
import com.toedter.calendar.JCalendar;
import java.awt.Color;
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.swing.JFrame;
/**
* @see https://stackoverflow.com/a/37899883/230513
* @see https://stackoverflow.com/q/25501373/230513
*/
public class HighlightTest
private static class HighlightEvaluator implements IDateEvaluator
private final List<Date> list = new ArrayList<>();
public void add(Date date)
list.add(date);
@Override
public boolean isSpecial(Date date)
return list.contains(date);
@Override
public Color getSpecialForegroundColor()
return Color.red.darker();
@Override
public Color getSpecialBackroundColor()
return Color.blue;
@Override
public String getSpecialTooltip()
return "Highlighted event.";
@Override
public boolean isInvalid(Date date)
return false;
@Override
public Color getInvalidForegroundColor()
return null;
@Override
public Color getInvalidBackroundColor()
return null;
@Override
public String getInvalidTooltip()
return null;
private void display()
JFrame f = new JFrame("Highlight Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
HighlightEvaluator evaluator = new HighlightEvaluator();
evaluator.add(createDate(14));
evaluator.add(createDate(15));
JCalendar jc = new JCalendar();
jc.getDayChooser().addDateEvaluator(evaluator);
jc.setCalendar(jc.getCalendar());
f.add(jc);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
private Date createDate(int d)
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, d);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return (c.getTime());
public static void main(String args)
EventQueue.invokeLater(new HighlightTest()::display);
can multiple evaluators be added to the same JDateChooser component?
– Hari Kiran
Oct 15 '18 at 13:19
Yes, as suggested here; alternatively, anIDateEvaluator
implementation can handle this internally.
– trashgod
Oct 15 '18 at 15:24
if you don't mind, could you elaborate the alternate approach? It'd really help me understand the background process
– Hari Kiran
Oct 15 '18 at 15:41
Instead of multiple evaluators, this example manages aList<Date>
.
– trashgod
Oct 15 '18 at 16:07
1
That's up to your implementation ofIDateEvaluator
; the example above invokesList::contains
to scan the list.
– trashgod
Oct 25 '18 at 16:51
|
show 3 more comments
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f37885199%2fjava-highlighting-specific-dates-in-jcalendar-cell%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
As an alternative to changing the components, implement IDateEvaluator
and return the desired colors, as suggested here. It's not clear where your Calendar
offset goes awry. The example below uses List::contains
to identify special dates. Just be sure to clear the time fields on the calendar dates you add()
.
import com.toedter.calendar.IDateEvaluator;
import com.toedter.calendar.JCalendar;
import java.awt.Color;
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.swing.JFrame;
/**
* @see https://stackoverflow.com/a/37899883/230513
* @see https://stackoverflow.com/q/25501373/230513
*/
public class HighlightTest
private static class HighlightEvaluator implements IDateEvaluator
private final List<Date> list = new ArrayList<>();
public void add(Date date)
list.add(date);
@Override
public boolean isSpecial(Date date)
return list.contains(date);
@Override
public Color getSpecialForegroundColor()
return Color.red.darker();
@Override
public Color getSpecialBackroundColor()
return Color.blue;
@Override
public String getSpecialTooltip()
return "Highlighted event.";
@Override
public boolean isInvalid(Date date)
return false;
@Override
public Color getInvalidForegroundColor()
return null;
@Override
public Color getInvalidBackroundColor()
return null;
@Override
public String getInvalidTooltip()
return null;
private void display()
JFrame f = new JFrame("Highlight Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
HighlightEvaluator evaluator = new HighlightEvaluator();
evaluator.add(createDate(14));
evaluator.add(createDate(15));
JCalendar jc = new JCalendar();
jc.getDayChooser().addDateEvaluator(evaluator);
jc.setCalendar(jc.getCalendar());
f.add(jc);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
private Date createDate(int d)
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, d);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return (c.getTime());
public static void main(String args)
EventQueue.invokeLater(new HighlightTest()::display);
can multiple evaluators be added to the same JDateChooser component?
– Hari Kiran
Oct 15 '18 at 13:19
Yes, as suggested here; alternatively, anIDateEvaluator
implementation can handle this internally.
– trashgod
Oct 15 '18 at 15:24
if you don't mind, could you elaborate the alternate approach? It'd really help me understand the background process
– Hari Kiran
Oct 15 '18 at 15:41
Instead of multiple evaluators, this example manages aList<Date>
.
– trashgod
Oct 15 '18 at 16:07
1
That's up to your implementation ofIDateEvaluator
; the example above invokesList::contains
to scan the list.
– trashgod
Oct 25 '18 at 16:51
|
show 3 more comments
As an alternative to changing the components, implement IDateEvaluator
and return the desired colors, as suggested here. It's not clear where your Calendar
offset goes awry. The example below uses List::contains
to identify special dates. Just be sure to clear the time fields on the calendar dates you add()
.
import com.toedter.calendar.IDateEvaluator;
import com.toedter.calendar.JCalendar;
import java.awt.Color;
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.swing.JFrame;
/**
* @see https://stackoverflow.com/a/37899883/230513
* @see https://stackoverflow.com/q/25501373/230513
*/
public class HighlightTest
private static class HighlightEvaluator implements IDateEvaluator
private final List<Date> list = new ArrayList<>();
public void add(Date date)
list.add(date);
@Override
public boolean isSpecial(Date date)
return list.contains(date);
@Override
public Color getSpecialForegroundColor()
return Color.red.darker();
@Override
public Color getSpecialBackroundColor()
return Color.blue;
@Override
public String getSpecialTooltip()
return "Highlighted event.";
@Override
public boolean isInvalid(Date date)
return false;
@Override
public Color getInvalidForegroundColor()
return null;
@Override
public Color getInvalidBackroundColor()
return null;
@Override
public String getInvalidTooltip()
return null;
private void display()
JFrame f = new JFrame("Highlight Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
HighlightEvaluator evaluator = new HighlightEvaluator();
evaluator.add(createDate(14));
evaluator.add(createDate(15));
JCalendar jc = new JCalendar();
jc.getDayChooser().addDateEvaluator(evaluator);
jc.setCalendar(jc.getCalendar());
f.add(jc);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
private Date createDate(int d)
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, d);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return (c.getTime());
public static void main(String args)
EventQueue.invokeLater(new HighlightTest()::display);
can multiple evaluators be added to the same JDateChooser component?
– Hari Kiran
Oct 15 '18 at 13:19
Yes, as suggested here; alternatively, anIDateEvaluator
implementation can handle this internally.
– trashgod
Oct 15 '18 at 15:24
if you don't mind, could you elaborate the alternate approach? It'd really help me understand the background process
– Hari Kiran
Oct 15 '18 at 15:41
Instead of multiple evaluators, this example manages aList<Date>
.
– trashgod
Oct 15 '18 at 16:07
1
That's up to your implementation ofIDateEvaluator
; the example above invokesList::contains
to scan the list.
– trashgod
Oct 25 '18 at 16:51
|
show 3 more comments
As an alternative to changing the components, implement IDateEvaluator
and return the desired colors, as suggested here. It's not clear where your Calendar
offset goes awry. The example below uses List::contains
to identify special dates. Just be sure to clear the time fields on the calendar dates you add()
.
import com.toedter.calendar.IDateEvaluator;
import com.toedter.calendar.JCalendar;
import java.awt.Color;
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.swing.JFrame;
/**
* @see https://stackoverflow.com/a/37899883/230513
* @see https://stackoverflow.com/q/25501373/230513
*/
public class HighlightTest
private static class HighlightEvaluator implements IDateEvaluator
private final List<Date> list = new ArrayList<>();
public void add(Date date)
list.add(date);
@Override
public boolean isSpecial(Date date)
return list.contains(date);
@Override
public Color getSpecialForegroundColor()
return Color.red.darker();
@Override
public Color getSpecialBackroundColor()
return Color.blue;
@Override
public String getSpecialTooltip()
return "Highlighted event.";
@Override
public boolean isInvalid(Date date)
return false;
@Override
public Color getInvalidForegroundColor()
return null;
@Override
public Color getInvalidBackroundColor()
return null;
@Override
public String getInvalidTooltip()
return null;
private void display()
JFrame f = new JFrame("Highlight Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
HighlightEvaluator evaluator = new HighlightEvaluator();
evaluator.add(createDate(14));
evaluator.add(createDate(15));
JCalendar jc = new JCalendar();
jc.getDayChooser().addDateEvaluator(evaluator);
jc.setCalendar(jc.getCalendar());
f.add(jc);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
private Date createDate(int d)
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, d);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return (c.getTime());
public static void main(String args)
EventQueue.invokeLater(new HighlightTest()::display);
As an alternative to changing the components, implement IDateEvaluator
and return the desired colors, as suggested here. It's not clear where your Calendar
offset goes awry. The example below uses List::contains
to identify special dates. Just be sure to clear the time fields on the calendar dates you add()
.
import com.toedter.calendar.IDateEvaluator;
import com.toedter.calendar.JCalendar;
import java.awt.Color;
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.swing.JFrame;
/**
* @see https://stackoverflow.com/a/37899883/230513
* @see https://stackoverflow.com/q/25501373/230513
*/
public class HighlightTest
private static class HighlightEvaluator implements IDateEvaluator
private final List<Date> list = new ArrayList<>();
public void add(Date date)
list.add(date);
@Override
public boolean isSpecial(Date date)
return list.contains(date);
@Override
public Color getSpecialForegroundColor()
return Color.red.darker();
@Override
public Color getSpecialBackroundColor()
return Color.blue;
@Override
public String getSpecialTooltip()
return "Highlighted event.";
@Override
public boolean isInvalid(Date date)
return false;
@Override
public Color getInvalidForegroundColor()
return null;
@Override
public Color getInvalidBackroundColor()
return null;
@Override
public String getInvalidTooltip()
return null;
private void display()
JFrame f = new JFrame("Highlight Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
HighlightEvaluator evaluator = new HighlightEvaluator();
evaluator.add(createDate(14));
evaluator.add(createDate(15));
JCalendar jc = new JCalendar();
jc.getDayChooser().addDateEvaluator(evaluator);
jc.setCalendar(jc.getCalendar());
f.add(jc);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
private Date createDate(int d)
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, d);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return (c.getTime());
public static void main(String args)
EventQueue.invokeLater(new HighlightTest()::display);
edited May 23 '17 at 12:10
Community♦
11
11
answered Jun 18 '16 at 17:42
trashgodtrashgod
188k17142722
188k17142722
can multiple evaluators be added to the same JDateChooser component?
– Hari Kiran
Oct 15 '18 at 13:19
Yes, as suggested here; alternatively, anIDateEvaluator
implementation can handle this internally.
– trashgod
Oct 15 '18 at 15:24
if you don't mind, could you elaborate the alternate approach? It'd really help me understand the background process
– Hari Kiran
Oct 15 '18 at 15:41
Instead of multiple evaluators, this example manages aList<Date>
.
– trashgod
Oct 15 '18 at 16:07
1
That's up to your implementation ofIDateEvaluator
; the example above invokesList::contains
to scan the list.
– trashgod
Oct 25 '18 at 16:51
|
show 3 more comments
can multiple evaluators be added to the same JDateChooser component?
– Hari Kiran
Oct 15 '18 at 13:19
Yes, as suggested here; alternatively, anIDateEvaluator
implementation can handle this internally.
– trashgod
Oct 15 '18 at 15:24
if you don't mind, could you elaborate the alternate approach? It'd really help me understand the background process
– Hari Kiran
Oct 15 '18 at 15:41
Instead of multiple evaluators, this example manages aList<Date>
.
– trashgod
Oct 15 '18 at 16:07
1
That's up to your implementation ofIDateEvaluator
; the example above invokesList::contains
to scan the list.
– trashgod
Oct 25 '18 at 16:51
can multiple evaluators be added to the same JDateChooser component?
– Hari Kiran
Oct 15 '18 at 13:19
can multiple evaluators be added to the same JDateChooser component?
– Hari Kiran
Oct 15 '18 at 13:19
Yes, as suggested here; alternatively, an
IDateEvaluator
implementation can handle this internally.– trashgod
Oct 15 '18 at 15:24
Yes, as suggested here; alternatively, an
IDateEvaluator
implementation can handle this internally.– trashgod
Oct 15 '18 at 15:24
if you don't mind, could you elaborate the alternate approach? It'd really help me understand the background process
– Hari Kiran
Oct 15 '18 at 15:41
if you don't mind, could you elaborate the alternate approach? It'd really help me understand the background process
– Hari Kiran
Oct 15 '18 at 15:41
Instead of multiple evaluators, this example manages a
List<Date>
.– trashgod
Oct 15 '18 at 16:07
Instead of multiple evaluators, this example manages a
List<Date>
.– trashgod
Oct 15 '18 at 16:07
1
1
That's up to your implementation of
IDateEvaluator
; the example above invokes List::contains
to scan the list.– trashgod
Oct 25 '18 at 16:51
That's up to your implementation of
IDateEvaluator
; the example above invokes List::contains
to scan the list.– trashgod
Oct 25 '18 at 16:51
|
show 3 more comments
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f37885199%2fjava-highlighting-specific-dates-in-jcalendar-cell%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown