[ 掲示板に戻る ]

記事No.3879に関するスレッドです

TreeViewの一括追加したい / 紅陽
ScriptUIで質問です。

対象のフォルダ(以下Root)を指定して、
それ以下のファイルとフォルダをツリー構造でGUIに表示したいのですが、
Rootの第1階層を一括でツリーにした後、
第2階層以降を1つずつしか追加する方法しか解りません。
for文でループして追加しても良いのですが
Root以下のファイル数が多いので処理時間が結構かかってしまいます。
複数アイテムを一括で追加する方法や、
複数階層を一括で追加する方法ってないでしょうか?

-----以下環境と例文です-----
環境:MacOSX 10.4.11
App:IndesignCS3 (5.0.4)
言語:javascript
例文:
var dlg = new Window('dialog', 'TREEVIEWテスト',[0,0,500,500]);
with(dlg){
//1階層目作成
var TreeObj=add('treeview',[10,10,200,300],["A","B","C"]);
//2階層目追加
TreeObj.items[0].add('node',"AAA1");
TreeObj.items[0].add('node',"AAA2");
TreeObj.items[0].add('node',"AAA3");
//3階層目追加
TreeObj.items[0].items[1].add('node',"AAAA1");
}
//階層を展開
TreeObj.items[0].expanded=true;
TreeObj.items[0].items[1].expanded=true;
dlg.center();
dlg.show();

No.3879 2009/11/25(Wed) 11:56:21
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; ja-JP-mac; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5

Re: TreeViewの一括追加したい / せうぞー URL
ディレクトリ階層などのツリーを表現したい場合、
ファンクションなどに再帰処理させるのが定石だと思います。
「フォルダ 再帰」などと検索するといくつものやり方がヒットします。

>Root以下のファイル数が多いので処理時間が結構かかってしまいます。

これについては、ある程度仕方ないように思います。
またほんとうにルートから検索開始しようものなら、とんでもない再帰が発生します。ファイルが1000個以上見つかったらそこで処理を終了するなどの対策が必要かもしれません。
Mac OSならばFindコマンドなどと合わせて目的のファイルにフィルタを掛けることで時間の短縮もできるかもしれません。

No.3880 2009/11/25(Wed) 15:23:16
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ja-jp) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10

Re: TreeViewの一括追加したい / kamiseto URL
Adobe Bridge CS3 SDKに入っているサンプルスクリプトの
SnpCreateTreeView.jsxが参考になるかもしれません。

No.3881 2009/11/25(Wed) 17:14:14
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; ja-JP-mac; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 GTB5

Re: TreeViewの一括追加したい / 紅陽
せうぞー様、kamiseto様 ご返信ありがとうございます

>ディレクトリ階層などのツリーを表現したい場合、
>ファンクションなどに再帰処理させるのが定石だと思います。


そうですね、再起処理で出来るだけ無駄な処理は省いてみます。

>Mac OSならばFindコマンドなどと合わせて目的のファイルにフィルタを掛けることで時間の短縮もできるかもしれません。

TreeView.find("text:string")とかの事でしょうか?
そうであるなら試してみます。ツリー構造でどの様な動作するかも気になりますし。

>Adobe Bridge CS3 SDKに入っているサンプルスクリプトの
>SnpCreateTreeView.jsxが参考になるかもしれません。


おおっ!そんなサンプルがBridgeにあるんですね。
……確認してみました。
どうやら、サンプルファイルの中でも追加時には一つずつfor文で回してるようです。でもTreeView内でアイコンとか使えるんですね。参考になりました^^

アドバイスありがとうございました。
一括の追加は出来なさそうなので、
処理の方で早くなるように頑張ってみます。

No.3882 2009/11/25(Wed) 21:40:05
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; ja-JP-mac; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5