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>.