View Javadoc
1   /*
2    * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.  Oracle designates this
8    * particular file as subject to the "Classpath" exception as provided
9    * by Oracle in the LICENSE file that accompanied this code.
10   *
11   * This code is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14   * version 2 for more details (a copy is included in the LICENSE file that
15   * accompanied this code).
16   *
17   * You should have received a copy of the GNU General Public License version
18   * 2 along with this work; if not, write to the Free Software Foundation,
19   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20   *
21   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22   * or visit www.oracle.com if you need additional information or have any
23   * questions.
24   */
25  
26  package sun.awt.shell;
27  
28  import java.io.File;
29  import java.security.AccessController;
30  import javax.swing.Icon;
31  import sun.security.action.GetPropertyAction;
32  
33  /**
34   * @author Michael Martak
35   * @since 1.4
36   */
37  
38  class DefaultShellFolder extends ShellFolder {
39  
40      /**
41       * Create a file system shell folder from a file
42       */
43      DefaultShellFolder(ShellFolder parent, File f) {
44          super(parent, f.getAbsolutePath());
45      }
46  
47      /**
48       * This method is implemented to make sure that no instances
49       * of <code>ShellFolder</code> are ever serialized. An instance of
50       * this default implementation can always be represented with a
51       * <code>java.io.File</code> object instead.
52       *
53       * @returns a <code>java.io.File</code> replacement object.
54       */
55      protected Object writeReplace() throws java.io.ObjectStreamException {
56          return new File(getPath());
57      }
58  
59      /**
60       * @return An array of shell folders that are children of this shell folder
61       * object, null if this shell folder is empty.
62       */
63      public File[] listFiles() {
64          File[] files = super.listFiles();
65          if (files != null) {
66              for (int i = 0; i < files.length; i++) {
67                  files[i] = new DefaultShellFolder(this, files[i]);
68              }
69          }
70          return files;
71      }
72  
73      /**
74       * @return Whether this shell folder is a link
75       */
76      public boolean isLink() {
77          return false; // Not supported by default
78      }
79  
80      /**
81       * @return Whether this shell folder is marked as hidden
82       */
83      public boolean isHidden() {
84          String fileName = getName();
85          if (fileName.length() > 0) {
86              return (fileName.charAt(0) == '.');
87          }
88          return false;
89      }
90  
91      /**
92       * @return The shell folder linked to by this shell folder, or null
93       * if this shell folder is not a link
94       */
95      public ShellFolder getLinkLocation() {
96          return null; // Not supported by default
97      }
98  
99      /**
100      * @return The name used to display this shell folder
101      */
102     public String getDisplayName() {
103         return getName();
104     }
105 
106     /**
107      * @return The type of shell folder as a string
108      */
109     public String getFolderType() {
110         if (isDirectory()) {
111             return "File Folder"; // TODO : LOCALIZE THIS STRING!!!
112         } else {
113             return "File"; // TODO : LOCALIZE THIS STRING!!!
114         }
115     }
116 
117     /**
118      * @return The executable type as a string
119      */
120     public String getExecutableType() {
121         return null; // Not supported by default
122     }
123 }