jdk/src/macosx/classes/com/apple/laf/AquaFileChooserUI.java
changeset 25762 c4a3548120c6
parent 23649 f4f882f0056b
equal deleted inserted replaced
25761:c408b10ef757 25762:c4a3548120c6
   722         protected void handleFileDropEvent(final DropTargetDropEvent dtde) {
   722         protected void handleFileDropEvent(final DropTargetDropEvent dtde) {
   723             dtde.acceptDrop(dtde.getDropAction());
   723             dtde.acceptDrop(dtde.getDropAction());
   724             final Transferable transferable = dtde.getTransferable();
   724             final Transferable transferable = dtde.getTransferable();
   725 
   725 
   726             try {
   726             try {
       
   727                 @SuppressWarnings("unchecked")
   727                 final java.util.List<File> fileList = (java.util.List<File>)transferable.getTransferData(DataFlavor.javaFileListFlavor);
   728                 final java.util.List<File> fileList = (java.util.List<File>)transferable.getTransferData(DataFlavor.javaFileListFlavor);
   728                 dropFiles(fileList.toArray(new File[fileList.size()]));
   729                 dropFiles(fileList.toArray(new File[fileList.size()]));
   729                 dtde.dropComplete(true);
   730                 dtde.dropComplete(true);
   730             } catch (final Exception e) {
   731             } catch (final Exception e) {
   731                 dtde.dropComplete(false);
   732                 dtde.dropComplete(false);
  1142     public Dimension getMaximumSize(final JComponent c) {
  1143     public Dimension getMaximumSize(final JComponent c) {
  1143         return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
  1144         return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
  1144     }
  1145     }
  1145 
  1146 
  1146     @SuppressWarnings("serial") // anonymous class
  1147     @SuppressWarnings("serial") // anonymous class
  1147     protected ListCellRenderer createDirectoryComboBoxRenderer(final JFileChooser fc) {
  1148     protected ListCellRenderer<File> createDirectoryComboBoxRenderer(final JFileChooser fc) {
  1148         return new AquaComboBoxRendererInternal(directoryComboBox) {
  1149         return new AquaComboBoxRendererInternal<File>(directoryComboBox) {
  1149             public Component getListCellRendererComponent(final JList list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus) {
  1150             public Component getListCellRendererComponent(final JList<? extends File> list,
  1150                 super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
  1151                                                           final File directory,
  1151                 final File directory = (File)value;
  1152                                                           final int index,
       
  1153                                                           final boolean isSelected,
       
  1154                                                           final boolean cellHasFocus) {
       
  1155                 super.getListCellRendererComponent(list, directory, index, isSelected, cellHasFocus);
  1152                 if (directory == null) {
  1156                 if (directory == null) {
  1153                     setText("");
  1157                     setText("");
  1154                     return this;
  1158                     return this;
  1155                 }
  1159                 }
  1156 
  1160 
  1171 
  1175 
  1172     /**
  1176     /**
  1173      * Data model for a type-face selection combo-box.
  1177      * Data model for a type-face selection combo-box.
  1174      */
  1178      */
  1175     @SuppressWarnings("serial") // Superclass is not serializable across versions
  1179     @SuppressWarnings("serial") // Superclass is not serializable across versions
  1176     protected class DirectoryComboBoxModel extends AbstractListModel implements ComboBoxModel {
  1180     protected class DirectoryComboBoxModel extends AbstractListModel<File> implements ComboBoxModel<File> {
  1177         Vector<File> fDirectories = new Vector<File>();
  1181         Vector<File> fDirectories = new Vector<File>();
  1178         int topIndex = -1;
  1182         int topIndex = -1;
  1179         int fPathCount = 0;
  1183         int fPathCount = 0;
  1180 
  1184 
  1181         File fSelectedDirectory = null;
  1185         File fSelectedDirectory = null;
  1246 
  1250 
  1247         public int getSize() {
  1251         public int getSize() {
  1248             return fDirectories.size();
  1252             return fDirectories.size();
  1249         }
  1253         }
  1250 
  1254 
  1251         public Object getElementAt(final int index) {
  1255         public File getElementAt(final int index) {
  1252             return fDirectories.elementAt(index);
  1256             return fDirectories.elementAt(index);
  1253         }
  1257         }
  1254     }
  1258     }
  1255 
  1259 
  1256     //
  1260     //
  1257     // Renderer for Types ComboBox
  1261     // Renderer for Types ComboBox
  1258     //
  1262     //
  1259     @SuppressWarnings("serial") // anonymous class
  1263     @SuppressWarnings("serial") // anonymous class
  1260     protected ListCellRenderer createFilterComboBoxRenderer() {
  1264     protected ListCellRenderer<FileFilter> createFilterComboBoxRenderer() {
  1261         return new AquaComboBoxRendererInternal(filterComboBox) {
  1265         return new AquaComboBoxRendererInternal<FileFilter>(filterComboBox) {
  1262             public Component getListCellRendererComponent(final JList list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus) {
  1266             public Component getListCellRendererComponent(final JList<? extends FileFilter> list,
  1263                 super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
  1267                                                           final FileFilter filter,
  1264                 final FileFilter filter = (FileFilter)value;
  1268                                                           final int index,
       
  1269                                                           final boolean isSelected,
       
  1270                                                           final boolean cellHasFocus) {
       
  1271                 super.getListCellRendererComponent(list, filter, index, isSelected, cellHasFocus);
  1265                 if (filter != null) setText(filter.getDescription());
  1272                 if (filter != null) setText(filter.getDescription());
  1266                 return this;
  1273                 return this;
  1267             }
  1274             }
  1268         };
  1275         };
  1269     }
  1276     }
  1354         protected FilterComboBoxAction() {
  1361         protected FilterComboBoxAction() {
  1355             super("FilterComboBoxAction");
  1362             super("FilterComboBoxAction");
  1356         }
  1363         }
  1357 
  1364 
  1358         public void actionPerformed(final ActionEvent e) {
  1365         public void actionPerformed(final ActionEvent e) {
  1359             getFileChooser().setFileFilter((FileFilter)filterComboBox.getSelectedItem());
  1366             getFileChooser().setFileFilter((FileFilter) filterComboBox.getSelectedItem());
  1360         }
  1367         }
  1361     }
  1368     }
  1362 
  1369 
  1363     /**
  1370     /**
  1364      * Acts when DirectoryComboBox has changed the selected item.
  1371      * Acts when DirectoryComboBox has changed the selected item.
  1501         tPanel.add(sep);
  1508         tPanel.add(sep);
  1502         tPanel.add(Box.createRigidArea(new Dimension(1, 7)));
  1509         tPanel.add(Box.createRigidArea(new Dimension(1, 7)));
  1503         fTextfieldPanel.add(tPanel, BorderLayout.CENTER);
  1510         fTextfieldPanel.add(tPanel, BorderLayout.CENTER);
  1504 
  1511 
  1505         // DirectoryComboBox, left-justified, 200x20 not including drop shadow
  1512         // DirectoryComboBox, left-justified, 200x20 not including drop shadow
  1506         directoryComboBox = new JComboBox();
  1513         directoryComboBox = new JComboBox<>();
  1507         directoryComboBox.putClientProperty("JComboBox.lightweightKeyboardNavigation", "Lightweight");
  1514         directoryComboBox.putClientProperty("JComboBox.lightweightKeyboardNavigation", "Lightweight");
  1508         fDirectoryComboBoxModel = createDirectoryComboBoxModel(fc);
  1515         fDirectoryComboBoxModel = createDirectoryComboBoxModel(fc);
  1509         directoryComboBox.setModel(fDirectoryComboBoxModel);
  1516         directoryComboBox.setModel(fDirectoryComboBoxModel);
  1510         directoryComboBox.addActionListener(directoryComboBoxAction);
  1517         directoryComboBox.addActionListener(directoryComboBoxAction);
  1511         directoryComboBox.setRenderer(createDirectoryComboBoxRenderer(fc));
  1518         directoryComboBox.setRenderer(createDirectoryComboBoxRenderer(fc));
  1549         tPanel.add(formatLabel);
  1556         tPanel.add(formatLabel);
  1550 
  1557 
  1551         // Combobox
  1558         // Combobox
  1552         filterComboBoxModel = createFilterComboBoxModel();
  1559         filterComboBoxModel = createFilterComboBoxModel();
  1553         fc.addPropertyChangeListener(filterComboBoxModel);
  1560         fc.addPropertyChangeListener(filterComboBoxModel);
  1554         filterComboBox = new JComboBox(filterComboBoxModel);
  1561         filterComboBox = new JComboBox<>(filterComboBoxModel);
  1555         formatLabel.setLabelFor(filterComboBox);
  1562         formatLabel.setLabelFor(filterComboBox);
  1556         filterComboBox.setRenderer(createFilterComboBoxRenderer());
  1563         filterComboBox.setRenderer(createFilterComboBoxRenderer());
  1557         d = new Dimension(220, (int)filterComboBox.getMinimumSize().getHeight());
  1564         d = new Dimension(220, (int)filterComboBox.getMinimumSize().getHeight());
  1558         filterComboBox.setPreferredSize(d);
  1565         filterComboBox.setPreferredSize(d);
  1559         filterComboBox.setMaximumSize(d);
  1566         filterComboBox.setMaximumSize(d);
  1786         protected void paintComponent(final Graphics g) {
  1793         protected void paintComponent(final Graphics g) {
  1787             border.paintBorder(this, g, 0, 0, getWidth() + 1, getHeight());
  1794             border.paintBorder(this, g, 0, 0, getWidth() + 1, getHeight());
  1788         }
  1795         }
  1789     }
  1796     }
  1790 
  1797 
  1791     JComboBox directoryComboBox;
  1798     JComboBox<File> directoryComboBox;
  1792     DirectoryComboBoxModel fDirectoryComboBoxModel;
  1799     DirectoryComboBoxModel fDirectoryComboBoxModel;
  1793     private final Action directoryComboBoxAction = new DirectoryComboBoxAction();
  1800     private final Action directoryComboBoxAction = new DirectoryComboBoxAction();
  1794 
  1801 
  1795     JTextField filenameTextField;
  1802     JTextField filenameTextField;
  1796 
  1803 
  1797     JTableExtension fFileList;
  1804     JTableExtension fFileList;
  1798 
  1805 
  1799     private FilterComboBoxModel filterComboBoxModel;
  1806     private FilterComboBoxModel filterComboBoxModel;
  1800     JComboBox filterComboBox;
  1807     JComboBox<FileFilter> filterComboBox;
  1801     private final Action filterComboBoxAction = new FilterComboBoxAction();
  1808     private final Action filterComboBoxAction = new FilterComboBoxAction();
  1802 
  1809 
  1803     private static final Dimension hstrut10 = new Dimension(10, 1);
  1810     private static final Dimension hstrut10 = new Dimension(10, 1);
  1804     private static final Dimension vstrut10 = new Dimension(1, 10);
  1811     private static final Dimension vstrut10 = new Dimension(1, 10);
  1805 
  1812