This is an automated email from the git hooks/post-receive script. New commit to branch feature/5954 in repository tutti. See http://git.codelutin.com/tutti.git commit b24d4a8e6f8100adba2ffd6bee10320c3eb94d6f Author: Kevin Morin <morin@codelutin.com> Date: Mon Nov 24 11:05:10 2014 +0100 refs #6129 --- .../entities/protocol/CaracteristicType.java | 33 ++++++++-- .../i18n/tutti-persistence_en_GB.properties | 4 ++ .../EditProtocolCaracteristicsRowModel.java | 71 ++++++++++++++++++++++ .../EditProtocolCaracteristicsTableModel.java | 39 ++++++++++++ .../ui/swing/content/protocol/EditProtocolUI.jaxx | 5 ++ .../content/protocol/EditProtocolUIHandler.java | 46 ++++++++++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 7 +++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 7 +++ 8 files changed, 207 insertions(+), 5 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 358a184..b0d2b01 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 @@ -22,16 +22,39 @@ package fr.ifremer.tutti.persistence.entities.protocol; * #L% */ +import fr.ifremer.tutti.LabelAware; + +import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; + /** * To define which caracteristic can be imported. * * @author tchemit <chemit@codelutin.com> * @since 1.0 */ -public enum CaracteristicType { +public enum CaracteristicType implements LabelAware { + + 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[] { + VESSEL_USE_FEATURE, + GEAR_USE_FEATURE + }; + } } diff --git a/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties b/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties index c074775..c2f80a2 100644 --- a/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties +++ b/tutti-persistence/src/main/resources/i18n/tutti-persistence_en_GB.properties @@ -28,6 +28,10 @@ application.common.unit.g=Gram application.common.unit.kg=Kilogram application.common.unit.short.g=g application.common.unit.short.kg=kg +tutti.caracteristicType.gearUseFeature= +tutti.caracteristicType.individualObservation= +tutti.caracteristicType.lengthStep= +tutti.caracteristicType.vesselUseFeature= tutti.config= tutti.config.option.basedir.description= tutti.config.option.cruiseId.description= 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 new file mode 100644 index 0000000..149cfaf --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolCaracteristicsRowModel.java @@ -0,0 +1,71 @@ +package fr.ifremer.tutti.ui.swing.content.protocol; + +import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRow; +import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicMappingRowBean; +import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +/** + * @author Kevin Morin (Code Lutin) + * @since 3.10 + */ +public class EditProtocolCaracteristicsRowModel extends AbstractTuttiBeanUIModel<CaracteristicMappingRow, EditProtocolCaracteristicsRowModel> { + + public static final String PROPERTY_PSFM = "psfm"; + public static final String PROPERTY_TYPE = "type"; + public static final String PROPERTY_IMPORT_FILE_COLUMN = "importFileColumn"; + + protected Caracteristic psfm; + protected CaracteristicType type; + protected String importFileColumn; + + protected static final Binder<CaracteristicMappingRow, EditProtocolCaracteristicsRowModel> fromBeanBinder = + BinderFactory.newBinder(CaracteristicMappingRow.class, + EditProtocolCaracteristicsRowModel.class); + + protected static final Binder<EditProtocolCaracteristicsRowModel, CaracteristicMappingRow> toBeanBinder = + BinderFactory.newBinder(EditProtocolCaracteristicsRowModel.class, + CaracteristicMappingRow.class); + + public EditProtocolCaracteristicsRowModel() { + super(fromBeanBinder, toBeanBinder); + } + + public Caracteristic getPsfm() { + return psfm; + } + + public void setPsfm(Caracteristic psfm) { + Object oldValue = getPsfm(); + this.psfm = psfm; + firePropertyChanged(PROPERTY_PSFM, oldValue, psfm); + } + + public CaracteristicType getType() { + return type; + } + + public void setType(CaracteristicType type) { + Object oldValue = getType(); + this.type = type; + firePropertyChanged(PROPERTY_TYPE, oldValue, type); + } + + public String getImportFileColumn() { + return importFileColumn; + } + + public void setImportFileColumn(String importFileColumn) { + Object oldValue = getImportFileColumn(); + this.importFileColumn = importFileColumn; + firePropertyChanged(PROPERTY_IMPORT_FILE_COLUMN, oldValue, importFileColumn); + } + + @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 new file mode 100644 index 0000000..140872a --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolCaracteristicsTableModel.java @@ -0,0 +1,39 @@ +package fr.ifremer.tutti.ui.swing.content.protocol; + +import org.jdesktop.swingx.table.TableColumnModelExt; +import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; +import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; + +import static org.nuiton.i18n.I18n.n; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class EditProtocolCaracteristicsTableModel extends AbstractApplicationTableModel<EditProtocolCaracteristicsRowModel> { + + public static final ColumnIdentifier<EditProtocolCaracteristicsRowModel> PSFM_ID = ColumnIdentifier.newId( + EditProtocolCaracteristicsRowModel.PROPERTY_PSFM, + n("tutti.editProtocol.table.header.caracteristics.psfmId"), + n("tutti.editProtocol.table.header.caracteristics.psfmId.tip")); + + public static final ColumnIdentifier<EditProtocolCaracteristicsRowModel> TYPE = ColumnIdentifier.newId( + EditProtocolCaracteristicsRowModel.PROPERTY_TYPE, + n("tutti.editProtocol.table.header.caracteristics.type"), + n("tutti.editProtocol.table.header.caracteristics.type.tip")); + + public static final ColumnIdentifier<EditProtocolCaracteristicsRowModel> IMPORT_FILE_COLUMN = ColumnIdentifier.newId( + EditProtocolCaracteristicsRowModel.PROPERTY_IMPORT_FILE_COLUMN, + n("tutti.editProtocol.table.header.caracteristics.importFileColumn"), + n("tutti.editProtocol.table.header.caracteristics.importFileColumn.tip")); + + public EditProtocolCaracteristicsTableModel(TableColumnModelExt columnModel) { + super(columnModel, true, true); + setNoneEditableCols(); + } + + @Override + public EditProtocolCaracteristicsRowModel createNewRow() { + return new EditProtocolCaracteristicsRowModel(); + } +} 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 0ca8922..d6ccd4f 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 @@ -117,6 +117,11 @@ <BeanDoubleList id='individualObservationList' genericType='Caracteristic'/> </tab> + <tab title='tutti.editProtocol.tab.caracteristic.mapping'> + <JScrollPane> + <JXTable id='caracteristicsTable'/> + </JScrollPane> + </tab> </JTabbedPane> </JPanel> </tab> 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 6471cda..cbf5edb 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 @@ -27,9 +27,11 @@ import com.google.common.base.Predicate; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; +import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; 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; @@ -76,6 +78,7 @@ import javax.swing.table.TableColumnModel; import java.awt.Dimension; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; @@ -422,6 +425,49 @@ 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()); 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 f8de42f..d8bdee7 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 @@ -951,11 +951,18 @@ tutti.editProtocol.tab.caracteristic= tutti.editProtocol.tab.caracteristic.gearUseFeature= tutti.editProtocol.tab.caracteristic.individualObservation= tutti.editProtocol.tab.caracteristic.lengthClasses= +tutti.editProtocol.tab.caracteristic.mapping= tutti.editProtocol.tab.caracteristic.vesselUseFeature= tutti.editProtocol.tab.info= tutti.editProtocol.tab.species= tutti.editProtocol.table.header.calcifySample= tutti.editProtocol.table.header.calcifySample.tip= +tutti.editProtocol.table.header.caracteristics.importFileColumn= +tutti.editProtocol.table.header.caracteristics.importFileColumn.tip= +tutti.editProtocol.table.header.caracteristics.psfmId= +tutti.editProtocol.table.header.caracteristics.psfmId.tip= +tutti.editProtocol.table.header.caracteristics.type= +tutti.editProtocol.table.header.caracteristics.type.tip= tutti.editProtocol.table.header.countIfNoFrequency= tutti.editProtocol.table.header.countIfNoFrequency.tip= tutti.editProtocol.table.header.lengthStep= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index b9c2f76..d8cbc07 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -930,11 +930,18 @@ tutti.editProtocol.tab.caracteristic=Caractéristiques tutti.editProtocol.tab.caracteristic.gearUseFeature=Mise en œuvre de l'engin tutti.editProtocol.tab.caracteristic.individualObservation=Observations individuelles tutti.editProtocol.tab.caracteristic.lengthClasses=Classes de taille +tutti.editProtocol.tab.caracteristic.mapping=Caractéristiques du trait tutti.editProtocol.tab.caracteristic.vesselUseFeature=Autres caractéristiques tutti.editProtocol.tab.info=Informations générales tutti.editProtocol.tab.species=Espèces tutti.editProtocol.table.header.calcifySample=Prélèvement de pièces calcifiées tutti.editProtocol.table.header.calcifySample.tip=Prélèvement de pièces calcifiées (pour les données individuelles) +tutti.editProtocol.table.header.caracteristics.importFileColumn=Colonne du fichier d'import +tutti.editProtocol.table.header.caracteristics.importFileColumn.tip=Colonne du fichier d'import +tutti.editProtocol.table.header.caracteristics.psfmId=Caractéristique +tutti.editProtocol.table.header.caracteristics.psfmId.tip=Caractéristique +tutti.editProtocol.table.header.caracteristics.type=Onglet +tutti.editProtocol.table.header.caracteristics.type.tip=Onglet tutti.editProtocol.table.header.countIfNoFrequency=Dénombrement tutti.editProtocol.table.header.countIfNoFrequency.tip=L'espèce doit elle être dénombrée ? tutti.editProtocol.table.header.lengthStep=Mode de mensuration -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.