- /***************************************************************************\r
- * Implementation of BasicDirectoryModel that sorts the Files by column\r
- **************************************************************************/\r
- private final static class DirectoryModel extends BasicDirectoryModel {\r
- int col = 0;\r
- boolean ascending;\r
-\r
- /**************************************************************************\r
- * Must be overridden to extend BasicDirectoryModel\r
- * @param chooser\r
- *************************************************************************/\r
- DirectoryModel(JFileChooser chooser) {\r
- super(chooser);\r
- }\r
-\r
- /**************************************************************************\r
- * Supposedly this is not used anymore, hopefully not. We implemented\r
- * some basic attempt at sorting just in case\r
- * @param a\r
- * @param b\r
- * @return\r
- *************************************************************************/\r
- protected final boolean lt(File a, File b) {\r
- System.out.println("DEBUG:LT called?");\r
-\r
- boolean less = false;\r
-\r
- switch (col) {\r
- case COLUMN_FILEDATE:\r
- less = a.lastModified() > b.lastModified();\r
-\r
- break;\r
-\r
- case COLUMN_FILESIZE:\r
- less = a.length() > b.length();\r
-\r
- break;\r
-\r
- default:\r
- less = a.getName().compareToIgnoreCase(b.getName()) > 0;\r
-\r
- break;\r
- }\r
-\r
- if (ascending) {\r
- return less = !less;\r
- }\r
-\r
- return less;\r
- }\r
-\r
- /**************************************************************************\r
- * Resorts the JFileChooser table based on new column\r
- * @param c\r
- *************************************************************************/\r
- protected final void sort(int c, JTable tbl) {\r
- //Set column and order\r
- col = c;\r
- ascending = !ascending;\r
-\r
- String indicator = " (^)";\r
-\r
- if (ascending) {\r
- indicator = " (v)";\r
- }\r
-\r
- final JTableHeader th = tbl.getTableHeader();\r
- final TableColumnModel tcm = th.getColumnModel();\r
-\r
- for (int i = 0; i < JalviewFileChooser.COLUMN_COLCOUNT; i++) {\r
- final TableColumn tc = tcm.getColumn(i); // the column to change\r
- tc.setHeaderValue(COLUMNS[i]);\r
- }\r
-\r
- final TableColumn tc = tcm.getColumn(col); // the column to change\r
- tc.setHeaderValue(COLUMNS[col] + indicator);\r
-\r
- th.repaint();\r
-\r
- //Requery the file listing\r
- validateFileCache();\r
- }\r
-\r
- /**************************************************************************\r
- * Sorts the data based on current column setting\r
- * @param data\r
- *************************************************************************/\r
- protected final void sort(Vector data) {\r
- switch (col) {\r
- case COLUMN_FILEDATE:\r
- Collections.sort(data,\r
- new Comparator() {\r
- public int compare(Object o1, Object o2) {\r
- int ret = 1;\r
- final File a = (File) o1;\r
- final File b = (File) o2;\r
-\r
- if (a.lastModified() > b.lastModified()) {\r
- ret = -1;\r
- } else if (a.lastModified() == b.lastModified()) {\r
- ret = 0;\r
- }\r
-\r
- if (ascending) {\r
- ret *= -1;\r
- }\r
-\r
- return ret;\r
- }\r
- });\r
-\r
-\r
- break;\r
-\r
- case COLUMN_FILESIZE:\r
- Collections.sort(data,\r
- new Comparator() {\r
- public int compare(Object o1, Object o2) {\r
- int ret = 1;\r
- final File a = (File) o1;\r
- final File b = (File) o2;\r