Author: kmorin Date: 2013-01-23 16:58:55 +0100 (Wed, 23 Jan 2013) New Revision: 243 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/243 Log: add the DMD editor + debug validation Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CoordinateEditorType.java 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/config/TuttiConfig.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.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/operation/SaveFishingOperationAction.java trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-warning-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/TuttiUI.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java 2013-01-23 15:56:31 UTC (rev 242) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java 2013-01-23 15:58:55 UTC (rev 243) @@ -117,5 +117,13 @@ * @since 0.1 */ public static final String DECIMAL3_PATTERN = "\\d{0,6}|\\d{1,6}.\\d{0,3}"; + + /** + * Pattern to use for decimal numeric values with 2 digits + 3 decimal digits in + * editors. + * + * @since 1.0 + */ + public static final String DECIMAL2_3_PATTERN = "\\d{0,2}|\\d{1,2}\\.\\d{0,3}"; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-23 15:56:31 UTC (rev 242) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-23 15:58:55 UTC (rev 243) @@ -27,6 +27,7 @@ import com.google.common.base.Throwables; import fr.ifremer.tutti.service.TuttiServiceTechnicalException; import fr.ifremer.tutti.service.config.TuttiServiceConfig; +import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import org.apache.commons.logging.Log; @@ -129,8 +130,9 @@ return applicationConfig.getOptionAsBoolean(TuttiConfigOption.SHOW_NUMBER_EDITOR_BUTTON.getKey()); } - public boolean isUseSexagecimalEditor() { - return applicationConfig.getOptionAsBoolean(TuttiConfigOption.USE_SEXAGECIMAL_EDITOR.getKey()); + public CoordinateEditorType getCoordinateEditorType() { + String value = applicationConfig.getOption(TuttiConfigOption.COORDINATE_EDITOR_TYPE.getKey()); + return CoordinateEditorType.valueOf(value); } public String getProgramId() { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-23 15:56:31 UTC (rev 242) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-23 15:58:55 UTC (rev 243) @@ -24,6 +24,7 @@ * #L% */ +import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType; import org.nuiton.util.ApplicationConfig; import javax.swing.KeyStroke; @@ -100,11 +101,11 @@ "alt pressed F", KeyStroke.class), - USE_SEXAGECIMAL_EDITOR( - "tutti.ui.useSexagecimalEditor", - n_("tutti.config.ui.useSexagecimalEditor"), - "false", - Boolean.class); + COORDINATE_EDITOR_TYPE( + "tutti.ui.coordinateEditorType", + n_("tutti.config.ui.coordinateEditorType"), + CoordinateEditorType.DD.toString(), + CoordinateEditorType.class); /** Configuration key. */ private final String key; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-01-23 15:56:31 UTC (rev 242) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-01-23 15:58:55 UTC (rev 243) @@ -108,7 +108,7 @@ CALLBACK_UI) .addOption(TuttiConfigOption.COLOR_ROW_INVALID) .addOption(TuttiConfigOption.COLOR_ROW_READ_ONLY) - .addOption(TuttiConfigOption.USE_SEXAGECIMAL_EDITOR); + .addOption(TuttiConfigOption.COORDINATE_EDITOR_TYPE); // SHORTCUT 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-23 15:56:31 UTC (rev 242) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-23 15:58:55 UTC (rev 243) @@ -137,9 +137,8 @@ text: "tutti.label.fishingOperation.gearShootingEnd"; } - CardLayout2Ext { - selected: {handler.getConfig().isUseSexagecimalEditor() ? "DMS" : "DD"}; + selected: { ((CoordinateEditorType)handler.getConfig().getCoordinateEditorType()).toString() }; } #traitVesselPanel { @@ -192,6 +191,13 @@ numberPattern: {INT_2_DIGITS_PATTERN}; } +.decimalMinute { + showReset: false; + useFloat: true; + useSign: false; + numberPattern: {DECIMAL2_3_PATTERN}; +} + .second { showReset: false; useFloat: false; @@ -219,6 +225,17 @@ model: {model.getGearShootingStartLongitudeSecond()}; } +#gearShootingStartLongitudeDMDDegreeField { + property: gearShootingStartLongitudeDegree; + model: {model.getGearShootingStartLongitudeDegree()}; + numberPattern: {SIGNED_INT_3_DIGITS_PATTERN}; +} + +#gearShootingStartLongitudeDMDMinuteField { + property: gearShootingStartLongitudeDecimalMinute; + model: {model.getGearShootingStartLongitudeDecimalMinute()}; +} + #gearShootingStartLongitudeDDField { property: gearShootingStartLongitude; model: {model.getGearShootingStartLongitude()}; @@ -247,6 +264,17 @@ model: {model.getGearShootingStartLatitudeSecond()}; } +#gearShootingStartLatitudeDMDDegreeField { + property: gearShootingStartLatitudeDegree; + model: {model.getGearShootingStartLatitudeDegree()}; + numberPattern: {SIGNED_INT_2_DIGITS_PATTERN}; +} + +#gearShootingStartLatitudeDMDMinuteField { + property: gearShootingStartLatitudeDecimalMinute; + model: {model.getGearShootingStartLatitudeDecimalMinute()}; +} + #gearShootingStartLatitudeDDField { property: gearShootingStartLatitude; model: {model.getGearShootingStartLatitude()}; @@ -285,6 +313,17 @@ model: {model.getGearShootingEndLongitudeSecond()}; } +#gearShootingEndLongitudeDMDDegreeField { + property: gearShootingEndLongitudeDegree; + model: {model.getGearShootingEndLongitudeDegree()}; + numberPattern: {SIGNED_INT_3_DIGITS_PATTERN}; +} + +#gearShootingEndLongitudeDMDMinuteField { + property: gearShootingEndLongitudeDecimalMinute; + model: {model.getGearShootingEndLongitudeDecimalMinute()}; +} + #gearShootingEndLongitudeDDField { property: gearShootingEndLongitude; model: {model.getGearShootingEndLongitude()}; @@ -313,6 +352,17 @@ model: {model.getGearShootingEndLatitudeSecond()}; } +#gearShootingEndLatitudeDMDDegreeField { + property: gearShootingEndLatitudeDegree; + model: {model.getGearShootingEndLatitudeDegree()}; + numberPattern: {SIGNED_INT_2_DIGITS_PATTERN}; +} + +#gearShootingEndLatitudeDMDMinuteField { + property: gearShootingEndLatitudeDecimalMinute; + model: {model.getGearShootingEndLatitudeDecimalMinute()}; +} + #gearShootingEndLatitudeDDField { property: gearShootingEndLatitude; model: {model.getGearShootingEndLatitude()}; 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-23 15:56:31 UTC (rev 242) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-23 15:58:55 UTC (rev 243) @@ -30,11 +30,12 @@ fr.ifremer.tutti.persistence.entities.referential.Gear fr.ifremer.tutti.persistence.entities.referential.Person fr.ifremer.tutti.persistence.entities.referential.Vessel - - fr.ifremer.tutti.ui.swing.util.editor.SimpleTimeEditor + fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentTabUI fr.ifremer.tutti.ui.swing.content.operation.fishing.gearshooting.GearShootingTabUI fr.ifremer.tutti.ui.swing.content.operation.fishing.hydrology.HydrologyTabUI + fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType + fr.ifremer.tutti.ui.swing.util.editor.SimpleTimeEditor jaxx.runtime.swing.editor.bean.BeanComboBox jaxx.runtime.swing.editor.bean.BeanListHeader @@ -100,6 +101,10 @@ component='gearShootingStartLatitudeDMSMinuteField'/> <field name='gearShootingStartLatitudeSecond' component='gearShootingStartLatitudeDMSSecondField'/> + <field name='gearShootingStartLatitudeDecimalDegree' + component='gearShootingStartLatitudeDMDDegreeField'/> + <field name='gearShootingStartLatitudeDecimalMinute' + component='gearShootingStartLatitudeDMDMinuteField'/> <field name='gearShootingStartLongitude' component='gearShootingStartLongitudeDDField'/> <field name='gearShootingStartLongitudeDegree' @@ -108,6 +113,10 @@ component='gearShootingStartLongitudeDMSMinuteField'/> <field name='gearShootingStartLongitudeSecond' component='gearShootingStartLongitudeDMSSecondField'/> + <field name='gearShootingStartLongitudeDecimalDegree' + component='gearShootingStartLongitudeDMDDegreeField'/> + <field name='gearShootingStartLongitudeDecimalMinute' + component='gearShootingStartLongitudeDMDMinuteField'/> <field name='gearShootingEndLatitude' component='gearShootingEndLatitudeDDField'/> <field name='gearShootingEndLatitudeDegree' @@ -116,6 +125,10 @@ component='gearShootingEndLatitudeDMSMinuteField'/> <field name='gearShootingEndLatitudeSecond' component='gearShootingEndLatitudeDMSSecondField'/> + <field name='gearShootingEndLatitudeDecimalDegree' + component='gearShootingEndLatitudeDMDDegreeField'/> + <field name='gearShootingEndLatitudeDecimalMinute' + component='gearShootingEndLatitudeDMDMinuteField'/> <field name='gearShootingEndLongitude' component='gearShootingEndLongitudeDDField'/> <field name='gearShootingEndLongitudeDegree' @@ -124,6 +137,10 @@ component='gearShootingEndLongitudeDMSMinuteField'/> <field name='gearShootingEndLongitudeSecond' component='gearShootingEndLongitudeDMSSecondField'/> + <field name='gearShootingEndLongitudeDecimalDegree' + component='gearShootingEndLongitudeDMDDegreeField'/> + <field name='gearShootingEndLongitudeDecimalMinute' + component='gearShootingEndLongitudeDMDMinuteField'/> </BeanValidator> <CardLayout2Ext id='gearShootingStartLongitudeLayout' @@ -239,7 +256,16 @@ id='gearShootingStartLatitudeDMSSecondField' constructorParams='this' styleClass='second'/> </JPanel> - <!-- --> + <JPanel layout="{new GridLayout(1,0)}" + constraints='"DMD"'> + <NumberEditor + id='gearShootingStartLatitudeDMDDegreeField' + constructorParams='this' styleClass='degree'/> + + <NumberEditor + id='gearShootingStartLatitudeDMDMinuteField' + constructorParams='this' styleClass='decimalMinute'/> + </JPanel> </JPanel> </cell> <cell weightx='1'> @@ -261,6 +287,16 @@ id='gearShootingStartLongitudeDMSSecondField' constructorParams='this' styleClass='second'/> </JPanel> + <JPanel layout="{new GridLayout(1,0)}" + constraints='"DMD"'> + <NumberEditor + id='gearShootingStartLongitudeDMDDegreeField' + constructorParams='this' styleClass='degree'/> + + <NumberEditor + id='gearShootingStartLongitudeDMDMinuteField' + constructorParams='this' styleClass='decimalMinute'/> + </JPanel> </JPanel> </cell> <cell> @@ -295,6 +331,16 @@ id='gearShootingEndLatitudeDMSSecondField' constructorParams='this' styleClass='second'/> </JPanel> + <JPanel layout="{new GridLayout(1,0)}" + constraints='"DMD"'> + <NumberEditor + id='gearShootingEndLatitudeDMDDegreeField' + constructorParams='this' styleClass='degree'/> + + <NumberEditor + id='gearShootingEndLatitudeDMDMinuteField' + constructorParams='this' styleClass='decimalMinute'/> + </JPanel> </JPanel> </cell> <cell weightx='1'> @@ -316,6 +362,16 @@ id='gearShootingEndLongitudeDMSSecondField' constructorParams='this' styleClass='second'/> </JPanel> + <JPanel layout="{new GridLayout(1,0)}" + constraints='"DMD"'> + <NumberEditor + id='gearShootingEndLongitudeDMDDegreeField' + constructorParams='this' styleClass='degree'/> + + <NumberEditor + id='gearShootingEndLongitudeDMDMinuteField' + constructorParams='this' styleClass='decimalMinute'/> + </JPanel> </JPanel> </cell> <cell> 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-23 15:56:31 UTC (rev 242) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-23 15:58:55 UTC (rev 243) @@ -47,19 +47,17 @@ import fr.ifremer.tutti.ui.swing.util.AbstractTuttiTabContainerUIHandler; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTabbedPane; import java.awt.BorderLayout; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTabbedPane; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; - /** * Handler for UI {@link EditFishingOperationUI}. * @@ -117,6 +115,7 @@ public void beforeInitUI() { EditFishingOperationUIModel model = new EditFishingOperationUIModel(); + model.setCoordinateEditorType(getConfig().getCoordinateEditorType()); model.setValidationContext(getContext().getValidationContext()); model.addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_EMPTY, new PropertyChangeListener() { @@ -419,34 +418,6 @@ //TODO } - 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)); - } - - public void setGearShootingEndLatitude(String text) { - getModel().setGearShootingEndLatitude(Float.valueOf(text)); - } - - public void setGearShootingEndLongitude(String text) { - getModel().setGearShootingEndLongitude(Float.valueOf(text)); - } - public FishingOperationsUI getParentUi() { return parentUi; } 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-23 15:56:31 UTC (rev 242) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-23 15:58:55 UTC (rev 243) @@ -34,9 +34,12 @@ import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.spatial.SexagecimalPosition; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType; import java.util.Calendar; import java.util.Date; import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; @@ -51,6 +54,8 @@ public class EditFishingOperationUIModel extends AbstractTuttiBeanUIModel<FishingOperation, EditFishingOperationUIModel> { private static final long serialVersionUID = 1L; + + private static final Log log = LogFactory.getLog(EditFishingOperationUIModel.class); public static final String TITLE = n_("tutti.label.tab.fishingOperation.general"); @@ -70,8 +75,10 @@ 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_DECIMAL_MINUTE = "gearShootingStartLatitudeDecimalMinute"; public static final String PROPERTY_GEAR_SHOOTING_START_LATITUDE_SECOND = "gearShootingStartLatitudeSecond"; @@ -80,6 +87,8 @@ 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_DECIMAL_MINUTE = "gearShootingStartLongitudeDecimalMinute"; public static final String PROPERTY_GEAR_SHOOTING_START_LONGITUDE_SECOND = "gearShootingStartLongitudeSecond"; @@ -90,6 +99,8 @@ 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_DECIMAL_MINUTE = "gearShootingEndLatitudeDecimalMinute"; public static final String PROPERTY_GEAR_SHOOTING_END_LATITUDE_SECOND = "gearShootingEndLatitudeSecond"; @@ -98,6 +109,8 @@ 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_DECIMAL_MINUTE = "gearShootingEndLongitudeDecimalMinute"; public static final String PROPERTY_GEAR_SHOOTING_END_LONGITUDE_SECOND = "gearShootingEndLongitudeSecond"; @@ -184,6 +197,8 @@ protected Integer trawlNetNumber; + protected CoordinateEditorType coordinateEditorType; + protected static Binder<EditFishingOperationUIModel, FishingOperation> toBeanBinder = BinderFactory.newBinder(EditFishingOperationUIModel.class, FishingOperation.class); @@ -291,7 +306,11 @@ } return result; } - + + public Integer getGearShootingStartLatitudeDecimalDegree() { + return getGearShootingStartLatitudeDegree(); + } + public void setGearShootingStartLatitudeDegree(Integer degree) { Object oldValue = getGearShootingStartLatitudeDegree(); boolean sign = degree != null && degree < 0; @@ -302,6 +321,10 @@ gearShootingStartLatitudeAsSexagecimal.setDegre(degree); firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LATITUDE_DEGREE, oldValue, degree); } + + public void setGearShootingStartLatitudeDecimalDegree(Integer degree) { + setGearShootingStartLatitudeDegree(degree); + } public Integer getGearShootingStartLatitudeMinute() { return gearShootingStartLatitudeAsSexagecimal.getMinute(); @@ -311,7 +334,17 @@ Object oldValue = getGearShootingStartLatitudeMinute(); gearShootingStartLatitudeAsSexagecimal.setMinute(minute); firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LATITUDE_MINUTE, oldValue, minute); + } + + public Float getGearShootingStartLatitudeDecimalMinute() { + return gearShootingStartLatitudeAsSexagecimal.getMinuteDecimale(); + } + public void setGearShootingStartLatitudeDecimalMinute(Float decimalMinute) { + gearShootingStartLatitudeAsSexagecimal.setMinuteDecimale(decimalMinute); + // 2013-01-22 kmorin: pass null as previous value, + // otherwise the filed is not filled with the value (I cannot explain why... :() + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LATITUDE_DECIMAL_MINUTE, null, decimalMinute); } public Integer getGearShootingStartLatitudeSecond() { @@ -342,6 +375,10 @@ } return result; } + + public Integer getGearShootingStartLongitudeDecimalDegree() { + return getGearShootingStartLongitudeDegree(); + } public void setGearShootingStartLongitudeDegree(Integer degree) { Object oldValue = getGearShootingStartLongitudeDegree(); @@ -353,6 +390,10 @@ gearShootingStartLongitudeAsSexagecimal.setDegre(degree); firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LONGITUDE_DEGREE, oldValue, degree); } + + public void setGearShootingStartLongitudeDecimalDegree(Integer degree) { + setGearShootingStartLongitudeDegree(degree); + } public Integer getGearShootingStartLongitudeMinute() { return gearShootingStartLongitudeAsSexagecimal.getMinute(); @@ -362,7 +403,17 @@ Object oldValue = getGearShootingStartLongitudeMinute(); gearShootingStartLongitudeAsSexagecimal.setMinute(minute); firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LONGITUDE_MINUTE, oldValue, minute); + } + + public Float getGearShootingStartLongitudeDecimalMinute() { + return gearShootingStartLongitudeAsSexagecimal.getMinuteDecimale(); + } + public void setGearShootingStartLongitudeDecimalMinute(Float decimalMinute) { + gearShootingStartLongitudeAsSexagecimal.setMinuteDecimale(decimalMinute); + // 2013-01-22 kmorin: pass null as previous value, + // otherwise the filed is not filled with the value (I cannot explain why... :() + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LONGITUDE_DECIMAL_MINUTE, null, decimalMinute); } public Integer getGearShootingStartLongitudeSecond() { @@ -410,6 +461,10 @@ } return result; } + + public Integer getGearShootingEndLatitudeDecimalDegree() { + return getGearShootingEndLatitudeDegree(); + } public void setGearShootingEndLatitudeDegree(Integer degree) { Object oldValue = getGearShootingEndLatitudeDegree(); @@ -421,6 +476,10 @@ gearShootingEndLatitudeAsSexagecimal.setDegre(degree); firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LATITUDE_DEGREE, oldValue, degree); } + + public void setGearShootingEndLatitudeDecimalDegree(Integer degree) { + setGearShootingEndLatitudeDegree(degree); + } public Integer getGearShootingEndLatitudeMinute() { return gearShootingEndLatitudeAsSexagecimal.getMinute(); @@ -430,7 +489,17 @@ Object oldValue = getGearShootingEndLatitudeMinute(); gearShootingEndLatitudeAsSexagecimal.setMinute(minute); firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LATITUDE_MINUTE, oldValue, minute); + } + + public Float getGearShootingEndLatitudeDecimalMinute() { + return gearShootingEndLatitudeAsSexagecimal.getMinuteDecimale(); + } + public void setGearShootingEndLatitudeDecimalMinute(Float decimalMinute) { + gearShootingEndLatitudeAsSexagecimal.setMinuteDecimale(decimalMinute); + // 2013-01-22 kmorin: pass null as previous value, + // otherwise the filed is not filled with the value (I cannot explain why... :() + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LATITUDE_DECIMAL_MINUTE, null, decimalMinute); } public Integer getGearShootingEndLatitudeSecond() { @@ -460,6 +529,10 @@ } return result; } + + public Integer getGearShootingEndLongitudeDecimalDegree() { + return getGearShootingEndLongitudeDegree(); + } public void setGearShootingEndLongitudeDegree(Integer degree) { Object oldValue = getGearShootingEndLongitudeDegree(); @@ -471,6 +544,10 @@ gearShootingEndLongitudeAsSexagecimal.setDegre(degree); firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LONGITUDE_DEGREE, oldValue, degree); } + + public void setGearShootingEndLongitudeDecimalDegree(Integer degree) { + setGearShootingEndLongitudeDegree(degree); + } public Integer getGearShootingEndLongitudeMinute() { return gearShootingEndLongitudeAsSexagecimal.getMinute(); @@ -480,9 +557,19 @@ Object oldValue = getGearShootingEndLongitudeMinute(); gearShootingEndLongitudeAsSexagecimal.setMinute(minute); firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LONGITUDE_MINUTE, oldValue, minute); + } + public Float getGearShootingEndLongitudeDecimalMinute() { + return gearShootingEndLongitudeAsSexagecimal.getMinuteDecimale(); } + public void setGearShootingEndLongitudeDecimalMinute(Float decimalMinute) { + gearShootingEndLongitudeAsSexagecimal.setMinuteDecimale(decimalMinute); + // 2013-01-22 kmorin: pass null as previous value, + // otherwise the filed is not filled with the value (I cannot explain why... :() + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LONGITUDE_DECIMAL_MINUTE, null, decimalMinute); + } + public Integer getGearShootingEndLongitudeSecond() { return gearShootingEndLongitudeAsSexagecimal.getSeconde(); } @@ -614,6 +701,14 @@ firePropertyChange(PROPERTY_TRAWL_NET_NUMBER, oldValue, trawlNetNumber); } + public CoordinateEditorType getCoordinateEditorType() { + return coordinateEditorType; + } + + public void setCoordinateEditorType(CoordinateEditorType coordinateEditorType) { + this.coordinateEditorType = coordinateEditorType; + } + @Override protected FishingOperation newEntity() { return fishingOperation; @@ -631,6 +726,7 @@ setGearShootingStartLatitudeDegree(degree); setGearShootingStartLatitudeMinute(position.getMinute()); setGearShootingStartLatitudeSecond(position.getSeconde()); + setGearShootingStartLatitudeDecimalMinute(position.getMinuteDecimale()); position = SexagecimalPosition.valueOf(gearShootingStartLongitude); degree = position.getDegre(); @@ -640,6 +736,7 @@ setGearShootingStartLongitudeDegree(degree); setGearShootingStartLongitudeMinute(position.getMinute()); setGearShootingStartLongitudeSecond(position.getSeconde()); + setGearShootingStartLongitudeDecimalMinute(position.getMinuteDecimale()); position = SexagecimalPosition.valueOf(gearShootingEndLatitude); degree = position.getDegre(); @@ -652,6 +749,7 @@ setGearShootingEndLatitudeDegree(degree); setGearShootingEndLatitudeMinute(position.getMinute()); setGearShootingEndLatitudeSecond(position.getSeconde()); + setGearShootingEndLatitudeDecimalMinute(position.getMinuteDecimale()); position = SexagecimalPosition.valueOf(gearShootingEndLongitude); degree = position.getDegre(); @@ -661,6 +759,7 @@ setGearShootingEndLongitudeDegree(degree); setGearShootingEndLongitudeMinute(position.getMinute()); setGearShootingEndLongitudeSecond(position.getSeconde()); + setGearShootingEndLongitudeDecimalMinute(position.getMinuteDecimale()); } public void convertGearShootingCoordinatesDMSToDD() { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java 2013-01-23 15:56:31 UTC (rev 242) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java 2013-01-23 15:58:55 UTC (rev 243) @@ -28,6 +28,7 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -73,7 +74,7 @@ log.warn("Won't save new fishing operation, use explicit save button instead..."); } } else if (beanToSave.isValid()) { - if (handler.getConfig().isUseSexagecimalEditor()) { + if (beanToSave.getCoordinateEditorType() != CoordinateEditorType.DD) { beanToSave.convertGearShootingCoordinatesDMSToDD(); } Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CoordinateEditorType.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CoordinateEditorType.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CoordinateEditorType.java 2013-01-23 15:58:55 UTC (rev 243) @@ -0,0 +1,13 @@ + +package fr.ifremer.tutti.ui.swing.util.editor; + +/** + * + * @author kmorin <kmorin@codelutin.com> + * @since 1.0 + */ +public enum CoordinateEditorType { + + DMS, DD, DMD + +} Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-warning-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-warning-validation.xml 2013-01-23 15:56:31 UTC (rev 242) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-warning-validation.xml 2013-01-23 15:58:55 UTC (rev 243) @@ -38,7 +38,8 @@ <param name="doubleParams">min:90.0|max:90.0</param> <param name="expression"> <![CDATA[ - useSexagecimalFormat || ( -doubles.min <= gearShootingStartLatitude && gearShootingStartLatitude <= doubles.max ) + !"DD".equals(coordinateEditorType.toString()) || + ( -doubles.min <= gearShootingStartLatitude && gearShootingStartLatitude <= doubles.max ) ]]> </param> @@ -54,7 +55,7 @@ <param name="intParams">min:90|max:90</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( + !"DMS".equals(coordinateEditorType.toString()) || ( ( -ints.min < getGearShootingStartLatitudeDegree() && getGearShootingStartLatitudeDegree() < ints.max ) || ( ( getGearShootingStartLatitudeDegree() == ints.max || getGearShootingStartLatitudeDegree() == -ints.min ) @@ -69,14 +70,37 @@ </field-validator> </field> + + <field name="gearShootingStartLatitudeDecimalDegree"> + <field-validator type="fieldexpressionwithparams"> + <param name="intParams">min:90|max:90</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || ( + ( -ints.min < getGearShootingStartLatitudeDecimalDegree() && getGearShootingStartLatitudeDecimalDegree() < ints.max ) + || ( + ( getGearShootingStartLatitudeDecimalDegree() == ints.max || getGearShootingStartLatitudeDecimalDegree() == -ints.min ) + && getGearShootingStartLatitudeDecimalMinute() == 0.0 + ) + ) + ]]> + </param> + + <message>tutti.validator.warning.latitude.degree.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingStartLatitudeMinute"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingStartLatitudeMinute() && getGearShootingStartLatitudeMinute() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingStartLatitudeMinute() && getGearShootingStartLatitudeMinute() < ints.max ) ]]> </param> @@ -85,14 +109,31 @@ </field-validator> </field> + + <field name="gearShootingStartLatitudeDecimalMinute"> + <field-validator type="fieldexpressionwithparams"> + <param name="doubleParams">min:0.0|max:60.0</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || + ( doubles.min <= getGearShootingStartLatitudeDecimalMinute() && getGearShootingStartLatitudeDecimalMinute() < doubles.max ) + ]]> + </param> + <message>tutti.validator.warning.latitude.minute.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingStartLatitudeSecond"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingStartLatitudeSecond() && getGearShootingStartLatitudeSecond() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingStartLatitudeSecond() && getGearShootingStartLatitudeSecond() < ints.max ) ]]> </param> @@ -110,7 +151,8 @@ <param name="doubleParams">min:180.0|max:180.0</param> <param name="expression"> <![CDATA[ - useSexagecimalFormat || ( -doubles.min <= gearShootingStartLongitude && gearShootingStartLongitude <= doubles.max ) + !"DD".equals(coordinateEditorType.toString()) || + ( -doubles.min <= gearShootingStartLongitude && gearShootingStartLongitude <= doubles.max ) ]]> </param> @@ -126,7 +168,7 @@ <param name="intParams">min:180|max:180</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( + !"DMS".equals(coordinateEditorType.toString()) || ( (-ints.min < getGearShootingStartLongitudeDegree() && getGearShootingStartLongitudeDegree() < ints.max) || ( ( getGearShootingStartLongitudeDegree() == ints.max || getGearShootingStartLongitudeDegree() == -ints.min ) @@ -141,14 +183,37 @@ </field-validator> </field> + + <field name="gearShootingStartLongitudeDecimalDegree"> + <field-validator type="fieldexpressionwithparams"> + <param name="intParams">min:180|max:180</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || ( + (-ints.min < getGearShootingStartLongitudeDecimalDegree() && getGearShootingStartLongitudeDecimalDegree() < ints.max) + || ( + ( getGearShootingStartLongitudeDecimalDegree() == ints.max || getGearShootingStartLongitudeDecimalDegree() == -ints.min ) + && getGearShootingStartLongitudeDecimalMinute() == 0.0 + ) + ) + ]]> + </param> + + <message>tutti.validator.warning.longitude.degree.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingStartLongitudeMinute"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingStartLongitudeMinute() && getGearShootingStartLongitudeMinute() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingStartLongitudeMinute() && getGearShootingStartLongitudeMinute() < ints.max ) ]]> </param> @@ -157,14 +222,31 @@ </field-validator> </field> + + <field name="gearShootingStartLongitudeDecimalMinute"> + <field-validator type="fieldexpressionwithparams"> + <param name="doubleParams">min:0.0|max:60.0</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || + ( doubles.min <= getGearShootingStartLongitudeDecimalMinute() && getGearShootingStartLongitudeDecimalMinute() < doubles.max ) + ]]> + </param> + <message>tutti.validator.warning.longitude.minute.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingStartLongitudeSecond"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingStartLongitudeSecond() && getGearShootingStartLongitudeSecond() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingStartLongitudeSecond() && getGearShootingStartLongitudeSecond() < ints.max ) ]]> </param> @@ -182,7 +264,8 @@ <param name="doubleParams">min:90.0|max:90.0</param> <param name="expression"> <![CDATA[ - useSexagecimalFormat || ( -doubles.min <= gearShootingEndLatitude && gearShootingEndLatitude <= doubles.max ) + !"DD".equals(coordinateEditorType.toString()) || + ( -doubles.min <= gearShootingEndLatitude && gearShootingEndLatitude <= doubles.max ) ]]> </param> @@ -199,7 +282,7 @@ <param name="intParams">min:90|max:90</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( + !"DMS".equals(coordinateEditorType.toString()) || ( (-ints.min < getGearShootingEndLatitudeDegree() && getGearShootingEndLatitudeDegree() < ints.max) || ( ( getGearShootingEndLatitudeDegree() == ints.max || getGearShootingEndLatitudeDegree() == -ints.min ) @@ -214,14 +297,37 @@ </field-validator> </field> + + <field name="gearShootingEndLatitudeDecimalDegree"> + <field-validator type="fieldexpressionwithparams"> + <param name="intParams">min:90|max:90</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || ( + (-ints.min < getGearShootingEndLatitudeDecimalDegree() && getGearShootingEndLatitudeDecimalDegree() < ints.max) + || ( + ( getGearShootingEndLatitudeDecimalDegree() == ints.max || getGearShootingEndLatitudeDecimalDegree() == -ints.min ) + && getGearShootingEndLatitudeDecimalMinute() == 0.0 + ) + ) + ]]> + </param> + + <message>tutti.validator.warning.latitude.degree.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingEndLatitudeMinute"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingEndLatitudeMinute() && getGearShootingEndLatitudeMinute() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingEndLatitudeMinute() && getGearShootingEndLatitudeMinute() < ints.max ) ]]> </param> @@ -230,14 +336,31 @@ </field-validator> </field> + + <field name="gearShootingEndLatitudeDecimalMinute"> + <field-validator type="fieldexpressionwithparams"> + <param name="doubleParams">min:0.0|max:60.0</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || + ( doubles.min <= getGearShootingEndLatitudeDecimalMinute() && getGearShootingEndLatitudeDecimalMinute() < doubles.max ) + ]]> + </param> + <message>tutti.validator.warning.latitude.minute.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingEndLatitudeSecond"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingEndLatitudeSecond() && getGearShootingEndLatitudeSecond() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingEndLatitudeSecond() && getGearShootingEndLatitudeSecond() < ints.max ) ]]> </param> @@ -255,7 +378,8 @@ <param name="doubleParams">min:180.0|max:180.0</param> <param name="expression"> <![CDATA[ - useSexagecimalFormat || ( -doubles.min <= gearShootingEndLongitude && gearShootingEndLongitude <= doubles.max ) + !"DD".equals(coordinateEditorType.toString()) || + ( -doubles.min <= gearShootingEndLongitude && gearShootingEndLongitude <= doubles.max ) ]]> </param> @@ -271,7 +395,7 @@ <param name="intParams">min:180|max:180</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( + !"DMS".equals(coordinateEditorType.toString()) || ( (-ints.min < getGearShootingEndLongitudeDegree() && getGearShootingEndLongitudeDegree() < ints.max) || ( ( getGearShootingEndLongitudeDegree() == ints.max || getGearShootingEndLongitudeDegree() == -ints.min ) @@ -286,14 +410,37 @@ </field-validator> </field> + + <field name="gearShootingEndLongitudeDecimalDegree"> + <field-validator type="fieldexpressionwithparams"> + <param name="intParams">min:180|max:180</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || ( + (-ints.min < getGearShootingEndLongitudeDecimalDegree() && getGearShootingEndLongitudeDecimalDegree() < ints.max) + || ( + ( getGearShootingEndLongitudeDecimalDegree() == ints.max || getGearShootingEndLongitudeDecimalDegree() == -ints.min ) + && getGearShootingEndLongitudeDecimalMinute() == 0.0 + ) + ) + ]]> + </param> + + <message>tutti.validator.warning.longitude.degree.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingEndLongitudeMinute"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingEndLongitudeMinute() && getGearShootingEndLongitudeMinute() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingEndLongitudeMinute() && getGearShootingEndLongitudeMinute() < ints.max ) ]]> </param> @@ -303,13 +450,30 @@ </field> + <field name="gearShootingEndLongitudeDecimalMinute"> + + <field-validator type="fieldexpressionwithparams"> + <param name="doubleParams">min:0.0|max:60.0</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || + ( doubles.min <= getGearShootingEndLongitudeDecimalMinute() && getGearShootingEndLongitudeDecimalMinute() < doubles.max ) + ]]> + </param> + <message>tutti.validator.warning.longitude.minute.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingEndLongitudeSecond"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingEndLongitudeSecond() && getGearShootingEndLongitudeSecond() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingEndLongitudeSecond() && getGearShootingEndLongitudeSecond() < ints.max ) ]]> </param> 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-23 15:56:31 UTC (rev 242) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-01-23 15:58:55 UTC (rev 243) @@ -74,13 +74,14 @@ <!--gear shooting start latitude validation --> - <field name="gearShootingStartLatitude"> + <field name="gearShootingStartLatitude"> <field-validator type="fieldexpressionwithparams"> <param name="doubleParams">min:90.0|max:90.0</param> <param name="expression"> <![CDATA[ - useSexagecimalFormat || ( -doubles.min <= gearShootingStartLatitude && gearShootingStartLatitude <= doubles.max ) + !"DD".equals(coordinateEditorType.toString()) || + ( -doubles.min <= gearShootingStartLatitude && gearShootingStartLatitude <= doubles.max ) ]]> </param> @@ -96,7 +97,7 @@ <param name="intParams">min:90|max:90</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( + !"DMS".equals(coordinateEditorType.toString()) || ( ( -ints.min < getGearShootingStartLatitudeDegree() && getGearShootingStartLatitudeDegree() < ints.max ) || ( ( getGearShootingStartLatitudeDegree() == ints.max || getGearShootingStartLatitudeDegree() == -ints.min ) @@ -111,14 +112,37 @@ </field-validator> </field> + + <field name="gearShootingStartLatitudeDecimalDegree"> + <field-validator type="fieldexpressionwithparams"> + <param name="intParams">min:90|max:90</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || ( + ( -ints.min < getGearShootingStartLatitudeDecimalDegree() && getGearShootingStartLatitudeDecimalDegree() < ints.max ) + || ( + ( getGearShootingStartLatitudeDecimalDegree() == ints.max || getGearShootingStartLatitudeDecimalDegree() == -ints.min ) + && getGearShootingStartLatitudeDecimalMinute() == 0.0 + ) + ) + ]]> + </param> + + <message>tutti.validator.warning.latitude.degree.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingStartLatitudeMinute"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingStartLatitudeMinute() && getGearShootingStartLatitudeMinute() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingStartLatitudeMinute() && getGearShootingStartLatitudeMinute() < ints.max ) ]]> </param> @@ -127,14 +151,31 @@ </field-validator> </field> + + <field name="gearShootingStartLatitudeDecimalMinute"> + <field-validator type="fieldexpressionwithparams"> + <param name="doubleParams">min:0.0|max:60.0</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || + ( doubles.min <= getGearShootingStartLatitudeDecimalMinute() && getGearShootingStartLatitudeDecimalMinute() < doubles.max ) + ]]> + </param> + <message>tutti.validator.warning.latitude.minute.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingStartLatitudeSecond"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingStartLatitudeSecond() && getGearShootingStartLatitudeSecond() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingStartLatitudeSecond() && getGearShootingStartLatitudeSecond() < ints.max ) ]]> </param> @@ -152,7 +193,8 @@ <param name="doubleParams">min:180.0|max:180.0</param> <param name="expression"> <![CDATA[ - useSexagecimalFormat || ( -doubles.min <= gearShootingStartLongitude && gearShootingStartLongitude <= doubles.max ) + !"DD".equals(coordinateEditorType.toString()) || + ( -doubles.min <= gearShootingStartLongitude && gearShootingStartLongitude <= doubles.max ) ]]> </param> @@ -168,7 +210,7 @@ <param name="intParams">min:180|max:180</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( + !"DMS".equals(coordinateEditorType.toString()) || ( (-ints.min < getGearShootingStartLongitudeDegree() && getGearShootingStartLongitudeDegree() < ints.max) || ( ( getGearShootingStartLongitudeDegree() == ints.max || getGearShootingStartLongitudeDegree() == -ints.min ) @@ -183,14 +225,37 @@ </field-validator> </field> + + <field name="gearShootingStartLongitudeDecimalDegree"> + <field-validator type="fieldexpressionwithparams"> + <param name="intParams">min:180|max:180</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || ( + (-ints.min < getGearShootingStartLongitudeDecimalDegree() && getGearShootingStartLongitudeDecimalDegree() < ints.max) + || ( + ( getGearShootingStartLongitudeDecimalDegree() == ints.max || getGearShootingStartLongitudeDecimalDegree() == -ints.min ) + && getGearShootingStartLongitudeDecimalMinute() == 0.0 + ) + ) + ]]> + </param> + + <message>tutti.validator.warning.longitude.degree.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingStartLongitudeMinute"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingStartLongitudeMinute() && getGearShootingStartLongitudeMinute() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingStartLongitudeMinute() && getGearShootingStartLongitudeMinute() < ints.max ) ]]> </param> @@ -199,14 +264,31 @@ </field-validator> </field> + + <field name="gearShootingStartLongitudeDecimalMinute"> + <field-validator type="fieldexpressionwithparams"> + <param name="doubleParams">min:0.0|max:60.0</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || + ( doubles.min <= getGearShootingStartLongitudeDecimalMinute() && getGearShootingStartLongitudeDecimalMinute() < doubles.max ) + ]]> + </param> + <message>tutti.validator.warning.longitude.minute.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingStartLongitudeSecond"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingStartLongitudeSecond() && getGearShootingStartLongitudeSecond() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingStartLongitudeSecond() && getGearShootingStartLongitudeSecond() < ints.max ) ]]> </param> @@ -224,7 +306,8 @@ <param name="doubleParams">min:90.0|max:90.0</param> <param name="expression"> <![CDATA[ - useSexagecimalFormat || ( -doubles.min <= gearShootingEndLatitude && gearShootingEndLatitude <= doubles.max ) + !"DD".equals(coordinateEditorType.toString()) || + ( -doubles.min <= gearShootingEndLatitude && gearShootingEndLatitude <= doubles.max ) ]]> </param> @@ -241,7 +324,7 @@ <param name="intParams">min:90|max:90</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( + !"DMS".equals(coordinateEditorType.toString()) || ( (-ints.min < getGearShootingEndLatitudeDegree() && getGearShootingEndLatitudeDegree() < ints.max) || ( ( getGearShootingEndLatitudeDegree() == ints.max || getGearShootingEndLatitudeDegree() == -ints.min ) @@ -256,14 +339,37 @@ </field-validator> </field> + + <field name="gearShootingEndLatitudeDecimalDegree"> + <field-validator type="fieldexpressionwithparams"> + <param name="intParams">min:90|max:90</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || ( + (-ints.min < getGearShootingEndLatitudeDecimalDegree() && getGearShootingEndLatitudeDecimalDegree() < ints.max) + || ( + ( getGearShootingEndLatitudeDecimalDegree() == ints.max || getGearShootingEndLatitudeDecimalDegree() == -ints.min ) + && getGearShootingEndLatitudeDecimalMinute() == 0.0 + ) + ) + ]]> + </param> + + <message>tutti.validator.warning.latitude.degree.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingEndLatitudeMinute"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingEndLatitudeMinute() && getGearShootingEndLatitudeMinute() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingEndLatitudeMinute() && getGearShootingEndLatitudeMinute() < ints.max ) ]]> </param> @@ -272,14 +378,31 @@ </field-validator> </field> + + <field name="gearShootingEndLatitudeDecimalMinute"> + <field-validator type="fieldexpressionwithparams"> + <param name="doubleParams">min:0.0|max:60.0</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || + ( doubles.min <= getGearShootingEndLatitudeDecimalMinute() && getGearShootingEndLatitudeDecimalMinute() < doubles.max ) + ]]> + </param> + <message>tutti.validator.warning.latitude.minute.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingEndLatitudeSecond"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingEndLatitudeSecond() && getGearShootingEndLatitudeSecond() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingEndLatitudeSecond() && getGearShootingEndLatitudeSecond() < ints.max ) ]]> </param> @@ -297,7 +420,8 @@ <param name="doubleParams">min:180.0|max:180.0</param> <param name="expression"> <![CDATA[ - useSexagecimalFormat || ( -doubles.min <= gearShootingEndLongitude && gearShootingEndLongitude <= doubles.max ) + !"DD".equals(coordinateEditorType.toString()) || + ( -doubles.min <= gearShootingEndLongitude && gearShootingEndLongitude <= doubles.max ) ]]> </param> @@ -313,7 +437,7 @@ <param name="intParams">min:180|max:180</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( + !"DMS".equals(coordinateEditorType.toString()) || ( (-ints.min < getGearShootingEndLongitudeDegree() && getGearShootingEndLongitudeDegree() < ints.max) || ( ( getGearShootingEndLongitudeDegree() == ints.max || getGearShootingEndLongitudeDegree() == -ints.min ) @@ -328,14 +452,37 @@ </field-validator> </field> + + <field name="gearShootingEndLongitudeDecimalDegree"> + <field-validator type="fieldexpressionwithparams"> + <param name="intParams">min:180|max:180</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || ( + (-ints.min < getGearShootingEndLongitudeDecimalDegree() && getGearShootingEndLongitudeDecimalDegree() < ints.max) + || ( + ( getGearShootingEndLongitudeDecimalDegree() == ints.max || getGearShootingEndLongitudeDecimalDegree() == -ints.min ) + && getGearShootingEndLongitudeDecimalMinute() == 0.0 + ) + ) + ]]> + </param> + + <message>tutti.validator.warning.longitude.degree.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingEndLongitudeMinute"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingEndLongitudeMinute() && getGearShootingEndLongitudeMinute() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingEndLongitudeMinute() && getGearShootingEndLongitudeMinute() < ints.max ) ]]> </param> @@ -345,13 +492,30 @@ </field> + <field name="gearShootingEndLongitudeDecimalMinute"> + + <field-validator type="fieldexpressionwithparams"> + <param name="doubleParams">min:0.0|max:60.0</param> + <param name="expression"> + <![CDATA[ + !"DMD".equals(coordinateEditorType.toString()) || + ( doubles.min <= getGearShootingEndLongitudeDecimalMinute() && getGearShootingEndLongitudeDecimalMinute() < doubles.max ) + ]]> + </param> + <message>tutti.validator.warning.longitude.minute.outOfBounds</message> + + </field-validator> + + </field> + <field name="gearShootingEndLongitudeSecond"> <field-validator type="fieldexpressionwithparams"> <param name="intParams">min:0|max:60</param> <param name="expression"> <![CDATA[ - !useSexagecimalFormat || ( ints.min <= getGearShootingEndLongitudeSecond() && getGearShootingEndLongitudeSecond() < ints.max ) + !"DMS".equals(coordinateEditorType.toString()) || + ( ints.min <= getGearShootingEndLongitudeSecond() && getGearShootingEndLongitudeSecond() < ints.max ) ]]> </param> 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-23 15:56:31 UTC (rev 242) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-23 15:58:55 UTC (rev 243) @@ -90,9 +90,11 @@ tutti.config.ui.color.rowInvalid=Ligne invalide tutti.config.ui.color.rowReadOnly=Cellule non éditable tutti.config.ui.config=Chemin du fichier de configuration des interfaces graphiques +tutti.config.ui.coordinateEditorType= tutti.config.ui.shortcut.closePopup=Fermer une popup tutti.config.ui.showNumberEditorButton=Afficher le pavé numérique de saisie tutti.config.ui.useSexagecimalEditor=Utiliser l'éditeur sexagécimal pour entrer des coordonnées +tutti.duration.format=dj Hh m'm' tutti.errorTable.title=Table d'erreurs tutti.file.protocol=Extension d'un fichier de protocole Tutti tutti.label.attachmentEditor.file=Fichier