Author: tchemit Date: 2014-04-18 11:18:58 +0200 (Fri, 18 Apr 2014) New Revision: 1701 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1701 Log: fixes #4955 Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties trunk/tutti-ui-swing/src/main/help/fr/editCruise.html trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties =================================================================== --- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2014-04-17 16:15:53 UTC (rev 1700) +++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2014-04-18 09:18:58 UTC (rev 1701) @@ -1,28 +1,5 @@ -### -# #%L -# Tutti :: UI -# $Id$ -# $HeadURL$ -# %% -# Copyright (C) 2012 - 2014 Ifremer -# %% -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program. If not, see -# <http://www.gnu.org/licenses/gpl-3.0.html>. -# #L% -### #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Fri Mar 28 12:07:10 CET 2014 +#Fri Apr 18 09:21:37 CEST 2014 tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -169,10 +146,12 @@ tutti.editCruise.action.save.help=editCruise.html\#actions tutti.editCruise.action.viewGearCaracteristics.help= tutti.editCruise.field.beginDate.help=editCruise.html\#fields +tutti.editCruise.field.beginTime.help=editCruise.html\#fields tutti.editCruise.field.comment.help=editCruise.html\#fields tutti.editCruise.field.country.help=editCruise.html\#fields tutti.editCruise.field.departureLocation.help=editCruise.html\#fields tutti.editCruise.field.endDate.help=editCruise.html\#fields +tutti.editCruise.field.endTime.help=editCruise.html\#fields tutti.editCruise.field.gear.help=editCruise.html\#fields tutti.editCruise.field.headOfMission.help=editCruise.html\#fields tutti.editCruise.field.headOfSortRoom.help=editCruise.html\#fields Modified: trunk/tutti-ui-swing/src/main/help/fr/editCruise.html =================================================================== --- trunk/tutti-ui-swing/src/main/help/fr/editCruise.html 2014-04-17 16:15:53 UTC (rev 1700) +++ trunk/tutti-ui-swing/src/main/help/fr/editCruise.html 2014-04-18 09:18:58 UTC (rev 1701) @@ -78,10 +78,18 @@ <dd>contient la date de début de la campagne. La saisie se fait manuellement ou via le bouton situé à droite du champ. </dd> + <dt>Heure de début</dt> + <dd>contient l'heure de début de la campagne. La saisie se fait + manuellement. + </dd> <dt>Date de fin</dt> <dd>contient la date de fin de la campagne. La saisie se fait manuellement ou via le bouton situé à droite du champ. </dd> + <dt>Heure de fin</dt> + <dd>contient l'heure de fin de la campagne. La saisie se fait + manuellement. + </dd> <dt>Nom</dt> <dd>contient le nom de la campagne. Le champ est complété manuellement ou Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2014-04-17 16:15:53 UTC (rev 1700) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2014-04-18 09:18:58 UTC (rev 1701) @@ -41,6 +41,11 @@ _selectOnFocus: {true}; } +SimpleTimeEditor { + bean: {model}; + _selectOnFocus: {true}; +} + JXDatePicker { _selectOnFocus: {true}; } @@ -157,6 +162,11 @@ _help: {"tutti.editCruise.field.beginDate.help"}; } +#beginTimeField { + property: beginTime; + _help: {"tutti.editCruise.field.beginTime.help"}; +} + #endDateLabel { text: "tutti.editCruise.field.endDate"; labelFor: {endDateField}; @@ -170,6 +180,11 @@ _help: {"tutti.editCruise.field.endDate.help"}; } +#endTimeField { + property: endTime; + _help: {"tutti.editCruise.field.endTime.help"}; +} + #multirigNumberLabel { text: "tutti.editCruise.field.multirigNumber"; labelFor: {multirigNumberField}; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2014-04-17 16:15:53 UTC (rev 1700) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2014-04-18 09:18:58 UTC (rev 1701) @@ -37,6 +37,7 @@ fr.ifremer.tutti.ui.swing.util.attachment.ButtonAttachment jaxx.runtime.swing.editor.NumberEditor + jaxx.runtime.swing.editor.SimpleTimeEditor jaxx.runtime.swing.editor.bean.BeanFilterableComboBox jaxx.runtime.swing.editor.bean.BeanDoubleList jaxx.runtime.swing.CardLayout2Ext @@ -131,8 +132,12 @@ <JLabel id='beginDateLabel'/> </cell> <cell> - <JXDatePicker id='beginDateField' + <JPanel layout="{new BorderLayout()}"> + <JXDatePicker id='beginDateField' constraints="BorderLayout.CENTER" onActionPerformed='handler.setDate(event, "beginDate")'/> + <SimpleTimeEditor id='beginTimeField' constraints="BorderLayout.EAST" + constructorParams='this'/> + </JPanel> </cell> </row> @@ -150,8 +155,12 @@ <JLabel id='endDateLabel'/> </cell> <cell> - <JXDatePicker id='endDateField' - onActionPerformed='handler.setDate(event, "endDate")'/> + <JPanel layout="{new BorderLayout()}"> + <JXDatePicker id='endDateField' constraints="BorderLayout.CENTER" + onActionPerformed='handler.setDate(event, "endDate")'/> + <SimpleTimeEditor id='endTimeField' constraints="BorderLayout.EAST" + constructorParams='this'/> + </JPanel> </cell> </row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2014-04-17 16:15:53 UTC (rev 1700) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2014-04-18 09:18:58 UTC (rev 1701) @@ -26,6 +26,7 @@ import com.google.common.base.Predicate; import com.google.common.collect.Lists; +import jaxx.runtime.SwingUtil; import org.nuiton.jaxx.application.swing.util.CloseableUI; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.Attachment; @@ -152,6 +153,11 @@ initUI(this.ui); + // init date by hand (otherwise databinding in beforeInit method has already set the + // date in time editor, but the editor is still not init, so won't work) + ui.getBeginTimeField().setDate(getModel().getBeginDate()); + ui.getEndTimeField().setDate(getModel().getEndDate()); + PersistenceService persistenceService = getPersistenceService(); List<Person> users = persistenceService.getAllPerson(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java 2014-04-17 16:15:53 UTC (rev 1700) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java 2014-04-18 09:18:58 UTC (rev 1701) @@ -37,6 +37,8 @@ import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.nuiton.util.DateUtil; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; @@ -325,10 +327,13 @@ @Override public void setBeginDate(Date beginDate) { - Object oldValue = getBeginDate(); - editObject.setBeginDate(beginDate); - firePropertyChange(PROPERTY_BEGIN_DATE, oldValue, beginDate); - firePropertyChange(PROPERTY_CAN_GENERATE_NAME, null, isCanGenerateName()); + Date oldValue = getBeginDate(); + Date newDate = beginDate; + if (oldValue != null && beginDate != null) { + // reapply time from previous date + newDate = applyTime(beginDate, oldValue); + } + setBeginDate0(newDate); } @Override @@ -338,9 +343,13 @@ @Override public void setEndDate(Date endDate) { - Object oldValue = getEndDate(); - editObject.setEndDate(endDate); - firePropertyChange(PROPERTY_END_DATE, oldValue, endDate); + Date oldValue = getEndDate(); + Date newDate = endDate; + if (oldValue != null && endDate != null) { + // reapply time from previous date + newDate = applyTime(endDate, oldValue); + } + setEndDate0(newDate); } @Override @@ -518,4 +527,66 @@ public boolean containsAllHeadOfSortRoom(Collection<Person> headOfSortRoom) { return false; } + + //------------------------------------------------------------------------// + //-- Start - End Time ----------------------------------------------------// + //------------------------------------------------------------------------// + + public void setBeginTime(Date beginTime) { + Date oldValue = getBeginDate(); + if (oldValue != null && beginTime != null) { + // apply time to previous date + Date newDate = applyTime(oldValue, beginTime); + setBeginDate0(newDate); + } + } + + public void setEndTime(Date endTime) { + Date oldValue = getEndDate(); + if (oldValue != null && endTime != null) { + // apply time to previous date + Date newDate = applyTime(oldValue, endTime); + setEndDate0(newDate); + } + } + + //------------------------------------------------------------------------// + //-- Protected methods ---------------------------------------------------// + //------------------------------------------------------------------------// + + protected Date applyTime(Date date, Date timeDate) { + + Calendar cal = DateUtils.toCalendar(timeDate); + Date newDate = DateUtils.setHours(date, cal.get(Calendar.HOUR_OF_DAY)); + newDate = DateUtils.setMinutes(newDate, cal.get(Calendar.MINUTE)); + + return newDate; + } + + protected void setBeginDate0(Date beginDate) { + Date oldValue = getBeginDate(); + if (beginDate != null) { + Calendar calendar = DateUtil.getDefaultCalendar(beginDate); + calendar.set(Calendar.SECOND, 0); + editObject.setBeginDate(calendar.getTime()); + + } else { + editObject.setBeginDate(null); + } + firePropertyChange(PROPERTY_BEGIN_DATE, oldValue, getBeginDate()); + firePropertyChange(PROPERTY_CAN_GENERATE_NAME, null, isCanGenerateName()); + } + + protected void setEndDate0(Date endDate) { + Object oldValue = getEndDate(); + if (endDate != null) { + Calendar calendar = DateUtil.getDefaultCalendar(endDate); + calendar.set(Calendar.SECOND, 0); + editObject.setEndDate(calendar.getTime()); + + } else { + editObject.setEndDate(null); + } + firePropertyChange(PROPERTY_END_DATE, oldValue, getEndDate()); + } } \ No newline at end of file