home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 November / Chip_1998-11_cd.bin / tema / Cafe / jfc.bin / BasicDirectoryPaneUI.java < prev    next >
Text File  |  1998-02-26  |  4KB  |  155 lines

  1. /*
  2.  * @(#)BasicDirectoryPaneUI.java    1.9 98/02/03
  3.  * 
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  * 
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not
  8.  * disclose such Confidential Information and shall use it only in
  9.  * accordance with the terms of the license agreement you entered into
  10.  * with Sun.
  11.  * 
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  13.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  14.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  15.  * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
  16.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
  17.  * THIS SOFTWARE OR ITS DERIVATIVES.
  18.  * 
  19.  */
  20.  
  21. package com.sun.java.swing.plaf.basic;
  22.  
  23. import com.sun.java.swing.*;
  24. import com.sun.java.swing.preview.*;
  25. import com.sun.java.swing.preview.JDirectoryPane;
  26. import com.sun.java.swing.event.*;
  27. import com.sun.java.swing.plaf.*;
  28. import java.awt.*;
  29. import java.awt.event.*;
  30. import java.beans.*;
  31. import java.io.File;
  32. import java.util.*;
  33.  
  34. /**
  35.  * A Basic L&F implementation of DirectoryPaneUI.  
  36.  *
  37.  * @version 1.9 02/03/98
  38.  *
  39.  * @author Ray Ryan
  40.  * @author James Gosling
  41.  * @author Jeff Dinkins
  42.  */
  43. public class BasicDirectoryPaneUI extends DirectoryPaneUI {
  44.     protected JDirectoryPane directoryPane;
  45.     
  46.     protected JList list;
  47.     protected JScrollPane scroller = null;
  48.  
  49.     //
  50.     // ComponentUI Interface Implementation methods
  51.     //
  52.     public static ComponentUI createUI(JComponent c) {
  53.         return new BasicDirectoryPaneUI((JDirectoryPane)c);
  54.     }
  55.  
  56.     public BasicDirectoryPaneUI(JDirectoryPane b) {
  57.     }
  58.             
  59.     /**
  60.      * If necessary, create this UI's list and scroller.
  61.      * Put a BorderLayout in the component. Add the
  62.      * scroller to the "Center". 
  63.      */
  64.     public void installUI(JComponent c) {
  65.     directoryPane = (JDirectoryPane) c;
  66.     directoryPane.setLayout(new BorderLayout());
  67.  
  68.     list = new JList();
  69.     list.setCellRenderer(new LabelCellRenderer());
  70.     list.setBackground(Color.white);
  71.     list.setModel(directoryPane.getModel());
  72.     
  73.     //  Do something useful on double-click
  74.     list.addMouseListener(new MouseAdapter() {
  75.         public void mouseClicked(MouseEvent e) {
  76.         if (e.getClickCount() == 2) {
  77.             directoryPane.performDoubleClick();
  78.         }
  79.         }
  80.     });
  81.     
  82.     scroller = new JScrollPane(list);
  83.     scroller.setBorder(BorderFactory.createLoweredBevelBorder());
  84.  
  85.     directoryPane.add(scroller, BorderLayout.CENTER);
  86.  
  87.     list.setSelectionModel(directoryPane.getListSelectionModel());
  88.     }   
  89.  
  90.     public void uninstallUI(JComponent c) {
  91.     if(c != directoryPane)
  92.         throw new IllegalComponentStateException(
  93.         this + " was asked to deinstall() " 
  94.         + c + " when it only knows about " 
  95.         + directoryPane + "."); 
  96.  
  97.     directoryPane.remove(scroller);
  98.     }
  99.     
  100.  
  101.     static Icon directoryIcon = null;
  102.     static Icon fileIcon = null;
  103.     static Icon computerIcon = null;
  104.     static Icon hardDriveIcon = null;
  105.     static Icon floppyDriveIcon = null;
  106.  
  107.     static class LabelCellRenderer extends BasicListCellRenderer  {
  108.     LabelCellRenderer() {
  109.         if (directoryIcon == null) {
  110.         directoryIcon = UIManager.getIcon("DirectoryPane.directoryIcon");
  111.         fileIcon = UIManager.getIcon("DirectoryPane.fileIcon");
  112.         computerIcon = UIManager.getIcon("DirectoryPane.computerIcon");
  113.         hardDriveIcon = UIManager.getIcon("DirectoryPane.hardDriveIcon");
  114.         floppyDriveIcon = UIManager.getIcon("DirectoryPane.floppyDriveIcon");
  115.         }
  116.     }
  117.  
  118.     public Component getListCellRendererComponent(
  119.         JList list, Object value, int index, boolean isSelected, 
  120.         boolean cellHasFocus) {
  121.  
  122.         super.getListCellRendererComponent(list, value, index,
  123.                            isSelected, cellHasFocus);
  124.         
  125.         TypedFile file = (TypedFile)value; 
  126.         String name = file.getName();
  127.         if (name.equals("")) name = file.getPath();
  128.         setText(name);
  129.  
  130.         Icon icon = file.getIcon();
  131.         if (icon == null) {
  132.         FileType type = file.getType();
  133.         if (type instanceof FileType.Computer) {
  134.             icon = computerIcon;
  135.         }
  136.         else if (type instanceof FileType.FloppyDrive) {
  137.             icon = floppyDriveIcon;
  138.         }
  139.         else if (type instanceof FileType.HardDrive) {
  140.             icon = hardDriveIcon;
  141.         }
  142.         else if (type instanceof FileType.Folder) {
  143.             icon = directoryIcon;
  144.         } else {
  145.             icon = fileIcon;
  146.         }
  147.         } 
  148.  
  149.         setIcon(icon);
  150.  
  151.         return this;
  152.     }
  153.     }
  154. }
  155.