/// <summary> /// あるノードの子階層にノードを追加するメソッド /// </summary> /// <param name="parent">親となるノード</param> /// <param name="splitedValues">追加するノードのパス</param> /// <param name="depth">splitedValuesの添え字として使用します。デフォルトでは0が指定されます。</param> public static GUITree <T> Add(GUITree <T> parent, string[] splitedValues, int depth = 0) { // 不正なパラメータのチェック if (parent == null) { return(parent); } if (splitedValues == null) { return(parent); } if (depth >= splitedValues.Length) { return(parent); } if (depth < 0) { return(parent); } // 新しいノードを追加する var result = parent.Add(splitedValues[depth]); // 再起的にノードを追加する return(Add(result, splitedValues, depth + 1)); }
/// <summary> /// 再起的にノードのソートを行う /// </summary> /// <param name="root">ノードのルート</param> /// <param name="comparer">比較用のメソッド</param> public static void Sort(GUITree <T> root, System.Comparison <GUITree <T> > comparer) { root.mChildren.Sort(comparer); for (int i = 0; i < root.mChildren.Count; ++i) { Sort(root.Children[i], comparer); } }
/// <summary> /// コンストラクタ /// </summary> /// <param name="name">ノード名</param> /// <param name="parent">親ノードの参照</param> public GUITree(string name, GUITree <T> parent = null) { mName = name; mParent = parent; mGenericValue = new T(); if (mParent != null) { mDepth = mParent.mDepth + 1; } }
/// <summary> /// 指定した名前のノードを追加します。すでにノードが存在する場合は追加されません。 /// </summary> /// <param name="name">ノード名</param> /// <returns>新しく追加したノードを返します。既に存在する場合はそのノードを返します。</returns> private GUITree <T> Add(string name) { var node = FindChild(name); if (node == null) { node = new GUITree <T>(name, this); mChildren.Add(node); } return(node); }
/// <summary> /// あるノードの子階層にノードを追加するメソッド /// </summary> /// <param name="parent">親となるノード</param> /// <param name="path">ツリーのパス</param> /// <param name="depth">splitedValuesの添え字として使用します。デフォルトでは0が指定されます。</param> /// <param name="separator">パスのデリミタ</param> public static void Add(GUITree <T> parent, string path, int depth = 0, char separator = '/') { // 不正なパラメータのチェック if (parent == null) { return; } if (string.IsNullOrEmpty(path)) { return; } if (depth < 0) { return; } // 再起的にノードを追加する Add(parent, path.Split(separator), depth); }
private void OnEnable() { mFoldoutTree = new GUITree <FoldoutTree>("Root"); var lsit = GetFileList(Application.dataPath); string[] values = lsit.ToArray(); for (int i = 0; i < values.Length; ++i) { GUITree <FoldoutTree> .Add(mFoldoutTree, values[i], separator : '\\'); } string[] columns = new string[] { "番号", "パス", "更新日時", "作成日時", "読み書き", "サイズ", }; mCells.SetCapacity(values.Length, columns.Length); mCells.SetColumnNames(columns); for (int i = 0; i < values.Length; ++i) { var fi = new System.IO.FileInfo(values[i]); int index = 0; index = 0; mCells.SetCellValue(i, index++, i.ToString()); mCells.SetCellValue(i, index++, fi.FullName); mCells.SetCellValue(i, index++, fi.LastWriteTime.ToString("yyyy/MM/dd hh:mm")); mCells.SetCellValue(i, index++, fi.CreationTime.ToString("yyyy/MM/dd hh:mm")); mCells.SetCellValue(i, index++, fi.IsReadOnly?"Read Only":"Read Write"); mCells.SetCellValue(i, index++, fi.Length.ToString("#,0")); } }