r451 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing java/fr/ifremer/tutti/ui/swing/content/operation java/fr/ifremer/tutti/ui/swing/util java/fr/ifremer/tutti/ui/swing/util/editor resources/fr/ifremer/tutti/ui/swing/content/operation
Author: kmorin Date: 2013-02-20 18:25:51 +0100 (Wed, 20 Feb 2013) New Revision: 451 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/451 Log: fixes #2020: [ERGONOMIE] Dates - Permettre l'?\195?\169dition manuelle des dates fixes #2022: [TRAIT] Saisies des dates / heures - probl?\195?\168mes de r?\195?\169initialisation des champs fixes #2023: [TRAIT] Saisies des dates / heures - modification date de fin et de d?\195?\169but fixes #2024: [TRAIT] Saisies des dates / heures - perte des heures Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/SimpleTimeEditorHandler.java trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-02-20 13:03:56 UTC (rev 450) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-02-20 17:25:51 UTC (rev 451) @@ -72,6 +72,8 @@ import java.awt.Font; import java.awt.Frame; import java.awt.event.ActionEvent; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; import java.awt.event.ItemEvent; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; @@ -79,10 +81,13 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Serializable; +import java.text.ParseException; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; import static org.nuiton.i18n.I18n._; @@ -497,14 +502,28 @@ editor.init(); } - protected void initDatePicker(JXDatePicker picker) { + protected void initDatePicker(final JXDatePicker picker) { if (log.isDebugEnabled()) { log.debug("disable JXDatePicker editor" + picker.getName()); } String dateFormat = getConfig().getDateFormat(); picker.setFormats(dateFormat); - picker.getEditor().setEditable(false); + picker.getEditor().addFocusListener(new FocusAdapter() { + + @Override + public void focusLost(FocusEvent e) { + try { + picker.commitEdit(); + + } catch (ParseException ex) { + if (log.isDebugEnabled()) { + log.debug("format error", ex); + } + } + } + + }); } public <O> Decorator<O> getDecorator(Class<O> type, String name) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-02-20 13:03:56 UTC (rev 450) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-02-20 17:25:51 UTC (rev 451) @@ -284,7 +284,7 @@ } #gearShootingStartTimeField { - property: gearShootingStartDate; + property: gearShootingStartTime; date: {model.getGearShootingStartDate()}; } @@ -371,7 +371,7 @@ } #gearShootingEndTimeField { - property: gearShootingEndDate; + property: gearShootingEndTime; date: {model.getGearShootingEndDate()}; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-02-20 13:03:56 UTC (rev 450) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-02-20 17:25:51 UTC (rev 451) @@ -58,10 +58,12 @@ import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; +import org.jdesktop.swingx.JXDatePicker; import static org.nuiton.i18n.I18n._; @@ -93,7 +95,8 @@ //check if the user changed the date and not only the time) Date oldDate = (Date) evt.getOldValue(); Date newDate = (Date) evt.getNewValue(); - if (oldDate == null || !DateUtils.isSameDay(oldDate, newDate)) { + if (getModel().getGearShootingEndDate() == null && + (oldDate == null || !DateUtils.isSameDay(oldDate, newDate))) { getModel().setGearShootingEndDate(newDate); } } @@ -466,90 +469,6 @@ }; } -// public void clearFishingOperation() { -// EditFishingOperationUIModel model = getModel(); -// model.fromBean(new FishingOperation()); -// -// model.setModify(false); -// fishingOperationMonitor.clearModified(); -// -// model.setEmpty(true); -// -// } - -// public void selectFishingOperation(FishingOperation bean) { -// boolean empty = bean == null; -// -// EditFishingOperationUIModel editFishingOperationUIModel = getModel(); -// -// uninstallStartDateListener(); -// -// if (empty || !bean.equals(editFishingOperationUIModel.getFishingOperation()) || isAModelModified()) { -// if (empty) { -// bean = new FishingOperation(); -// } -// -// FishingOperationLocation strata = bean.getStrata(); -// FishingOperationLocation subStrata = bean.getSubStrata(); -// FishingOperationLocation location = bean.getLocation(); -// -// Cruise cruise = bean.getCruise(); -// if (cruise != null) { -// // update gear universe -// ui.getGearComboBox().setData(Lists.newArrayList(cruise.getGear())); -// -// // update vessel universe -// ui.getVesselComboBox().setData(Lists.newArrayList(cruise.getVessel())); -// } -// -// editFishingOperationUIModel.fromBean(bean); -// -// // to be sure combo list will be reloaded -// editFishingOperationUIModel.setStrata(null); -// editFishingOperationUIModel.setSubStrata(null); -// editFishingOperationUIModel.setLocation(null); -// editFishingOperationUIModel.convertGearShootingCoordinatesDDToDMS(); -// -// if (strata != null) { -// ui.getStrataComboBox().setSelectedItem(strata); -// } -// -// if (subStrata != null) { -// ui.getSubStrataComboBox().setSelectedItem(subStrata); -// } -// -// if (location != null) { -// ui.getLocationComboBox().setSelectedItem(location); -// } -// -// editFishingOperationUIModel.setFishingOperation(bean); -// -// // update saisissuer selection -// List<Person> saisisseur = editFishingOperationUIModel.getSaisisseur(); -// ui.getSaisisseurList().getModel().setSelected(saisisseur); -// -// // update model empty property -// editFishingOperationUIModel.setEmpty(empty); -// -// //reset gear shooting -// GearShootingTabUI gearShootingTab = ui.getGearShootingTabContent(); -// gearShootingTab.getHandler().reset(bean); -// -// //reset environment -// EnvironmentTabUI environmentTab = ui.getEnvironmentTabContent(); -// environmentTab.getHandler().reset(bean); -// -// //reset hydrology -// HydrologyTabUI hydrologyTab = ui.getHydrologyTabContent(); -// hydrologyTab.getHandler().reset(bean); -// -// editFishingOperationUIModel.setModify(false); -// fishingOperationMonitor.clearModified(); -// -// editFishingOperationUIModel.addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_DATE, startDateListener); -// } -// } - public void uninstallStartDateListener() { getModel().removePropertyChangeListener(EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_DATE, startDateListener); } @@ -573,6 +492,19 @@ public TuttiBeanMonitor<EditFishingOperationUIModel> getFishingOperationMonitor() { return fishingOperationMonitor; } + + @Override + public void setDate(ActionEvent event, String property) { + JXDatePicker field = (JXDatePicker) event.getSource(); + Date value = field.getDate(); + Date date = (Date) TuttiUIUtil.getProperty(getModel(), property); + if (value != null && date != null) { + Calendar cal = DateUtils.toCalendar(date); + value = DateUtils.setHours(value, cal.get(Calendar.HOUR_OF_DAY)); + value = DateUtils.setMinutes(value, cal.get(Calendar.MINUTE)); + } + TuttiUIUtil.setProperty(getModel(), property, value); + } //------------------------------------------------------------------------// //-- Protected methods --// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-02-20 13:03:56 UTC (rev 450) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-02-20 17:25:51 UTC (rev 451) @@ -43,6 +43,7 @@ import java.util.Calendar; import java.util.Date; import java.util.List; +import org.apache.commons.lang3.time.DateUtils; import static org.nuiton.i18n.I18n.n_; @@ -91,7 +92,7 @@ public static final String PROPERTY_GEAR_SHOOTING_START_LONGITUDE_SECOND = "gearShootingStartLongitudeSecond"; public static final String PROPERTY_GEAR_SHOOTING_START_DATE = "gearShootingStartDate"; - + public static final String PROPERTY_GEAR_SHOOTING_END_LATITUDE = "gearShootingEndLatitude"; public static final String PROPERTY_GEAR_SHOOTING_END_LATITUDE_DEGREE = "gearShootingEndLatitudeDegree"; @@ -432,8 +433,7 @@ public void setGearShootingStartDate(Date gearShootingStartDate) { Object oldValue = getGearShootingStartDate(); if (gearShootingStartDate != null) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(gearShootingStartDate); + Calendar calendar = DateUtil.getDefaultCalendar(gearShootingStartDate); calendar.set(Calendar.SECOND, 0); this.gearShootingStartDate = calendar.getTime(); @@ -442,6 +442,13 @@ } firePropertyChange(PROPERTY_GEAR_SHOOTING_START_DATE, oldValue, this.gearShootingStartDate); } + + public void setGearShootingStartTime(Date gearShootingStartDate) { + Object oldValue = getGearShootingStartDate(); + if (oldValue != null) { + setGearShootingStartDate(gearShootingStartDate); + } + } public Float getGearShootingEndLatitude() { return gearShootingEndLatitude; @@ -586,8 +593,7 @@ public void setGearShootingEndDate(Date gearShootingEndDate) { Object oldValue = getGearShootingEndDate(); if (gearShootingEndDate != null) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(gearShootingEndDate); + Calendar calendar = DateUtil.getDefaultCalendar(gearShootingEndDate); calendar.set(Calendar.SECOND, 0); this.gearShootingEndDate = calendar.getTime(); @@ -596,6 +602,13 @@ } firePropertyChange(PROPERTY_GEAR_SHOOTING_END_DATE, oldValue, this.gearShootingEndDate); } + + public void setGearShootingEndTime(Date gearShootingEndDate) { + Object oldValue = getGearShootingEndDate(); + if (oldValue != null) { + setGearShootingEndDate(gearShootingEndDate); + } + } public boolean isFishingOperationRectiligne() { return fishingOperationRectiligne; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-02-20 13:03:56 UTC (rev 450) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-02-20 17:25:51 UTC (rev 451) @@ -317,7 +317,7 @@ public static String getDuration(Date startDate, Date endDate) { String duration = ""; - if (startDate != null && endDate != null) { + if (startDate != null && endDate != null && !startDate.after(endDate)) { duration = DurationFormatUtils.formatPeriod( startDate.getTime(), endDate.getTime(), Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/SimpleTimeEditorHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/SimpleTimeEditorHandler.java 2013-02-20 13:03:56 UTC (rev 450) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/SimpleTimeEditorHandler.java 2013-02-20 17:25:51 UTC (rev 451) @@ -99,6 +99,9 @@ log.debug("date changed : new value " + hours + ":" + minutes); } model.setTimeModel(hours * 60 + minutes); + + } else { + model.setTimeModel(null); } } Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-02-20 13:03:56 UTC (rev 450) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-02-20 17:25:51 UTC (rev 451) @@ -96,7 +96,7 @@ <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"> - <![CDATA[ gearShootingEndDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) <= 0 ]]> + <![CDATA[ gearShootingEndDate == null || !gearShootingStartDate.after(gearShootingEndDate) ]]> </param> <message>tutti.validator.error.fishingOperation.dates.endBeforeStart</message> </field-validator> @@ -107,7 +107,7 @@ <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"> - <![CDATA[ gearShootingEndDate == null || gearShootingStartDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) <= 0 ]]> + <![CDATA[ gearShootingEndDate == null || gearShootingStartDate == null || !gearShootingStartDate.after(gearShootingEndDate) ]]> </param> <message>tutti.validator.error.fishingOperation.dates.endBeforeStart</message> </field-validator>
participants (1)
-
kmorin@users.forge.codelutin.com