Author: jflesch
Date: 2007-01-27 20:50:57 +0000 (Sat, 27 Jan 2007)
New Revision: 11633
Modified:
trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java
trunk/apps/Thaw/src/thaw/plugins/index/Index.java
trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java
Log:
File list in the index can now be sorted
Modified: trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java 2007-01-27
20:29:25 UTC (rev 11632)
+++ trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java 2007-01-27
20:50:57 UTC (rev 11633)
@@ -26,6 +26,13 @@
import javax.swing.table.JTableHeader;
import javax.swing.tree.TreePath;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import javax.swing.event.TableModelEvent;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+
+
import thaw.core.Config;
import thaw.core.I18n;
import thaw.core.Logger;
@@ -69,6 +76,12 @@
private TransferRefresher refresher;
+
+ private int columnToSort = -1;
+ private boolean sortAsc = false;
+
+
+
public FileTable(final FCPQueueManager queueManager,
IndexBrowserPanel indexBrowser,
final Config config) {
@@ -85,6 +98,7 @@
final JTableHeader header = table.getTableHeader();
header.setUpdateTableInRealTime(true);
header.setReorderingAllowed(true);
+ header.addMouseListener(new ColumnListener(table));
panel = new JPanel();
panel.setLayout(new BorderLayout());
@@ -190,7 +204,7 @@
}
protected Vector getSelectedFiles(final int[] selectedRows) {
- final Vector srcList = fileList.getFileList(null, false);
+ final Vector srcList =
fileList.getFileList(fileListModel.getColumnNameInDb(columnToSort), sortAsc);
final Vector files = new Vector();
for(int i = 0 ; i < selectedRows.length ; i++) {
@@ -276,23 +290,28 @@
public class FileListModel extends javax.swing.table.AbstractTableModel
{
private static final long serialVersionUID = 1L;
- public Vector columnNames;
+ public String[] columnNames =
+ {
+ I18n.getMessage("thaw.common.file"),
+ I18n.getMessage("thaw.common.size"),
+ I18n.getMessage("thaw.common.key"),
+ I18n.getMessage("thaw.common.status")
+ };
+ public String[] columnNamesInDb =
+ {
+ "filename",
+ "size",
+ "key"
+ };
+
+
public Vector files = null; /* thaw.plugins.index.File Vector */
public FileList fileList;
public FileListModel() {
super();
-
- columnNames = new Vector();
-
- columnNames.add(I18n.getMessage("thaw.common.file"));
- columnNames.add(I18n.getMessage("thaw.common.size"));
-
-
//columnNames.add(I18n.getMessage("thaw.plugin.index.category"));
- columnNames.add(I18n.getMessage("thaw.common.key"));
- columnNames.add(I18n.getMessage("thaw.common.status"));
}
public void reloadFileList(final FileList newFileList) {
@@ -313,13 +332,29 @@
}
public int getColumnCount() {
- return columnNames.size();
+ return columnNames.length;
}
public String getColumnName(final int column) {
- return (String)columnNames.get(column);
+ String result = columnNames[column];
+
+ if(column == columnToSort) {
+ if(sortAsc)
+ result = result + " >>";
+ else
+ result = result + " <<";
+ }
+
+ return result;
}
+ public String getColumnNameInDb(final int column) {
+ if (column < 0)
+ return null;
+
+ return columnNamesInDb[column];
+ }
+
public Object getValueAt(final int row, final int column) {
if (files == null)
return null;
@@ -361,7 +396,7 @@
public void refresh() {
if(fileList != null) {
- files = fileList.getFileList(null, false);
+ files =
fileList.getFileList(getColumnNameInDb(columnToSort), sortAsc);
} else {
files = null;
}
@@ -518,4 +553,39 @@
}
}
+
+
+
+ protected class ColumnListener extends MouseAdapter {
+ private JTable table;
+
+ public ColumnListener(final JTable t) {
+ table = t;
+ }
+
+ public void mouseClicked(final MouseEvent e) {
+ final TableColumnModel colModel =
table.getColumnModel();
+ final int columnModelIndex =
colModel.getColumnIndexAtX(e.getX());
+ final int modelIndex =
colModel.getColumn(columnModelIndex).getModelIndex();
+
+ final int columnsCount = table.getColumnCount();
+
+ if (modelIndex < 0)
+ return;
+
+ if (columnToSort == modelIndex)
+ sortAsc = !sortAsc;
+ else
+ columnToSort = modelIndex;
+
+
+ for (int i = 0; i < columnsCount; i++) {
+ final TableColumn column =
colModel.getColumn(i);
+
column.setHeaderValue(fileListModel.getColumnName(column.getModelIndex()));
+ }
+
+ refresh();
+ }
+
+ }
}
Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-01-27 20:29:25 UTC
(rev 11632)
+++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java 2007-01-27 20:50:57 UTC
(rev 11633)
@@ -782,8 +782,8 @@
"FROM files WHERE indexParent = ?");
} else {
st =
db.getConnection().prepareStatement("SELECT id, filename, publicKey, localPath,
mime, size "+
-
"FROM files WHERE indexParent = ? ORDER by "+
-
columnToSort + (asc == true ? "" : " DESC"));
+
"FROM files WHERE indexParent = ? ORDER by LOWER("+
+
columnToSort + ")"+ (asc == true ? "" : " DESC"));
}
st.setInt(1, id);
Modified: trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java
2007-01-27 20:29:25 UTC (rev 11632)
+++ trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java
2007-01-27 20:50:57 UTC (rev 11633)
@@ -22,7 +22,7 @@
public class QueueTableModel extends javax.swing.table.AbstractTableModel
implements Observer {
private static final long serialVersionUID = 20060708;
- private final Vector columnNames = new Vector();
+ private final Vector columnNames;
private Vector queries = null;
@@ -41,6 +41,8 @@
this.queueManager = queueManager;
this.isForInsertions = isForInsertions;
+ columnNames = new Vector();
+
columnNames.add(I18n.getMessage("thaw.common.file"));
columnNames.add(I18n.getMessage("thaw.common.size"));