This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 9c6de7275dba89759d4f814c2fa9fea4f6fc8a64 Author: Kevin Morin <morin@codelutin.com> Date: Thu Nov 27 16:37:05 2014 +0100 refs #6129 [IMPORT SUMATRA] Import des valeurs des PSFMs et des champs du trait --- .../entities/protocol/CaracteristicType.java | 21 +-- .../entities/protocol/TuttiProtocols.java | 4 +- .../entities/protocol/v2/TuttiProtocolBean2.java | 2 +- .../fr/ifremer/tutti/service/DecoratorService.java | 11 ++ .../resources/i18n/tutti-service_en_GB.properties | 8 + .../resources/i18n/tutti-service_fr_FR.properties | 4 + .../tutti/ui/swing/action/SaveProtocolAction.java | 6 + .../content/protocol/CaracteristicMappingUI.css | 7 + .../content/protocol/CaracteristicMappingUI.jaxx | 40 +++++ .../protocol/CaracteristicMappingUIHandler.java | 176 +++++++++++++++++++++ .../protocol/CaracteristicMappingUIModel.java | 62 ++++++++ .../EditProtocolCaracteristicsRowModel.java | 27 +++- .../EditProtocolCaracteristicsTableModel.java | 10 +- .../ui/swing/content/protocol/EditProtocolUI.jaxx | 4 +- .../content/protocol/EditProtocolUIHandler.java | 49 +----- .../util/table/AbstractTuttiTableUIHandler.java | 1 + .../resources/i18n/tutti-ui-swing_en_GB.properties | 1 - 17 files changed, 364 insertions(+), 69 deletions(-) diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/CaracteristicType.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/CaracteristicType.java index b0d2b01..f93a4b8 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/CaracteristicType.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/CaracteristicType.java @@ -33,23 +33,12 @@ import static org.nuiton.i18n.I18n.t; * @author tchemit <chemit@codelutin.com> * @since 1.0 */ -public enum CaracteristicType implements LabelAware { +public enum CaracteristicType { - LENGTH_STEP(n("tutti.caracteristicType.lengthStep")), - VESSEL_USE_FEATURE(n("tutti.caracteristicType.vesselUseFeature")), - GEAR_USE_FEATURE(n("tutti.caracteristicType.gearUseFeature")), - INDIVIDUAL_OBSERVATION(n("tutti.caracteristicType.individualObservation")); - - private String labelKey; - - private CaracteristicType(String labelKey) { - this.labelKey = labelKey; - } - - @Override - public String getLabel() { - return t(labelKey); - } + LENGTH_STEP, + VESSEL_USE_FEATURE, + GEAR_USE_FEATURE, + INDIVIDUAL_OBSERVATION; public static CaracteristicType[] getTabTypes() { return new CaracteristicType[] { diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java index 32d4279..ab5eb2a 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java @@ -308,6 +308,8 @@ public class TuttiProtocols extends AbstractTuttiProtocols { YamlConfig result = new YamlConfig(); result.setClassTag(SpeciesProtocol.class.getSimpleName(), SpeciesProtocols.typeOfSpeciesProtocol()); + result.setClassTag(CaracteristicMappingRow.class.getSimpleName(), + CaracteristicMappingRows.typeOfCaracteristicMappingRow()); result.writeConfig.setAlwaysWriteClassname(false); result.writeConfig.setWriteRootTags(false); return result; @@ -409,7 +411,7 @@ public class TuttiProtocols extends AbstractTuttiProtocols { Collections2.filter(caracteristicMapping, new Predicate<CaracteristicMappingRow>() { @Override public boolean apply(CaracteristicMappingRow caracteristicMappingRow) { - return type.equals(caracteristicMappingRow.getTab()); + return type.name().equals(caracteristicMappingRow.getTab()); } }); diff --git a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v2/TuttiProtocolBean2.java b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v2/TuttiProtocolBean2.java index 9ae21f3..0405b21 100644 --- a/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v2/TuttiProtocolBean2.java +++ b/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/v2/TuttiProtocolBean2.java @@ -11,7 +11,7 @@ import java.util.LinkedList; import java.util.List; @Generated(value = "org.nuiton.eugene.java.SimpleJavaBeanTransformer", date = "Mon Nov 24 12:54:48 CET 2014") -public class TuttiProtocolBean2 extends TuttiEntityBean implements TuttiProtocol { +public class TuttiProtocolBean2 extends TuttiEntityBean implements TuttiProtocol2 { private static final long serialVersionUID = 3847260679792845110L; diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java index d8a9402..fa07772 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java @@ -29,6 +29,7 @@ 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.data.SampleCategoryModelEntry; +import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; @@ -115,6 +116,12 @@ public class DecoratorService extends AbstractTuttiService { registerDecorator(CARACTERISTIC_PARAMETER_ONLY_WITH_UNIT, new SimpleCaracteristicDecorator("${parameterName}$s")); registerTuttiDecorator(CaracteristicQualitativeValue.class, "${description}$s", SEPARATOR, " - "); + registerDecorator(new Decorator<CaracteristicType>(CaracteristicType.class) { + @Override + public String toString(Object bean) { + return bean == null ? "" : t("tutti.caracteristicType." + bean.toString()); + } + }); registerTuttiDecorator(SpeciesProtocol.class, "${speciesReferenceTaxonId}", SEPARATOR, " - "); registerTuttiDecorator(Attachment.class, "${name}$s", SEPARATOR, " - "); registerTuttiDecorator(LabelAware.class, "${label}$s", SEPARATOR, " - "); @@ -197,6 +204,10 @@ public class DecoratorService extends AbstractTuttiService { n("tutti.property.attachment"); n("tutti.property.multirigAggregation"); n("tutti.property.caracteristic"); + n("tutti.caracteristicType.GEAR_USE_FEATURE"); + n("tutti.caracteristicType.INDIVIDUAL_OBSERVATION"); + n("tutti.caracteristicType.lengthStep"); + n("tutti.caracteristicType.VESSEL_USE_FEATURE"); } public static class SpeciesDecorator extends TuttiDecorator<Species> implements Cloneable { diff --git a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties index 67c40d7..1639fd0 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties @@ -1,3 +1,11 @@ +tutti.caracteristicType.GEAR_USE_FEATURE= +tutti.caracteristicType.INDIVIDUAL_OBSERVATION= +tutti.caracteristicType.LENGTH_STEP= +tutti.caracteristicType.VESSEL_USE_FEATURE= +tutti.caracteristicType.gearUseFeature= +tutti.caracteristicType.individualObservation= +tutti.caracteristicType.lengthStep= +tutti.caracteristicType.vesselUseFeature= tutti.error.benthos.not.in.protocol= tutti.error.species.not.in.protocol= tutti.io.mkDir.error= diff --git a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties index beeb93e..0e4f677 100644 --- a/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties +++ b/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties @@ -1,3 +1,7 @@ +tutti.caracteristicType.GEAR_USE_FEATURE=Caractéristiques de l'engin +tutti.caracteristicType.INDIVIDUAL_OBSERVATION=Observations individuelles +tutti.caracteristicType.LENGTH_STEP=Classes de tailles +tutti.caracteristicType.VESSEL_USE_FEATURE=Autres caractéristiques tutti.io.mkDir.error=Erreur à la création du dossier %s tutti.pdf.export.missing.species.code=Une espèce (referenceId %s, nom scientifique %s) n'a ni code campagne, ni code refTax. tutti.property.attachment=Pièce jointe diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveProtocolAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveProtocolAction.java index f5950c0..c6378be 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveProtocolAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveProtocolAction.java @@ -25,6 +25,7 @@ package fr.ifremer.tutti.ui.swing.action; import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.PersistenceService; @@ -36,6 +37,7 @@ import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.util.ArrayList; import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -68,6 +70,10 @@ public class SaveProtocolAction extends AbstractTuttiAction<EditProtocolUIModel, TuttiProtocol bean = model.toBean(); + List<CaracteristicMappingRow> caracteristicMappingRows = + new ArrayList<>(getUI().getCaracteristicsTable().getModel().getCaracteristicMapping().values()); + bean.setCaracteristicMapping(caracteristicMappingRows); + // get the species protocols from the table List<SpeciesProtocol> speciesProtocols = Lists.newArrayList(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUI.css new file mode 100644 index 0000000..4773389 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUI.css @@ -0,0 +1,7 @@ +#caracteristicsTable { + selectionMode: {ListSelectionModel.SINGLE_SELECTION}; + selectionBackground: {null}; + selectionForeground: {Color.BLACK}; + sortable: false; + enabled: true; +} \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUI.jaxx new file mode 100644 index 0000000..8706193 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUI.jaxx @@ -0,0 +1,40 @@ +<JPanel layout="{new BorderLayout()}" + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<CaracteristicMappingUIModel, CaracteristicMappingUIHandler>'> + + <import> + fr.ifremer.tutti.persistence.entities.referential.Caracteristic + fr.ifremer.tutti.persistence.entities.referential.Species + + fr.ifremer.tutti.ui.swing.TuttiHelpBroker + fr.ifremer.tutti.ui.swing.util.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUIUtil + + jaxx.runtime.swing.editor.bean.BeanFilterableComboBox + jaxx.runtime.swing.editor.bean.BeanDoubleList + + java.awt.Color + + javax.swing.ListSelectionModel + + org.jdesktop.swingx.JXTable + + static org.nuiton.i18n.I18n.t + static jaxx.runtime.SwingUtil.getStringValue + + </import> + + <script><![CDATA[ + + public CaracteristicMappingUI(TuttiUI parentUI) { + TuttiUIUtil.setParentUI(this, parentUI); + } + ]]> + </script> + + <CaracteristicMappingUIModel id='model' + initializer='getContextValue(CaracteristicMappingUIModel.class)'/> + + <JScrollPane constraints="BorderLayout.CENTER"> + <JXTable id='caracteristicsTable'/> + </JScrollPane> +</JPanel> \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIHandler.java new file mode 100644 index 0000000..f1b92fc --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIHandler.java @@ -0,0 +1,176 @@ +package fr.ifremer.tutti.ui.swing.content.protocol; + +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; +import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; +import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.table.DefaultTableColumnModelExt; +import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; + +import javax.swing.*; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class CaracteristicMappingUIHandler + extends AbstractTuttiTableUIHandler<EditProtocolCaracteristicsRowModel, CaracteristicMappingUIModel, CaracteristicMappingUI> { + + private static final Log log = LogFactory.getLog(CaracteristicMappingUIHandler.class); + + public CaracteristicMappingUIHandler() { + super(EditProtocolCaracteristicsRowModel.PROPERTY_PSFM, + EditProtocolCaracteristicsRowModel.PROPERTY_TYPE, + EditProtocolCaracteristicsRowModel.PROPERTY_IMPORT_FILE_COLUMN); + } + + @Override + public AbstractApplicationTableModel<EditProtocolCaracteristicsRowModel> getTableModel() { + return (EditProtocolCaracteristicsTableModel) getTable().getModel(); + } + + @Override + public JXTable getTable() { + return getUI().getCaracteristicsTable(); + } + + @Override + protected boolean isRowValid(EditProtocolCaracteristicsRowModel row) { + return row.getPsfm() != null && row.getType() != null; + } + + @Override + protected void saveSelectedRowIfRequired(TuttiBeanMonitor<EditProtocolCaracteristicsRowModel> rowMonitor, + EditProtocolCaracteristicsRowModel row) { + if (row.isValid()) { + // there is a valid bean attached to the monitor + + if (rowMonitor.wasModified()) { + + // monitored bean was modified, save it + if (log.isInfoEnabled()) { + log.info("Row " + row + " was modified, will save it"); + } + + getModel().getCaracteristicMapping().put(row.getPsfm().getId(), row.toBean()); + } + } + + } + + @Override + public void onCloseUI() { + + } + + @Override + public SwingValidator<CaracteristicMappingUIModel> getValidator() { + return null; + } + + @Override + protected JComponent getComponentToFocus() { + return null; + } + + @Override + public void beforeInit(CaracteristicMappingUI ui) { + super.beforeInit(ui); + + EditProtocolUIModel editProtocolUIModel = + ui.getContextValue(EditProtocolUIModel.class); + + CaracteristicMappingUIModel model = new CaracteristicMappingUIModel(); + model.setCaracteristics(editProtocolUIModel.getCaracteristics()); + editProtocolUIModel.addPropertyChangeListener(EditProtocolUIModel.PROPERTY_CARACTERISTIC_MAPPING, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + getModel().setCaracteristicMappingRows((List<CaracteristicMappingRow>) evt.getNewValue()); + } + }); + ui.setContextValue(model); + } + + @Override + public void afterInit(CaracteristicMappingUI caracteristicMappingUI) { + + initUI(this.ui); + + JXTable caracteristicsMappingTable = caracteristicMappingUI.getCaracteristicsTable(); + + DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); + +// getModel().addPropertyChangeListener(EditProtocolUIModel.PROPERTY_LENGTH_CLASSES_PMFM_ID, new PropertyChangeListener() { +// @Override +// public void propertyChange(PropertyChangeEvent evt) { +// List<String> ids = (List<String>) evt.getNewValue(); +// selectLengthClasses(ids, comboBox); +// } +// }); + + List<Caracteristic> caracteristics = new ArrayList<Caracteristic>(getModel().getCaracteristics()); + addComboDataColumnToModel(columnModel, + EditProtocolCaracteristicsTableModel.PSFM_ID, + getDecorator(Caracteristic.class, null), + caracteristics); + + addComboDataColumnToModel(columnModel, + EditProtocolCaracteristicsTableModel.TYPE, + getDecorator(CaracteristicType.class, null), + Lists.newArrayList(CaracteristicType.getTabTypes())); + + addColumnToModel(columnModel, + EditProtocolCaracteristicsTableModel.IMPORT_FILE_COLUMN); + + EditProtocolCaracteristicsTableModel tableModel = new EditProtocolCaracteristicsTableModel(columnModel, caracteristics); + caracteristicsMappingTable.setModel(tableModel); + caracteristicsMappingTable.setColumnModel(columnModel); + + initTable(caracteristicsMappingTable); + + getModel().addPropertyChangeListener(CaracteristicMappingUIModel.PROPERTY_CARACTERISTIC_MAPPING_ROWS, + new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + populateTable((Collection<CaracteristicMappingRow>) evt.getNewValue()); + } + }); + + } + + protected void populateTable(Collection<CaracteristicMappingRow> values) { + List<EditProtocolCaracteristicsRowModel> rows = new ArrayList<EditProtocolCaracteristicsRowModel>(); + for (CaracteristicMappingRow row : values) { + EditProtocolCaracteristicsRowModel rowModel = getTableModel().createNewRow(); + rowModel.fromEntity(row); + recomputeRowValidState(rowModel); + rows.add(rowModel); + } + getTableModel().setRows(rows); + } + + @Override + protected void initTable(JXTable table) { + super.initTable(table); + installTableKeyListener(table.getColumnModel(), table); + } + + @Override + protected void onRowModified(int rowIndex, EditProtocolCaracteristicsRowModel row, + String propertyName, Object oldValue, Object newValue) { + recomputeRowValidState(row); + super.onRowModified(rowIndex, row, propertyName, oldValue, newValue); + saveSelectedRowIfNeeded(); + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIModel.java new file mode 100644 index 0000000..d07ab9f --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CaracteristicMappingUIModel.java @@ -0,0 +1,62 @@ +package fr.ifremer.tutti.ui.swing.content.protocol; + +import com.google.common.base.Function; +import com.google.common.collect.Maps; +import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; +import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRowBean; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class CaracteristicMappingUIModel extends AbstractTuttiTableUIModel<CaracteristicMappingRow, EditProtocolCaracteristicsRowModel, CaracteristicMappingUIModel> { + + public static final String PROPERTY_CARACTERISTIC_MAPPING_ROWS = "caracteristicMappingRows"; + + protected List<Caracteristic> caracteristics = new ArrayList<Caracteristic>(); + protected Map<String, CaracteristicMappingRow> caracteristicMappingRows = new HashMap<String, CaracteristicMappingRow>(); + + public CaracteristicMappingUIModel() { + super(CaracteristicMappingRow.class, null, null); + } + + public List<Caracteristic> getCaracteristics() { + return caracteristics; + } + + public void setCaracteristics(List<Caracteristic> caracteristics) { + this.caracteristics = caracteristics; + } + + public Map<String, CaracteristicMappingRow> getCaracteristicMapping() { + return caracteristicMappingRows; + } + + public void setCaracteristicMappingRows(List<CaracteristicMappingRow> caracteristicMappingRows) { + this.caracteristicMappingRows = new HashMap<String, CaracteristicMappingRow>(); + if (caracteristicMappingRows != null) { + this.caracteristicMappingRows.putAll(Maps.uniqueIndex(caracteristicMappingRows, new Function<CaracteristicMappingRow, String>() { + @Override + public String apply(CaracteristicMappingRow caracteristicMappingRow) { + return caracteristicMappingRow.getPmfmId(); + } + })); + } + firePropertyChanged(PROPERTY_CARACTERISTIC_MAPPING_ROWS, null, caracteristicMappingRows); + } + + @Override + protected CaracteristicMappingRow newEntity() { + return new CaracteristicMappingRowBean(); + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolCaracteristicsRowModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolCaracteristicsRowModel.java index 149cfaf..c845b8e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolCaracteristicsRowModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolCaracteristicsRowModel.java @@ -1,5 +1,8 @@ package fr.ifremer.tutti.ui.swing.content.protocol; +import com.google.common.base.Function; +import com.google.common.collect.Maps; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRowBean; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; @@ -8,6 +11,10 @@ import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + /** * @author Kevin Morin (Code Lutin) * @since 3.10 @@ -18,6 +25,7 @@ public class EditProtocolCaracteristicsRowModel extends AbstractTuttiBeanUIModel public static final String PROPERTY_TYPE = "type"; public static final String PROPERTY_IMPORT_FILE_COLUMN = "importFileColumn"; + protected Map<String, Caracteristic> caracteristicMap; protected Caracteristic psfm; protected CaracteristicType type; protected String importFileColumn; @@ -30,8 +38,9 @@ public class EditProtocolCaracteristicsRowModel extends AbstractTuttiBeanUIModel BinderFactory.newBinder(EditProtocolCaracteristicsRowModel.class, CaracteristicMappingRow.class); - public EditProtocolCaracteristicsRowModel() { + public EditProtocolCaracteristicsRowModel(Collection<Caracteristic> caracteristics) { super(fromBeanBinder, toBeanBinder); + caracteristicMap = caracteristics != null ? TuttiEntities.splitById(caracteristics) : new HashMap<String, Caracteristic>(); } public Caracteristic getPsfm() { @@ -64,6 +73,22 @@ public class EditProtocolCaracteristicsRowModel extends AbstractTuttiBeanUIModel firePropertyChanged(PROPERTY_IMPORT_FILE_COLUMN, oldValue, importFileColumn); } + public String getPmfmId() { + return psfm == null ? null : psfm.getId(); + } + + public void setPmfmId(String pmfmId) { + setPsfm(caracteristicMap.get(pmfmId)); + } + + public String getTab() { + return type == null ? null : type.name(); + } + + public void setTab(String tab) { + setType(CaracteristicType.valueOf(tab)); + } + @Override protected CaracteristicMappingRow newEntity() { return new CaracteristicMappingRowBean(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolCaracteristicsTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolCaracteristicsTableModel.java index 140872a..6e262ed 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolCaracteristicsTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolCaracteristicsTableModel.java @@ -1,9 +1,12 @@ package fr.ifremer.tutti.ui.swing.content.protocol; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import org.jdesktop.swingx.table.TableColumnModelExt; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; +import java.util.Collection; + import static org.nuiton.i18n.I18n.n; /** @@ -12,6 +15,8 @@ import static org.nuiton.i18n.I18n.n; */ public class EditProtocolCaracteristicsTableModel extends AbstractApplicationTableModel<EditProtocolCaracteristicsRowModel> { + protected Collection<Caracteristic> caracteristics; + public static final ColumnIdentifier<EditProtocolCaracteristicsRowModel> PSFM_ID = ColumnIdentifier.newId( EditProtocolCaracteristicsRowModel.PROPERTY_PSFM, n("tutti.editProtocol.table.header.caracteristics.psfmId"), @@ -27,13 +32,14 @@ public class EditProtocolCaracteristicsTableModel extends AbstractApplicationTab n("tutti.editProtocol.table.header.caracteristics.importFileColumn"), n("tutti.editProtocol.table.header.caracteristics.importFileColumn.tip")); - public EditProtocolCaracteristicsTableModel(TableColumnModelExt columnModel) { + public EditProtocolCaracteristicsTableModel(TableColumnModelExt columnModel, Collection<Caracteristic> caracteristics) { super(columnModel, true, true); setNoneEditableCols(); + this.caracteristics = caracteristics; } @Override public EditProtocolCaracteristicsRowModel createNewRow() { - return new EditProtocolCaracteristicsRowModel(); + return new EditProtocolCaracteristicsRowModel(caracteristics); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx index d6ccd4f..b8e29f4 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx @@ -118,9 +118,7 @@ genericType='Caracteristic'/> </tab> <tab title='tutti.editProtocol.tab.caracteristic.mapping'> - <JScrollPane> - <JXTable id='caracteristicsTable'/> - </JScrollPane> + <CaracteristicMappingUI id='caracteristicsTable' constructorParams="(TuttiUI)this"/> </tab> </JTabbedPane> </JPanel> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java index e1215e3..5100218 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java @@ -180,6 +180,7 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI // afterUI method to fill model listModelIsModify(model); + this.ui.setContextValue(model); } @@ -425,49 +426,6 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI Lists.newArrayList(model.getCaracteristics()), model.getIndividualObservationPmfmId()); - // table of caracteristic mapping - - { - JXTable caracteristicsMappingTable = ui.getCaracteristicsTable(); - - DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); - -// getModel().addPropertyChangeListener(EditProtocolUIModel.PROPERTY_LENGTH_CLASSES_PMFM_ID, new PropertyChangeListener() { -// @Override -// public void propertyChange(PropertyChangeEvent evt) { -// List<String> ids = (List<String>) evt.getNewValue(); -// selectLengthClasses(ids, comboBox); -// } -// }); - - Decorator<Caracteristic> decorator = getDecorator(Caracteristic.class, null); - addComboDataColumnToModel(columnModel, - EditProtocolCaracteristicsTableModel.PSFM_ID, - decorator, - new ArrayList<Caracteristic>(getModel().getAllCaracteristic().values())); - - addComboDataColumnToModel(columnModel, - EditProtocolCaracteristicsTableModel.TYPE, - getDecorator(CaracteristicType.class, null), - Lists.newArrayList(CaracteristicType.getTabTypes())); - - addColumnToModel(columnModel, - EditProtocolCaracteristicsTableModel.IMPORT_FILE_COLUMN); - - EditProtocolCaracteristicsTableModel tableModel = new EditProtocolCaracteristicsTableModel(columnModel); - caracteristicsMappingTable.setModel(tableModel); - caracteristicsMappingTable.setColumnModel(columnModel); - - JTableHeader tableHeader = caracteristicsMappingTable.getTableHeader(); - - // by default do not authorize to change column orders - tableHeader.setReorderingAllowed(false); - - addHighlighters(caracteristicsMappingTable); - - tableModel.setRows(new ArrayList<EditProtocolCaracteristicsRowModel>()); - } - // if new protocol can already cancel his creation model.setModify(model.isCreate() || model.isCleaned()); @@ -501,7 +459,8 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI }); dialog = new SelectSpeciesUI(false, this.ui); - + + listenModelModifiy(ui.getCaracteristicsTable().getModel()); } @Override @@ -591,6 +550,8 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI } clearValidators(); ui.getTabPanel().setSelectedIndex(0); + + closeUI(ui.getCaracteristicsTable()); } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java index ab99b41..335d832 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java @@ -264,6 +264,7 @@ public abstract class AbstractTuttiTableUIHandler<R extends AbstractTuttiBeanUIM getModel().addPropertyChangeListener(AbstractTuttiTableUIModel.PROPERTY_ROWS, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { + log.info("row schanged"); onModelRowsChanged((List<R>) evt.getNewValue()); } }); diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index e23914b..245b3a6 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -1,6 +1,5 @@ application.action.create.error= application.error.ui.business.warning= -gtrph= swing.error.cannot.open.file= tutti.about.bottomText= tutti.about.message= -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.