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

Print this page




 419         return null;
 420     }
 421 
 422     public void clearIconCache() {
 423         fileView.clearIconCache();
 424     }
 425 
 426 
 427     // ********************************************
 428     // ************ Create Listeners **************
 429     // ********************************************
 430 
 431     private Handler getHandler() {
 432         if (handler == null) {
 433             handler = new Handler();
 434         }
 435         return handler;
 436     }
 437 
 438     protected MouseListener createDoubleClickListener(JFileChooser fc,
 439                                                       JList list) {
 440         return new Handler(list);
 441     }
 442 
 443     public ListSelectionListener createListSelectionListener(JFileChooser fc) {
 444         return getHandler();
 445     }
 446 
 447     private class Handler implements MouseListener, ListSelectionListener {
 448         JList list;
 449 
 450         Handler() {
 451         }
 452 
 453         Handler(JList list) {
 454             this.list = list;
 455         }
 456 
 457         public void mouseClicked(MouseEvent evt) {
 458             // Note: we can't depend on evt.getSource() because of backward
 459             // compatibility
 460             if (list != null &&
 461                 SwingUtilities.isLeftMouseButton(evt) &&
 462                 (evt.getClickCount()%2 == 0)) {
 463 
 464                 int index = SwingUtilities2.loc2IndexFileList(list, evt.getPoint());
 465                 if (index >= 0) {
 466                     File f = (File)list.getModel().getElementAt(index);
 467                     try {
 468                         // Strip trailing ".."
 469                         f = ShellFolder.getNormalizedFile(f);
 470                     } catch (IOException ex) {
 471                         // That's ok, we'll use f as is
 472                     }
 473                     if(getFileChooser().isTraversable(f)) {


 489                 }
 490                 if (getFileChooser().getDragEnabled() != list.getDragEnabled()) {
 491                     list.setDragEnabled(getFileChooser().getDragEnabled());
 492                 }
 493             }
 494         }
 495 
 496         public void mouseExited(MouseEvent evt) {
 497         }
 498 
 499         public void mousePressed(MouseEvent evt) {
 500         }
 501 
 502         public void mouseReleased(MouseEvent evt) {
 503         }
 504 
 505         public void valueChanged(ListSelectionEvent evt) {
 506             if(!evt.getValueIsAdjusting()) {
 507                 JFileChooser chooser = getFileChooser();
 508                 FileSystemView fsv = chooser.getFileSystemView();
 509                 JList list = (JList)evt.getSource();

 510 
 511                 int fsm = chooser.getFileSelectionMode();
 512                 boolean useSetDirectory = usesSingleFilePane &&
 513                                           (fsm == JFileChooser.FILES_ONLY);
 514 
 515                 if (chooser.isMultiSelectionEnabled()) {
 516                     File[] files = null;
 517                     Object[] objects = list.getSelectedValues();
 518                     if (objects != null) {
 519                         if (objects.length == 1
 520                             && ((File)objects[0]).isDirectory()
 521                             && chooser.isTraversable(((File)objects[0]))
 522                             && (useSetDirectory || !fsv.isFileSystem(((File)objects[0])))) {
 523                             setDirectorySelected(true);
 524                             setDirectory(((File)objects[0]));
 525                         } else {
 526                             ArrayList<File> fList = new ArrayList<File>(objects.length);
 527                             for (Object object : objects) {
 528                                 File f = (File) object;
 529                                 boolean isDir = f.isDirectory();


 553                         if (usesSingleFilePane) {
 554                             chooser.setSelectedFile(null);
 555                         }
 556                     } else {
 557                         setDirectorySelected(false);
 558                         if (file != null) {
 559                             chooser.setSelectedFile(file);
 560                         }
 561                     }
 562                 }
 563             }
 564         }
 565     }
 566 
 567     protected class DoubleClickListener extends MouseAdapter {
 568         // NOTE: This class exists only for backward compatibility. All
 569         // its functionality has been moved into Handler. If you need to add
 570         // new functionality add it to the Handler, but make sure this
 571         // class calls into the Handler.
 572         Handler handler;
 573         public  DoubleClickListener(JList list) {
 574             handler = new Handler(list);
 575         }
 576 
 577         /**
 578          * The JList used for representing the files is created by subclasses, but the
 579          * selection is monitored in this class.  The TransferHandler installed in the
 580          * JFileChooser is also installed in the file list as it is used as the actual
 581          * transfer source.  The list is updated on a mouse enter to reflect the current
 582          * data transfer state of the file chooser.
 583          */
 584         public void mouseEntered(MouseEvent e) {
 585             handler.mouseEntered(e);
 586         }
 587 
 588         public void mouseClicked(MouseEvent e) {
 589             handler.mouseClicked(e);
 590         }
 591     }
 592 
 593     protected class SelectionListener implements ListSelectionListener {




 419         return null;
 420     }
 421 
 422     public void clearIconCache() {
 423         fileView.clearIconCache();
 424     }
 425 
 426 
 427     // ********************************************
 428     // ************ Create Listeners **************
 429     // ********************************************
 430 
 431     private Handler getHandler() {
 432         if (handler == null) {
 433             handler = new Handler();
 434         }
 435         return handler;
 436     }
 437 
 438     protected MouseListener createDoubleClickListener(JFileChooser fc,
 439                                                       JList<?> list) {
 440         return new Handler(list);
 441     }
 442 
 443     public ListSelectionListener createListSelectionListener(JFileChooser fc) {
 444         return getHandler();
 445     }
 446 
 447     private class Handler implements MouseListener, ListSelectionListener {
 448         JList<?> list;
 449 
 450         Handler() {
 451         }
 452 
 453         Handler(JList<?> list) {
 454             this.list = list;
 455         }
 456 
 457         public void mouseClicked(MouseEvent evt) {
 458             // Note: we can't depend on evt.getSource() because of backward
 459             // compatibility
 460             if (list != null &&
 461                 SwingUtilities.isLeftMouseButton(evt) &&
 462                 (evt.getClickCount()%2 == 0)) {
 463 
 464                 int index = SwingUtilities2.loc2IndexFileList(list, evt.getPoint());
 465                 if (index >= 0) {
 466                     File f = (File)list.getModel().getElementAt(index);
 467                     try {
 468                         // Strip trailing ".."
 469                         f = ShellFolder.getNormalizedFile(f);
 470                     } catch (IOException ex) {
 471                         // That's ok, we'll use f as is
 472                     }
 473                     if(getFileChooser().isTraversable(f)) {


 489                 }
 490                 if (getFileChooser().getDragEnabled() != list.getDragEnabled()) {
 491                     list.setDragEnabled(getFileChooser().getDragEnabled());
 492                 }
 493             }
 494         }
 495 
 496         public void mouseExited(MouseEvent evt) {
 497         }
 498 
 499         public void mousePressed(MouseEvent evt) {
 500         }
 501 
 502         public void mouseReleased(MouseEvent evt) {
 503         }
 504 
 505         public void valueChanged(ListSelectionEvent evt) {
 506             if(!evt.getValueIsAdjusting()) {
 507                 JFileChooser chooser = getFileChooser();
 508                 FileSystemView fsv = chooser.getFileSystemView();
 509                 @SuppressWarnings("unchecked")
 510                 JList<?> list = (JList)evt.getSource();
 511 
 512                 int fsm = chooser.getFileSelectionMode();
 513                 boolean useSetDirectory = usesSingleFilePane &&
 514                                           (fsm == JFileChooser.FILES_ONLY);
 515 
 516                 if (chooser.isMultiSelectionEnabled()) {
 517                     File[] files = null;
 518                     Object[] objects = list.getSelectedValues();
 519                     if (objects != null) {
 520                         if (objects.length == 1
 521                             && ((File)objects[0]).isDirectory()
 522                             && chooser.isTraversable(((File)objects[0]))
 523                             && (useSetDirectory || !fsv.isFileSystem(((File)objects[0])))) {
 524                             setDirectorySelected(true);
 525                             setDirectory(((File)objects[0]));
 526                         } else {
 527                             ArrayList<File> fList = new ArrayList<File>(objects.length);
 528                             for (Object object : objects) {
 529                                 File f = (File) object;
 530                                 boolean isDir = f.isDirectory();


 554                         if (usesSingleFilePane) {
 555                             chooser.setSelectedFile(null);
 556                         }
 557                     } else {
 558                         setDirectorySelected(false);
 559                         if (file != null) {
 560                             chooser.setSelectedFile(file);
 561                         }
 562                     }
 563                 }
 564             }
 565         }
 566     }
 567 
 568     protected class DoubleClickListener extends MouseAdapter {
 569         // NOTE: This class exists only for backward compatibility. All
 570         // its functionality has been moved into Handler. If you need to add
 571         // new functionality add it to the Handler, but make sure this
 572         // class calls into the Handler.
 573         Handler handler;
 574         public  DoubleClickListener(JList<?> list) {
 575             handler = new Handler(list);
 576         }
 577 
 578         /**
 579          * The JList used for representing the files is created by subclasses, but the
 580          * selection is monitored in this class.  The TransferHandler installed in the
 581          * JFileChooser is also installed in the file list as it is used as the actual
 582          * transfer source.  The list is updated on a mouse enter to reflect the current
 583          * data transfer state of the file chooser.
 584          */
 585         public void mouseEntered(MouseEvent e) {
 586             handler.mouseEntered(e);
 587         }
 588 
 589         public void mouseClicked(MouseEvent e) {
 590             handler.mouseClicked(e);
 591         }
 592     }
 593 
 594     protected class SelectionListener implements ListSelectionListener {