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"));



Reply via email to