[tutti] branch feature/wloLikeFrequencyScreen#5128 updated (4ae2ba3 -> 5f78ad7)
This is an automated email from the git hooks/post-receive script. New change to branch feature/wloLikeFrequencyScreen#5128 in repository tutti. See http://git.codelutin.com/tutti.git from 4ae2ba3 refs #6000 [BIGFIN] Idée d'amélioration : graphique dans l'écran mensuration et liste enregistrement : s'imprégner de l'application android WLO new 5f78ad7 fixes #6000 [BIGFIN] Idée d'amélioration : graphique dans l'écran mensuration et liste enregistrement : s'imprégner de l'application android WLO 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 5f78ad77e1f6e515613800046e9f6bb44e79c0f4 Author: Kevin Morin <morin@codelutin.com> Date: Thu Oct 23 18:04:40 2014 +0200 fixes #6000 [BIGFIN] Idée d'amélioration : graphique dans l'écran mensuration et liste enregistrement : s'imprégner de l'application android WLO Summary of changes: .../BenthosFrequencyLogCellComponent.java} | 44 +++--- .../frequency/BenthosFrequencyLogRowModel.java} | 6 +- .../frequency/BenthosFrequencyLogsTableModel.java} | 27 ++-- .../frequency/BenthosFrequencyTableModel.java | 9 +- .../benthos/frequency/BenthosFrequencyUI.css | 17 +++ .../benthos/frequency/BenthosFrequencyUI.jaxx | 18 ++- .../frequency/BenthosFrequencyUIHandler.java | 162 ++++++++++++++++++++- .../SpeciesFrequencyLogCellComponent.java | 6 +- .../frequency/SpeciesFrequencyTableModel.java | 3 +- .../frequency/SpeciesFrequencyUIHandler.java | 4 + .../resources/i18n/tutti-ui-swing_en_GB.properties | 3 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 1 + .../src/main/resources/icons/action-delete.png | Bin 715 -> 363 bytes 13 files changed, 242 insertions(+), 58 deletions(-) copy tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/{species/frequency/SpeciesFrequencyLogCellComponent.java => benthos/frequency/BenthosFrequencyLogCellComponent.java} (75%) copy tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/{species/frequency/SpeciesFrequencyLogRowModel.java => benthos/frequency/BenthosFrequencyLogRowModel.java} (80%) copy tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/{species/frequency/SpeciesFrequencyLogsTableModel.java => benthos/frequency/BenthosFrequencyLogsTableModel.java} (59%) -- 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/wloLikeFrequencyScreen#5128 in repository tutti. See http://git.codelutin.com/tutti.git commit 5f78ad77e1f6e515613800046e9f6bb44e79c0f4 Author: Kevin Morin <morin@codelutin.com> Date: Thu Oct 23 18:04:40 2014 +0200 fixes #6000 [BIGFIN] Idée d'amélioration : graphique dans l'écran mensuration et liste enregistrement : s'imprégner de l'application android WLO --- .../BenthosFrequencyLogCellComponent.java} | 44 +++--- .../frequency/BenthosFrequencyLogRowModel.java | 43 ++++++ .../frequency/BenthosFrequencyLogsTableModel.java | 58 ++++++++ .../frequency/BenthosFrequencyTableModel.java | 9 +- .../benthos/frequency/BenthosFrequencyUI.css | 17 +++ .../benthos/frequency/BenthosFrequencyUI.jaxx | 18 ++- .../frequency/BenthosFrequencyUIHandler.java | 162 ++++++++++++++++++++- .../SpeciesFrequencyLogCellComponent.java | 6 +- .../frequency/SpeciesFrequencyTableModel.java | 3 +- .../frequency/SpeciesFrequencyUIHandler.java | 4 + .../resources/i18n/tutti-ui-swing_en_GB.properties | 3 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 1 + .../src/main/resources/icons/action-delete.png | Bin 715 -> 363 bytes 13 files changed, 331 insertions(+), 37 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyLogCellComponent.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyLogCellComponent.java similarity index 75% copy from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyLogCellComponent.java copy to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyLogCellComponent.java index 8128f2b..8dc9ad5 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyLogCellComponent.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyLogCellComponent.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency; +package fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency; /* * #%L @@ -25,10 +25,8 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency; import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import sun.swing.DefaultLookup; import javax.swing.*; -import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import java.awt.*; @@ -39,25 +37,25 @@ import java.io.Serializable; import static org.nuiton.i18n.I18n.t; /** - * Component to render and edit frequency stuff from batch table. + * Component to render and delete log items from logs table. * - * @author tchemit <chemit@codelutin.com> - * @since 0.2 + * @author Kevin Morin (Code Lutin) + * @since 3.8 */ -public class SpeciesFrequencyLogCellComponent extends JPanel implements Serializable { +public class BenthosFrequencyLogCellComponent extends JPanel implements Serializable { private static final long serialVersionUID = 1L; /** Logger. */ - private static final Log log = LogFactory.getLog(SpeciesFrequencyLogCellComponent.class); + private static final Log log = LogFactory.getLog(BenthosFrequencyLogCellComponent.class); private JLabel label = new JLabel(); private JButton deleteButton = new JButton(); - private SpeciesFrequencyLogRowModel row; + private BenthosFrequencyLogRowModel row; - public SpeciesFrequencyLogCellComponent() { + public BenthosFrequencyLogCellComponent() { setLayout(new BorderLayout()); Font defaultFont = UIManager.getFont("Table.font"); @@ -73,21 +71,21 @@ public class SpeciesFrequencyLogCellComponent extends JPanel implements Serializ add(deleteButton, BorderLayout.EAST); } - public SpeciesFrequencyLogCellComponent(final SpeciesFrequencyUIHandler speciesFrequencyUIHandler) { + public BenthosFrequencyLogCellComponent(final BenthosFrequencyUIHandler benthosFrequencyUIHandler) { this(); deleteButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (row != null) { int i = JOptionPane.showConfirmDialog( - speciesFrequencyUIHandler.getTopestUI(), + benthosFrequencyUIHandler.getTopestUI(), t("tutti.editSpeciesFrequencies.logTable.removeRow.confirm.message", row.getLabel()), t("tutti.editSpeciesFrequencies.logTable.removeRow.confirm.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (i == JOptionPane.YES_OPTION) { - speciesFrequencyUIHandler.decrementLengthStep(row); + benthosFrequencyUIHandler.decrementLengthStep(row); } } } @@ -98,7 +96,7 @@ public class SpeciesFrequencyLogCellComponent extends JPanel implements Serializ label.setText(data); } - public void setRow(SpeciesFrequencyLogRowModel row) { + public void setRow(BenthosFrequencyLogRowModel row) { this.row = row; } @@ -106,18 +104,18 @@ public class SpeciesFrequencyLogCellComponent extends JPanel implements Serializ return new FrequencyLogCellRenderer(); } - public static TableCellEditor newEditor(SpeciesFrequencyUIHandler speciesFrequencyUIHandler) { - return new FrequencyLogCellEditor(speciesFrequencyUIHandler); + public static TableCellEditor newEditor(BenthosFrequencyUIHandler benthosFrequencyUIHandler) { + return new FrequencyLogCellEditor(benthosFrequencyUIHandler); } public static class FrequencyLogCellEditor extends AbstractCellEditor implements TableCellEditor { private static final long serialVersionUID = 1L; - protected final SpeciesFrequencyLogCellComponent component; + protected final BenthosFrequencyLogCellComponent component; - public FrequencyLogCellEditor(SpeciesFrequencyUIHandler speciesFrequencyUIHandler) { - component = new SpeciesFrequencyLogCellComponent(speciesFrequencyUIHandler); + public FrequencyLogCellEditor(BenthosFrequencyUIHandler benthosFrequencyUIHandler) { + component = new BenthosFrequencyLogCellComponent(benthosFrequencyUIHandler); } @Override @@ -127,8 +125,8 @@ public class SpeciesFrequencyLogCellComponent extends JPanel implements Serializ int row, int column) { - SpeciesFrequencyLogsTableModel tableModel = (SpeciesFrequencyLogsTableModel) table.getModel(); - SpeciesFrequencyLogRowModel editRow = tableModel.getEntry(row); + BenthosFrequencyLogsTableModel tableModel = (BenthosFrequencyLogsTableModel) table.getModel(); + BenthosFrequencyLogRowModel editRow = tableModel.getEntry(row); component.setRow(editRow); String data = (String) value; @@ -146,10 +144,10 @@ public class SpeciesFrequencyLogCellComponent extends JPanel implements Serializ public static class FrequencyLogCellRenderer implements TableCellRenderer { - protected final SpeciesFrequencyLogCellComponent component; + protected final BenthosFrequencyLogCellComponent component; public FrequencyLogCellRenderer() { - component = new SpeciesFrequencyLogCellComponent(); + component = new BenthosFrequencyLogCellComponent(); } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyLogRowModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyLogRowModel.java new file mode 100644 index 0000000..b2ba620 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyLogRowModel.java @@ -0,0 +1,43 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency; + +import org.apache.commons.lang3.time.DateFormatUtils; +import org.jdesktop.beans.AbstractSerializableBean; + +import java.util.Date; + +/** + * @author Kevin Morin (Code Lutin) + * @since 3.8 + */ +public class BenthosFrequencyLogRowModel extends AbstractSerializableBean { + + public static final String PROPERTY_LABEL = "label"; + + protected Float lengthStep; + protected Date date; + + public Float getLengthStep() { + return lengthStep; + } + + public void setLengthStep(Float lengthStep) { + this.lengthStep = lengthStep; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getLabel() { + String formattedTime = DateFormatUtils.format(date, "HH:mm:ss"); + return formattedTime + " : " + lengthStep.toString(); + } + + public void setLabel(String label) { + //do nothing, used by the editor + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyLogsTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyLogsTableModel.java new file mode 100644 index 0000000..3f32637 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyLogsTableModel.java @@ -0,0 +1,58 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency; + +/* + * #%L + * Tutti :: UI + * %% + * Copyright (C) 2012 - 2014 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +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; + +/** + * Model of the benhtos frequency log table. + * + * @author Kevin Morin (Code Lutin) + * @since 3.8 + */ +public class BenthosFrequencyLogsTableModel extends AbstractApplicationTableModel<BenthosFrequencyLogRowModel> { + + private static final long serialVersionUID = 1L; + + public static final ColumnIdentifier<BenthosFrequencyRowModel> LABEL = ColumnIdentifier.newId( + BenthosFrequencyLogRowModel.PROPERTY_LABEL, + n("tutti.editBenthosFrequencies.logTable.header.label"), + n("tutti.editBenthosFrequencies.logTable.header.label")); + + + public BenthosFrequencyLogsTableModel(TableColumnModelExt columnModel) { + super(columnModel, true, false); + setNoneEditableCols(); + } + + @Override + public BenthosFrequencyLogRowModel createNewRow() { + BenthosFrequencyLogRowModel result = new BenthosFrequencyLogRowModel(); + return result; + } + +} 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 2c69ea3..e3bac3f 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 @@ -71,13 +71,17 @@ public class BenthosFrequencyTableModel extends AbstractApplicationTableModel<Be */ protected final WeightUnit weightUnit; + protected final PropertyChangeListener rowPropertyChangeListener; + public BenthosFrequencyTableModel(WeightUnit weightUnit, TableColumnModelExt columnModel, - BenthosFrequencyUIModel uiModel) { + BenthosFrequencyUIModel uiModel, + PropertyChangeListener rowPropertyChangeListener) { super(columnModel, true, true); this.weightUnit = weightUnit; this.uiModel = uiModel; this.rowCache = Maps.newTreeMap(); + this.rowPropertyChangeListener = rowPropertyChangeListener; setNoneEditableCols(); } @@ -112,6 +116,9 @@ public class BenthosFrequencyTableModel extends AbstractApplicationTableModel<Be } } }); + + result.addPropertyChangeListener(rowPropertyChangeListener); + result.setLengthStepCaracteristic(uiModel.getLengthStepCaracteristic()); result.setLengthStep(defaultStep); result.setValid(defaultStep != null); 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 819a82c..169c3a0 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 @@ -192,6 +192,23 @@ ComputableDataEditor { layout: {dataFieldLayout}; } +#firstSplitPane { + oneTouchExpandable: true; + resizeWeight: 0.6; +} + +#secondSplitPane { + oneTouchExpandable: true; + resizeWeight: 0.1; +} + +#logsTable { + selectionMode: {ListSelectionModel.SINGLE_SELECTION}; + selectionBackground: {null}; + selectionForeground: {Color.BLACK}; + sortable: false; +} + #tableScrollPane { _validatorLabel: {t("tutti.editBenthosFrequencies.field.rows")}; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.jaxx index dc0e313..dfeed1f 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.jaxx @@ -193,9 +193,21 @@ public BenthosFrequencyUI(TuttiUI parentUI) { </JPanel> <JPanel id='dataFieldPanel' constraints='BorderLayout.CENTER'> - <JScrollPane id='tableScrollPane' constraints='"lengthCaracteristicPmfm"'> - <JXTable id='table'/> - </JScrollPane> + <JSplitPane constraints='"lengthCaracteristicPmfm"' + id="firstSplitPane"> + <JSplitPane id="secondSplitPane"> + <JScrollPane id='logsScrollPane' > + <JXTable id='logsTable'/> + </JScrollPane> + <JScrollPane id='tableScrollPane' > + <JXTable id='table'/> + </JScrollPane> + </JSplitPane> + <JPanel id="histogramPanel" + layout="{new BorderLayout()}"> + </JPanel> + </JSplitPane> + <Table constraints='"noLengthCaracteristicPmfm"' fill='horizontal'> <row> <cell columns='2'> 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 ebe7ec5..f7b6eea 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 @@ -26,6 +26,13 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import fr.ifremer.tutti.util.Numbers; +import org.jdesktop.swingx.decorator.HighlightPredicate; +import org.jdesktop.swingx.decorator.Highlighter; +import org.jfree.chart.ChartFactory; +import org.jfree.chart.ChartPanel; +import org.jfree.chart.JFreeChart; +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; @@ -49,15 +56,15 @@ import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; -import javax.swing.JComponent; -import javax.swing.JOptionPane; -import javax.swing.JTextField; -import javax.swing.SwingUtilities; +import javax.swing.*; +import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; @@ -80,6 +87,8 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth private Map<String, Caracteristic> lengthStepCaracteristics; + private XYSeriesCollection dataset; + /** * Weight unit. * @@ -122,10 +131,20 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth BenthosFrequencyUIModel model = getModel(); model.setEmptyRows(Sets.<BenthosFrequencyRowModel>newHashSet()); + if (CollectionUtils.isNotEmpty(rows)) { + XYSeries series = dataset.getSeries(0); + series.clear(); + for (BenthosFrequencyRowModel row : rows) { model.updateRowWithWeight(row); + + Float lengthStep = row.getLengthStep(); + if (lengthStep != null) { + series.add(lengthStep, row.getNumber()); + } } + for (BenthosFrequencyRowModel row : rows) { recomputeRowValidState(row); } @@ -292,12 +311,17 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth if (componentToFocus != null) { componentToFocus.grabFocus(); } + updateLogVisibility(); } } ); } }); + // init histogram + final XYSeries series = initHistogram(ui, step); + + // init data table JXTable table = getTable(); // create table column model @@ -332,7 +356,25 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth new BenthosFrequencyTableModel( weightUnit, columnModel, - model); + model, + new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + BenthosFrequencyRowModel row = (BenthosFrequencyRowModel) evt.getSource(); + + if (BenthosFrequencyRowModel.PROPERTY_LENGTH_STEP.equals(evt.getPropertyName())) { + Float oldValue = (Float) evt.getOldValue(); + if (oldValue != null) { + series.remove(oldValue); + } + } + + Float lengthStep = row.getLengthStep(); + if (lengthStep != null) { + series.addOrUpdate(lengthStep, row.getNumber()); + } + } + }); table.setModel(tableModel); @@ -342,6 +384,8 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth installTableKeyListener(columnModel, table); + initLogTable(ui); + listenValidatorValid(ui.getValidator(), model); } @@ -514,6 +558,13 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth model.setTotalNumber(totalNumber + 1); getTable().scrollRowToVisible(rowIndex); + + JXTable logsTable = getUI().getLogsTable(); + BenthosFrequencyLogsTableModel logsTableModel = (BenthosFrequencyLogsTableModel) logsTable.getModel(); + BenthosFrequencyLogRowModel newRow = logsTableModel.createNewRow(); + newRow.setDate(new Date()); + newRow.setLengthStep(step); + logsTableModel.addNewRow(0, newRow); } public void editBatch(BenthosFrequencyCellComponent.FrequencyCellEditor editor) { @@ -670,12 +721,21 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth // keep batch (will be used to push back editing entry) model.setBatch(speciesBatch); + + //remove log rows + BenthosFrequencyLogsTableModel logsTableModel = (BenthosFrequencyLogsTableModel) getUI().getLogsTable().getModel(); + logsTableModel.setRows(new ArrayList<BenthosFrequencyLogRowModel>()); + } public void reset() { // remove all frequencies getModel().setRows(Lists.<BenthosFrequencyRowModel>newArrayList()); + + //remove log rows + BenthosFrequencyLogsTableModel logsTableModel = (BenthosFrequencyLogsTableModel) getUI().getLogsTable().getModel(); + logsTableModel.setRows(new ArrayList<BenthosFrequencyLogRowModel>()); } public void saveAndClose() { @@ -706,6 +766,28 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth } } + /** + * Decrement the frequency of the lengthstep of the row + * @param logRow + */ + public void decrementLengthStep(BenthosFrequencyLogRowModel logRow) { + if (logRow != null) { + BenthosFrequencyTableModel tableModel = getTableModel(); + BenthosFrequencyRowModel speciesFrequencyRowModel = tableModel.getRowCache().get(logRow.getLengthStep()); + if (speciesFrequencyRowModel != null) { + Integer number = speciesFrequencyRowModel.getNumber(); + if (number != null && number > 0) { + speciesFrequencyRowModel.setNumber(number - 1); + tableModel.fireTableDataChanged(); + } + } + + BenthosFrequencyLogsTableModel logsTableModel = (BenthosFrequencyLogsTableModel) getUI().getLogsTable().getModel(); + int index = logsTableModel.getRowIndex(logRow); + logsTableModel.removeRow(index); + } + } + //------------------------------------------------------------------------// //-- Internal methods --// //------------------------------------------------------------------------// @@ -822,4 +904,74 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth } return precision; } + + protected void updateLogVisibility() { + + boolean logVisible = getModel().isRafaleMode(); + BenthosFrequencyUI ui = getUI(); + JSplitPane firstSplitPane = ui.getFirstSplitPane(); + JSplitPane secondSplitPane = ui.getSecondSplitPane(); + + int lastDividerLocation = secondSplitPane.getLastDividerLocation(); + if (lastDividerLocation == 0) { + lastDividerLocation = 200; + } + secondSplitPane.setDividerLocation(logVisible ? lastDividerLocation : 0); + secondSplitPane.setDividerSize(logVisible ? firstSplitPane.getDividerSize() : 0); + + ui.getLogsScrollPane().setVisible(logVisible); + } + + protected XYSeries initHistogram(BenthosFrequencyUI ui, float step) { + final XYSeries series = new XYSeries("", true, false); + dataset = new XYSeriesCollection(series); + dataset.setIntervalPositionFactor(0); + dataset.setIntervalWidth(step); + + JFreeChart chart = ChartFactory.createXYBarChart(null, + t("tutti.editSpeciesFrequencies.table.header.lengthStep"), + false, + t("tutti.editSpeciesFrequencies.table.header.number"), + dataset); + chart.clearSubtitles(); + chart.getXYPlot().getRenderer().setSeriesPaint(0, getConfig().getColorComputedWeights()); + + final ChartPanel chartPanel = new ChartPanel(chart); + chartPanel.setDomainZoomable(false); + chartPanel.setMouseZoomable(false); + chartPanel.setPopupMenu(null); + + JPanel histogramPanel = ui.getHistogramPanel(); + histogramPanel.add(chartPanel, BorderLayout.CENTER); + return series; + } + + protected void initLogTable(BenthosFrequencyUI ui) { + JXTable logTable = ui.getLogsTable(); + + // create log table column model + DefaultTableColumnModelExt logColumnModel = new DefaultTableColumnModelExt(); + + { // Date + addColumnToModel(logColumnModel, + BenthosFrequencyLogCellComponent.newEditor(this), + BenthosFrequencyLogCellComponent.newRender(), + BenthosFrequencyLogsTableModel.LABEL); + } + + // create log table model + BenthosFrequencyLogsTableModel logTableModel = new BenthosFrequencyLogsTableModel(logColumnModel); + logTableModel.setRows(new ArrayList<BenthosFrequencyLogRowModel>()); + + logTable.setModel(logTableModel); + logTable.setColumnModel(logColumnModel); + + // by default do not authorize to change column orders + logTable.getTableHeader().setReorderingAllowed(false); + Highlighter evenHighlighter = TuttiUIUtil.newBackgroundColorHighlighter( + HighlightPredicate.ODD, +// Color.RED); + getConfig().getColorAlternateRow()); + logTable.addHighlighter(evenHighlighter); + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyLogCellComponent.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyLogCellComponent.java index 8128f2b..47ca61d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyLogCellComponent.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyLogCellComponent.java @@ -39,10 +39,10 @@ import java.io.Serializable; import static org.nuiton.i18n.I18n.t; /** - * Component to render and edit frequency stuff from batch table. + * Component to render and delete log items from logs table. * - * @author tchemit <chemit@codelutin.com> - * @since 0.2 + * @author Kevin Morin (Code Lutin) + * @since 3.8 */ public class SpeciesFrequencyLogCellComponent extends JPanel implements Serializable { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java index 83f74ac..0ac5ae6 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java @@ -24,7 +24,6 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency; import com.google.common.collect.Maps; import fr.ifremer.tutti.type.WeightUnit; -import org.jfree.data.xy.XYSeries; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; @@ -153,4 +152,4 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp } } } -} +} \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java index 6d8be0f..2c264ee 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java @@ -166,16 +166,20 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci SpeciesFrequencyUIModel model = getModel(); model.setEmptyRows(Sets.<SpeciesFrequencyRowModel>newHashSet()); + if (CollectionUtils.isNotEmpty(rows)) { XYSeries series = dataset.getSeries(0); series.clear(); + for (SpeciesFrequencyRowModel row : rows) { model.updateRowWithWeight(row); + Float lengthStep = row.getLengthStep(); if (lengthStep != null) { series.add(lengthStep, row.getNumber()); } } + for (SpeciesFrequencyRowModel row : rows) { recomputeRowValidState(row); } 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 04c3fcc..2133567 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 @@ -527,7 +527,10 @@ tutti.editBenthosFrequencies.field.totalNumber.tip= tutti.editBenthosFrequencies.field.totalWeight= tutti.editBenthosFrequencies.field.totalWeight.tip= tutti.editBenthosFrequencies.label.no.configuration= +tutti.editBenthosFrequencies.logTable.header.label= tutti.editBenthosFrequencies.simpleCountingAndFrequencies= +tutti.editBenthosFrequencies.table.header.lengthStep= +tutti.editBenthosFrequencies.table.header.number= tutti.editBenthosFrequencies.title= tutti.editBenthosFrequencies.title.addLengthStepCaracteristic= tutti.editCaracteristics.title= 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 8b61979..8a0a2be 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 @@ -517,6 +517,7 @@ tutti.editBenthosFrequencies.field.totalNumber.tip=Nombre total d'individus des tutti.editBenthosFrequencies.field.totalWeight=Poids total tutti.editBenthosFrequencies.field.totalWeight.tip=Poids total des lignes valides tutti.editBenthosFrequencies.label.no.configuration=< Pas de configuration > +tutti.editBenthosFrequencies.logTable.header.label=Logs tutti.editBenthosFrequencies.simpleCountingAndFrequencies=Des mensurations ont été saisies dans le tableau. Saisir un simple dénombrement les effacera. tutti.editBenthosFrequencies.title=Mensuration tutti.editBenthosFrequencies.title.addLengthStepCaracteristic=Choisir une autre caractéristique diff --git a/tutti-ui-swing/src/main/resources/icons/action-delete.png b/tutti-ui-swing/src/main/resources/icons/action-delete.png index 08f2493..afe22ba 100644 Binary files a/tutti-ui-swing/src/main/resources/icons/action-delete.png and b/tutti-ui-swing/src/main/resources/icons/action-delete.png differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm