From 3d9839a73ff5685687e73fe1f5aee57d4a924f3e Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Mon, 10 Aug 2009 16:20:18 +0000 Subject: [PATCH] * highlight verification cells (green foreground) * increase max-heap-size in jnlp descriptor --- installer/webstart/filebot.jnlp | 2 +- installer/webstart/filebot.sfv.jnlp | 2 +- .../ui/panel/sfv/ChecksumCellRenderer.java | 13 +++++++++- .../filebot/ui/panel/sfv/ChecksumTable.java | 26 +++++++++++++++++-- .../panel/sfv/ChecksumTableExportHandler.java | 2 +- .../ui/panel/sfv/ChecksumTableModel.java | 22 +++++++++++----- .../filebot/ui/panel/sfv/SfvPanel.java | 2 +- 7 files changed, 55 insertions(+), 14 deletions(-) diff --git a/installer/webstart/filebot.jnlp b/installer/webstart/filebot.jnlp index 72877ebb..184c44e5 100644 --- a/installer/webstart/filebot.jnlp +++ b/installer/webstart/filebot.jnlp @@ -29,7 +29,7 @@ - + diff --git a/installer/webstart/filebot.sfv.jnlp b/installer/webstart/filebot.sfv.jnlp index 2f5857ca..42227fa0 100644 --- a/installer/webstart/filebot.sfv.jnlp +++ b/installer/webstart/filebot.sfv.jnlp @@ -36,7 +36,7 @@ - + diff --git a/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumCellRenderer.java b/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumCellRenderer.java index 1e948aa3..1c900f81 100644 --- a/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumCellRenderer.java +++ b/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumCellRenderer.java @@ -21,6 +21,8 @@ public class ChecksumCellRenderer extends DefaultTableCellRenderer { private final SwingWorkerCellRenderer progressRenderer = new SwingWorkerCellRenderer(); + private final Color verificationForeground = new Color(0x009900); + @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { @@ -41,7 +43,7 @@ public class ChecksumCellRenderer extends DefaultTableCellRenderer { // if row state is ERROR and if we are not selected use text color RED, // else use default table colors - setForeground(isSelected ? table.getSelectionForeground() : isError ? Color.RED : table.getForeground()); + setForeground(isSelected ? table.getSelectionForeground() : isError ? Color.RED : isVerificationColumn(table, column) ? verificationForeground : table.getForeground()); setBackground(isSelected ? table.getSelectionBackground() : table.getBackground()); // use BOLD font on ERROR @@ -59,4 +61,13 @@ public class ChecksumCellRenderer extends DefaultTableCellRenderer { return this; } + + + private boolean isVerificationColumn(JTable table, int column) { + ChecksumTableModel model = (ChecksumTableModel) table.getModel(); + int modelColumn = table.getColumnModel().getColumn(column).getModelIndex(); + + return model.isVerificationColumn(modelColumn); + } + } diff --git a/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTable.java b/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTable.java index 1da25461..31948a0a 100644 --- a/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTable.java +++ b/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTable.java @@ -5,11 +5,12 @@ package net.sourceforge.filebot.ui.panel.sfv; import static net.sourceforge.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; -import javax.swing.table.TableModel; import net.sourceforge.tuned.ui.TunedUtilities.DragDropRowTableUI; @@ -40,11 +41,32 @@ class ChecksumTable extends JTable { @Override - protected TableModel createDefaultDataModel() { + protected ChecksumTableModel createDefaultDataModel() { return new ChecksumTableModel(); } + @Override + protected JTableHeader createDefaultTableHeader() { + return new JTableHeader(columnModel) { + + @Override + public String getToolTipText(MouseEvent evt) { + try { + int columnIndex = columnModel.getColumnIndexAtX(evt.getX()); + int modelIndex = columnModel.getColumn(columnIndex).getModelIndex(); + + // display column root of checksum column + return getModel().getColumnRoot(modelIndex).getPath(); + } catch (Exception e) { + // ignore, column is not a checksum column + return null; + } + }; + }; + } + + @Override public ChecksumTableModel getModel() { return (ChecksumTableModel) super.getModel(); diff --git a/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTableExportHandler.java b/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTableExportHandler.java index 60a920ad..47c398be 100644 --- a/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTableExportHandler.java +++ b/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTableExportHandler.java @@ -44,7 +44,7 @@ class ChecksumTableExportHandler extends TextFileExportHandler { protected File defaultColumn() { // select first column that is not a verification file column - for (File root : model.checksumColumns()) { + for (File root : model.getChecksumColumns()) { if (root.isDirectory()) return root; } diff --git a/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTableModel.java b/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTableModel.java index 9e53fc01..a3208ff3 100644 --- a/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTableModel.java +++ b/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTableModel.java @@ -19,6 +19,7 @@ import java.util.Set; import javax.swing.table.AbstractTableModel; import net.sourceforge.filebot.hash.HashType; +import net.sourceforge.tuned.FastFile; import net.sourceforge.tuned.FileUtilities; @@ -37,7 +38,7 @@ class ChecksumTableModel extends AbstractTableModel { public static final String HASH_TYPE_PROPERTY = "hashType"; private HashType hashType = HashType.SFV; - + @Override public String getColumnName(int columnIndex) { switch (columnIndex) { @@ -76,13 +77,18 @@ class ChecksumTableModel extends AbstractTableModel { } - protected File getColumnRoot(int columnIndex) { + public File getColumnRoot(int columnIndex) { // substract checksum column offset return checksumColumns.get(columnIndex - 2); } - public List checksumColumns() { + public boolean isVerificationColumn(int columnIndex) { + return columnIndex >= 2 && getColumnRoot(columnIndex).isFile(); + } + + + public List getChecksumColumns() { return Collections.unmodifiableList(checksumColumns); } @@ -195,7 +201,7 @@ class ChecksumTableModel extends AbstractTableModel { cell.addPropertyChangeListener(progressListener); if (!checksumColumns.contains(cell.getRoot())) { - checksumColumns.add(cell.getRoot()); + checksumColumns.add(new FastFile(cell.getRoot().getPath())); } } @@ -242,6 +248,7 @@ class ChecksumTableModel extends AbstractTableModel { fireTableStructureChanged(); } + private final PropertyChangeListener stateListener = new PropertyChangeListener() { @Override @@ -269,13 +276,13 @@ class ChecksumTableModel extends AbstractTableModel { } }; - + protected static abstract class IndexedMap extends AbstractList implements Set { private final Map indexMap = new HashMap(64); private final List list = new ArrayList(64); - + public abstract K key(V value); @@ -344,9 +351,10 @@ class ChecksumTableModel extends AbstractTableModel { } + private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); - + public void addPropertyChangeListener(PropertyChangeListener listener) { pcs.addPropertyChangeListener(listener); } diff --git a/source/net/sourceforge/filebot/ui/panel/sfv/SfvPanel.java b/source/net/sourceforge/filebot/ui/panel/sfv/SfvPanel.java index e8aeb70d..12478897 100644 --- a/source/net/sourceforge/filebot/ui/panel/sfv/SfvPanel.java +++ b/source/net/sourceforge/filebot/ui/panel/sfv/SfvPanel.java @@ -257,7 +257,7 @@ public class SfvPanel extends JComponent { List options = new ArrayList(); // filter out verification file columns - for (File file : table.getModel().checksumColumns()) { + for (File file : table.getModel().getChecksumColumns()) { if (file.isDirectory()) options.add(file); }