//***************************************************************************** //* //* (c) Copyright 2004. Glub Tech, Incorporated. All Rights Reserved. //* //* $Id: FileTreeNode.java 37 2009-05-11 22:46:15Z gary $ //* //***************************************************************************** package com.glub.gui.tree; import com.glub.util.*; import java.io.*; import javax.swing.tree.*; public class FileTreeNode extends DefaultMutableTreeNode { //private File file; //private boolean isRoot; protected static final long serialVersionUID = 1L; public FileTreeNode( String rootNodeName ) { super( rootNodeName ); //isRoot = true; } public FileTreeNode( File f ) { super( f ); //file = f; } public boolean getAllowsChildren() { boolean ret = !isLeaf(); return ret; } public boolean isLeaf() { boolean ret = !isDirectory(); if ( !ret && Util.isMacOS() ) { if ( getFile() != null && (getFile().getName().endsWith(".app") || getFile().getName().endsWith(".mpkg") || getFile().getName().endsWith(".pkg")) ) { ret = true; } } return ret; } public String toString() { if ( ! (getUserObject() instanceof File) ) { return (String)getUserObject(); } File file = getFile(); if (file == null) { return ""; } String name = file.getName(); if (name == null || name.length() == 0) { name = file.toString(); } return (name != null) ? name : ""; } public File getFile() { if ( getUserObject() instanceof File ) { return (File)getUserObject(); } else { return null; } } public boolean isDirectory() { File file = getFile(); return file == null || file.isDirectory(); } public void buildChildNodes() { File file = getFile(); if (file == null || !file.isDirectory()) { return; } File[] subFiles = file.listFiles(); if (subFiles == null) { return; } int numKids = getChildCount(); for ( int i = 0; i < subFiles.length; i++, numKids++ ) { add( new FileTreeNode( subFiles[ i ] ) ); // getModel().insertNodeInto( new FileTreeNode( subFiles[ i ] ), // expandNode, numKids ); } } }