1/*
2 * Copyright (c) 2000, 2014, 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
26package sun.awt.shell;
27
28import java.io.File;
29import java.security.AccessController;
30import javax.swing.Icon;
31import sun.security.action.GetPropertyAction;
32
33/**
34 * @author Michael Martak
35 * @since 1.4
36 */
37@SuppressWarnings("serial") // JDK-implementation class
38class 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} are ever serialized. An instance of
50     * this default implementation can always be represented with a
51     * {@code java.io.File} object instead.
52     *
53     * @return a java.io.File 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}
124