home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / plaf / basic / BasicDirectoryModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.7 KB  |  178 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.beans.PropertyChangeEvent;
  4. import java.beans.PropertyChangeListener;
  5. import java.io.File;
  6. import java.util.Vector;
  7. import javax.swing.AbstractListModel;
  8. import javax.swing.JFileChooser;
  9. import javax.swing.event.ListDataEvent;
  10.  
  11. public class BasicDirectoryModel extends AbstractListModel implements PropertyChangeListener {
  12.    private JFileChooser filechooser = null;
  13.    private Vector fileCache = null;
  14.    private LoadFilesThread loadThread = null;
  15.    private Vector files = null;
  16.    private Vector directories = null;
  17.    private int fetchID = 0;
  18.  
  19.    public BasicDirectoryModel(JFileChooser var1) {
  20.       this.filechooser = var1;
  21.       this.validateFileCache();
  22.    }
  23.  
  24.    public void propertyChange(PropertyChangeEvent var1) {
  25.       String var2 = var1.getPropertyName();
  26.       if (var2 == "directoryChanged" || var2 == "fileViewChanged" || var2 == "fileFilterChanged" || var2 == "FileHidingChanged" || var2 == "fileSelectionChanged") {
  27.          this.invalidateFileCache();
  28.          this.validateFileCache();
  29.       }
  30.  
  31.    }
  32.  
  33.    public void invalidateFileCache() {
  34.       this.files = null;
  35.       this.directories = null;
  36.       this.fileCache = null;
  37.    }
  38.  
  39.    public Vector getDirectories() {
  40.       if (this.directories != null) {
  41.          return this.directories;
  42.       } else {
  43.          Vector var1 = this.getFiles();
  44.          return this.directories;
  45.       }
  46.    }
  47.  
  48.    public Vector getFiles() {
  49.       if (this.files != null) {
  50.          return this.files;
  51.       } else {
  52.          this.files = new Vector();
  53.          this.directories = new Vector();
  54.          this.directories.addElement(this.filechooser.getFileSystemView().createFileObject(this.filechooser.getCurrentDirectory(), ".."));
  55.          if (this.fileCache != null) {
  56.             for(int var1 = 0; var1 < this.getSize(); ++var1) {
  57.                File var2 = (File)this.fileCache.elementAt(var1);
  58.                if (this.filechooser.isTraversable(var2)) {
  59.                   this.directories.addElement(var2);
  60.                } else {
  61.                   this.files.addElement(var2);
  62.                }
  63.             }
  64.          }
  65.  
  66.          return this.files;
  67.       }
  68.    }
  69.  
  70.    public void validateFileCache() {
  71.       File var1 = this.filechooser.getCurrentDirectory();
  72.       if (var1 == null) {
  73.          this.invalidateFileCache();
  74.       } else {
  75.          if (this.loadThread != null) {
  76.             this.loadThread.interrupt();
  77.          }
  78.  
  79.          ++this.fetchID;
  80.          this.invalidateFileCache();
  81.          this.fileCache = new Vector(50);
  82.          this.loadThread = new LoadFilesThread(this, var1, this.fetchID);
  83.          this.loadThread.start();
  84.       }
  85.    }
  86.  
  87.    public void fireContentsChanged() {
  88.       this.files = null;
  89.       this.directories = null;
  90.       ((AbstractListModel)this).fireContentsChanged(this, 0, this.getSize() - 1);
  91.    }
  92.  
  93.    public int getSize() {
  94.       return this.fileCache != null ? this.fileCache.size() : 0;
  95.    }
  96.  
  97.    public boolean contains(Object var1) {
  98.       return this.fileCache != null ? this.fileCache.contains(var1) : false;
  99.    }
  100.  
  101.    public int indexOf(Object var1) {
  102.       return this.fileCache != null ? this.fileCache.indexOf(var1) : 0;
  103.    }
  104.  
  105.    public Object getElementAt(int var1) {
  106.       return this.fileCache != null ? this.fileCache.elementAt(var1) : null;
  107.    }
  108.  
  109.    public void intervalAdded(ListDataEvent var1) {
  110.    }
  111.  
  112.    public void intervalRemoved(ListDataEvent var1) {
  113.    }
  114.  
  115.    protected void sort(Vector var1) {
  116.       this.quickSort(var1, 0, var1.size() - 1);
  117.    }
  118.  
  119.    private void quickSort(Vector var1, int var2, int var3) {
  120.       int var4 = var2;
  121.       int var5 = var3;
  122.       if (var3 > var2) {
  123.          File var6 = (File)var1.elementAt((var2 + var3) / 2);
  124.  
  125.          while(var4 <= var5) {
  126.             while(var4 < var3 && this.method_0((File)var1.elementAt(var4), var6)) {
  127.                ++var4;
  128.             }
  129.  
  130.             while(var5 > var2 && this.method_0(var6, (File)var1.elementAt(var5))) {
  131.                --var5;
  132.             }
  133.  
  134.             if (var4 <= var5) {
  135.                this.swap(var1, var4, var5);
  136.                ++var4;
  137.                --var5;
  138.             }
  139.          }
  140.  
  141.          if (var2 < var5) {
  142.             this.quickSort(var1, var2, var5);
  143.          }
  144.  
  145.          if (var4 < var3) {
  146.             this.quickSort(var1, var4, var3);
  147.          }
  148.       }
  149.  
  150.    }
  151.  
  152.    private void swap(Vector var1, int var2, int var3) {
  153.       Object var4 = var1.elementAt(var2);
  154.       var1.setElementAt(var1.elementAt(var3), var2);
  155.       var1.setElementAt(var4, var3);
  156.    }
  157.  
  158.    // $FF: renamed from: lt (java.io.File, java.io.File) boolean
  159.    protected boolean method_0(File var1, File var2) {
  160.       return var1.getName().toLowerCase().compareTo(var2.getName().toLowerCase()) < 0;
  161.    }
  162.  
  163.    // $FF: synthetic method
  164.    static JFileChooser access$000(BasicDirectoryModel var0) {
  165.       return var0.filechooser;
  166.    }
  167.  
  168.    // $FF: synthetic method
  169.    static int access$100(BasicDirectoryModel var0) {
  170.       return var0.fetchID;
  171.    }
  172.  
  173.    // $FF: synthetic method
  174.    static Vector access$200(BasicDirectoryModel var0) {
  175.       return var0.fileCache;
  176.    }
  177. }
  178.