+ private static class ProjectFileImpl implements ProjectFile, Comparable<ProjectFileImpl> {
+
+ /** The parent of this project file. */
+ private final ProjectFileImpl parentProjectFile;
+
+ /** The name of this project file. */
+ private final String name;
+
+ /** The size of the file. */
+ private final long size;
+
+ /** Whether this project file is a directory. */
+ private final boolean directory;
+
+ /** Whether this file is hidden. */
+ private final boolean hidden;
+
+ /** This project file’s children. */
+ private List<ProjectFileImpl> childProjectFiles = new ArrayList<ProjectFileImpl>();
+
+ /**
+ * Creates a new project fie.
+ *
+ * @param parentProjectFile
+ * The parent of the project file, or <code>null</code> if
+ * the new project file does not have a parent
+ * @param name
+ * The name of the project file
+ * @param size
+ * The size of the file
+ * @param isDirectory
+ * <code>true</code> if this project file is a directory,
+ * <code>false</code> otherwise
+ * @param isHidden
+ * <code>true</code> if this project file is hidden,
+ * <code>false</code> otherwise
+ */
+ ProjectFileImpl(ProjectFileImpl parentProjectFile, String name, long size, boolean isDirectory, boolean isHidden) {
+ this.parentProjectFile = parentProjectFile;
+ this.name = name;
+ this.size = size;
+ this.directory = isDirectory;
+ this.hidden = isHidden;
+ }
+
+ //
+ // INTERFACE ProjectFile
+ //