/* ArtifactExclusionTableModel.java created 2007-11-02 * */ package org.signalml.plugin.newartifact.ui; import javax.swing.table.AbstractTableModel; import org.apache.log4j.Logger; import org.signalml.domain.montage.SourceMontage; import org.signalml.plugin.newartifact.data.NewArtifactType; /** ArtifactExclusionTableModel * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class NewArtifactExclusionTableModel extends AbstractTableModel { public static final String CHANGED_PROPERTY = "changed"; private static final long serialVersionUID = 1L; protected static final Logger logger = Logger.getLogger(NewArtifactExclusionTableModel.class); private int[][] excludedChannels; private SourceMontage montage; private NewArtifactType[] artifactTypes = NewArtifactType.values(); private ColumnTableModel columnTableModel; private RowTableModel rowTableModel; public NewArtifactExclusionTableModel() { } public ColumnTableModel getColumnTableModel() { if (columnTableModel == null) { columnTableModel = new ColumnTableModel(); } return columnTableModel; } public RowTableModel getRowTableModel() { if (rowTableModel == null) { rowTableModel = new RowTableModel(); } return rowTableModel; } private void reset() { fireTableStructureChanged(); if (columnTableModel != null) { columnTableModel.fireTableStructureChanged(); } if (rowTableModel != null) { rowTableModel.fireTableStructureChanged(); } } public int[][] getExcludedChannels() { return excludedChannels; } public void setExcludedChannels(int[][] excludedChannels) { if (this.excludedChannels != excludedChannels) { this.excludedChannels = excludedChannels; reset(); } } public SourceMontage getMontage() { return montage; } public void setMontage(SourceMontage montage) { if (this.montage != montage) { this.montage = montage; reset(); } } public void setExcludedChannelsAndMontage(int[][] excludedChannels, SourceMontage montage) { if (this.excludedChannels != excludedChannels || this.montage != montage) { this.excludedChannels = excludedChannels; this.montage = montage; reset(); } } @Override public Class<?> getColumnClass(int columnIndex) { return Boolean.class; } @Override public int getColumnCount() { if (montage == null) { return 0; } return montage.getSourceChannelCount(); } @Override public int getRowCount() { if (montage == null) { return 0; } return artifactTypes.length; } @Override public Object getValueAt(int rowIndex, int columnIndex) { return new Boolean(excludedChannels[rowIndex][columnIndex] != 0); } @Override public void setValueAt(Object value, int rowIndex, int columnIndex) { excludedChannels[rowIndex][columnIndex] = (((Boolean) value) ? 1 : 0); } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return true; } private String getLabel(int channel) { return montage.getSourceChannelLabelAt(channel); } public class ColumnTableModel extends AbstractTableModel { private static final long serialVersionUID = 1L; @Override public int getColumnCount() { if (montage == null) { return 0; } return montage.getSourceChannelCount(); } @Override public int getRowCount() { if (montage == null) { return 0; } return 1; } @Override public Object getValueAt(int rowIndex, int columnIndex) { return getLabel(columnIndex); } @Override public Class<?> getColumnClass(int columnIndex) { return String.class; } } public class RowTableModel extends AbstractTableModel { private static final long serialVersionUID = 1L; @Override public int getColumnCount() { if (montage == null) { return 0; } return 1; } @Override public int getRowCount() { if (montage == null) { return 0; } return artifactTypes.length; } @Override public Object getValueAt(int rowIndex, int columnIndex) { return NewArtifactTypeCaptionHelper.GetCaption(artifactTypes[rowIndex]); } @Override public Class<?> getColumnClass(int columnIndex) { return String.class; } } }