2005/5/9

     
 

90_TreeControl.csf

artefaktur

using acdk.wx;


enum MyIds
{
  TreeControlId = 1001
}
class MyFrame
extends Frame
{
  TreeCtrl _treectrl;
  MyFrame(String title) 
  {
    super(title);
    _treectrl = new TreeCtrl(this, TreeControlId, new Point(0, 0), new Size(200, 200));
    TreeItemId root = _treectrl->addRoot("Files");
    _treectrl.setItemData(root, new TreeItemData(System::getAcdkHome()));
    _treectrl.connect(TreeEvent.EvtCommandTreeItemExpanding, TreeControlId, delegate onTreeItemClick); 
    TreeItemId node1 = _treectrl.appendItem(root, "<not expanded>");
  }
  void onTreeItemClick(TreeEvent event)
  {
    TreeItemId item = event.getItem();
    int cookie = 0;
    if (_treectrl.itemHasChildren(item) == false)
      return;
    TreeItemId firstChild = _treectrl.getFirstChild(item, cookie);
    out.println(_treectrl.getItemText(firstChild));
    if (_treectrl.getItemText(firstChild).equals("<not expanded>") == false)
      return;
      
    _treectrl.deleteItem(firstChild);
    
    String dirs = _treectrl.getItemData(item).getData();
    
    acdk.io.File dir = new File(dirs);
    //out.println("dirs: " + dirs);
    StringArray subs = dir.list(Nil, acdk.io.FileListDirectories);
    foreach (String sd in subs)
    {
      //out.println("sd: " + sd);
      TreeItemId tid = _treectrl.appendItem(item, sd);
      _treectrl.setItemData(tid, new TreeItemData(dir.getCanonicalPath() + "/" + sd));
      _treectrl.appendItem(tid, "<not expanded>");
    }
    subs = dir.list(Nil, acdk.io.FileListFiles);
    foreach (String sd in subs)
    {
      TreeItemId tid = _treectrl.appendItem(item, sd);
      _treectrl.setItemData(tid, new TreeItemData(dir.getCanonicalPath() + "/" + sd));
    }
  }
}

class MyApp
extends acdk.wx.App
{
  MyApp() {}
  bool onInit()
  {
    (new MyFrame("Hallo")).show(true);
    return true; 
  }
}

StringArray args = new StringArray(0);
acdk.wx.App.createGui("MyApp", args);