< prev index next >

src/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java

Print this page
rev 1580 : 6727661: Code improvement and warnings removing from the swing/plaf packages
Summary: Removed unnecessary castings and other warnings
Reviewed-by: alexp
Contributed-by: Florian Brunner <fbrunnerlist@gmx.ch>


 139 
 140 
 141     public BasicFileChooserUI(JFileChooser b) {
 142     }
 143 
 144     public void installUI(JComponent c) {
 145         accessoryPanel = new JPanel(new BorderLayout());
 146         filechooser = (JFileChooser) c;
 147 
 148         createModel();
 149 
 150         clearIconCache();
 151 
 152         installDefaults(filechooser);
 153         installComponents(filechooser);
 154         installListeners(filechooser);
 155         filechooser.applyComponentOrientation(filechooser.getComponentOrientation());
 156     }
 157 
 158     public void uninstallUI(JComponent c) {
 159         uninstallListeners((JFileChooser) filechooser);
 160         uninstallComponents((JFileChooser) filechooser);
 161         uninstallDefaults((JFileChooser) filechooser);
 162 
 163         if(accessoryPanel != null) {
 164             accessoryPanel.removeAll();
 165         }
 166 
 167         accessoryPanel = null;
 168         getFileChooser().removeAll();
 169 
 170         handler = null;
 171     }
 172 
 173     public void installComponents(JFileChooser fc) {
 174     }
 175 
 176     public void uninstallComponents(JFileChooser fc) {
 177     }
 178 
 179     protected void installListeners(JFileChooser fc) {
 180         propertyChangeListener = createPropertyChangeListener(fc);
 181         if(propertyChangeListener != null) {


 477             if(!evt.getValueIsAdjusting()) {
 478                 JFileChooser chooser = getFileChooser();
 479                 FileSystemView fsv = chooser.getFileSystemView();
 480                 JList list = (JList)evt.getSource();
 481 
 482                 int fsm = chooser.getFileSelectionMode();
 483                 boolean useSetDirectory = usesSingleFilePane &&
 484                                           (fsm == JFileChooser.FILES_ONLY);
 485 
 486                 if (chooser.isMultiSelectionEnabled()) {
 487                     File[] files = null;
 488                     Object[] objects = list.getSelectedValues();
 489                     if (objects != null) {
 490                         if (objects.length == 1
 491                             && ((File)objects[0]).isDirectory()
 492                             && chooser.isTraversable(((File)objects[0]))
 493                             && (useSetDirectory || !fsv.isFileSystem(((File)objects[0])))) {
 494                             setDirectorySelected(true);
 495                             setDirectory(((File)objects[0]));
 496                         } else {
 497                             ArrayList fList = new ArrayList(objects.length);
 498                             for (int i = 0; i < objects.length; i++) {
 499                                 File f = (File)objects[i];
 500                                 boolean isDir = f.isDirectory();
 501                                 if ((chooser.isFileSelectionEnabled() && !isDir)
 502                                     || (chooser.isDirectorySelectionEnabled()
 503                                         && fsv.isFileSystem(f)
 504                                         && isDir)) {
 505                                     fList.add(f);
 506                                 }
 507                             }
 508                             if (fList.size() > 0) {
 509                                 files = (File[])fList.toArray(new File[fList.size()]);
 510                             }
 511                             setDirectorySelected(false);
 512                         }
 513                     }
 514                     chooser.setSelectedFiles(files);
 515                 } else {
 516                     File file = (File)list.getSelectedValue();
 517                     if (file != null
 518                         && file.isDirectory()
 519                         && chooser.isTraversable(file)
 520                         && (useSetDirectory || !fsv.isFileSystem(file))) {
 521 
 522                         setDirectorySelected(true);
 523                         setDirectory(file);
 524                         if (usesSingleFilePane) {
 525                             chooser.setSelectedFile(null);
 526                         }
 527                     } else {
 528                         setDirectorySelected(false);
 529                         if (file != null) {


 815             if (filename == null || filename.equals("")) {
 816                 // no file selected, multiple selection off, therefore cancel the approve action
 817                 resetGlobFilter();
 818                 return;
 819             }
 820 
 821             File selectedFile = null;
 822             File[] selectedFiles = null;
 823 
 824             if (filename != null && !filename.equals("")) {
 825                 // Unix: Resolve '~' to user's home directory
 826                 if (File.separatorChar == '/') {
 827                     if (filename.startsWith("~/")) {
 828                         filename = System.getProperty("user.home") + filename.substring(1);
 829                     } else if (filename.equals("~")) {
 830                         filename = System.getProperty("user.home");
 831                     }
 832                 }
 833 
 834                 if (chooser.isMultiSelectionEnabled() && filename.startsWith("\"")) {
 835                     ArrayList fList = new ArrayList();
 836 
 837                     filename = filename.substring(1);
 838                     if (filename.endsWith("\"")) {
 839                         filename = filename.substring(0, filename.length()-1);
 840                     }
 841                     File[] children = null;
 842                     int childIndex = 0;
 843                     do {
 844                         String str;
 845                         int i = filename.indexOf("\" \"");
 846                         if (i > 0) {
 847                             str = filename.substring(0, i);
 848                             filename = filename.substring(i+3);
 849                         } else {
 850                             str = filename;
 851                             filename = "";
 852                         }
 853                         File file = fs.createFileObject(str);
 854                         if (!file.isAbsolute()) {
 855                             if (children == null) {
 856                                 children = fs.getFiles(dir, false);
 857                                 Arrays.sort(children);
 858                             }
 859                             for (int k = 0; k < children.length; k++) {
 860                                 int l = (childIndex + k) % children.length;
 861                                 if (children[l].getName().equals(str)) {
 862                                     file = children[l];
 863                                     childIndex = l + 1;
 864                                     break;
 865                                 }
 866                             }
 867                         }
 868                         fList.add(file);
 869                     } while (filename.length() > 0);
 870                     if (fList.size() > 0) {
 871                         selectedFiles = (File[])fList.toArray(new File[fList.size()]);
 872                     }
 873                     resetGlobFilter();
 874                 } else {
 875                     selectedFile = fs.createFileObject(filename);
 876                     if(!selectedFile.isAbsolute()) {
 877                        selectedFile = fs.getChild(dir, filename);
 878                     }
 879                     // check for wildcard pattern
 880                     FileFilter currentFilter = chooser.getFileFilter();
 881                     if (!selectedFile.exists() && isGlobPattern(filename)) {
 882                         changeDirectory(selectedFile.getParentFile());
 883                         if (globFilter == null) {
 884                             globFilter = new GlobFilter();
 885                         }
 886                         try {
 887                             globFilter.setPattern(selectedFile.getName());
 888                             if (!(currentFilter instanceof GlobFilter)) {
 889                                 actualFileFilter = currentFilter;
 890                             }
 891                             chooser.setFileFilter(null);


1175         }
1176 
1177 
1178         public String getDescription(File f) {
1179             return f.getName();
1180         }
1181 
1182         public String getTypeDescription(File f) {
1183             String type = getFileChooser().getFileSystemView().getSystemTypeDescription(f);
1184             if (type == null) {
1185                 if (f.isDirectory()) {
1186                     type = directoryDescriptionText;
1187                 } else {
1188                     type = fileDescriptionText;
1189                 }
1190             }
1191             return type;
1192         }
1193 
1194         public Icon getCachedIcon(File f) {
1195             return (Icon) iconCache.get(f);
1196         }
1197 
1198         public void cacheIcon(File f, Icon i) {
1199             if(f == null || i == null) {
1200                 return;
1201             }
1202             iconCache.put(f, i);
1203         }
1204 
1205         public Icon getIcon(File f) {
1206             Icon icon = getCachedIcon(f);
1207             if(icon != null) {
1208                 return icon;
1209             }
1210             icon = fileIcon;
1211             if (f != null) {
1212                 FileSystemView fsv = getFileChooser().getFileSystemView();
1213 
1214                 if (fsv.isFloppyDrive(f)) {
1215                     icon = floppyDriveIcon;


1258                 values = ((JList)c).getSelectedValues();
1259             } else if (c instanceof JTable) {
1260                 JTable table = (JTable)c;
1261                 int[] rows = table.getSelectedRows();
1262                 if (rows != null) {
1263                     values = new Object[rows.length];
1264                     for (int i=0; i<rows.length; i++) {
1265                         values[i] = table.getValueAt(rows[i], 0);
1266                     }
1267                 }
1268             }
1269             if (values == null || values.length == 0) {
1270                 return null;
1271             }
1272 
1273             StringBuffer plainBuf = new StringBuffer();
1274             StringBuffer htmlBuf = new StringBuffer();
1275 
1276             htmlBuf.append("<html>\n<body>\n<ul>\n");
1277 
1278             for (int i = 0; i < values.length; i++) {
1279                 Object obj = values[i];
1280                 String val = ((obj == null) ? "" : obj.toString());
1281                 plainBuf.append(val + "\n");
1282                 htmlBuf.append("  <li>" + val + "\n");
1283             }
1284 
1285             // remove the last newline
1286             plainBuf.deleteCharAt(plainBuf.length() - 1);
1287             htmlBuf.append("</ul>\n</body>\n</html>");
1288 
1289             return new FileTransferable(plainBuf.toString(), htmlBuf.toString(), values);
1290         }
1291 
1292         public int getSourceActions(JComponent c) {
1293             return COPY;
1294         }
1295 
1296         static class FileTransferable extends BasicTransferable {
1297 
1298             Object[] fileData;
1299 
1300             FileTransferable(String plainData, String htmlData, Object[] fileData) {
1301                 super(plainData, htmlData);
1302                 this.fileData = fileData;
1303             }
1304 
1305             /**
1306              * Best format of the file chooser is DataFlavor.javaFileListFlavor.
1307              */
1308             protected DataFlavor[] getRicherFlavors() {
1309                 DataFlavor[] flavors = new DataFlavor[1];
1310                 flavors[0] = DataFlavor.javaFileListFlavor;
1311                 return flavors;
1312             }
1313 
1314             /**
1315              * The only richer format supported is the file list flavor
1316              */
1317             protected Object getRicherData(DataFlavor flavor) {
1318                 if (DataFlavor.javaFileListFlavor.equals(flavor)) {
1319                     ArrayList files = new ArrayList();
1320                     for (int i = 0; i < fileData.length; i++) {
1321                         files.add(fileData[i]);
1322                     }
1323                     return files;
1324                 }
1325                 return null;
1326             }
1327 
1328         }
1329     }
1330 }


 139 
 140 
 141     public BasicFileChooserUI(JFileChooser b) {
 142     }
 143 
 144     public void installUI(JComponent c) {
 145         accessoryPanel = new JPanel(new BorderLayout());
 146         filechooser = (JFileChooser) c;
 147 
 148         createModel();
 149 
 150         clearIconCache();
 151 
 152         installDefaults(filechooser);
 153         installComponents(filechooser);
 154         installListeners(filechooser);
 155         filechooser.applyComponentOrientation(filechooser.getComponentOrientation());
 156     }
 157 
 158     public void uninstallUI(JComponent c) {
 159         uninstallListeners(filechooser);
 160         uninstallComponents(filechooser);
 161         uninstallDefaults(filechooser);
 162 
 163         if(accessoryPanel != null) {
 164             accessoryPanel.removeAll();
 165         }
 166 
 167         accessoryPanel = null;
 168         getFileChooser().removeAll();
 169 
 170         handler = null;
 171     }
 172 
 173     public void installComponents(JFileChooser fc) {
 174     }
 175 
 176     public void uninstallComponents(JFileChooser fc) {
 177     }
 178 
 179     protected void installListeners(JFileChooser fc) {
 180         propertyChangeListener = createPropertyChangeListener(fc);
 181         if(propertyChangeListener != null) {


 477             if(!evt.getValueIsAdjusting()) {
 478                 JFileChooser chooser = getFileChooser();
 479                 FileSystemView fsv = chooser.getFileSystemView();
 480                 JList list = (JList)evt.getSource();
 481 
 482                 int fsm = chooser.getFileSelectionMode();
 483                 boolean useSetDirectory = usesSingleFilePane &&
 484                                           (fsm == JFileChooser.FILES_ONLY);
 485 
 486                 if (chooser.isMultiSelectionEnabled()) {
 487                     File[] files = null;
 488                     Object[] objects = list.getSelectedValues();
 489                     if (objects != null) {
 490                         if (objects.length == 1
 491                             && ((File)objects[0]).isDirectory()
 492                             && chooser.isTraversable(((File)objects[0]))
 493                             && (useSetDirectory || !fsv.isFileSystem(((File)objects[0])))) {
 494                             setDirectorySelected(true);
 495                             setDirectory(((File)objects[0]));
 496                         } else {
 497                             ArrayList<File> fList = new ArrayList<File>(objects.length);
 498                             for (Object object : objects) {
 499                                 File f = (File) object;
 500                                 boolean isDir = f.isDirectory();
 501                                 if ((chooser.isFileSelectionEnabled() && !isDir)
 502                                     || (chooser.isDirectorySelectionEnabled()
 503                                         && fsv.isFileSystem(f)
 504                                         && isDir)) {
 505                                     fList.add(f);
 506                                 }
 507                             }
 508                             if (fList.size() > 0) {
 509                                 files = fList.toArray(new File[fList.size()]);
 510                             }
 511                             setDirectorySelected(false);
 512                         }
 513                     }
 514                     chooser.setSelectedFiles(files);
 515                 } else {
 516                     File file = (File)list.getSelectedValue();
 517                     if (file != null
 518                         && file.isDirectory()
 519                         && chooser.isTraversable(file)
 520                         && (useSetDirectory || !fsv.isFileSystem(file))) {
 521 
 522                         setDirectorySelected(true);
 523                         setDirectory(file);
 524                         if (usesSingleFilePane) {
 525                             chooser.setSelectedFile(null);
 526                         }
 527                     } else {
 528                         setDirectorySelected(false);
 529                         if (file != null) {


 815             if (filename == null || filename.equals("")) {
 816                 // no file selected, multiple selection off, therefore cancel the approve action
 817                 resetGlobFilter();
 818                 return;
 819             }
 820 
 821             File selectedFile = null;
 822             File[] selectedFiles = null;
 823 
 824             if (filename != null && !filename.equals("")) {
 825                 // Unix: Resolve '~' to user's home directory
 826                 if (File.separatorChar == '/') {
 827                     if (filename.startsWith("~/")) {
 828                         filename = System.getProperty("user.home") + filename.substring(1);
 829                     } else if (filename.equals("~")) {
 830                         filename = System.getProperty("user.home");
 831                     }
 832                 }
 833 
 834                 if (chooser.isMultiSelectionEnabled() && filename.startsWith("\"")) {
 835                     ArrayList<File> fList = new ArrayList<File>();
 836 
 837                     filename = filename.substring(1);
 838                     if (filename.endsWith("\"")) {
 839                         filename = filename.substring(0, filename.length()-1);
 840                     }
 841                     File[] children = null;
 842                     int childIndex = 0;
 843                     do {
 844                         String str;
 845                         int i = filename.indexOf("\" \"");
 846                         if (i > 0) {
 847                             str = filename.substring(0, i);
 848                             filename = filename.substring(i+3);
 849                         } else {
 850                             str = filename;
 851                             filename = "";
 852                         }
 853                         File file = fs.createFileObject(str);
 854                         if (!file.isAbsolute()) {
 855                             if (children == null) {
 856                                 children = fs.getFiles(dir, false);
 857                                 Arrays.sort(children);
 858                             }
 859                             for (int k = 0; k < children.length; k++) {
 860                                 int l = (childIndex + k) % children.length;
 861                                 if (children[l].getName().equals(str)) {
 862                                     file = children[l];
 863                                     childIndex = l + 1;
 864                                     break;
 865                                 }
 866                             }
 867                         }
 868                         fList.add(file);
 869                     } while (filename.length() > 0);
 870                     if (fList.size() > 0) {
 871                         selectedFiles = fList.toArray(new File[fList.size()]);
 872                     }
 873                     resetGlobFilter();
 874                 } else {
 875                     selectedFile = fs.createFileObject(filename);
 876                     if(!selectedFile.isAbsolute()) {
 877                        selectedFile = fs.getChild(dir, filename);
 878                     }
 879                     // check for wildcard pattern
 880                     FileFilter currentFilter = chooser.getFileFilter();
 881                     if (!selectedFile.exists() && isGlobPattern(filename)) {
 882                         changeDirectory(selectedFile.getParentFile());
 883                         if (globFilter == null) {
 884                             globFilter = new GlobFilter();
 885                         }
 886                         try {
 887                             globFilter.setPattern(selectedFile.getName());
 888                             if (!(currentFilter instanceof GlobFilter)) {
 889                                 actualFileFilter = currentFilter;
 890                             }
 891                             chooser.setFileFilter(null);


1175         }
1176 
1177 
1178         public String getDescription(File f) {
1179             return f.getName();
1180         }
1181 
1182         public String getTypeDescription(File f) {
1183             String type = getFileChooser().getFileSystemView().getSystemTypeDescription(f);
1184             if (type == null) {
1185                 if (f.isDirectory()) {
1186                     type = directoryDescriptionText;
1187                 } else {
1188                     type = fileDescriptionText;
1189                 }
1190             }
1191             return type;
1192         }
1193 
1194         public Icon getCachedIcon(File f) {
1195             return iconCache.get(f);
1196         }
1197 
1198         public void cacheIcon(File f, Icon i) {
1199             if(f == null || i == null) {
1200                 return;
1201             }
1202             iconCache.put(f, i);
1203         }
1204 
1205         public Icon getIcon(File f) {
1206             Icon icon = getCachedIcon(f);
1207             if(icon != null) {
1208                 return icon;
1209             }
1210             icon = fileIcon;
1211             if (f != null) {
1212                 FileSystemView fsv = getFileChooser().getFileSystemView();
1213 
1214                 if (fsv.isFloppyDrive(f)) {
1215                     icon = floppyDriveIcon;


1258                 values = ((JList)c).getSelectedValues();
1259             } else if (c instanceof JTable) {
1260                 JTable table = (JTable)c;
1261                 int[] rows = table.getSelectedRows();
1262                 if (rows != null) {
1263                     values = new Object[rows.length];
1264                     for (int i=0; i<rows.length; i++) {
1265                         values[i] = table.getValueAt(rows[i], 0);
1266                     }
1267                 }
1268             }
1269             if (values == null || values.length == 0) {
1270                 return null;
1271             }
1272 
1273             StringBuffer plainBuf = new StringBuffer();
1274             StringBuffer htmlBuf = new StringBuffer();
1275 
1276             htmlBuf.append("<html>\n<body>\n<ul>\n");
1277 
1278             for (Object obj : values) {

1279                 String val = ((obj == null) ? "" : obj.toString());
1280                 plainBuf.append(val + "\n");
1281                 htmlBuf.append("  <li>" + val + "\n");
1282             }
1283 
1284             // remove the last newline
1285             plainBuf.deleteCharAt(plainBuf.length() - 1);
1286             htmlBuf.append("</ul>\n</body>\n</html>");
1287 
1288             return new FileTransferable(plainBuf.toString(), htmlBuf.toString(), values);
1289         }
1290 
1291         public int getSourceActions(JComponent c) {
1292             return COPY;
1293         }
1294 
1295         static class FileTransferable extends BasicTransferable {
1296 
1297             Object[] fileData;
1298 
1299             FileTransferable(String plainData, String htmlData, Object[] fileData) {
1300                 super(plainData, htmlData);
1301                 this.fileData = fileData;
1302             }
1303 
1304             /**
1305              * Best format of the file chooser is DataFlavor.javaFileListFlavor.
1306              */
1307             protected DataFlavor[] getRicherFlavors() {
1308                 DataFlavor[] flavors = new DataFlavor[1];
1309                 flavors[0] = DataFlavor.javaFileListFlavor;
1310                 return flavors;
1311             }
1312 
1313             /**
1314              * The only richer format supported is the file list flavor
1315              */
1316             protected Object getRicherData(DataFlavor flavor) {
1317                 if (DataFlavor.javaFileListFlavor.equals(flavor)) {
1318                     ArrayList<Object> files = new ArrayList<Object>();
1319                     for (Object file : this.fileData) {
1320                         files.add(file);
1321                     }
1322                     return files;
1323                 }
1324                 return null;
1325             }
1326 
1327         }
1328     }
1329 }
< prev index next >