branch feature/7930 updated (883d7c6 -> b2d9145)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7930 in repository tutti. See http://git.codelutin.com/tutti.git from 883d7c6 creation de l'onglet d'edition de l'algo de prelevement de pieces calcifiees (refs #7930) new b2d9145 combo de selection de l'espece + ajout de lignes dans le tableau + possibilité de splitter une ligne (refs #7930) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit b2d9145b0d53fa6c115127a2e93b328fcb70993f Author: Kevin Morin <morin@codelutin.com> Date: Fri Feb 5 14:09:11 2016 +0100 combo de selection de l'espece + ajout de lignes dans le tableau + possibilité de splitter une ligne (refs #7930) Summary of changes: pom.xml | 4 + .../fr/ifremer/tutti/service/DecoratorService.java | 39 +++++++ .../resources/i18n/tutti-service_en_GB.properties | 4 + .../resources/i18n/tutti-service_fr_FR.properties | 4 + .../content/protocol/EditProtocolUIModel.java | 15 +++ .../CalcifiedPiecesSamplingEditorRowModel.java | 20 +++- .../CalcifiedPiecesSamplingEditorTableModel.java | 25 +++++ .../CalcifiedPiecesSamplingEditorUI.jaxx | 7 +- .../CalcifiedPiecesSamplingEditorUI.jcss | 20 ++++ .../CalcifiedPiecesSamplingEditorUIHandler.java | 113 +++++++++++++++++++++ .../actions/AddSpeciesAction.java | 25 +++++ .../actions/SplitSpeciesAction.java | 60 +++++++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 4 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 4 + 14 files changed, 339 insertions(+), 5 deletions(-) create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/actions/SplitSpeciesAction.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7930 in repository tutti. See http://git.codelutin.com/tutti.git commit b2d9145b0d53fa6c115127a2e93b328fcb70993f Author: Kevin Morin <morin@codelutin.com> Date: Fri Feb 5 14:09:11 2016 +0100 combo de selection de l'espece + ajout de lignes dans le tableau + possibilité de splitter une ligne (refs #7930) --- pom.xml | 4 + .../fr/ifremer/tutti/service/DecoratorService.java | 39 +++++++ .../resources/i18n/tutti-service_en_GB.properties | 4 + .../resources/i18n/tutti-service_fr_FR.properties | 4 + .../content/protocol/EditProtocolUIModel.java | 15 +++ .../CalcifiedPiecesSamplingEditorRowModel.java | 20 +++- .../CalcifiedPiecesSamplingEditorTableModel.java | 25 +++++ .../CalcifiedPiecesSamplingEditorUI.jaxx | 7 +- .../CalcifiedPiecesSamplingEditorUI.jcss | 20 ++++ .../CalcifiedPiecesSamplingEditorUIHandler.java | 113 +++++++++++++++++++++ .../actions/AddSpeciesAction.java | 25 +++++ .../actions/SplitSpeciesAction.java | 60 +++++++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 4 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 4 + 14 files changed, 339 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index fb1ca02..a0988a1 100644 --- a/pom.xml +++ b/pom.xml @@ -121,6 +121,8 @@ <projectId>tutti</projectId> + <javaVersion>1.8</javaVersion> + <!-- libraries version --> <nuitonI18nVersion>3.3</nuitonI18nVersion> <nuitonValidatorVersion>3.0</nuitonValidatorVersion> @@ -158,6 +160,8 @@ <!-- Where are deployed software components --> <distroUrl>https://nexus.nuiton.org/nexus/content/repositories/other-releases</distroUrl> + + </properties> <repositories> 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 77c3f6a..e7aaf49 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 @@ -80,6 +80,10 @@ public class DecoratorService extends AbstractTuttiService { public static final String SEPARATOR = "#"; + public static final String MATURITY = "maturity"; + + public static final String SHORT_MATURITY = "shortMaturity"; + public static final Comparator<FishingOperation> FISHING_OPERATION_COMPARATOR_BY_GEAR_SHOOTING_START_DATE = new Comparator<FishingOperation>() { @Override public int compare(FishingOperation o1, FishingOperation o2) { @@ -87,6 +91,7 @@ public class DecoratorService extends AbstractTuttiService { } }; + /** Delegate decorator provider. */ protected DecoratorProvider decoratorProvider; @@ -156,6 +161,8 @@ public class DecoratorService extends AbstractTuttiService { } }); registerDecorator(SPACE_EVERY_3_DIGIT, new SpaceEvery3DigitDecorator()); + registerDecorator(MATURITY, new MaturityDecorator(false)); + registerDecorator(SHORT_MATURITY, new MaturityDecorator(true)); registerDecorator(new VesselDecorator()); registerDecorator(new ProgramDecorator()); registerTuttiDecorator(Program.class, ONLY_NAME, "${name}$s", SEPARATOR, " - "); @@ -426,4 +433,36 @@ public class DecoratorService extends AbstractTuttiService { } } } + + public static class MaturityDecorator extends Decorator<Boolean> { + + protected boolean shortRendering; + + protected MaturityDecorator(boolean shortRendering) { + super(Boolean.class); + this.shortRendering = shortRendering; + } + + @Override + public String toString(Object bean) { + String result; + + if (bean == null) { + result = ""; + + } else { + + Boolean maturity = (Boolean) bean; + + if (shortRendering) { + result = maturity ? t("tutti.maturity.mature.short") : t("tutti.maturity.immature.short"); + + } else { + result = maturity ? t("tutti.maturity.mature") : t("tutti.maturity.immature"); + } + } + + return result; + } + } } 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 2b30977..fa432d4 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 @@ -13,6 +13,10 @@ tutti.error.messages= tutti.error.species.not.in.protocol= tutti.fatal.messages= tutti.io.mkDir.error= +tutti.maturity.immature= +tutti.maturity.immature.short= +tutti.maturity.mature= +tutti.maturity.mature.short= tutti.pdf.export.missing.species.code= tutti.property.attachment= tutti.property.caracteristic= 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 76332e6..2b2727f 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 @@ -8,6 +8,10 @@ tutti.csv.import.error.on.row=Des erreurs ont été détectées à la ligne %s \ tutti.error.messages=Erreurs \:\n %s tutti.fatal.messages=Erreurs critiques \:\n %s tutti.io.mkDir.error=Erreur à la création du dossier %s +tutti.maturity.immature=Immature +tutti.maturity.immature.short=I +tutti.maturity.mature=Mature +tutti.maturity.mature.short=M 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 tutti.property.caracteristic=Caractéristique diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java index 84b1f81..af261a1 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java @@ -35,6 +35,7 @@ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.CalcifiedPiecesSamplingEditorRowModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.apache.commons.lang3.mutable.MutableInt; import org.nuiton.util.beans.Binder; @@ -78,6 +79,8 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, public static final String PROPERTY_CLEANED = "cleaned"; + public static final String PROPERTY_CSP_ROWS = "cspRows"; + /** * Delegate edit object. * @@ -155,6 +158,8 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, protected List<EditProtocolSpeciesRowModel> benthosRow; + protected List<CalcifiedPiecesSamplingEditorRowModel> cspRows; + protected static Binder<EditProtocolUIModel, TuttiProtocol> toBeanBinder = BinderFactory.newBinder(EditProtocolUIModel.class, TuttiProtocol.class); @@ -249,6 +254,16 @@ public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, firePropertyChange(PROPERTY_BENTHOS_ROW, oldValue, benthosRow); } + public List<CalcifiedPiecesSamplingEditorRowModel> getCspRows() { + return cspRows; + } + + public void setCspRows(List<CalcifiedPiecesSamplingEditorRowModel> cspRows) { + Object oldValue = getCspRows(); + this.cspRows = cspRows; + firePropertyChange(PROPERTY_CSP_ROWS, oldValue, cspRows); + } + public boolean isRemoveSpeciesEnabled() { return removeSpeciesEnabled; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorRowModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorRowModel.java index 3edea71..a808c7f 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorRowModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorRowModel.java @@ -16,17 +16,21 @@ public class CalcifiedPiecesSamplingEditorRowModel extends AbstractSerializableB public static final String PROPERTY_MAX_SIZE = "maxSize"; + public static final String PROPERTY_MATURITY = "maturity"; + protected Species species; protected int minSize; - protected int maxSize; + protected Integer maxSize; + + protected Boolean maturity; - public int getMaxSize() { + public Integer getMaxSize() { return maxSize; } - public void setMaxSize(int maxSize) { + public void setMaxSize(Integer maxSize) { Object oldValue = getMaxSize(); this.maxSize = maxSize; firePropertyChange(PROPERTY_MAX_SIZE, oldValue, maxSize); @@ -51,4 +55,14 @@ public class CalcifiedPiecesSamplingEditorRowModel extends AbstractSerializableB this.species = species; firePropertyChange(PROPERTY_SPECIES, oldValue, species); } + + public Boolean getMaturity() { + return maturity; + } + + public void setMaturity(Boolean maturity) { + Object oldValue = getMaturity(); + this.maturity = maturity; + firePropertyChange(PROPERTY_MATURITY, oldValue, maturity); + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorTableModel.java index a9fb747..25c8064 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorTableModel.java @@ -1,9 +1,13 @@ package fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling; +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.referential.Species; 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.List; + import static org.nuiton.i18n.I18n.n; /** @@ -27,12 +31,33 @@ public class CalcifiedPiecesSamplingEditorTableModel extends AbstractApplication n("tutti.editCps.table.header.maxSize.field"), n("tutti.editCps.table.header.maxSize.field.tip")); + public static final ColumnIdentifier<CalcifiedPiecesSamplingEditorRowModel> MATURITY = ColumnIdentifier.newId( + CalcifiedPiecesSamplingEditorRowModel.PROPERTY_MATURITY, + n("tutti.editCps.table.header.maturity.field"), + n("tutti.editCps.table.header.maturity.field.tip")); + public CalcifiedPiecesSamplingEditorTableModel(TableColumnModelExt columnModel) { super(columnModel, false, false); + setNoneEditableCols(SPECIES, MAX_SIZE, MATURITY); } @Override public CalcifiedPiecesSamplingEditorRowModel createNewRow() { return new CalcifiedPiecesSamplingEditorRowModel(); } + + /** + * Return the list of used species in the table (used to fill the + * comparator cache for species sort) + * + * @return the list of used species in the table. + * @since 2.8 + */ + public List<Species> getSpeciesList() { + List<Species> result = Lists.newArrayList(); + for (CalcifiedPiecesSamplingEditorRowModel row : rows) { + result.add(row.getSpecies()); + } + return result; + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUI.jaxx index 7e9bba5..7cffb53 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUI.jaxx @@ -2,8 +2,9 @@ implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<EditProtocolUIModel, CalcifiedPiecesSamplingEditorUIHandler>'> <import> - fr.ifremer.tutti.persistence.entities.referential.Species + fr.ifremer.tutti.persistence.entities.referential.Species + fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.util.TuttiUIUtil @@ -12,7 +13,6 @@ org.jdesktop.swingx.JXTable - </import> <script><![CDATA[ @@ -39,6 +39,9 @@ genericType='Species'/> </cell> <cell fill='both'> + <JComboBox id='maturityComboBox'/> + </cell> + <cell fill='both'> <JButton id='addSpeciesButton'/> </cell> </row> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUI.jcss index cafa9da..d3207f3 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUI.jcss +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUI.jcss @@ -1,4 +1,24 @@ +BeanFilterableComboBox { + showReset: true; +} + +#speciesComboBox { + enabled: {!speciesComboBox.isEmpty()}; + toolTipText: "tutti.editCps.field.species.tip"; + _help: {"tutti.editCps.field.species.help"}; +} + +#maturityComboBox { + toolTipText: "tutti.editCps.field.maturity.tip"; + _help: {"tutti.editCps.field.maturity.help"}; +} + #addSpeciesButton { actionIcon: add; _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.actions.AddSpeciesAction.class}; +} + +#splitCpsRowMenu { + actionIcon: add; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.actions.SplitSpeciesAction.class}; } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUIHandler.java index d413d3b..dd67edf 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/CalcifiedPiecesSamplingEditorUIHandler.java @@ -1,10 +1,27 @@ package fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.service.TuttiDecorator; +import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesAbleBatchRowHelper; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import jaxx.runtime.SwingUtil; 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.jdesktop.swingx.table.TableColumnExt; import javax.swing.JComponent; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; +import javax.swing.table.JTableHeader; +import java.util.ArrayList; +import java.util.List; + +import static org.nuiton.i18n.I18n.t; /** * @author Kevin Morin (Code Lutin) @@ -12,12 +29,108 @@ import javax.swing.JComponent; */ public class CalcifiedPiecesSamplingEditorUIHandler extends AbstractTuttiUIHandler<EditProtocolUIModel, CalcifiedPiecesSamplingEditorUI> { + /** Logger. */ + private static final Log log = LogFactory.getLog(CalcifiedPiecesSamplingEditorUIHandler.class); @Override public void afterInit(CalcifiedPiecesSamplingEditorUI calcifiedPiecesSamplingEditorUI) { initUI(calcifiedPiecesSamplingEditorUI); + initBeanFilterableComboBox(ui.getSpeciesComboBox(), getModel().getAllSpecies(), null); + + JXTable cpsTable = ui.getCpsTable(); + + DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); + + TableColumnExt speciesColumn = addColumnToModel(columnModel, + null, + newTableCellRender(Species.class), + CalcifiedPiecesSamplingEditorTableModel.SPECIES); + speciesColumn.setSortable(true); + DecoratorService.SpeciesDecorator speciesDecorator = new DecoratorService.SpeciesDecorator(); + speciesColumn.putClientProperty(SpeciesAbleBatchRowHelper.SPECIES_DECORATOR, speciesDecorator); + speciesColumn.setCellRenderer(newTableCellRender(speciesDecorator)); + + addColumnToModel(columnModel, CalcifiedPiecesSamplingEditorTableModel.MATURITY); + addColumnToModel(columnModel, CalcifiedPiecesSamplingEditorTableModel.MIN_SIZE); + addColumnToModel(columnModel, CalcifiedPiecesSamplingEditorTableModel.MAX_SIZE); + + final CalcifiedPiecesSamplingEditorTableModel tableModel = + new CalcifiedPiecesSamplingEditorTableModel(columnModel); + cpsTable.setModel(tableModel); + cpsTable.setColumnModel(columnModel); + + JTableHeader tableHeader = cpsTable.getTableHeader(); + + // by default do not authorize to change column orders + tableHeader.setReorderingAllowed(false); + +// addHighlighters(cpsTable); + + // always scroll to selected row + SwingUtil.scrollToTableSelection(cpsTable); + + // add selection listener +// cpsTable.getSelectionModel().addListSelectionListener(selectionListener); + + // when model change, then rebuild the species comparator + set model as modified + tableModel.addTableModelListener(new TableModelListener() { + + @Override + public void tableChanged(TableModelEvent e) { + getModel().setModify(true); + + int type = e.getType(); + if (type == TableModelEvent.DELETE || + type == TableModelEvent.INSERT || + e.getLastRow() == Integer.MAX_VALUE) { + + // get species column + TableColumnExt tableColumn = + (TableColumnExt) cpsTable.getColumns().get(0); + + // get column comparator + TuttiDecorator.TuttiDecoratorComparator<Species> comparator = + (TuttiDecorator.TuttiDecoratorComparator<Species>) + tableColumn.getComparator(); + + // get column comparator + TuttiDecorator<Species> decorator = + SpeciesAbleBatchRowHelper.getSpeciesColumnDecorator(tableColumn); + + boolean comparatorNull = comparator == null; + if (comparatorNull) { + + // first time coming here, add the comparator + comparator = decorator.getCurrentComparator(); + } + + // init comparator with model species list + comparator.init(decorator, tableModel.getSpeciesList()); + + if (comparatorNull) { + + // affect it to colum + tableColumn.setComparator(comparator); + } + } + } + }); + + // create popup to change species decorator + + SpeciesAbleBatchRowHelper.installSpeciesColumnComparatorPopup( + cpsTable, + speciesColumn, + null, + t("tutti.species.refTaxCode.tip"), + t("tutti.species.name.tip") + ); + // at the very end, set rows to model + List<CalcifiedPiecesSamplingEditorRowModel> rows = new ArrayList<>(); + getModel().setCspRows(rows); + tableModel.setRows(rows); } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/actions/AddSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/actions/AddSpeciesAction.java index a0c660b..0413981 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/actions/AddSpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/actions/AddSpeciesAction.java @@ -1,7 +1,12 @@ package fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.actions; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.CalcifiedPiecesSamplingEditorRowModel; +import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.CalcifiedPiecesSamplingEditorTableModel; import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.CalcifiedPiecesSamplingEditorUI; import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; /** * @author Kevin Morin (Code Lutin) @@ -15,6 +20,26 @@ public class AddSpeciesAction extends SimpleActionSupport<CalcifiedPiecesSamplin @Override protected void onActionPerformed(CalcifiedPiecesSamplingEditorUI ui) { + BeanFilterableComboBox<Species> speciesComboBox = ui.getSpeciesComboBox(); + Species species = (Species) speciesComboBox.getSelectedItem(); + CalcifiedPiecesSamplingEditorTableModel tableModel = (CalcifiedPiecesSamplingEditorTableModel) ui.getCpsTable().getModel(); + + CalcifiedPiecesSamplingEditorRowModel newRow = tableModel.createNewRow(); + newRow.setSpecies(species); + newRow.setMaturity(null); + newRow.setMinSize(0); + newRow.setMaxSize(null); + + ui.getModel().getCspRows().add(newRow); + + speciesComboBox.removeItem(species); + + tableModel.fireTableRowsInserted(newRow); + + // select this new row + int rowIndex = tableModel.getRowIndex(newRow); + SwingUtil.setSelectionInterval(ui.getCpsTable(), rowIndex); } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/actions/SplitSpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/actions/SplitSpeciesAction.java new file mode 100644 index 0000000..2407855 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/calcifiedpiecessampling/actions/SplitSpeciesAction.java @@ -0,0 +1,60 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.actions; + +import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.CalcifiedPiecesSamplingEditorRowModel; +import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.CalcifiedPiecesSamplingEditorTableModel; +import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.CalcifiedPiecesSamplingEditorUI; +import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXTable; + +import javax.swing.JOptionPane; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class SplitSpeciesAction extends SimpleActionSupport<CalcifiedPiecesSamplingEditorUI> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(SplitSpeciesAction.class); + + public SplitSpeciesAction(CalcifiedPiecesSamplingEditorUI ui) { + super(ui); + } + + @Override + protected void onActionPerformed(CalcifiedPiecesSamplingEditorUI ui) { + + String value = JOptionPane.showInputDialog(ui, "min size"); + int minSize = Integer.parseInt(value); + + JXTable cpsTable = ui.getCpsTable(); + CalcifiedPiecesSamplingEditorTableModel tableModel = (CalcifiedPiecesSamplingEditorTableModel) cpsTable.getModel(); + + int selectedRow = cpsTable.getSelectedRow(); + if (log.isInfoEnabled()) { + log.info("selected row " + selectedRow); + } + + CalcifiedPiecesSamplingEditorRowModel row = ui.getModel().getCspRows().get(selectedRow); + Integer exMaxSize = row.getMaxSize(); + row.setMaxSize(minSize - 1); + + CalcifiedPiecesSamplingEditorRowModel newRow = tableModel.createNewRow(); + newRow.setSpecies(row.getSpecies()); + newRow.setMaturity(row.getMaturity()); + newRow.setMinSize(minSize); + newRow.setMaxSize(exMaxSize); + + ui.getModel().getCspRows().add(newRow); + + tableModel.fireTableRowsUpdated(selectedRow, selectedRow); + tableModel.fireTableRowsInserted(newRow); + + // select this new row +// int rowIndex = tableModel.getRowIndex(newRow); +// SwingUtil.setSelectionInterval(cpsTable, rowIndex); + } + +} 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 7e288ee..aafae6f 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 @@ -717,6 +717,10 @@ tutti.editCatchBatch.legend.marineLitter= tutti.editCatchBatch.legend.species= tutti.editCatchBatch.legend.total= tutti.editCatchBatch.svgLoading.error= +tutti.editCps.field.maturity.tip= +tutti.editCps.field.species.tip= +tutti.editCps.table.header.maturity.field= +tutti.editCps.table.header.maturity.field.tip= tutti.editCps.table.header.maxSize.field= tutti.editCps.table.header.maxSize.field.tip= tutti.editCps.table.header.minSize.field= 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 7754560..661dce3 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 @@ -684,6 +684,10 @@ tutti.editCatchBatch.legend.marineLitter=Macro déchets tutti.editCatchBatch.legend.species=Espèces tutti.editCatchBatch.legend.total=Capture tutti.editCatchBatch.svgLoading.error=Erreur lors du chargement du diagramme du résumé +tutti.editCps.field.maturity.tip= +tutti.editCps.field.species.tip= +tutti.editCps.table.header.maturity.field= +tutti.editCps.table.header.maturity.field.tip= tutti.editCps.table.header.maxSize.field= tutti.editCps.table.header.maxSize.field.tip= tutti.editCps.table.header.minSize.field= -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm