Author: kmorin Date: 2013-01-11 15:50:40 +0100 (Fri, 11 Jan 2013) New Revision: 175 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/175 Log: mise en page de l'onglet des traits et calcul de la dur?\195?\169e 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.jaxx 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/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-validate-error-validation.xml trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 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-01-11 14:19:36 UTC (rev 174) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-11 14:50:40 UTC (rev 175) @@ -357,7 +357,8 @@ } #dureeField { - text: {getStringValue(model.getDuree())}; + text: {fr.ifremer.tutti.ui.swing.util.TuttiUIUtil.getDuration( + model.getGearShootingStartDate(), model.getGearShootingEndDate(), "tutti.duration.format")}; enabled: false; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-11 14:19:36 UTC (rev 174) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-11 14:50:40 UTC (rev 175) @@ -82,7 +82,7 @@ <field name='stationNumber' component='stationNumberField'/> <field name='fishingOperationNumber' component='fishingOperationNumberField'/> - <field name='date' component='dateField'/> + <field name='gearShootingStartDate' component='gearShootingStartDateField'/> <field name='comment' component='commentField'/> <field name='saisisseur' component='saisisseurList'/> <field name='gearShootingStartLatitude' component='gearShootingStartLatitudeDDField'/> @@ -135,13 +135,6 @@ <NumberEditor id='fishingOperationNumberField' constructorParams='this'/> </cell> - <cell> - <JLabel id='dateLabel'/> - </cell> - <cell weightx='0.3'> - <JXDatePicker id='dateField' - onActionPerformed='handler.setDate(event, "date")'/> - </cell> </row> <!-- Strate d'association / Sous Strate / Localité --> @@ -290,57 +283,63 @@ constructorParams='this'/> </cell> </row> - </Table> - </JPanel> - </cell> - </row> - <!-- Fishing operation valid / invalid--> - <row> - <cell> - <JToolBar id='fishingOperationValidPanel' - layout='{new BorderLayout()}'> - <JButton id='resetValidStateButton' - constraints='BorderLayout.WEST' - onActionPerformed="model.setFishingOperationValid(null)"/> - <JRadioButton id='fishingOperationResetRadio' - constraints='BorderLayout.EAST'/> - </JToolBar> - </cell> - <cell> - <HBox> - <JRadioButton id='fishingOperationValidRadio' - onActionPerformed='model.setFishingOperationValid(Boolean.TRUE)'/> - <JRadioButton id='fishingOperationInvalidRadio' - onActionPerformed='model.setFishingOperationValid(Boolean.FALSE)'/> - </HBox> - </cell> - <cell columns="4"> - <JPanel/> - </cell> - </row> + <!-- FishingOperation rectiligne / distance chalutee / durée --> + <row> + <cell> + <JLabel/> + </cell> + <cell> + <JCheckBox id='fishingOperationRectiligneCheckBox' + onItemStateChanged='handler.setBoolean(event, "fishingOperationRectiligne")'/> + </cell> + <cell> + <JPanel layout="{new BorderLayout()}"> + <JLabel id='distanceChaluteeLabel' + constraints='BorderLayout.WEST'/> + <NumberEditor id='distanceChaluteeField' + constraints='BorderLayout.CENTER' + constructorParams='this'/> + </JPanel> + </cell> + <cell> + <JLabel/> + </cell> + <cell> + <JPanel layout="{new BorderLayout()}"> + <JLabel id='dureeLabel' constraints='BorderLayout.WEST'/> + <JTextField id='dureeField' constraints='BorderLayout.CENTER'/> + </JPanel> + </cell> + </row> - <!-- FishingOperation rectiligne / distance chalutee / durée --> - <row> - <cell> - <JCheckBox id='fishingOperationRectiligneCheckBox' - onItemStateChanged='handler.setBoolean(event, "fishingOperationRectiligne")'/> - </cell> - <cell columns="3"> - <JPanel layout="{new BorderLayout()}"> - <JLabel id='distanceChaluteeLabel' - constraints='BorderLayout.WEST'/> - <NumberEditor id='distanceChaluteeField' - constraints='BorderLayout.CENTER' - constructorParams='this'/> + <!-- Fishing operation valid / invalid--> + <row> + <cell> + <JToolBar id='fishingOperationValidPanel' + layout='{new BorderLayout()}'> + <JButton id='resetValidStateButton' + constraints='BorderLayout.WEST' + onActionPerformed="model.setFishingOperationValid(null)"/> + <JRadioButton id='fishingOperationResetRadio' + constraints='BorderLayout.EAST'/> + </JToolBar> + </cell> + <cell> + <HBox> + <JRadioButton id='fishingOperationValidRadio' + onActionPerformed='model.setFishingOperationValid(Boolean.TRUE)'/> + <JRadioButton id='fishingOperationInvalidRadio' + onActionPerformed='model.setFishingOperationValid(Boolean.FALSE)'/> + </HBox> + </cell> + <cell columns="4"> + <JPanel/> + </cell> + </row> + </Table> </JPanel> </cell> - <cell anchor='west'> - <JLabel id='dureeLabel'/> - </cell> - <cell fill='horizontal'> - <JTextField id='dureeField'/> - </cell> </row> <!-- Actions d'import --> 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-01-11 14:19:36 UTC (rev 174) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-11 14:50:40 UTC (rev 175) @@ -91,7 +91,6 @@ this.fishingOperationMonitor = new TuttiBeanMonitor<EditFishingOperationUIModel>( EditFishingOperationUIModel.PROPERTY_STATION_NUMBER, EditFishingOperationUIModel.PROPERTY_FISHING_OPERATION_NUMBER, - EditFishingOperationUIModel.PROPERTY_DATE, EditFishingOperationUIModel.PROPERTY_STRATA, EditFishingOperationUIModel.PROPERTY_SUB_STRATA, EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_START_LATITUDE, @@ -102,7 +101,6 @@ EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_DATE, EditFishingOperationUIModel.PROPERTY_FISHING_OPERATION_RECTILIGNE, EditFishingOperationUIModel.PROPERTY_DISTANCE_CHALUTEE, - EditFishingOperationUIModel.PROPERTY_DUREE, EditFishingOperationUIModel.PROPERTY_FISHING_OPERATION_VALID, EditFishingOperationUIModel.PROPERTY_LOCATION, EditFishingOperationUIModel.PROPERTY_SAISISSEUR, 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-01-11 14:19:36 UTC (rev 174) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-11 14:50:40 UTC (rev 175) @@ -32,6 +32,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.spatial.SexagecimalPosition; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import java.util.Calendar; import java.util.Date; import java.util.List; import org.apache.commons.logging.Log; @@ -61,8 +62,6 @@ public static final String PROPERTY_FISHING_OPERATION_NUMBER = "fishingOperationNumber"; - public static final String PROPERTY_DATE = "date"; - public static final String PROPERTY_STRATA = "strata"; public static final String PROPERTY_SUB_STRATA = "subStrata"; @@ -109,8 +108,6 @@ public static final String PROPERTY_DISTANCE_CHALUTEE = "distanceChalutee"; - public static final String PROPERTY_DUREE = "duree"; - public static final String PROPERTY_FISHING_OPERATION_VALID = "fishingOperationValid"; public static final String PROPERTY_LOCATION = "location"; @@ -134,8 +131,6 @@ protected Integer fishingOperationNumber; - protected Date date; - protected FishingOperationLocation strata; protected FishingOperationLocation subStrata; @@ -156,22 +151,16 @@ protected Date gearShootingStartDate; - protected Integer gearShootingStartTime; - protected Float gearShootingEndLatitude; protected Float gearShootingEndLongitude; protected Date gearShootingEndDate; - protected Integer gearShootingEndTime; - protected boolean fishingOperationRectiligne; protected Float distanceChalutee; - protected Float duree; - protected Boolean fishingOperationValid; protected FishingOperationLocation location; @@ -254,16 +243,6 @@ firePropertyChange(PROPERTY_FISHING_OPERATION_NUMBER, oldValue, fishingOperationNumber); } - public Date getDate() { - return date; - } - - public void setDate(Date date) { - Object oldValue = getDate(); - this.date = date; - firePropertyChange(PROPERTY_DATE, oldValue, date); - } - public FishingOperationLocation getStrata() { return strata; } @@ -401,8 +380,11 @@ public void setGearShootingStartDate(Date gearShootingStartDate) { Object oldValue = getGearShootingStartDate(); - this.gearShootingStartDate = gearShootingStartDate; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_DATE, oldValue, gearShootingStartDate); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(gearShootingStartDate); + calendar.set(Calendar.SECOND, 0); + this.gearShootingStartDate = calendar.getTime(); + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_DATE, oldValue, this.gearShootingStartDate); } public Float getGearShootingEndLatitude() { @@ -511,8 +493,11 @@ public void setGearShootingEndDate(Date gearShootingEndDate) { Object oldValue = getGearShootingEndDate(); - this.gearShootingEndDate = gearShootingEndDate; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_DATE, oldValue, gearShootingEndDate); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(gearShootingEndDate); + calendar.set(Calendar.SECOND, 0); + this.gearShootingEndDate = calendar.getTime(); + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_DATE, oldValue, this.gearShootingEndDate); } public boolean isFishingOperationRectiligne() { @@ -535,16 +520,6 @@ firePropertyChange(PROPERTY_DISTANCE_CHALUTEE, oldValue, distanceChalutee); } - public Float getDuree() { - return duree; - } - - public void setDuree(Float duree) { - Object oldValue = getDuree(); - this.duree = duree; - firePropertyChange(PROPERTY_DUREE, oldValue, duree); - } - public Boolean getFishingOperationValid() { return fishingOperationValid; } 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-01-11 14:19:36 UTC (rev 174) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-01-11 14:50:40 UTC (rev 175) @@ -26,19 +26,23 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.service.TuttiServiceTechnicalException; +import java.awt.Color; +import java.awt.Component; +import java.awt.Cursor; +import java.io.File; +import java.text.DateFormat; +import java.util.Date; +import javax.swing.JOptionPane; +import javax.swing.UIManager; import org.apache.commons.beanutils.PropertyUtils; +import org.apache.commons.lang3.time.DurationFormatUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.decorator.HighlightPredicate; import org.jdesktop.swingx.decorator.Highlighter; import org.nuiton.util.FileUtil; -import javax.swing.JOptionPane; -import javax.swing.UIManager; -import java.awt.Color; -import java.awt.Component; -import java.awt.Cursor; -import java.io.File; +import static org.nuiton.i18n.I18n._; /** * Created: 14/06/12 @@ -244,4 +248,15 @@ public static Highlighter newForegroundColorHighlighter(HighlightPredicate predicate, Color color) { return new TuttiColorHighlighter(predicate, color, true); } + + public static String getDuration(Date startDate, Date endDate, String format) { + String duration = ""; + DateFormat df = DateFormat.getTimeInstance(); + if (startDate != null && endDate != null) { + log.info(df.format(startDate) + " " + df.format(endDate)); + duration = DurationFormatUtils.formatPeriod( + startDate.getTime(), endDate.getTime() + 60000, _(format)); + } + return duration; + } } 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-01-11 14:19:36 UTC (rev 174) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-01-11 14:50:40 UTC (rev 175) @@ -47,7 +47,7 @@ </field> - <field name="date"> + <field name="gearShootingStartDate"> <field-validator type="required" short-circuit="true"> <message>tutti.validator.error.fishingOperation.date.required</message> Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-01-11 14:19:36 UTC (rev 174) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-01-11 14:50:40 UTC (rev 175) @@ -47,7 +47,7 @@ </field> - <field name="date"> + <field name="gearShootingStartDate"> <field-validator type="required" short-circuit="true"> <message>tutti.validator.error.fishingOperation.date.required</message> Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-11 14:19:36 UTC (rev 174) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-11 14:50:40 UTC (rev 175) @@ -55,6 +55,7 @@ tutti.config.ui.config=Chemin du fichier de configuration des interfaces graphiques tutti.config.ui.shortcut.closePopup=Fermer une popup tutti.config.ui.showNumberEditorButton=Afficher le pavé numérique de saisie +tutti.duration.format=dj Hh m'm' tutti.label.attachmentEditor.file=Fichier tutti.label.attachmentEditor.fileComment=Commentaire tutti.label.attachmentEditor.fileName=Nom @@ -199,14 +200,14 @@ tutti.table.benthos.batch.header.speciesByGenusCode=Espèce tutti.table.benthos.batch.header.toConfirm=A Confirmer tutti.table.benthos.batch.header.weight=Poids -tutti.table.fishing.environment.header.key=Paramètre +tutti.table.fishing.environment.header.key=Caractéristique tutti.table.fishing.environment.header.value=Valeur -tutti.table.fishing.gearShooting.header.key=Paramètre +tutti.table.fishing.gearShooting.header.key=Caractéristique tutti.table.fishing.gearShooting.header.value=Valeur tutti.table.fishing.hydrology.header.averageValue=Moyenne tutti.table.fishing.hydrology.header.gearShootingEndValue=Fin de traîne tutti.table.fishing.hydrology.header.gearShootingStartValue=Début de traîne -tutti.table.fishing.hydrology.header.key=Paramètre +tutti.table.fishing.hydrology.header.key=Caractéristique tutti.table.macrowaste.batch.header.comment=Commentaire tutti.table.macrowaste.batch.header.file=Pièces jointes tutti.table.macrowaste.batch.header.macroWasteCategory=Catégorie