Author: kmorin Date: 2013-01-18 12:33:30 +0100 (Fri, 18 Jan 2013) New Revision: 221 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/221 Log: - extract coordinate editor option in the config - add icons - enable or disable menu items according to the validation context Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 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/home/SelectCruiseUI.css 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/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 08:11:31 UTC (rev 220) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 11:33:30 UTC (rev 221) @@ -73,15 +73,21 @@ text: "tutti.action.fillCatches"; toolTipText: "tutti.action.fillCatches.tip"; mnemonic: C; - enabled: {model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION && model.isCruiseContextFilled()}; - /*actionIcon: "catches";*/ + enabled: {( + TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext()) + || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION + ) && model.isCruiseContextFilled()}; + actionIcon: edit; } #menuActionValidateCatches { text: "tutti.action.validateCatches"; toolTipText: "tutti.action.validateCatches.tip"; mnemonic: V; - enabled: {model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION && model.isCruiseContextFilled()}; + enabled: {( + !TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext()) + || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION + ) && model.isCruiseContextFilled()}; actionIcon: validate; } @@ -96,6 +102,7 @@ toolTipText: "tutti.menu.synchronisationImport.tip"; mnemonic: I; enabled: false; + actionIcon: import; } #menuSynchronisationExport { @@ -103,6 +110,7 @@ toolTipText: "tutti.menu.synchronisationExport.tip"; mnemonic: E; enabled: false; + actionIcon: export; } #menuSynchronisationAllegro { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 08:11:31 UTC (rev 220) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 11:33:30 UTC (rev 221) @@ -31,6 +31,7 @@ org.jdesktop.swingx.JXTitledPanel jaxx.runtime.validator.swing.SwingValidator fr.ifremer.tutti.ui.swing.util.SwingValidatorMessageWidget + fr.ifremer.tutti.ui.swing.TuttiUIContext </import> <TuttiUIContext id='model' 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-18 08:11:31 UTC (rev 220) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-18 11:33:30 UTC (rev 221) @@ -128,6 +128,10 @@ public boolean isShowNumberEditorButton() { return applicationConfig.getOptionAsBoolean(TuttiConfigOption.SHOW_NUMBER_EDITOR_BUTTON.getKey()); } + + public boolean isUseSexagecimalEditor() { + return applicationConfig.getOptionAsBoolean(TuttiConfigOption.USE_SEXAGECIMAL_EDITOR.getKey()); + } public String getProgramId() { String result = applicationConfig.getOption(TuttiConfigOption.PROGRAM_ID.getKey()); 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-18 08:11:31 UTC (rev 220) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-18 11:33:30 UTC (rev 221) @@ -98,8 +98,14 @@ "tutti.ui.shortcut.closePopup", n_("tutti.config.ui.shortcut.closePopup"), "alt pressed F", - KeyStroke.class); + KeyStroke.class), + USE_SEXAGECIMAL_EDITOR( + "tutti.ui.useSexagecimalEditor", + n_("tutti.config.ui.useSexagecimalEditor"), + "false", + Boolean.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-18 08:11:31 UTC (rev 220) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-01-18 11:33:30 UTC (rev 221) @@ -101,12 +101,14 @@ .addOption(TuttiServiceConfigOption.SITE_URL) .addOption(TuttiConfigOption.UI_CONFIG_FILE); - // COLOR - helper.addCategory(n_("tutti.config.category.colors"), - n_("tutti.config.category.colors.description"), + // UI + + helper.addCategory(n_("tutti.config.category.ui"), + n_("tutti.config.category.ui.description"), CALLBACK_UI) .addOption(TuttiConfigOption.COLOR_ROW_INVALID) - .addOption(TuttiConfigOption.COLOR_ROW_READ_ONLY); + .addOption(TuttiConfigOption.COLOR_ROW_READ_ONLY) + .addOption(TuttiConfigOption.USE_SEXAGECIMAL_EDITOR); // SHORTCUT Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 08:11:31 UTC (rev 220) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 11:33:30 UTC (rev 221) @@ -91,9 +91,11 @@ #fillFishingOperationsButton { text: "tutti.action.fillCatches"; enabled: {uiContext.isCruiseContextFilled()}; + actionIcon: edit; } #validateFishingOperationsButton { text: "tutti.action.validateCatches"; enabled: {uiContext.isCruiseContextFilled()}; + actionIcon: validate; } 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-18 08:11:31 UTC (rev 220) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 11:33:30 UTC (rev 221) @@ -137,20 +137,9 @@ text: "tutti.label.fishingOperation.gearShootingEnd"; } -#gearShootingCoordinatesDMSRadio { - text: "tutti.label.fishingOperation.gearShootingCoordinatesDMS"; - selected: {model.isUseSexagecimalFormat()}; - buttonGroup: "gearShootingCoordinates"; -} -#gearShootingCoordinatesDDRadio { - text: "tutti.label.fishingOperation.gearShootingCoordinatesDD"; - selected: {!model.isUseSexagecimalFormat()}; - buttonGroup: "gearShootingCoordinates"; -} - CardLayout2Ext { - selected: {model.isUseSexagecimalFormat() ? "DMS" : "DD"}; + selected: {handler.getConfig().isUseSexagecimalEditor() ? "DMS" : "DD"}; } #traitVesselPanel { 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-18 08:11:31 UTC (rev 220) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-18 11:33:30 UTC (rev 221) @@ -198,12 +198,7 @@ constraints='BorderLayout.CENTER'> <row> <cell> - <JPanel layout="{new GridLayout(1,0)}"> - <JRadioButton id='gearShootingCoordinatesDDRadio' - onActionPerformed='handler.setUseSexagecimalFormat(false)'/> - <JRadioButton id='gearShootingCoordinatesDMSRadio' - onActionPerformed='handler.setUseSexagecimalFormat(true)'/> - </JPanel> + <JPanel/> </cell> <cell> <JLabel id='gearLatitudeLabel'/> 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-18 08:11:31 UTC (rev 220) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 11:33:30 UTC (rev 221) @@ -26,6 +26,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; @@ -157,20 +158,21 @@ } }); - 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); +// context.getConfig(). +// 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); +// +// if (useSexagecimalFormat) { +// getModel().convertGearShootingCoordinatesDDToDMS(); +// } else { +// getModel().convertGearShootingCoordinatesDMSToDD(); +// } +// } +// }); - if (useSexagecimalFormat) { - getModel().convertGearShootingCoordinatesDDToDMS(); - } else { - getModel().convertGearShootingCoordinatesDMSToDD(); - } - } - }); - ui.setContextValue(model); fishingOperationMonitor.setBean(model); @@ -354,11 +356,14 @@ FishingOperationLocation subStrata = bean.getSubStrata(); FishingOperationLocation location = bean.getLocation(); - // update gear universe - ui.getGearComboBox().setData(Lists.newArrayList(bean.getCruise().getGear())); + Cruise cruise = bean.getCruise(); + if (cruise != null) { + // update gear universe + ui.getGearComboBox().setData(Lists.newArrayList(cruise.getGear())); - // update vessel universe - ui.getVesselComboBox().setData(Lists.newArrayList(bean.getCruise().getVessel())); + // update vessel universe + ui.getVesselComboBox().setData(Lists.newArrayList(cruise.getVessel())); + } model.fromBean(bean); @@ -425,7 +430,7 @@ log.warn("Won't save new fishing operation, use explicit save button instead..."); } } else if (beanToSave.isValid()) { - if (beanToSave.isUseSexagecimalFormat()) { + if (getConfig().isUseSexagecimalEditor()) { beanToSave.convertGearShootingCoordinatesDMSToDD(); } @@ -455,10 +460,6 @@ //TODO } - public void setUseSexagecimalFormat(boolean useSexagecimalFormat) { - getModel().setUseSexagecimalFormat(useSexagecimalFormat); - } - public void setGearShootingStartLatitude(String text) { getModel().setGearShootingStartLatitude(Float.valueOf(text)); } 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-18 08:11:31 UTC (rev 220) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-18 11:33:30 UTC (rev 221) @@ -34,12 +34,11 @@ import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.spatial.SexagecimalPosition; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; -import org.nuiton.util.beans.Binder; -import org.nuiton.util.beans.BinderFactory; - import java.util.Calendar; import java.util.Date; import java.util.List; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; import static org.nuiton.i18n.I18n.n_; @@ -68,8 +67,6 @@ 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"; @@ -153,8 +150,6 @@ protected SexagecimalPosition gearShootingEndLongitudeAsSexagecimal; - protected boolean useSexagecimalFormat = false; - protected Float gearShootingStartLatitude; protected Float gearShootingStartLongitude; @@ -279,16 +274,6 @@ 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; } 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-18 08:11:31 UTC (rev 220) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 11:33:30 UTC (rev 221) @@ -50,10 +50,10 @@ tutti.application.name=Tutti tutti.config.category.applications=Application tutti.config.category.applications.description=Application -tutti.config.category.colors=Couleurs -tutti.config.category.colors.description=Couleurs utilisées dans les interfaces graphiques tutti.config.category.shortcuts=Raccourcis tutti.config.category.shortcuts.description=Liste des raccourcis clavier +tutti.config.category.ui=Interface utilisateur +tutti.config.category.ui.description=Options de l'interface utilisateur tutti.config.cruiseId=Identifiant de la dernière campagne utilisée tutti.config.programId=Identifiant de la dernière série de campagne utilisée tutti.config.protocolId=Identifiant du dernier protocole utilisé @@ -63,6 +63,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.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.label.attachmentEditor.file=Fichier @@ -73,7 +74,7 @@ tutti.label.catches.benthosTotalUnsortedWeight=Poids total HORS VRAC (kg) tutti.label.catches.benthosTotalWeight=Poids TOTAL (kg) tutti.label.catches.catchThalassa=(*) uniquement sur Thalassa -tutti.label.catches.catchTotalRejectedWeight=Poids total REJETÉ (kg) +tutti.label.catches.catchTotalRejectedWeight=Poids total NON TRIÉ (kg) tutti.label.catches.catchTotalSortedCarousselWeight=Caroussel Observé (*) tutti.label.catches.catchTotalSortedTremisWeight=Tremis (*) tutti.label.catches.catchTotalSortedWeight=Poids total VRAC (kg)