Author: tchemit Date: 2013-02-28 09:55:41 +0100 (Thu, 28 Feb 2013) New Revision: 496 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/496 Log: refs #2025: [CAPTURE] - Tableau Esp?\195?\168ce - Probl?\195?\168me lorsqu'on masque une colonne (utilisation directe du column model, mais non fini:( Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableModel.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchTableModel.java 2013-02-28 05:36:18 UTC (rev 495) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchTableModel.java 2013-02-28 08:55:41 UTC (rev 496) @@ -27,9 +27,8 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import org.jdesktop.swingx.table.TableColumnModelExt; -import javax.swing.table.TableColumnModel; - import static org.nuiton.i18n.I18n.n_; /** @@ -66,7 +65,7 @@ n_("tutti.table.accidental.batch.header.file")); - public AccidentalBatchTableModel(TableColumnModel columnModel) { + public AccidentalBatchTableModel(TableColumnModelExt columnModel) { super(columnModel, true, true); setNoneEditableCols(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java 2013-02-28 05:36:18 UTC (rev 495) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java 2013-02-28 08:55:41 UTC (rev 496) @@ -27,6 +27,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import org.jdesktop.swingx.table.TableColumnModelExt; import javax.swing.table.TableColumnModel; @@ -81,7 +82,7 @@ n_("tutti.table.benthos.batch.header.toConfirm"), n_("tutti.table.benthos.batch.header.toConfirm")); - public BenthosBatchTableModel(TableColumnModel columnModel) { + public BenthosBatchTableModel(TableColumnModelExt columnModel) { super(columnModel, true, true); setNoneEditableCols(); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchTableModel.java 2013-02-28 05:36:18 UTC (rev 495) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchTableModel.java 2013-02-28 08:55:41 UTC (rev 496) @@ -26,6 +26,7 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import org.jdesktop.swingx.table.TableColumnModelExt; import javax.swing.table.TableColumnModel; @@ -69,7 +70,7 @@ n_("tutti.table.macrowaste.batch.header.file"), n_("tutti.table.macrowaste.batch.header.file")); - public MacroWasteBatchTableModel(TableColumnModel columnModel) { + public MacroWasteBatchTableModel(TableColumnModelExt columnModel) { super(columnModel, true, true); setNoneEditableCols(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchTableModel.java 2013-02-28 05:36:18 UTC (rev 495) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchTableModel.java 2013-02-28 08:55:41 UTC (rev 496) @@ -26,6 +26,7 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import org.jdesktop.swingx.table.TableColumnModelExt; import javax.swing.table.TableColumnModel; @@ -74,7 +75,7 @@ n_("tutti.table.plankton.batch.header.file"), n_("tutti.table.plankton.batch.header.file")); - public PlanktonBatchTableModel(TableColumnModel columnModel) { + public PlanktonBatchTableModel(TableColumnModelExt columnModel) { super(columnModel, true, true); setNoneEditableCols(); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-02-28 05:36:18 UTC (rev 495) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-02-28 08:55:41 UTC (rev 496) @@ -30,8 +30,8 @@ import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import org.jdesktop.swingx.table.TableColumnModelExt; -import javax.swing.table.TableColumnModel; import java.util.Set; import static org.nuiton.i18n.I18n.n_; @@ -170,7 +170,7 @@ */ protected final Multimap<Species, SampleCategoryType> speciesSampleCategories; - public SpeciesBatchTableModel(TableColumnModel columnModel, + public SpeciesBatchTableModel(TableColumnModelExt columnModel, Multimap<Species, SampleCategoryType> speciesSampleCategories) { super(columnModel, false, false); this.speciesSampleCategories = speciesSampleCategories; @@ -257,15 +257,15 @@ if (species == null) { - // no species, can not edit + // no species, can not edit result = false; } else { // Is protocol authorize it ? - result = !speciesSampleCategories.containsKey(species) - || speciesSampleCategories.containsEntry(species, - samplePropertyName.getSampleCategoryType()); + result = !speciesSampleCategories.containsKey(species) + || speciesSampleCategories.containsEntry(species, + samplePropertyName.getSampleCategoryType()); if (result) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java 2013-02-28 05:36:18 UTC (rev 495) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java 2013-02-28 08:55:41 UTC (rev 496) @@ -28,6 +28,7 @@ import com.google.common.collect.Maps; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import org.jdesktop.swingx.table.TableColumnModelExt; import javax.swing.table.TableColumnModel; import java.util.List; @@ -64,7 +65,7 @@ private final Map<Float, SpeciesFrequencyRowModel> rowCache; - public SpeciesFrequencyTableModel(TableColumnModel columnModel, + public SpeciesFrequencyTableModel(TableColumnModelExt columnModel, SpeciesFrequencyUIModel uiModel) { super(columnModel, true, true); this.uiModel = uiModel; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java 2013-02-28 05:36:18 UTC (rev 495) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java 2013-02-28 08:55:41 UTC (rev 496) @@ -26,6 +26,7 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import org.jdesktop.swingx.table.TableColumnModelExt; import javax.swing.table.TableColumnModel; @@ -64,7 +65,7 @@ private final SplitSpeciesBatchUIModel uiModel; - public SplitSpeciesBatchTableModel(TableColumnModel columnModel, + public SplitSpeciesBatchTableModel(TableColumnModelExt columnModel, SplitSpeciesBatchUIModel uiModel, boolean createEmptyRowIsEmpty) { super(columnModel, createEmptyRowIsEmpty, createEmptyRowIsEmpty); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java 2013-02-28 05:36:18 UTC (rev 495) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java 2013-02-28 08:55:41 UTC (rev 496) @@ -26,6 +26,7 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import org.jdesktop.swingx.table.TableColumnModelExt; import javax.swing.table.TableColumnModel; @@ -49,7 +50,7 @@ n_("tutti.table.fishing.environment.header.value"), n_("tutti.table.fishing.environment.header.value")); - public EnvironmentTableModel(TableColumnModel columnModel) { + public EnvironmentTableModel(TableColumnModelExt columnModel) { super(columnModel, false, false); setNoneEditableCols(KEY); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTableModel.java 2013-02-28 05:36:18 UTC (rev 495) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTableModel.java 2013-02-28 08:55:41 UTC (rev 496) @@ -26,6 +26,7 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import org.jdesktop.swingx.table.TableColumnModelExt; import javax.swing.table.TableColumnModel; @@ -49,7 +50,7 @@ n_("tutti.table.fishing.gearShooting.header.value"), n_("tutti.table.fishing.gearShooting.header.value")); - public GearShootingTableModel(TableColumnModel columnModel) { + public GearShootingTableModel(TableColumnModelExt columnModel) { super(columnModel, false, false); setNoneEditableCols(KEY); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTableModel.java 2013-02-28 05:36:18 UTC (rev 495) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTableModel.java 2013-02-28 08:55:41 UTC (rev 496) @@ -26,6 +26,7 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import org.jdesktop.swingx.table.TableColumnModelExt; import javax.swing.table.TableColumnModel; @@ -64,7 +65,7 @@ // n_("tutti.table.fishing.hydrology.header.averageValue"), // n_("tutti.table.fishing.hydrology.header.averageValue")); - public HydrologyTableModel(TableColumnModel columnModel) { + public HydrologyTableModel(TableColumnModelExt columnModel) { super(columnModel, false, false); setNoneEditableCols(KEY); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2013-02-28 05:36:18 UTC (rev 495) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2013-02-28 08:55:41 UTC (rev 496) @@ -26,6 +26,7 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import org.jdesktop.swingx.table.TableColumnModelExt; import javax.swing.table.TableColumnModel; @@ -91,7 +92,7 @@ private static final long serialVersionUID = 1L; - public EditProtocolSpeciesTableModel(TableColumnModel columnModel) { + public EditProtocolSpeciesTableModel(TableColumnModelExt columnModel) { super(columnModel, false, false); setNoneEditableCols(SPECIES_ID); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableModel.java 2013-02-28 05:36:18 UTC (rev 495) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableModel.java 2013-02-28 08:55:41 UTC (rev 496) @@ -25,15 +25,20 @@ */ import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.event.TableColumnModelExtListener; +import org.jdesktop.swingx.table.TableColumnExt; +import org.jdesktop.swingx.table.TableColumnModelExt; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.TableColumnModelEvent; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableColumn; -import javax.swing.table.TableColumnModel; +import java.beans.PropertyChangeEvent; import java.io.Serializable; import java.util.List; import java.util.Set; @@ -52,20 +57,13 @@ LogFactory.getLog(AbstractTuttiTableModel.class); /** - * Column definition. + * Column model. * - * @since 0.2 + * @since 1.0.2 */ - protected final TableColumn[] columns; + protected final TableColumnModelExt columnModel; /** - * Column identifiers. - * - * @since 0.2 - */ - protected final List<ColumnIdentifier<R>> columnIdentifiers; - - /** * Data in the model. * * @since 0.2 @@ -95,19 +93,47 @@ public abstract R createNewRow(); - protected AbstractTuttiTableModel(TableColumnModel columnModel, + protected AbstractTuttiTableModel(TableColumnModelExt columnModel, boolean createNewRow, boolean createEmptyRowIsEmpty) { + this.columnModel = columnModel; this.createNewRow = createNewRow; this.createEmptyRowIsEmpty = createEmptyRowIsEmpty; - int nbcols = columnModel.getColumnCount(); - columns = new TableColumn[nbcols]; - columnIdentifiers = Lists.newArrayList(); - for (int i = 0; i < nbcols; i++) { - TableColumn column = columnModel.getColumn(i); - columns[i] = column; - columnIdentifiers.add((ColumnIdentifier<R>) column.getIdentifier()); - } + columnModel.addColumnModelListener(new TableColumnModelExtListener() { + @Override + public void columnPropertyChange(PropertyChangeEvent event) { + TableColumnExt column = (TableColumnExt) event.getSource(); + if (log.isInfoEnabled()) { + log.info("Property [" + event.getPropertyName() + "] changed on coloumn [" + column.getTitle() + "] :: " + event.getNewValue()); + } + } + + @Override + public void columnAdded(TableColumnModelEvent e) { + if (log.isInfoEnabled()) { + log.info("Column added [" + e.getFromIndex() + "] :: " + e.getToIndex()); + } + } + + @Override + public void columnRemoved(TableColumnModelEvent e) { + if (log.isInfoEnabled()) { + log.info("Column removed [" + e.getFromIndex() + "] :: " + e.getToIndex()); + } + } + + @Override + public void columnMoved(TableColumnModelEvent e) { + } + + @Override + public void columnMarginChanged(ChangeEvent e) { + } + + @Override + public void columnSelectionChanged(ListSelectionEvent e) { + } + }); } public final List<R> getRows() { @@ -225,13 +251,17 @@ @Override public final int getColumnCount() { - return columns.length; +// return columns.length; + return columnModel.getColumnCount(); } @Override public final Object getValueAt(int rowIndex, int columnIndex) { R entry = getEntry(rowIndex); ColumnIdentifier<R> propertyName = getPropertyName(columnIndex); + if (log.isInfoEnabled()) { + log.info("columnIndex: " + columnIndex + " :: " + propertyName.getPropertyName()); + } Object result = getValueAt(rowIndex, columnIndex, propertyName, entry); return result; } @@ -288,12 +318,13 @@ } protected final TableColumn getColumn(int columnIndex) { - SwingUtil.ensureColumnIndex(this, columnIndex); - return columns[columnIndex]; +// SwingUtil.ensureColumnIndex(this, columnIndex); +// return columns[columnIndex]; + return columnModel.getColumns(true).get(columnIndex); } protected final int getColumnIndex(ColumnIdentifier<?> property) { - int result = columnIdentifiers.indexOf(property); + int result = columnModel.getColumnIndex(property); return result; } }