r153 - 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/content/protocol resources/i18n
Author: kmorin Date: 2013-01-04 18:38:11 +0100 (Fri, 04 Jan 2013) New Revision: 153 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/153 Log: refs #1899 [Ecran Trait] Cr?\195?\169er un ?\195?\169diteur de position spatiale Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.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/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/content/protocol/EditProtocolUIModel.java 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/TuttiUI.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java 2013-01-04 09:13:06 UTC (rev 152) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java 2013-01-04 17:38:11 UTC (rev 153) @@ -46,6 +46,13 @@ public static final String INT_1_DIGITS_PATTERN = "\\d{0,1}"; /** + * Pattern to use for short numeric values in editors with max 2 digits. + * + * @since 0.1 + */ + public static final String INT_2_DIGITS_PATTERN = "\\d{0,2}"; + + /** * Pattern to use for short numeric values in editors with max 3 digits. * * @since 0.1 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-04 09:13:06 UTC (rev 152) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-04 17:38:11 UTC (rev 153) @@ -137,14 +137,91 @@ text: "tutti.label.fishingOperation.gearShootingEnd"; } -#gearShootingStartLongitudeField { - text: {getStringValue(model.getGearShootingStartLongitude())}; +#gearShootingCoordinatesDMSRadio { + text: "tutti.label.fishingOperation.gearShootingCoordinatesDMS"; + selected: {model.isUseSexagecimalFormat()}; + buttonGroup: "gearShootingCoordinates"; } -#gearShootingStartLatitudeField { - text: {getStringValue(model.getGearShootingStartLatitude())}; +#gearShootingCoordinatesDDRadio { + text: "tutti.label.fishingOperation.gearShootingCoordinatesDD"; + selected: {!model.isUseSexagecimalFormat()}; + buttonGroup: "gearShootingCoordinates"; } +.degree { + autoPopup: false; + showPopupButton: false; + showReset: false; + useFloat: false; + useSign: true; + numberPattern: {"-?" + INT_3_DIGITS_PATTERN}; +} + +.minute { + autoPopup: false; + showPopupButton: false; + showReset: false; + useFloat: false; + useSign: false; + numberPattern: {INT_2_DIGITS_PATTERN}; +} + +.second { + autoPopup: false; + showPopupButton: false; + showReset: false; + useFloat: false; + useSign: false; + numberPattern: {INT_2_DIGITS_PATTERN}; +} + +#gearShootingStartLongitudeDMSDegreeField { + property: gearShootingStartLongitudeDegree; + model: {model.getGearShootingStartLongitudeDegree()}; +} + +#gearShootingStartLongitudeDMSMinuteField { + property: gearShootingStartLongitudeMinute; + model: {model.getGearShootingStartLongitudeMinute()}; +} + +#gearShootingStartLongitudeDMSSecondField { + property: gearShootingStartLongitudeSecond; + model: {model.getGearShootingStartLongitudeSecond()}; +} + +#gearShootingStartLongitudeDDField { + property: gearShootingStartLongitude; + model: {model.getGearShootingStartLongitude()}; + showReset: false; + useFloat: true; + useSign: true; +} + +#gearShootingStartLatitudeDMSDegreeField { + property: gearShootingStartLatitudeDegree; + model: {model.getGearShootingStartLatitudeDegree()}; +} + +#gearShootingStartLatitudeDMSMinuteField { + property: gearShootingStartLatitudeMinute; + model: {model.getGearShootingStartLatitudeMinute()}; +} + +#gearShootingStartLatitudeDMSSecondField { + property: gearShootingStartLatitudeSecond; + model: {model.getGearShootingStartLatitudeSecond()}; +} + +#gearShootingStartLatitudeDDField { + property: gearShootingStartLatitude; + model: {model.getGearShootingStartLatitude()}; + showReset: false; + useFloat: true; + useSign: true; +} + #gearShootingStartDateField { date: {model.getGearShootingStartDate()}; formats: {"dd/MM/yyyy"}; @@ -155,14 +232,52 @@ date: {model.getGearShootingStartDate()}; } -#gearShootingEndLongitudeField { - text: {getStringValue(model.getGearShootingEndLongitude())}; +#gearShootingEndLongitudeDMSDegreeField { + property: gearShootingEndLongitudeDegree; + model: {model.getGearShootingEndLongitudeDegree()}; } -#gearShootingEndLatitudeField { - text: {getStringValue(model.getGearShootingEndLatitude())}; +#gearShootingEndLongitudeDMSMinuteField { + property: gearShootingEndLongitudeMinute; + model: {model.getGearShootingEndLongitudeMinute()}; } +#gearShootingEndLongitudeDMSSecondField { + property: gearShootingEndLongitudeSecond; + model: {model.getGearShootingEndLongitudeSecond()}; +} + +#gearShootingEndLongitudeDDField { + property: gearShootingEndLongitude; + model: {model.getGearShootingEndLongitude()}; + showReset: false; + useFloat: true; + useSign: true; +} + +#gearShootingEndLatitudeDMSDegreeField { + property: gearShootingEndLatitudeDegree; + model: {model.getGearShootingEndLatitudeDegree()}; +} + +#gearShootingEndLatitudeDMSMinuteField { + property: gearShootingEndLatitudeMinute; + model: {model.getGearShootingEndLatitudeMinute()}; +} + +#gearShootingEndLatitudeDMSSecondField { + property: gearShootingEndLatitudeSecond; + model: {model.getGearShootingEndLatitudeSecond()}; +} + +#gearShootingEndLatitudeDDField { + property: gearShootingEndLatitude; + model: {model.getGearShootingEndLatitude()}; + showReset: false; + useFloat: true; + useSign: true; +} + #gearShootingEndDateField { date: {model.getGearShootingEndDate()}; formats: {"dd/MM/yyyy"}; @@ -195,6 +310,7 @@ selected: {model.getFishingOperationValid() == Boolean.FALSE}; buttonGroup: "fishingOperationValid"; } + #fishingOperationResetRadio { selected: {model.getFishingOperationValid() == null}; buttonGroup: "fishingOperationValid"; 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-04 09:13:06 UTC (rev 152) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-04 17:38:11 UTC (rev 153) @@ -47,6 +47,7 @@ org.jdesktop.swingx.JXTable java.awt.Dimension + java.awt.CardLayout javax.swing.DefaultListModel javax.swing.ListSelectionModel @@ -154,6 +155,9 @@ <JLabel/> </cell> <cell> + <JLabel/> + </cell> + <cell> <JLabel id='gearLatitudeLabel'/> </cell> <cell> @@ -172,13 +176,42 @@ <JLabel id='gearShootingStartLabel'/> </cell> <cell> - <JTextField id='gearShootingStartLatitudeLabel' - onKeyReleased='handler.setGearShootingStartLatitude(((JTextField)event.getSource()).getText())'/> + <JRadioButton id='gearShootingCoordinatesDDRadio' + onActionPerformed='handler.setUseSexagecimalFormat(false)'/> </cell> - <cell> - <JTextField id='gearShootingStartLongitudeField' - onKeyReleased='handler.setGearShootingStartLongitude(((JTextField)event.getSource()).getText())'/> + <cell weightx='1'> + <JPanel id='gearShootingStartLatitudePanel' layout="{new CardLayout()}"> + <NumberEditor id='gearShootingStartLatitudeDDField' constraints='"DD"' + constructorParams='this'/> + <JPanel layout="{new GridLayout(1,0)}" constraints='"DMS"'> + <NumberEditor id='gearShootingStartLatitudeDMSDegreeField' + constructorParams='this' styleClass='degree'/> + + <NumberEditor id='gearShootingStartLatitudeDMSMinuteField' + constructorParams='this' styleClass='minute'/> + + <NumberEditor id='gearShootingStartLatitudeDMSSecondField' + constructorParams='this' styleClass='second'/> + </JPanel> +<!-- --> + </JPanel> </cell> + <cell weightx='1'> + <JPanel id='gearShootingStartLongitudePanel' layout="{new CardLayout()}"> + <NumberEditor id='gearShootingStartLongitudeDDField' constraints='"DD"' + constructorParams='this'/> + <JPanel layout="{new GridLayout(1,0)}" constraints='"DMS"'> + <NumberEditor id='gearShootingStartLongitudeDMSDegreeField' + constructorParams='this' styleClass='degree'/> + + <NumberEditor id='gearShootingStartLongitudeDMSMinuteField' + constructorParams='this' styleClass='minute'/> + + <NumberEditor id='gearShootingStartLongitudeDMSSecondField' + constructorParams='this' styleClass='second'/> + </JPanel> + </JPanel> + </cell> <cell> <JXDatePicker id='gearShootingStartDateField' onActionPerformed='handler.setDate(event, "gearShootingStartDate")'/> @@ -193,13 +226,41 @@ <JLabel id='gearShootingEndLabel'/> </cell> <cell> - <JTextField id='gearShootingEndLatitudeLabel' - onKeyReleased='handler.setGearShootingEndLatitude(((JTextField)event.getSource()).getText())'/> + <JRadioButton id='gearShootingCoordinatesDMSRadio' + onActionPerformed='handler.setUseSexagecimalFormat(true)'/> </cell> - <cell> - <JTextField id='gearShootingEndLongitudeField' - onKeyReleased='handler.setGearShootingEndLongitude(((JTextField)event.getSource()).getText())'/> + <cell weightx='1'> + <JPanel id='gearShootingEndLatitudePanel' layout="{new CardLayout()}"> + <NumberEditor id='gearShootingEndLatitudeDDField' constraints='"DD"' + constructorParams='this'/> + <JPanel layout="{new GridLayout(1,0)}" constraints='"DMS"'> + <NumberEditor id='gearShootingEndLatitudeDMSDegreeField' + constructorParams='this' styleClass='degree'/> + + <NumberEditor id='gearShootingEndLatitudeDMSMinuteField' + constructorParams='this' styleClass='minute'/> + + <NumberEditor id='gearShootingEndLatitudeDMSSecondField' + constructorParams='this' styleClass='second'/> + </JPanel> + </JPanel> </cell> + <cell weightx='1'> + <JPanel id='gearShootingEndLongitudePanel' layout="{new CardLayout()}"> + <NumberEditor id='gearShootingEndLongitudeDDField' constraints='"DD"' + constructorParams='this'/> + <JPanel layout="{new GridLayout(1,0)}" constraints='"DMS"'> + <NumberEditor id='gearShootingEndLongitudeDMSDegreeField' + constructorParams='this' styleClass='degree'/> + + <NumberEditor id='gearShootingEndLongitudeDMSMinuteField' + constructorParams='this' styleClass='minute'/> + + <NumberEditor id='gearShootingEndLongitudeDMSSecondField' + constructorParams='this' styleClass='second'/> + </JPanel> + </JPanel> + </cell> <cell> <JXDatePicker id='gearShootingEndDateField' onActionPerformed='handler.setDate(event, "gearShootingEndDate")'/> 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-04 09:13:06 UTC (rev 152) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-04 17:38:11 UTC (rev 153) @@ -48,6 +48,7 @@ import javax.swing.JLabel; import javax.swing.JPanel; import java.awt.BorderLayout; +import java.awt.CardLayout; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; @@ -144,11 +145,40 @@ onSelectedSubStrata(source, newStrata); } }); + + model.addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_USE_SEXAGECIMAL_FORMAT, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + boolean useSexagecimalFormat = (Boolean) evt.getNewValue(); + log.info("property PROPERTY_USE_SEXAGECIMAL_FORMAT changed " + useSexagecimalFormat); + + List<JPanel> panels = Lists.newArrayList( + ui.getGearShootingStartLatitudePanel(), + ui.getGearShootingStartLongitudePanel(), + ui.getGearShootingEndLatitudePanel(), + ui.getGearShootingEndLongitudePanel() + ); + + String fieldToShow; + if (useSexagecimalFormat) { + fieldToShow = "DMS"; + getModel().convertGearShootingCoordinatesDDToDMS(); + } else { + fieldToShow = "DD"; + getModel().convertGearShootingCoordinatesDMSToDD(); + } + + for (JPanel panel : panels) { + CardLayout cardLayout = (CardLayout) panel.getLayout(); + cardLayout.show(panel, fieldToShow); + } + } + }); // listModelIsModify(model); ui.setContextValue(model); - + fishingOperationMonitor.setBean(model); } @@ -263,6 +293,10 @@ return ui.getModel(); } + //------------------------------------------------------------------------// + //-- Public methods --// + //------------------------------------------------------------------------// + public void selectFishingOperation(FishingOperation bean) { if (fishingOperationMonitor.wasModified()) { @@ -277,7 +311,10 @@ log.warn("Won't save new fishing operation, use explicit save button instead..."); } } else { - + if (beanToSave.isUseSexagecimalFormat()) { + beanToSave.convertGearShootingCoordinatesDMSToDD(); + } + // save modified fishing operation FishingOperation toSave = beanToSave.toBean(); @@ -321,6 +358,7 @@ model.setStrata(null); model.setSubStrata(null); model.setLocation(null); + model.convertGearShootingCoordinatesDDToDMS(); if (strata != null) { ui.getStrataComboBox().setSelectedItem(strata); @@ -384,11 +422,14 @@ } public void save() { - + EditFishingOperationUIModel model = getModel(); + // get fishingOperation to save + if (model.isUseSexagecimalFormat()) { + model.convertGearShootingCoordinatesDMSToDD(); + } + FishingOperation toSave = model.toBean(); - FishingOperation toSave = getModel().toBean(); - if (log.isInfoEnabled()) { log.info("Save edition for fishingOperation: " + toSave.getId()); } @@ -412,9 +453,25 @@ //TODO } + public void setUseSexagecimalFormat(boolean useSexagecimalFormat) { + getModel().setUseSexagecimalFormat(useSexagecimalFormat); + } + public void setGearShootingStartLatitude(String text) { getModel().setGearShootingStartLatitude(Float.valueOf(text)); } + + public void setGearShootingStartLatitudeDegree(String text) { + getModel().setGearShootingStartLatitude(Float.valueOf(text)); + } + + public void setGearShootingStartLatitudeMinute(String text) { + getModel().setGearShootingStartLatitude(Float.valueOf(text)); + } + + public void setGearShootingStartLatitudeSecond(String text) { + getModel().setGearShootingStartLatitude(Float.valueOf(text)); + } public void setGearShootingStartLongitude(String text) { getModel().setGearShootingStartLongitude(Float.valueOf(text)); @@ -427,7 +484,11 @@ public void setGearShootingEndLongitude(String text) { getModel().setGearShootingEndLongitude(Float.valueOf(text)); } - + + //------------------------------------------------------------------------// + //-- Protected methods --// + //------------------------------------------------------------------------// + protected void onSelectedStrata(EditFishingOperationUIModel model, FishingOperationLocation newStrata) { 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-04 09:13:06 UTC (rev 152) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-04 17:38:11 UTC (rev 153) @@ -31,7 +31,9 @@ import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; -import fr.ird.type.SexagecimalPosition; +import fr.ifremer.tutti.persistence.spatial.SexagecimalPosition; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; @@ -62,15 +64,41 @@ public static final String PROPERTY_SUB_STRATA = "subStrata"; + public static final String PROPERTY_USE_SEXAGECIMAL_FORMAT = "useSexagecimalFormat"; + public static final String PROPERTY_GEAR_SHOOTING_START_LATITUDE = "gearShootingStartLatitude"; - + + public static final String PROPERTY_GEAR_SHOOTING_START_LATITUDE_DEGREE = "gearShootingStartLatitudeDegree"; + + public static final String PROPERTY_GEAR_SHOOTING_START_LATITUDE_MINUTE = "gearShootingStartLatitudeMinute"; + + public static final String PROPERTY_GEAR_SHOOTING_START_LATITUDE_SECOND = "gearShootingStartLatitudeSecond"; + public static final String PROPERTY_GEAR_SHOOTING_START_LONGITUDE = "gearShootingStartLongitude"; + + public static final String PROPERTY_GEAR_SHOOTING_START_LONGITUDE_DEGREE = "gearShootingStartLongitudeDegree"; + + public static final String PROPERTY_GEAR_SHOOTING_START_LONGITUDE_MINUTE = "gearShootingStartLongitudeMinute"; + + 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"; + + public static final String PROPERTY_GEAR_SHOOTING_END_LATITUDE_MINUTE = "gearShootingEndLatitudeMinute"; + + public static final String PROPERTY_GEAR_SHOOTING_END_LATITUDE_SECOND = "gearShootingEndLatitudeSecond"; public static final String PROPERTY_GEAR_SHOOTING_END_LONGITUDE = "gearShootingEndLongitude"; + + public static final String PROPERTY_GEAR_SHOOTING_END_LONGITUDE_DEGREE = "gearShootingEndLongitudeDegree"; + + public static final String PROPERTY_GEAR_SHOOTING_END_LONGITUDE_MINUTE = "gearShootingEndLongitudeMinute"; + + public static final String PROPERTY_GEAR_SHOOTING_END_LONGITUDE_SECOND = "gearShootingEndLongitudeSecond"; public static final String PROPERTY_GEAR_SHOOTING_END_DATE = "gearShootingEndDate"; @@ -115,7 +143,7 @@ protected SexagecimalPosition gearShootingEndLongitudeAsSexagecimal; - protected boolean useSexagecimalFormat; + protected boolean useSexagecimalFormat = false; protected Float gearShootingStartLatitude; @@ -158,6 +186,10 @@ public EditFishingOperationUIModel() { super(FishingOperation.class, fromBeanBinder, toBeanBinder); + gearShootingStartLatitudeAsSexagecimal = SexagecimalPosition.valueOf(gearShootingStartLatitude); + gearShootingStartLongitudeAsSexagecimal = SexagecimalPosition.valueOf(gearShootingStartLongitude); + gearShootingEndLatitudeAsSexagecimal = SexagecimalPosition.valueOf(gearShootingEndLatitude); + gearShootingEndLongitudeAsSexagecimal = SexagecimalPosition.valueOf(gearShootingEndLongitude); } public FishingOperation getFishingOperation() { @@ -241,6 +273,16 @@ firePropertyChange(PROPERTY_SUB_STRATA, oldValue, subStrata); } + public boolean isUseSexagecimalFormat() { + return useSexagecimalFormat; + } + + public void setUseSexagecimalFormat(boolean useSexagecimalFormat) { + Object oldValue = isUseSexagecimalFormat(); + this.useSexagecimalFormat = useSexagecimalFormat; + firePropertyChange(PROPERTY_USE_SEXAGECIMAL_FORMAT, oldValue, useSexagecimalFormat); + } + public Float getGearShootingStartLatitude() { return gearShootingStartLatitude; } @@ -250,6 +292,46 @@ this.gearShootingStartLatitude = gearShootingStartLatitude; firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LATITUDE, oldValue, gearShootingStartLatitude); } + + public Integer getGearShootingStartLatitudeDegree() { + Integer result = gearShootingStartLatitudeAsSexagecimal.getDegre(); + if (gearShootingStartLatitudeAsSexagecimal.isSign()) { + result *= -1; + } + return result; + } + + public void setGearShootingStartLatitudeDegree(Integer degree) { + Object oldValue = getGearShootingStartLatitudeDegree(); + boolean sign = degree != null && degree < 0; + if (degree != null) { + degree = Math.abs(degree); + } + gearShootingStartLatitudeAsSexagecimal.setSign(sign); + gearShootingStartLatitudeAsSexagecimal.setDegre(degree); + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LATITUDE_DEGREE, oldValue, degree); + } + + public Integer getGearShootingStartLatitudeMinute() { + return gearShootingStartLatitudeAsSexagecimal.getMinute(); + } + + public void setGearShootingStartLatitudeMinute(Integer minute) { + Object oldValue = getGearShootingStartLatitudeMinute(); + gearShootingStartLatitudeAsSexagecimal.setMinute(minute); + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LATITUDE_MINUTE, oldValue, minute); + + } + + public Integer getGearShootingStartLatitudeSecond() { + return gearShootingStartLatitudeAsSexagecimal.getSeconde(); + } + + public void setGearShootingStartLatitudeSecond(Integer second) { + Object oldValue = getGearShootingStartLatitudeSecond(); + gearShootingStartLatitudeAsSexagecimal.setSeconde(second); + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LATITUDE_SECOND, oldValue, second); + } public Float getGearShootingStartLongitude() { return gearShootingStartLongitude; @@ -261,6 +343,47 @@ firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LONGITUDE, oldValue, gearShootingStartLongitude); } + + public Integer getGearShootingStartLongitudeDegree() { + Integer result = gearShootingStartLongitudeAsSexagecimal.getDegre(); + if (gearShootingStartLongitudeAsSexagecimal.isSign()) { + result *= -1; + } + return result; + } + + public void setGearShootingStartLongitudeDegree(Integer degree) { + Object oldValue = getGearShootingStartLongitudeDegree(); + boolean sign = degree != null && degree < 0; + if (degree != null) { + degree = Math.abs(degree); + } + gearShootingStartLongitudeAsSexagecimal.setSign(sign); + gearShootingStartLongitudeAsSexagecimal.setDegre(degree); + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LONGITUDE_DEGREE, oldValue, degree); + } + + public Integer getGearShootingStartLongitudeMinute() { + return gearShootingStartLongitudeAsSexagecimal.getMinute(); + } + + public void setGearShootingStartLongitudeMinute(Integer minute) { + Object oldValue = getGearShootingStartLongitudeMinute(); + gearShootingStartLongitudeAsSexagecimal.setMinute(minute); + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LONGITUDE_MINUTE, oldValue, minute); + + } + + public Integer getGearShootingStartLongitudeSecond() { + return gearShootingStartLongitudeAsSexagecimal.getSeconde(); + } + + public void setGearShootingStartLongitudeSecond(Integer second) { + Object oldValue = getGearShootingStartLongitudeSecond(); + gearShootingStartLongitudeAsSexagecimal.setSeconde(second); + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LONGITUDE_SECOND, oldValue, second); + } + public Date getGearShootingStartDate() { return gearShootingStartDate; } @@ -280,6 +403,46 @@ this.gearShootingEndLatitude = gearShootingEndLatitude; firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LATITUDE, oldValue, gearShootingEndLatitude); } + + public Integer getGearShootingEndLatitudeDegree() { + Integer result = gearShootingEndLatitudeAsSexagecimal.getDegre(); + if (gearShootingEndLatitudeAsSexagecimal.isSign()) { + result *= -1; + } + return result; + } + + public void setGearShootingEndLatitudeDegree(Integer degree) { + Object oldValue = getGearShootingEndLatitudeDegree(); + boolean sign = degree != null && degree < 0; + if (degree != null) { + degree = Math.abs(degree); + } + gearShootingEndLatitudeAsSexagecimal.setSign(sign); + gearShootingEndLatitudeAsSexagecimal.setDegre(degree); + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LATITUDE_DEGREE, oldValue, degree); + } + + public Integer getGearShootingEndLatitudeMinute() { + return gearShootingEndLatitudeAsSexagecimal.getMinute(); + } + + public void setGearShootingEndLatitudeMinute(Integer minute) { + Object oldValue = getGearShootingEndLatitudeMinute(); + gearShootingEndLatitudeAsSexagecimal.setMinute(minute); + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LATITUDE_MINUTE, oldValue, minute); + + } + + public Integer getGearShootingEndLatitudeSecond() { + return gearShootingEndLatitudeAsSexagecimal.getSeconde(); + } + + public void setGearShootingEndLatitudeSecond(Integer second) { + Object oldValue = getGearShootingEndLatitudeSecond(); + gearShootingEndLatitudeAsSexagecimal.setSeconde(second); + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LATITUDE_SECOND, oldValue, second); + } public Float getGearShootingEndLongitude() { return gearShootingEndLongitude; @@ -291,6 +454,46 @@ firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LONGITUDE, oldValue, gearShootingEndLongitude); } + public Integer getGearShootingEndLongitudeDegree() { + Integer result = gearShootingEndLongitudeAsSexagecimal.getDegre(); + if (gearShootingEndLongitudeAsSexagecimal.isSign()) { + result *= -1; + } + return result; + } + + public void setGearShootingEndLongitudeDegree(Integer degree) { + Object oldValue = getGearShootingEndLongitudeDegree(); + boolean sign = degree != null && degree < 0; + if (degree != null) { + degree = Math.abs(degree); + } + gearShootingEndLongitudeAsSexagecimal.setSign(sign); + gearShootingEndLongitudeAsSexagecimal.setDegre(degree); + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LONGITUDE_DEGREE, oldValue, degree); + } + + public Integer getGearShootingEndLongitudeMinute() { + return gearShootingEndLongitudeAsSexagecimal.getMinute(); + } + + public void setGearShootingEndLongitudeMinute(Integer minute) { + Object oldValue = getGearShootingEndLongitudeMinute(); + gearShootingEndLongitudeAsSexagecimal.setMinute(minute); + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LONGITUDE_MINUTE, oldValue, minute); + + } + + public Integer getGearShootingEndLongitudeSecond() { + return gearShootingEndLongitudeAsSexagecimal.getSeconde(); + } + + public void setGearShootingEndLongitudeSecond(Integer second) { + Object oldValue = getGearShootingEndLongitudeSecond(); + gearShootingStartLongitudeAsSexagecimal.setSeconde(second); + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LONGITUDE_SECOND, oldValue, second); + } + public Date getGearShootingEndDate() { return gearShootingEndDate; } @@ -374,4 +577,63 @@ protected FishingOperation newEntity() { return fishingOperation; } + + public void convertGearShootingCoordinatesDDToDMS() { + SexagecimalPosition position; + Integer degree; + + position = SexagecimalPosition.valueOf(gearShootingStartLatitude); + degree = position.getDegre(); + if (degree != null) { + degree *= position.isSign() ? -1 : 1; + } + setGearShootingStartLatitudeDegree(degree); + setGearShootingStartLatitudeMinute(position.getMinute()); + setGearShootingStartLatitudeSecond(position.getSeconde()); + + position = SexagecimalPosition.valueOf(gearShootingStartLongitude); + degree = position.getDegre(); + if (degree != null) { + degree *= position.isSign() ? -1 : 1; + } + setGearShootingStartLongitudeDegree(degree); + setGearShootingStartLongitudeMinute(position.getMinute()); + setGearShootingStartLongitudeSecond(position.getSeconde()); + + position = SexagecimalPosition.valueOf(gearShootingEndLatitude); + degree = position.getDegre(); + if (degree != null) { + degree *= position.isSign() ? -1 : 1; + } + if (position.getDegre() != null) { + + } + setGearShootingEndLatitudeDegree(degree); + setGearShootingEndLatitudeMinute(position.getMinute()); + setGearShootingEndLatitudeSecond(position.getSeconde()); + + position = SexagecimalPosition.valueOf(gearShootingEndLongitude); + degree = position.getDegre(); + if (degree != null) { + degree *= position.isSign() ? -1 : 1; + } + setGearShootingEndLongitudeDegree(degree); + setGearShootingEndLongitudeMinute(position.getMinute()); + setGearShootingEndLongitudeSecond(position.getSeconde()); + } + + public void convertGearShootingCoordinatesDMSToDD() { + Float decimalValue = gearShootingStartLatitudeAsSexagecimal.toDecimal(); + setGearShootingStartLatitude(decimalValue); + + decimalValue = gearShootingStartLongitudeAsSexagecimal.toDecimal(); + setGearShootingStartLongitude(decimalValue); + + decimalValue = gearShootingEndLatitudeAsSexagecimal.toDecimal(); + setGearShootingEndLatitude(decimalValue); + + decimalValue = gearShootingEndLongitudeAsSexagecimal.toDecimal(); + setGearShootingEndLongitude(decimalValue); + } + } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-01-04 09:13:06 UTC (rev 152) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-01-04 17:38:11 UTC (rev 153) @@ -53,8 +53,6 @@ public static final String PROPERTY_HYDROLOGY_PMFM_ID = "hydrologyPmfmId"; - public static final String PROPERTY_SPECIES = "species"; - public static final String PROPERTY_SAMPLE_CATEGORY_ORDER = "sampleCategoryOrder"; public static final String PROPERTY_REMOVE_SPECIES_ENABLED = "removeSpeciesEnabled"; @@ -69,8 +67,6 @@ protected List<String> hydrologyPmfmId; - protected List<SpeciesProtocol> species; - protected List<SampleCategoryEnum> sampleCategoryOrder = Lists.newArrayList( SampleCategoryEnum.sortedUnsorted, SampleCategoryEnum.size, 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-04 09:13:06 UTC (rev 152) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-04 17:38:11 UTC (rev 153) @@ -94,6 +94,8 @@ tutti.label.fishingOperation.gearDate=Date tutti.label.fishingOperation.gearLatitude=Latitude tutti.label.fishingOperation.gearLongitude=Longitude +tutti.label.fishingOperation.gearShootingCoordinatesDD=DD +tutti.label.fishingOperation.gearShootingCoordinatesDMS=DMS tutti.label.fishingOperation.gearShootingEnd=Fin de traine tutti.label.fishingOperation.gearShootingStart=Début de traine tutti.label.fishingOperation.gearTime=Heure
participants (1)
-
kmorin@users.forge.codelutin.com