Author: tchemit Date: 2013-01-19 03:51:30 +0100 (Sat, 19 Jan 2013) New Revision: 230 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/230 Log: - can not save a protocol with same name - fix protocol usage - remove blockLayer color option 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/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/cruise/CancelEditCruiseAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-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/MainUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-19 02:51:30 UTC (rev 230) @@ -39,7 +39,6 @@ <MainUIHandler id='handler' initializer='getContextValue(MainUIHandler.class)'/> - <BlockingLayerUI2 id='actionBlockerLayer'/> <SelectCruiseAction id='selectCruiseAction' constructorParams='handler'/> <EditSelectedProtocolAction id='editProtocolAction' constructorParams='handler'/> <EditSelectedProgramAction id='editProgramAction' constructorParams='handler'/> @@ -111,7 +110,7 @@ <SwingValidatorMessageWidget id='validatorMessageWidget'/> </JToolBar> - <JXTitledPanel id='body' constraints='BorderLayout.CENTER' decorator='boxed'/> + <JXTitledPanel id='body' constraints='BorderLayout.CENTER'/> <!-- status message bar --> <StatusMessagePanel id='status' constraints="BorderLayout.SOUTH"/> 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-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-19 02:51:30 UTC (rev 230) @@ -156,10 +156,6 @@ return applicationConfig.getOptionAsColor(TuttiConfigOption.COLOR_ROW_READ_ONLY.getKey()); } - public Color getColorBlockingLayer() { - return applicationConfig.getOptionAsColor(TuttiConfigOption.COLOR_BLOCKING_LAYER.getKey()); - } - public KeyStroke getShortcutClosePopup() { return applicationConfig.getOptionAsKeyStroke(TuttiConfigOption.SHORTCUT_CLOSE_POPUP.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-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-19 02:51:30 UTC (rev 230) @@ -82,13 +82,6 @@ Boolean.class ), - COLOR_BLOCKING_LAYER( - "tutti.ui.color.blockingLayer", - n_("tutti.config.ui.color.blockingLayer"), - new Color(50, 50, 50).toString(), - Color.class - ), - COLOR_ROW_READ_ONLY( "tutti.ui.color.rowReadOnly", n_("tutti.config.ui.color.rowReadOnly"), 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-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-01-19 02:51:30 UTC (rev 230) @@ -106,7 +106,6 @@ helper.addCategory(n_("tutti.config.category.ui"), n_("tutti.config.category.ui.description"), CALLBACK_UI) - .addOption(TuttiConfigOption.COLOR_BLOCKING_LAYER) .addOption(TuttiConfigOption.COLOR_ROW_INVALID) .addOption(TuttiConfigOption.COLOR_ROW_READ_ONLY) .addOption(TuttiConfigOption.USE_SEXAGECIMAL_EDITOR); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java 2013-01-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java 2013-01-19 02:51:30 UTC (rev 230) @@ -21,7 +21,7 @@ super(handler, "cancelEditCruise", "cancel", - _("tutti.action.cancel.editcruise"), + _("tutti.action.cancel.editCruise"), _("tutti.action.cancel.editCruise.tip"), true ); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-19 02:51:30 UTC (rev 230) @@ -34,16 +34,18 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; -import java.util.List; import jaxx.runtime.swing.editor.bean.BeanComboBox; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; +import java.util.List; + /** * @author kmorin * @since 0.3 @@ -174,17 +176,17 @@ log.info("closing: " + ui); } } - + @Override protected void onAfterSelectedRowChanged(int oldRowIndex, EnvironmentRowModel oldRow, int newRowIndex, EnvironmentRowModel newRow) { - + super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow); getModel().setRemoveCaracteristicEnabled(newRow != null); } - + //------------------------------------------------------------------------// //-- Public methods --// //------------------------------------------------------------------------// @@ -193,18 +195,18 @@ public void addRow() { BeanComboBox<Caracteristic> keyCombo = ui.getNewRowKey(); Caracteristic selectedItem = (Caracteristic) keyCombo.getSelectedItem(); - + EnvironmentRowModel row = getTableModel().createNewRow(); row.setKey(selectedItem); getTableModel().addNewRow(row); - + EnvironmentTableModel tableModel = getTableModel(); int rowIndex = tableModel.getRowCount() - 1; tableModel.fireTableRowsInserted(rowIndex, rowIndex); keyCombo.removeItem(selectedItem); selectFirstInCombo(keyCombo); - + EnvironmentTabUIModel model = getModel(); model.setModify(true); recomputeRowValidState(row); @@ -221,7 +223,7 @@ environmentCaracteristics = new CaracteristicMap(); } - TuttiProtocol protocol = ui.getContextValue(TuttiProtocol.class); + TuttiProtocol protocol = TuttiUIUtil.getProtocol(ui); List<String> environmentPmfmIds = Lists.newArrayList(); if (protocol != null) { List<String> protocolEnvironmentPmfmId = protocol.getEnvironmentPmfmId(); @@ -229,10 +231,10 @@ environmentPmfmIds.addAll(protocolEnvironmentPmfmId); } } - + List<EnvironmentRowModel> rows = Lists.newArrayList(); List<Caracteristic> caracteristics = Lists.newArrayList(environmentCaracteristics.keySet()); - + List<Caracteristic> availableCaracteristics = model.getAvailableCaracteristics(); for (String id : environmentPmfmIds) { Caracteristic caracteristic = TuttiEntities.findById(availableCaracteristics, id); @@ -240,14 +242,14 @@ caracteristics.add(caracteristic); } } - + for (Caracteristic key : caracteristics) { EnvironmentRowModel newRow = tableModel.createNewRow(); newRow.setKey(key); newRow.setValue(environmentCaracteristics.get(key)); rows.add(newRow); } - + model.setRows(rows); List<Caracteristic> caracteristicList = Lists.newArrayList(); @@ -262,15 +264,15 @@ selectFirstInCombo(ui.getNewRowKey()); model.setModify(false); } - + public void removeCaracteristic() { int rowIndex = getTable().getSelectedRow(); Preconditions.checkState(rowIndex != -1, "Cant remove caracteristic if no caracteristic selected"); - + EnvironmentRowModel row = getTableModel().getEntry(rowIndex); - + FishingOperation fishingOperation = getModel().getFishingOperation(); Preconditions.checkNotNull(fishingOperation); @@ -278,27 +280,27 @@ if (caracteristicMap != null) { caracteristicMap.remove(row.getKey()); } - - + + //add the row in the combo BeanComboBox keyCombo = ui.getNewRowKey(); keyCombo.addItem(row.getKey()); selectFirstInCombo(keyCombo); - + // remove the row from the model getModel().getRows().remove(rowIndex); // refresh all the table getTableModel().fireTableRowsDeleted(rowIndex, rowIndex); - + getModel().removeRowInError(row); - + } - + //------------------------------------------------------------------------// //-- Protected methods --// //------------------------------------------------------------------------// - + protected void saveRow(EnvironmentRowModel row) { if (row.isValid()) { @@ -309,7 +311,7 @@ fishingOperation.setEnvironmentCaracteristics(new CaracteristicMap()); } - fishingOperation.getEnvironmentCaracteristics().put(row.getKey(), row.getValue()); + fishingOperation.getEnvironmentCaracteristics().put(row.getKey(), row.getValue()); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-19 02:51:30 UTC (rev 230) @@ -32,20 +32,20 @@ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI; -import fr.ifremer.tutti.ui.swing.util.TabHandler; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; -import java.util.List; import jaxx.runtime.swing.editor.bean.BeanComboBox; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; +import java.util.List; + /** * @author kmorin * @since 0.3 @@ -179,17 +179,17 @@ log.info("closing: " + ui); } } - + @Override protected void onAfterSelectedRowChanged(int oldRowIndex, GearShootingRowModel oldRow, int newRowIndex, GearShootingRowModel newRow) { - + super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow); getModel().setRemoveCaracteristicEnabled(newRow != null); } - + //------------------------------------------------------------------------// //-- Public methods --// //------------------------------------------------------------------------// @@ -198,18 +198,18 @@ public void addRow() { BeanComboBox<Caracteristic> keyCombo = ui.getNewRowKey(); Caracteristic selectedItem = (Caracteristic) keyCombo.getSelectedItem(); - + GearShootingRowModel row = getTableModel().createNewRow(); row.setKey(selectedItem); getModel().getRows().add(row); - + GearShootingTableModel tableModel = getTableModel(); int rowIndex = tableModel.getRowCount() - 1; tableModel.fireTableRowsInserted(rowIndex, rowIndex); keyCombo.removeItem(selectedItem); selectFirstInCombo(keyCombo); - + GearShootingTabUIModel model = getModel(); model.setModify(true); recomputeRowValidState(row); @@ -225,8 +225,8 @@ if (gearShootingCaracteristics == null) { gearShootingCaracteristics = new CaracteristicMap(); } - - TuttiProtocol protocol = ui.getContextValue(TuttiProtocol.class); + + TuttiProtocol protocol = TuttiUIUtil.getProtocol(ui); List<String> gearPmfmIds = Lists.newArrayList(); if (protocol != null) { List<String> protocolGearPmfmId = protocol.getGearPmfmId(); @@ -234,10 +234,10 @@ gearPmfmIds.addAll(protocolGearPmfmId); } } - + List<GearShootingRowModel> rows = Lists.newArrayList(); List<Caracteristic> caracteristics = Lists.newArrayList(gearShootingCaracteristics.keySet()); - + List<Caracteristic> availableCaracteristics = model.getAvailableCaracteristics(); for (String id : gearPmfmIds) { Caracteristic caracteristic = TuttiEntities.findById(availableCaracteristics, id); @@ -245,7 +245,7 @@ caracteristics.add(caracteristic); } } - + for (Caracteristic key : caracteristics) { GearShootingRowModel newRow = tableModel.createNewRow(); newRow.setKey(key); @@ -266,15 +266,15 @@ selectFirstInCombo(ui.getNewRowKey()); model.setModify(false); } - + public void removeCaracteristic() { int rowIndex = getTable().getSelectedRow(); Preconditions.checkState(rowIndex != -1, "Cant remove caracteristic if no caracteristic selected"); - + GearShootingRowModel row = getTableModel().getEntry(rowIndex); - + FishingOperation fishingOperation = getModel().getFishingOperation(); Preconditions.checkNotNull(fishingOperation); @@ -282,26 +282,26 @@ if (caracteristicMap != null) { caracteristicMap.remove(row.getKey()); } - + //add the row in the combo BeanComboBox keyCombo = ui.getNewRowKey(); keyCombo.addItem(row.getKey()); selectFirstInCombo(keyCombo); - + // remove the row from the model getModel().getRows().remove(rowIndex); // refresh all the table getTableModel().fireTableRowsDeleted(rowIndex, rowIndex); - + getModel().removeRowInError(row); - + } - + //------------------------------------------------------------------------// //-- Protected methods --// //------------------------------------------------------------------------// - + protected void saveRow(GearShootingRowModel row) { if (row.isValid()) { FishingOperation fishingOperation = getModel().getFishingOperation(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-19 02:51:30 UTC (rev 230) @@ -33,26 +33,26 @@ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI; import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil; import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil.Type; -import fr.ifremer.tutti.ui.swing.util.TabHandler; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; +import jaxx.runtime.swing.editor.bean.BeanComboBox; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.table.DefaultTableColumnModelExt; + import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Serializable; import java.util.List; import java.util.Map; import java.util.Set; -import jaxx.runtime.swing.editor.bean.BeanComboBox; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.swingx.JXTable; -import org.jdesktop.swingx.table.DefaultTableColumnModelExt; /** * @author kmorin @@ -237,11 +237,11 @@ HydrologyRowModel oldRow, int newRowIndex, HydrologyRowModel newRow) { - + super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow); getModel().setRemoveCaracteristicEnabled(newRow != null); } - + //------------------------------------------------------------------------// //-- Public methods --// //------------------------------------------------------------------------// @@ -250,18 +250,18 @@ public void addRow() { BeanComboBox<Caracteristic> keyCombo = ui.getNewRowKey(); Caracteristic selectedItem = (Caracteristic) keyCombo.getSelectedItem(); - + HydrologyRowModel row = getTableModel().createNewRow(); row.setKey(selectedItem); getModel().getRows().add(row); - + HydrologyTableModel tableModel = getTableModel(); int rowIndex = tableModel.getRowCount() - 1; tableModel.fireTableRowsInserted(rowIndex, rowIndex); keyCombo.removeItem(selectedItem); selectFirstInCombo(keyCombo); - + HydrologyTabUIModel model = getModel(); model.setModify(true); recomputeRowValidState(row); @@ -272,13 +272,13 @@ HydrologyTableModel tableModel = getTableModel(); HydrologyTabUIModel model = getModel(); model.setFishingOperation(fishingOperation); - + CaracteristicMap hydrologyCaracteristics = fishingOperation.getHydrologyCaracteristics(); if (hydrologyCaracteristics == null) { hydrologyCaracteristics = new CaracteristicMap(); } - - TuttiProtocol protocol = ui.getContextValue(TuttiProtocol.class); + + TuttiProtocol protocol = TuttiUIUtil.getProtocol(ui); List<String> gearPmfmIds = Lists.newArrayList(); if (protocol != null) { List<String> protocolHydrologyPmfmId = protocol.getHydrologyPmfmId(); @@ -286,11 +286,11 @@ gearPmfmIds.addAll(protocolHydrologyPmfmId); } } - + List<HydrologyRowModel> rows = Lists.newArrayList(); List<Caracteristic> caracteristicList = Lists.newArrayList(); List<Caracteristic> selectedCaracteristics = Lists.newArrayList(hydrologyCaracteristics.keySet()); - + List<Caracteristic> availableCaracteristics = model.getAvailableCaracteristics(); for (String id : gearPmfmIds) { Caracteristic caracteristic = TuttiEntities.findById(availableCaracteristics, id); @@ -298,7 +298,7 @@ selectedCaracteristics.add(caracteristic); } } - + Set<Caracteristic> globalCaracteristics = availableGlobalCaracteristics.keySet(); for (Caracteristic availableCaracteristic : globalCaracteristics) { @@ -329,46 +329,46 @@ selectFirstInCombo(ui.getNewRowKey()); model.setModify(false); } - + public void removeCaracteristic() { int rowIndex = getTable().getSelectedRow(); Preconditions.checkState(rowIndex != -1, "Cant remove caracteristic if no caracteristic selected"); - + HydrologyRowModel row = getTableModel().getEntry(rowIndex); - + FishingOperation fishingOperation = getModel().getFishingOperation(); Preconditions.checkNotNull(fishingOperation); Map<Type, Caracteristic> caracteristics = availableGlobalCaracteristics.get(row.getKey()); for (Type type : caracteristics.keySet()) { Caracteristic caracteristic = caracteristics.get(type); - + CaracteristicMap caracteristicMap = fishingOperation.getHydrologyCaracteristics(); if (caracteristicMap != null) { caracteristicMap.remove(caracteristic); } } - + //add the row in the combo BeanComboBox keyCombo = ui.getNewRowKey(); keyCombo.addItem(row.getKey()); selectFirstInCombo(keyCombo); - + // remove the row from the model getModel().getRows().remove(rowIndex); // refresh all the table getTableModel().fireTableRowsDeleted(rowIndex, rowIndex); - + getModel().removeRowInError(row); } - + //------------------------------------------------------------------------// //-- Protected methods --// //------------------------------------------------------------------------// - + protected void saveRow(HydrologyRowModel row) { if (row.isValid()) { FishingOperation fishingOperation = getModel().getFishingOperation(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-19 02:51:30 UTC (rev 230) @@ -24,10 +24,12 @@ * #L% */ +import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -180,6 +182,17 @@ allSpecies = TuttiEntities.splitById( persistenceService.getAllSpecies()); + List<TuttiProtocol> allProtocol = persistenceService.getAllProtocol(); + + List<String> protocolNames = Lists.newArrayList(Iterables.transform(allProtocol, new Function<TuttiProtocol, String>() { + @Override + public String apply(TuttiProtocol input) { + return input.getName(); + } + })); + + model.setProtocolNames(protocolNames); + allLengthStepPmfm = TuttiEntities.splitById( persistenceService.getAllSpeciesLengthStepCaracteristic()); 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-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-01-19 02:51:30 UTC (rev 230) @@ -87,6 +87,8 @@ protected static Binder<TuttiProtocol, EditProtocolUIModel> fromBeanBinder = BinderFactory.newBinder(TuttiProtocol.class, EditProtocolUIModel.class); + private List<String> protocolNames; + public EditProtocolUIModel() { super(TuttiProtocol.class, fromBeanBinder, toBeanBinder); } @@ -184,4 +186,16 @@ this.removeSpeciesEnabled = removeSpeciesEnabled; firePropertyChange(PROPERTY_REMOVE_SPECIES_ENABLED, oldValue, removeSpeciesEnabled); } + + public void setProtocolNames(List<String> protocolNames) { + this.protocolNames = protocolNames; + } + + public List<String> getProtocolNames() { + return protocolNames; + } + + public boolean isNameAlreadyUsed() { + return protocolNames.contains(getName()); + } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml 2013-01-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml 2013-01-19 02:51:30 UTC (rev 230) @@ -40,7 +40,8 @@ <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"> - <![CDATA[ oneRowValid ]]></param> + <![CDATA[ oneRowValid ]]> + </param> <message> tutti.validator.error.speciesFrequency.oneRowRequired </message> Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml 2013-01-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml 2013-01-19 02:51:30 UTC (rev 230) @@ -30,6 +30,14 @@ <field-validator type="requiredstring" short-circuit="true"> <message>tutti.validator.error.protocol.name.required</message> </field-validator> + + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ id != null || !nameAlreadyUsed ]]> + </param> + <message>tutti.validator.error.protocol.name.alreadyUsed</message> + </field-validator> + </field> <field name="comment"> 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-19 02:23:42 UTC (rev 229) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-19 02:51:30 UTC (rev 230) @@ -3,6 +3,7 @@ tutti.action.about=À propos tutti.action.about.tip=À Propos tutti.action.cancel=Annuler +tutti.action.cancel.editCruise=Annuler tutti.action.cancel.editCruise.tip=Annuler l'édition (ou la création) de la campagne tutti.action.cancel.editProgram=Annuler tutti.action.cancel.editProgram.tip=Annuler l'édition (ou la création) de la série de campagne @@ -86,7 +87,6 @@ tutti.config.programId=Identifiant de la dernière série de campagne utilisée tutti.config.protocolId=Identifiant du dernier protocole utilisé tutti.config.ui.autoPopupNumberEditor=Toujours afficher le pavé numérique lors de l'édition d'un nombre -tutti.config.ui.color.blockingLayer= 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 @@ -347,6 +347,7 @@ tutti.validator.error.fishingOperation.trawlNetNumber.required=Le numéro de poche est obligatoire tutti.validator.error.program.name.required=Le nom de la série est obligatoire tutti.validator.error.program.zone.required=La zone de la série est obligatoire +tutti.validator.error.protocol.name.alreadyUsed=Le nom du protocol est déjà utilisé tutti.validator.error.protocol.name.required=Le nom du protocol est obligatoire tutti.validator.error.speciesFrequency.lengthStepCaracteristic.required=La classe de taille est obligatoire tutti.validator.error.speciesFrequency.oneRowRequired=Au moins une classe de taille doit être observée