codenameone / CodenameOne

Cross-platform framework for building truly native mobile apps with Java or Kotlin. Write Once Run Anywhere support for iOS, Android, Desktop & Web.

Home Page:https://www.codenameone.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DateSpinner3D -> Exception: java.lang.IllegalArgumentException - End day 31 before current day 31

fjosores opened this issue · comments

DateSpinner3D is not behaving correctly when start date is the 31st day of the month.

[EDT] 0:2:7,789 - Exception: java.lang.IllegalArgumentException - End day 31 before current day 31
java.lang.IllegalArgumentException: End day 31 before current day 31
at com.codename1.ui.spinner.DateSpinner3D.setCurrentDay(DateSpinner3D.java:443)
at com.codename1.ui.spinner.DateSpinner3D.setValue(DateSpinner3D.java:616)
at com.codename1.ui.spinner.Picker$1.createDatePicker3D(Picker.java:510)
at com.codename1.ui.spinner.Picker$1.showInteractionDialog(Picker.java:623)
at com.codename1.ui.spinner.Picker$1.actionPerformed(Picker.java:313)
at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:349)
at com.codename1.ui.Button.fireActionEvent(Button.java:687)
at com.codename1.ui.Button.released(Button.java:728)
at com.codename1.ui.Button.pointerReleased(Button.java:835)
at com.codename1.ui.LeadUtil.pointerReleased(LeadUtil.java:153)
at com.codename1.ui.Form.pointerReleased(Form.java:3881)
at com.codename1.ui.Component.pointerReleased(Component.java:5265)
at com.codename1.ui.Display.handleEvent(Display.java:2409)
at com.codename1.ui.Display.edtLoopImpl(Display.java:1285)
at com.codename1.ui.Display.mainEDTLoop(Display.java:1203)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

After comparing source code 7.0.75 and 7.0.113 constant endDay has changed from 32 to 31, without taking into account comparison (endDay -1 < currentDay).

To reproduce this you

            PickerComponent gui_inputFechaNac = PickerComponent.createDate(new Date()).label("Fecha de nacimiento")
	SimpleDateFormat sdf = new SimpleDateFormat(LepConstantes.DATE.DDMMYYYY);
	Date hoy = Calendar.getInstance().getTime();
	gui_inputFechaNac.getPicker().setFormatter(sdf);

	try {
		gui_inputFechaNac.getPicker().setStartDate(sdf.parse("01/01/1900"));
		gui_inputFechaNac.getPicker().setEndDate(hoy);
		gui_inputFechaNac.getPicker().setUseLightweightPopup(true);
	} catch (ParseException e) {
		handleException(e);
	}

when date is 31st of July it causes a java.lang.IllegalArgumentException.