public int compare(Object o1, Object o2) { switch (nOrder) { case BYSIZE: break; case BYDATE: break; case BYNAME: default: if (o1 instanceof FileInfo && o2 instanceof FileInfo) { FileInfo file1 = (FileInfo) o1; FileInfo file2 = (FileInfo) o2; int t1 = ListModel.getType(file1), t2 = ListModel.getType(file2); String s1 = ListModel.getFileName(file1), s2 = ListModel.getFileName(file2); if (t1 != t2) { if (FileInfo.DIRECTORY_TYPE == t1) { return -1; } else if (FileInfo.DIRECTORY_TYPE == t2) { return 1; } else if (FileInfo.SOFTLINK_TYPE == t1) { return -1; } else if (FileInfo.SOFTLINK_TYPE == t2) { return 1; } else if (FileInfo.FILE_TYPE == t1) { return -1; } else if (FileInfo.FILE_TYPE == t2) { return 1; } else if (FileInfo.UNKNOWN_TYPE == t1) { return -1; } else { return 1; } } else { if (s1.equals("..")) { return -1; } else if (s2.equals("..")) { return 1; } return Collator.getInstance().compare(s1, s2); } } break; } return 0; }