Advertisement
Guest User

Untitled

a guest
Oct 5th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Haxe 3.52 KB | None | 0 0
  1. package haxe.ui.containers;
  2.  
  3. import haxe.ui.components.Image;
  4. import haxe.ui.components.Label;
  5. import haxe.ui.components.Spacer;
  6. import haxe.ui.containers.HBox;
  7. import haxe.ui.containers.ScrollView;
  8. import haxe.ui.containers.VBox;
  9. import haxe.ui.core.MouseEvent;
  10.  
  11. class TreeView extends ScrollView {
  12.     public function new() {
  13.         super();
  14.         styleString = "padding: 1px;border: 1px solid #ABABAB;border-radius: 1px;";
  15.     }
  16.    
  17.     public function addNode(text:String, icon:String = null):TreeViewNode {
  18.        var node = new TreeViewNode();
  19.        node.text = text;
  20.        node.icon = icon;
  21.        addComponent(node);
  22.        return node;
  23.     }
  24.    
  25.     public function clear() {
  26.         this.clearContents();
  27.     }
  28. }
  29.  
  30. class TreeViewNode extends VBox {
  31.     private var _hbox:HBox;
  32.     private var _label:Label;
  33.     private var _nodeExpander:Image;
  34.     private var _nodeIcon:Image;
  35.    
  36.     private var _expanded:Bool = false;
  37.    
  38.     public function new() {
  39.         super();
  40.        
  41.         this.styleString = "spacing: 2";
  42.        
  43.         _hbox = new HBox();
  44.         _hbox.styleString = "spacing: 0";
  45.        
  46.         _nodeExpander = new Image();
  47.         _nodeExpander.resource = "haxeui-core/styles/default/transparent_px.png";
  48.         _nodeExpander.styleString = "vertical-align: center;cursor:pointer;";
  49.         _nodeExpander.onClick = function(e) {
  50.             if (_expanded == false) {
  51.                 _nodeExpander.resource = "haxeui-core/styles/default/down_arrow.png";
  52.                 _expanded = true;
  53.             } else {
  54.                 _nodeExpander.resource = "haxeui-core/styles/default/right_arrow.png";
  55.                 _expanded = false;
  56.             }
  57.            
  58.             for (c in childComponents) {
  59.                 if (c == _hbox) {
  60.                     continue;
  61.                 }
  62.                
  63.                 if (_expanded == false) {
  64.                     c.hide();
  65.                 } else {
  66.                     c.show();
  67.                 }
  68.             }
  69.         }
  70.         _hbox.addComponent(_nodeExpander);
  71.        
  72.         var hbox:HBox = new HBox();
  73.         hbox.id = "node";
  74.         hbox.styleString = "spacing: 4;cursor:pointer;";
  75.        
  76.         _nodeIcon = new Image();
  77.         hbox.addComponent(_nodeIcon);
  78.        
  79.         var spacer:Spacer = new Spacer();
  80.         spacer.width = 5;
  81.         //hbox.addComponent(spacer);
  82.        
  83.         _label = new Label();
  84.         hbox.addComponent(_label);
  85.  
  86.         hbox.registerEvent(MouseEvent.MOUSE_OVER, function(e) {
  87.             hbox.addClass(":hover");
  88.         });
  89.        
  90.         hbox.registerEvent(MouseEvent.MOUSE_OUT, function(e) {
  91.             hbox.removeClass(":hover");
  92.         });
  93.        
  94.         _hbox.addComponent(hbox);
  95.         addComponent(_hbox);
  96.     }
  97.    
  98.     public override function set_text(value:String):String {
  99.         super.set_text(value);
  100.         _label.text = value;
  101.         return value;
  102.     }
  103.    
  104.     public override function set_icon(value:String):String {
  105.         super.set_icon(value);
  106.         _nodeIcon.resource = value;
  107.         return value;
  108.     }
  109.    
  110.     public function addNode(text:String, icon:String = null):TreeViewNode {
  111.         _nodeExpander.resource = "haxeui-core/styles/default/down_arrow.png";
  112.         _hbox.styleString = "spacing: 0";
  113.         _expanded = true;
  114.        
  115.        var node = new TreeViewNode();
  116.        node.marginLeft = 16;
  117.        node.text = text;
  118.        node.icon = icon;
  119.        addComponent(node);
  120.        return node;
  121.     }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement