filebot/source/net/filebot/ui/sfv/ChecksumTable.java

94 lines
2.2 KiB
Java
Raw Normal View History

2014-04-19 02:30:29 -04:00
package net.filebot.ui.sfv;
2014-04-19 02:30:29 -04:00
import static net.filebot.hash.VerificationUtilities.*;
import java.awt.Color;
import java.awt.event.MouseEvent;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;
2014-07-29 02:45:15 -04:00
import net.filebot.util.ui.SwingUI.DragDropRowTableUI;
class ChecksumTable extends JTable {
2015-07-25 18:47:19 -04:00
public ChecksumTable() {
setFillsViewportHeight(true);
setAutoCreateRowSorter(true);
setAutoCreateColumnsFromModel(true);
setAutoResizeMode(AUTO_RESIZE_SUBSEQUENT_COLUMNS);
2015-07-25 18:47:19 -04:00
setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
2015-07-25 18:47:19 -04:00
setRowHeight(20);
2015-07-25 18:47:19 -04:00
setDragEnabled(true);
setUI(new DragDropRowTableUI());
2015-07-25 18:47:19 -04:00
// force white background (e.g. gtk-laf default table background is gray)
setBackground(Color.WHITE);
2015-07-25 18:47:19 -04:00
// highlight CRC32 patterns in filenames in green and with smaller font-size
setDefaultRenderer(String.class, new HighlightPatternCellRenderer(EMBEDDED_CHECKSUM));
setDefaultRenderer(ChecksumRow.State.class, new StateIconCellRenderer());
setDefaultRenderer(ChecksumCell.class, new ChecksumCellRenderer());
}
2015-07-25 18:47:19 -04:00
@Override
protected ChecksumTableModel createDefaultDataModel() {
return new ChecksumTableModel();
}
2015-07-25 18:47:19 -04:00
@Override
protected JTableHeader createDefaultTableHeader() {
return new JTableHeader(columnModel) {
2015-07-25 18:47:19 -04:00
@Override
public String getToolTipText(MouseEvent evt) {
try {
int columnIndex = columnModel.getColumnIndexAtX(evt.getX());
int modelIndex = columnModel.getColumn(columnIndex).getModelIndex();
2015-07-25 18:47:19 -04:00
// display column root of checksum column
return getModel().getColumnRoot(modelIndex).getPath();
} catch (Exception e) {
// ignore, column is not a checksum column
return null;
}
};
};
}
2015-07-25 18:47:19 -04:00
@Override
public ChecksumTableModel getModel() {
return (ChecksumTableModel) super.getModel();
}
2015-07-25 18:47:19 -04:00
@Override
public void createDefaultColumnsFromModel() {
super.createDefaultColumnsFromModel();
2015-07-25 18:47:19 -04:00
for (int i = 0; i < getColumnCount(); i++) {
TableColumn column = getColumnModel().getColumn(i);
2015-07-25 18:47:19 -04:00
if (i == 0) {
column.setPreferredWidth(45);
} else if (i == 1) {
column.setPreferredWidth(400);
} else if (i >= 2) {
column.setPreferredWidth(150);
}
}
}
2015-07-25 18:47:19 -04:00
}