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 6c9bd2d8bf4a25f49b21725c387d37b95c88c2c7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Dec 31 21:20:15 2014 +0100 ajout du comportement pour l'ecran benthos --- .../frequency/BenthosFrequencyTableModel.java | 67 ++++++++++++++++------ .../benthos/frequency/BenthosFrequencyUI.css | 4 +- .../frequency/BenthosFrequencyUIHandler.java | 66 +++++++++++++-------- .../benthos/frequency/BenthosFrequencyUIModel.java | 20 +++++++ 4 files changed, 112 insertions(+), 45 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyTableModel.java index e3bac3f..714d3f0 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyTableModel.java @@ -72,6 +72,7 @@ public class BenthosFrequencyTableModel extends AbstractApplicationTableModel<Be protected final WeightUnit weightUnit; protected final PropertyChangeListener rowPropertyChangeListener; + protected final PropertyChangeListener onLengthStepChangedListener;; public BenthosFrequencyTableModel(WeightUnit weightUnit, TableColumnModelExt columnModel, @@ -82,10 +83,54 @@ public class BenthosFrequencyTableModel extends AbstractApplicationTableModel<Be this.uiModel = uiModel; this.rowCache = Maps.newTreeMap(); this.rowPropertyChangeListener = rowPropertyChangeListener; + this.onLengthStepChangedListener = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Float oldValue = (Float) evt.getOldValue(); + if (oldValue != null) { + rowCache.remove(oldValue); + } + BenthosFrequencyRowModel row = (BenthosFrequencyRowModel) evt.getSource(); + Float lengthStep = row.getLengthStep(); + if (lengthStep != null) { + rowCache.put(lengthStep, row); + } + } + }; setNoneEditableCols(); } @Override + protected void onRowAdded(int rowIndex, BenthosFrequencyRowModel newValue) { + recomputeCanEditLengthStep(); + } + + public void recomputeCanEditLengthStep() { + + boolean result = true; + + for (BenthosFrequencyRowModel row : rows) { + + if (row.isEmpty()) { + // la ligne est vide + continue; + } + if (row.getLengthStep() == null || row.getNumber() == null) { + // la ligne n'est pas complete + continue; + } + + // une ligne non vide et complete a ete trouvee + // on ne peut plus editer + result = false; + + } + + uiModel.setCanEditLengthStep(result); + + } + + @Override public BenthosFrequencyRowModel createNewRow() { Float defaultStep = null; @@ -95,28 +140,12 @@ public class BenthosFrequencyTableModel extends AbstractApplicationTableModel<Be BenthosFrequencyRowModel rowModel = getEntry(rowCount - 1); Float lengthStep = rowModel.getLengthStep(); if (lengthStep != null) { - defaultStep = uiModel.getLengthStep( - lengthStep + uiModel.getStep()); + defaultStep = uiModel.getLengthStep(lengthStep + uiModel.getStep()); } } - BenthosFrequencyRowModel result = - new BenthosFrequencyRowModel(weightUnit); - result.addPropertyChangeListener(BenthosFrequencyRowModel.PROPERTY_LENGTH_STEP, - new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - Float oldValue = (Float) evt.getOldValue(); - if (oldValue != null) { - rowCache.remove(oldValue); - } - BenthosFrequencyRowModel row = (BenthosFrequencyRowModel) evt.getSource(); - Float lengthStep = row.getLengthStep(); - if (lengthStep != null) { - rowCache.put(lengthStep, row); - } - } - }); + BenthosFrequencyRowModel result = new BenthosFrequencyRowModel(weightUnit); + result.addPropertyChangeListener(BenthosFrequencyRowModel.PROPERTY_LENGTH_STEP, onLengthStepChangedListener); result.addPropertyChangeListener(rowPropertyChangeListener); result.setLengthStepCaracteristic(uiModel.getLengthStepCaracteristic()); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.css index 169c3a0..5a85bdf 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.css +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.css @@ -56,7 +56,7 @@ ComputableDataEditor { useFloat: true; numberPattern: {DECIMAL1_PATTERN}; bean: {model}; - enabled: {!model.isSimpleCountingMode()}; + enabled: {!model.isSimpleCountingMode() && model.isCanEditLengthStep()}; _selectOnFocus: true; _validatorLabel: {t("tutti.editBenthosFrequencies.field.step")}; _help: {"tutti.editBenthosFrequencies.field.step.help"}; @@ -104,7 +104,7 @@ ComputableDataEditor { #lengthStepCaracteristicComboBox { property: lengthStepCaracteristic; selectedItem: {model.getLengthStepCaracteristic()}; - enabled: {!model.isSimpleCountingMode()}; + enabled: {!model.isSimpleCountingMode() && model.isCanEditLengthStep()}; _validatorLabel: {t("tutti.editBenthosFrequencies.field.lengthStepCaracteristic")}; _help: {"tutti.editBenthosFrequencies.field.lengthStepCaracteristic.help"}; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java index 77a7e7b..518e48d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java @@ -25,45 +25,48 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyTableModel; -import fr.ifremer.tutti.ui.swing.util.TuttiNumberTickUnitSource; -import fr.ifremer.tutti.util.Numbers; -import org.jdesktop.swingx.decorator.HighlightPredicate; -import org.jdesktop.swingx.decorator.Highlighter; -import org.jdesktop.swingx.table.TableColumnExt; -import org.jfree.chart.ChartFactory; -import org.jfree.chart.ChartPanel; -import org.jfree.chart.JFreeChart; -import org.jfree.chart.axis.NumberTickUnitSource; -import org.jfree.chart.axis.ValueAxis; -import org.jfree.data.xy.XYSeries; -import org.jfree.data.xy.XYSeriesCollection; -import org.nuiton.jaxx.application.swing.util.Cancelable; -import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.FrequencyConfigurationMode; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiNumberTickUnitSource; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; +import fr.ifremer.tutti.util.Numbers; import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.decorator.HighlightPredicate; +import org.jdesktop.swingx.decorator.Highlighter; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; +import org.jdesktop.swingx.table.TableColumnExt; +import org.jfree.chart.ChartFactory; +import org.jfree.chart.ChartPanel; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.NumberTickUnitSource; +import org.jfree.chart.axis.ValueAxis; +import org.jfree.data.xy.XYSeries; +import org.jfree.data.xy.XYSeriesCollection; +import org.nuiton.jaxx.application.swing.util.Cancelable; -import javax.swing.*; -import javax.swing.table.TableColumn; -import java.awt.*; +import javax.swing.JComponent; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JSplitPane; +import javax.swing.JTextField; +import javax.swing.SwingUtilities; +import java.awt.BorderLayout; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; @@ -168,6 +171,7 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth } } model.recomputeTotalNumberAndWeight(); + getTableModel().recomputeCanEditLengthStep(); } @Override @@ -186,6 +190,7 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth model.updateRowWithWeight(row); boolean lengthStepModified = BenthosFrequencyRowModel.PROPERTY_LENGTH_STEP.equals(propertyName); + boolean numberModified = BenthosFrequencyRowModel.PROPERTY_NUMBER.equals(propertyName); if (lengthStepModified) { Float lengthStepToDec = (Float) oldValue; @@ -223,6 +228,11 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth recomputeRowValidState(row); } model.updateEmptyRow(row); + + if (lengthStepModified || numberModified) { + + getTableModel().recomputeCanEditLengthStep(); + } } @Override @@ -832,6 +842,7 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth /** * Decrement the frequency of the lengthstep of the row + * * @param logRow */ public void decrementLengthStep(BenthosFrequencyLogRowModel logRow) { @@ -840,10 +851,17 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth BenthosFrequencyRowModel speciesFrequencyRowModel = tableModel.getRowCache().get(logRow.getLengthStep()); if (speciesFrequencyRowModel != null) { Integer number = speciesFrequencyRowModel.getNumber(); - if (number != null && number > 0) { - speciesFrequencyRowModel.setNumber(number - 1); + if (number != null) { + + if (number > 1) { + speciesFrequencyRowModel.setNumber(number - 1); + } else { + speciesFrequencyRowModel.setNumber(null); + } + tableModel.fireTableDataChanged(); } + tableModel.recomputeCanEditLengthStep(); } BenthosFrequencyLogsTableModel logsTableModel = (BenthosFrequencyLogsTableModel) getUI().getLogsTable().getModel(); @@ -993,10 +1011,10 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth dataset.setIntervalWidth(step); chart = ChartFactory.createXYBarChart(null, - t("tutti.editSpeciesFrequencies.table.header.lengthStep"), - false, - t("tutti.editSpeciesFrequencies.table.header.number"), - dataset); + t("tutti.editSpeciesFrequencies.table.header.lengthStep"), + false, + t("tutti.editSpeciesFrequencies.table.header.number"), + dataset); chart.clearSubtitles(); ValueAxis rangeAxis = chart.getXYPlot().getRangeAxis(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel.java index 674d3a1..0966ffa 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel.java @@ -83,6 +83,8 @@ public class BenthosFrequencyUIModel extends AbstractTuttiTableUIModel<BenthosBa public static final String PROPERTY_NEXT_EDITABLE_ROW_INDEX = "nextEditableRowIndex"; + public static final String PROPERTY_CAN_EDIT_LENGTH_STEP = "canEditLengthStep"; + /** * Fill mode. * @@ -183,6 +185,14 @@ public class BenthosFrequencyUIModel extends AbstractTuttiTableUIModel<BenthosBa */ protected Map<Float, MutableInt> nbOfRowsByLengthStep = new HashMap<Float, MutableInt>(); + /** + * Can edit length step? (only if no row is filled). + * see https://forge.codelutin.com/issues/5694 + * + * @since 3.11 + */ + protected boolean canEditLengthStep = true; + public BenthosFrequencyUIModel(WeightUnit weightUnit, SampleCategoryModel sampleCategoryModel) { super(BenthosBatchRowModel.class, null, null); @@ -278,6 +288,16 @@ public class BenthosFrequencyUIModel extends AbstractTuttiTableUIModel<BenthosBa firePropertyChange(PROPERTY_SIMPLE_COUNT, oldValue, simpleCount); } + public boolean isCanEditLengthStep() { + return canEditLengthStep; + } + + public void setCanEditLengthStep(boolean canEditLengthStep) { + Object oldValue = isCanEditLengthStep(); + this.canEditLengthStep = canEditLengthStep; + firePropertyChange(PROPERTY_CAN_EDIT_LENGTH_STEP, oldValue, canEditLengthStep); + } + public Integer getNextEditableRowIndex() { return nextEditableRowIndex; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.