branch feature/8205 created (now c84a591)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8205 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git at c84a591 - on pousse la taille du columnmodel avec les colonnes cachées dans l'index de modele des colonnes - on pousse la colonne de maturité spécifiquement au modele de table qui saura l'ajouter ou la retirer aux identifiers fixes #8205 This branch includes the following new commits: new 5c94f81 on ne peut pas se baser sur le columnmodel pour mettre à jour les identifiants, car on ne garde pas le même ordre et la colonne est déjà supprimée quand on passe dans le listener, donc on ne peut pas savoir quel id supprimer (refs #8205) new c84a591 - on pousse la taille du columnmodel avec les colonnes cachées dans l'index de modele des colonnes - on pousse la colonne de maturité spécifiquement au modele de table qui saura l'ajouter ou la retirer aux identifiers fixes #8205 The 2 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 c84a591a16cd339090430f4b61faf076a75b8322 Author: Kevin Morin <morin@codelutin.com> Date: Tue Apr 5 11:54:19 2016 +0200 - on pousse la taille du columnmodel avec les colonnes cachées dans l'index de modele des colonnes - on pousse la colonne de maturité spécifiquement au modele de table qui saura l'ajouter ou la retirer aux identifiers fixes #8205 commit 5c94f8188751305703a7ac60718a4fd2c4483def Author: Kevin Morin <morin@codelutin.com> Date: Tue Apr 5 11:54:16 2016 +0200 on ne peut pas se baser sur le columnmodel pour mettre à jour les identifiants, car on ne garde pas le même ordre et la colonne est déjà supprimée quand on passe dans le listener, donc on ne peut pas savoir quel id supprimer (refs #8205) -- 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/8205 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 5c94f8188751305703a7ac60718a4fd2c4483def Author: Kevin Morin <morin@codelutin.com> Date: Tue Apr 5 11:54:16 2016 +0200 on ne peut pas se baser sur le columnmodel pour mettre à jour les identifiants, car on ne garde pas le même ordre et la colonne est déjà supprimée quand on passe dans le listener, donc on ne peut pas savoir quel id supprimer (refs #8205) --- .../IndividualObservationBatchTableModel.java | 40 +++++----------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java index 3e272c1..964cfa9 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java @@ -29,15 +29,10 @@ import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.sampling.SamplingCodePrefix; import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.util.table.CaracteristicColumnIdentifier; -import org.jdesktop.swingx.table.TableColumnExt; import org.jdesktop.swingx.table.TableColumnModelExt; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.TableColumnModelEvent; -import javax.swing.event.TableColumnModelListener; import java.io.Serializable; import java.util.Collection; import java.util.Optional; @@ -116,33 +111,6 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab this.weightUnit = weightUnit; this.defaultCaracteristicsMap = CaracteristicMap.fromCollection(defaultCaracteristicsSet); this.sexCaracteristic = sexCaracteristic; - - columnModel.addColumnModelListener(new TableColumnModelListener() { - - @Override - public void columnAdded(TableColumnModelEvent e) { - TableColumnModelExt columnModel = (TableColumnModelExt) e.getSource(); - TableColumnExt column = columnModel.getColumnExt(e.getToIndex()); - identifiers.add((ColumnIdentifier<IndividualObservationBatchRowModel>) column.getIdentifier()); - } - - @Override - public void columnRemoved(TableColumnModelEvent e) { - TableColumnModelExt columnModel = (TableColumnModelExt) e.getSource(); - TableColumnExt column = columnModel.getColumnExt(e.getFromIndex()); - identifiers.remove(column); - } - - @Override - public void columnMoved(TableColumnModelEvent e) {} - - @Override - public void columnMarginChanged(ChangeEvent e) {} - - @Override - public void columnSelectionChanged(ListSelectionEvent e) {} - }); - setNoneEditableCols(RANK); } @@ -184,6 +152,14 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab } } + public void addMaturityIdentifier(ColumnIdentifier<IndividualObservationBatchRowModel> maturityIdentifer) { + identifiers.add(maturityIdentifer); + } + + public void removeMaturityIdentifier(ColumnIdentifier<IndividualObservationBatchRowModel> maturityIdentifer) { + identifiers.remove(maturityIdentifer); + } + public void setDefaultCaracteristicValues(CaracteristicMap defaultCaracteristicValues) { defaultCaracteristicsMap.replaceAll( (caracteristic, serializable) -> defaultCaracteristicValues.get(caracteristic) -- 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/8205 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit c84a591a16cd339090430f4b61faf076a75b8322 Author: Kevin Morin <morin@codelutin.com> Date: Tue Apr 5 11:54:19 2016 +0200 - on pousse la taille du columnmodel avec les colonnes cachées dans l'index de modele des colonnes - on pousse la colonne de maturité spécifiquement au modele de table qui saura l'ajouter ou la retirer aux identifiers fixes #8205 --- .../frequency/SpeciesFrequencyUIHandler.java | 72 +++++++++++++++++----- 1 file changed, 58 insertions(+), 14 deletions(-) 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 e81ea30..d19ff4f 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 @@ -93,6 +93,7 @@ import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; +import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; import javax.swing.JComponent; import javax.swing.JFrame; @@ -104,7 +105,9 @@ import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.event.TableModelEvent; +import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumnModel; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; @@ -180,7 +183,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci protected VetoableChangeListener changeScreenListener; - protected Optional<CaracteristicColumnIdentifier> maturityColumnId = Optional.empty(); + protected Optional<CaracteristicColumnIdentifier<IndividualObservationBatchRowModel>> maturityColumnId = Optional.empty(); protected SpeciesOrBenthosBatchUISupport speciesOrBenthosBatchUISupport; @@ -845,6 +848,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci if (maturityColumnId.isPresent()) { TableColumnExt maturityColumn = ui.getObsTable().getColumnExt(maturityColumnId.get()); ui.getObsTable().removeColumn(maturityColumn); + getObsTableModel().removeMaturityIdentifier(maturityColumnId.get()); maturityColumnId = Optional.empty(); } @@ -1433,31 +1437,46 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci getDecorator(CaracteristicQualitativeValue.class, null); // remove the row sorter while we add the new column - ui.getObsTable().setRowSorter(null); - ui.getObsTable().setAutoCreateRowSorter(false); + JXTable obsTable = ui.getObsTable(); + obsTable.setRowSorter(null); + obsTable.setAutoCreateRowSorter(false); - TableColumnModelExt columnModel = (TableColumnModelExt) ui.getObsTable().getColumnModel(); + TableColumnModelExt columnModel = (TableColumnModelExt) obsTable.getColumnModel(); - maturityColumnId = Optional.of(addCaracteristicColumnToModel(ui.getObsTable(), + maturityColumnId = Optional.of(addCaracteristicColumnToModel(obsTable, columnModel, caracteristicDecorator, caracteristicTipDecorator, caracteristicQualitativeDecorator, caracteristic)); - int otherCaracteristicsIndex = columnModel.getColumnExt(IndividualObservationBatchTableModel.OTHER_CARACTERISTICS).getModelIndex(); - ui.getObsTable().moveColumn(columnModel.getColumnCount() - 1, otherCaracteristicsIndex); + getObsTableModel().addMaturityIdentifier(maturityColumnId.get()); + + // on cherche le bon index où insérer la colonne maturité (avant les autres caractéristiques, mais elle peut etre cachee) + int modelIndex = columnModel.getColumnExt(IndividualObservationBatchTableModel.OTHER_CARACTERISTICS).getModelIndex(); + int indexToMove = obsTable.convertColumnIndexToView(modelIndex); + // si la colonne autres caracteristiques est cachée, alors on cherche la première colonne suivante non cachée + int columnCount = columnModel.getColumnCount(true); + while (indexToMove == -1 && modelIndex < columnCount) { + indexToMove = obsTable.convertColumnIndexToView(modelIndex); + modelIndex++; + } + // si une colonne après celle des autres caractéristiques est visible, on déplace la maturité avant cette colonne + // sinon, on laisse la maturité à la fin + if (modelIndex != -1) { + obsTable.moveColumn(columnModel.getColumnCount() - 1, indexToMove); + } // reset the row sorter - ui.getObsTable().setAutoCreateRowSorter(true); + obsTable.setAutoCreateRowSorter(true); } - protected CaracteristicColumnIdentifier addCaracteristicColumnToModel(JXTable table, - TableColumnModelExt columnModel, - Decorator<Caracteristic> caracteristicDecorator, - Decorator<Caracteristic> caracteristicTipDecorator, - Decorator<CaracteristicQualitativeValue> caracteristicQualitativeDecorator, - Caracteristic caracteristic) { + protected CaracteristicColumnIdentifier<IndividualObservationBatchRowModel> addCaracteristicColumnToModel(JXTable table, + TableColumnModelExt columnModel, + Decorator<Caracteristic> caracteristicDecorator, + Decorator<Caracteristic> caracteristicTipDecorator, + Decorator<CaracteristicQualitativeValue> caracteristicQualitativeDecorator, + Caracteristic caracteristic) { String header = caracteristicDecorator.toString(caracteristic); String headerTip = caracteristicTipDecorator.toString(caracteristic); @@ -1501,6 +1520,31 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci return id; } + // override la méthode pour mettre en index de modèle l'index après la dernière colonne cachée + @Override + protected <R> TableColumnExt addColumnToModel(TableColumnModel model, + TableCellEditor editor, + TableCellRenderer renderer, + ColumnIdentifier<R> identifier) { + + //TODO à remonter dans jaxx + TableColumnExt col = new TableColumnExt(((DefaultTableColumnModelExt) model).getColumnCount(true)); + col.setCellEditor(editor); + col.setCellRenderer(renderer); + String label = t(identifier.getHeaderI18nKey()); + + col.setHeaderValue(label); + String tip = t(identifier.getHeaderTipI18nKey()); + + col.setToolTipText(tip); + + col.setIdentifier(identifier); + model.addColumn(col); + // by default no column is sortable, must specify it + col.setSortable(false); + return col; + } + protected void consumeFeedRecord(FeedReaderMeasureRecord record) { if (record.isValid()) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm