home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.preview;
-
- import com.sun.java.swing.ListModel;
- import com.sun.java.swing.event.EventListenerList;
- import com.sun.java.swing.event.ListDataEvent;
- import com.sun.java.swing.event.ListDataListener;
- import java.beans.PropertyChangeListener;
- import java.beans.PropertyChangeSupport;
- import java.io.File;
- import java.util.Enumeration;
- import java.util.Vector;
-
- public class DirectoryModel implements ListModel {
- protected transient Vector currentFiles;
- protected transient boolean currentFilesFresh;
- protected Vector knownTypes;
- protected FileType shownType;
- protected FileType hiddenRule;
- protected FileType[] overrideTypes;
- protected FileType[] cleanupTypes;
- protected File curDir;
- protected boolean haveCheckedWindows;
- protected boolean isWindows;
- protected EventListenerList listenerList;
- protected PropertyChangeSupport changeSupport;
- // $FF: synthetic field
- static Class class$com$sun$java$swing$event$ListDataListener;
-
- public DirectoryModel() {
- this((File)null);
- }
-
- public DirectoryModel(File var1) {
- this.currentFiles = new Vector();
- this.currentFilesFresh = false;
- this.knownTypes = new Vector();
- this.cleanupTypes = new FileType[]{FileType.SharedFolder, FileType.SharedGenericFile};
- this.haveCheckedWindows = false;
- this.listenerList = new EventListenerList();
- this.setCurrentDirectory(var1);
- if (this.isWindowsFileSystem()) {
- this.overrideTypes = new FileType[2];
- this.overrideTypes[0] = FileType.SharedFloppyDrive;
- this.overrideTypes[1] = FileType.SharedHardDrive;
- }
-
- }
-
- protected File makeAbsolute(File var1) {
- File var2 = this.curDir;
- if (!((File)var1).isAbsolute()) {
- if (var2 == null) {
- var1 = var1 instanceof TypedFile ? new TypedFile(((File)var1).getAbsolutePath(), ((TypedFile)var1).getType()) : new File(((File)var1).getAbsolutePath());
- } else {
- var1 = var1 instanceof TypedFile ? new TypedFile(var2.getPath(), ((File)var1).getPath(), ((TypedFile)var1).getType()) : new File(var2.getPath(), ((File)var1).getPath());
- }
- }
-
- return (File)var1;
- }
-
- public File getCurrentDirectory() {
- return this.curDir;
- }
-
- public void setCurrentDirectory(File var1) {
- if (var1 == null) {
- var1 = new File(System.getProperty("user.home"));
- }
-
- var1 = this.makeAbsolute(var1);
- if (this.curDir == null || !this.curDir.equals(var1)) {
- this.invalidateCache();
- File var2 = this.curDir;
- this.curDir = var1;
- this.firePropertyChange("currentDirectory", var2, var1);
- this.fireContentsChanged();
- }
-
- }
-
- protected void invalidateCache() {
- this.currentFilesFresh = false;
- }
-
- public TypedFile getTypedFile(String var1, String var2) {
- TypedFile var3 = new TypedFile(var1, var2);
- this.deduceAndSetTypeOfFile(var3);
- return var3;
- }
-
- public TypedFile getTypedFile(String var1) {
- TypedFile var2 = new TypedFile(var1);
- this.deduceAndSetTypeOfFile(var2);
- return var2;
- }
-
- public Vector getTypedFiles() {
- return this.getTypedFilesForDirectory(this.getCurrentDirectory());
- }
-
- public Vector getTypedFilesForDirectory(File var1) {
- boolean var2 = var1.equals(this.getCurrentDirectory());
- if (var2 && this.currentFilesFresh) {
- return this.currentFiles;
- } else {
- Vector var3;
- if (var2) {
- var3 = this.currentFiles;
- var3.removeAllElements();
- } else {
- var3 = new Vector();
- }
-
- String[] var4 = var1.list();
- int var5 = var4 == null ? 0 : var4.length;
-
- for(int var6 = 0; var6 < var5; ++var6) {
- TypedFile var7;
- if (var1 instanceof WindowsRootDir) {
- var7 = this.getTypedFile(var4[var6]);
- } else {
- var7 = this.getTypedFile(var1.getPath(), var4[var6]);
- }
-
- FileType var8 = var7.getType();
- if ((this.shownType == null || var8.isContainer() || this.shownType == var8) && (this.hiddenRule == null || !this.hiddenRule.testFile(var7))) {
- var3.addElement(var7);
- }
- }
-
- if (!(var1 instanceof WindowsRootDir)) {
- this.sort(var3);
- }
-
- if (var2) {
- this.currentFilesFresh = true;
- }
-
- return var3;
- }
- }
-
- protected boolean applyTypeToFile(FileType var1, TypedFile var2) {
- if (var1.testFile(var2)) {
- var2.setType(var1);
- return true;
- } else {
- return false;
- }
- }
-
- protected void deduceAndSetTypeOfFile(TypedFile var1) {
- boolean var2 = false;
- if (this.overrideTypes != null) {
- int var3 = this.overrideTypes.length;
-
- for(int var4 = 0; var4 < var3 && !var2; ++var4) {
- if (this.applyTypeToFile(this.overrideTypes[var4], var1)) {
- var2 = true;
- }
- }
- }
-
- if (!var2) {
- Enumeration var5 = this.knownTypes.elements();
-
- while(var5.hasMoreElements() && !var2) {
- FileType var7 = (FileType)var5.nextElement();
- if (this.applyTypeToFile(var7, var1)) {
- var2 = true;
- }
- }
- }
-
- if (!var2 && this.cleanupTypes != null) {
- int var6 = this.cleanupTypes.length;
-
- for(int var8 = 0; var8 < var6 && !var2; ++var8) {
- if (this.applyTypeToFile(this.cleanupTypes[var8], var1)) {
- var2 = true;
- }
- }
- }
-
- var1.getType();
- }
-
- public boolean canGoUp() {
- File var1 = this.getCurrentDirectory();
- return var1.getParent() != null || !this.isWindowsFileSystem();
- }
-
- public void goUp() {
- File var1 = this.getCurrentDirectory();
- String var2 = var1.getParent();
- File var3 = var2 == null ? null : new File(var2);
- if (var3 != null) {
- this.setCurrentDirectory(var3);
- }
-
- }
-
- public void setHiddenRule(FileType var1) {
- if (var1 != this.hiddenRule) {
- FileType var2 = this.hiddenRule;
- this.hiddenRule = var1;
- this.invalidateCache();
- this.firePropertyChange("hiddenRule", var2, var1);
- this.fireContentsChanged();
- }
-
- }
-
- public FileType getHiddenRule() {
- return this.hiddenRule;
- }
-
- public FileType getShownType() {
- return this.shownType;
- }
-
- public void setShownType(FileType var1) {
- this.shownType = var1;
- if (var1 != null) {
- this.addKnownFileType(var1);
- }
-
- this.invalidateCache();
- this.firePropertyChange("shownType", (Object)null, (Object)null);
- this.fireContentsChanged();
- }
-
- public void addKnownFileType(FileType var1) {
- if (var1 == null) {
- throw new IllegalArgumentException("cannot add null to knownTypes");
- } else {
- if (!this.knownTypes.contains(var1)) {
- this.knownTypes.addElement(var1);
- this.invalidateCache();
- this.firePropertyChange("knownFileTypes", (Object)null, (Object)null);
- this.fireContentsChanged();
- }
-
- }
- }
-
- public Enumeration enumerateKnownFileTypes() {
- return this.knownTypes.elements();
- }
-
- public Vector getKnownFileTypes() {
- return (Vector)this.knownTypes.clone();
- }
-
- public boolean isKnownFileType(FileType var1) {
- return this.knownTypes.contains(var1);
- }
-
- public void setKnownFileTypes(FileType[] var1) {
- int var2 = var1.length;
- Vector var3 = this.knownTypes = new Vector(var2);
- var3.setSize(var2);
-
- for(int var4 = 0; var4 < var2; ++var4) {
- FileType var5 = var1[var4];
- var3.setElementAt(var5, var4);
- }
-
- this.invalidateCache();
- this.firePropertyChange("knownFileTypes", (Object)null, (Object)null);
- this.fireContentsChanged();
- }
-
- protected void firePropertyChange(String var1, Object var2, Object var3) {
- if (this.changeSupport != null) {
- this.changeSupport.firePropertyChange(var1, var2, var3);
- }
-
- }
-
- public synchronized void addPropertyChangeListener(PropertyChangeListener var1) {
- if (this.changeSupport == null) {
- this.changeSupport = new PropertyChangeSupport(this);
- }
-
- this.changeSupport.addPropertyChangeListener(var1);
- }
-
- public synchronized void removePropertyChangeListener(PropertyChangeListener var1) {
- if (this.changeSupport != null) {
- this.changeSupport.removePropertyChangeListener(var1);
- }
-
- }
-
- protected boolean isWindowsFileSystem() {
- if (!this.haveCheckedWindows) {
- this.isWindows = false;
- if (File.pathSeparator.equals(";") && File.separator.equals("\\")) {
- String var1 = this.getCurrentDirectory().getAbsolutePath();
- if (var1.length() >= 3) {
- char var2 = var1.charAt(0);
- char var3 = var1.charAt(1);
- char var4 = var1.charAt(2);
- this.isWindows = var3 == ':' && var4 == '\\' && (var2 >= 'A' && var2 <= 'Z' || var2 >= 'a' && var2 <= 'z');
- }
- }
-
- this.haveCheckedWindows = true;
- }
-
- return this.isWindows;
- }
-
- protected void sort(Vector var1) {
- this.quickSort(var1, 0, var1.size() - 1);
- }
-
- // $FF: renamed from: lt (com.sun.java.swing.preview.TypedFile, com.sun.java.swing.preview.TypedFile) boolean
- protected boolean method_0(TypedFile var1, TypedFile var2) {
- boolean var3 = var1.getType().isContainer();
- boolean var4 = var2.getType().isContainer();
- if (var3 != var4) {
- return var3;
- } else {
- return ((File)var1).getName().toLowerCase().compareTo(((File)var2).getName().toLowerCase()) < 0;
- }
- }
-
- private void swap(Vector var1, int var2, int var3) {
- Object var4 = var1.elementAt(var2);
- var1.setElementAt(var1.elementAt(var3), var2);
- var1.setElementAt(var4, var3);
- }
-
- protected void quickSort(Vector var1, int var2, int var3) {
- int var4 = var2;
- int var5 = var3;
- if (var3 > var2) {
- TypedFile var6 = (TypedFile)var1.elementAt((var2 + var3) / 2);
-
- while(var4 <= var5) {
- while(var4 < var3 && this.method_0((TypedFile)var1.elementAt(var4), var6)) {
- ++var4;
- }
-
- while(var5 > var2 && this.method_0(var6, (TypedFile)var1.elementAt(var5))) {
- --var5;
- }
-
- if (var4 <= var5) {
- this.swap(var1, var4, var5);
- ++var4;
- --var5;
- }
- }
-
- if (var2 < var5) {
- this.quickSort(var1, var2, var5);
- }
-
- if (var4 < var3) {
- this.quickSort(var1, var4, var3);
- }
- }
-
- }
-
- public int getSize() {
- Vector var1 = this.getTypedFiles();
- return var1.size();
- }
-
- public Object getElementAt(int var1) {
- return this.getTypedFiles().elementAt(var1);
- }
-
- public void addListDataListener(ListDataListener var1) {
- this.listenerList.add(class$com$sun$java$swing$event$ListDataListener != null ? class$com$sun$java$swing$event$ListDataListener : (class$com$sun$java$swing$event$ListDataListener = class$("com.sun.java.swing.event.ListDataListener")), var1);
- }
-
- public void removeListDataListener(ListDataListener var1) {
- this.listenerList.remove(class$com$sun$java$swing$event$ListDataListener != null ? class$com$sun$java$swing$event$ListDataListener : (class$com$sun$java$swing$event$ListDataListener = class$("com.sun.java.swing.event.ListDataListener")), var1);
- }
-
- protected void fireContentsChanged() {
- Object[] var1 = this.listenerList.getListenerList();
- ListDataEvent var2 = null;
-
- for(int var3 = var1.length - 2; var3 >= 0; var3 -= 2) {
- if (var1[var3] == (class$com$sun$java$swing$event$ListDataListener != null ? class$com$sun$java$swing$event$ListDataListener : (class$com$sun$java$swing$event$ListDataListener = class$("com.sun.java.swing.event.ListDataListener")))) {
- if (var2 == null) {
- var2 = new ListDataEvent(this, 0, 0, this.getSize() - 1);
- }
-
- ((ListDataListener)var1[var3 + 1]).contentsChanged(var2);
- }
- }
-
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
- }
-