package hide.comp; typedef ToolToggle = { var element : Element; function toggle( v : Bool ) : Void; function isDown(): Bool; } typedef ToolSelect = { var element : Element; function setContent( elements : Array<{ label : String, value : T }> ) : Void; dynamic function onSelect( v : T ) : Void; } class Toolbar extends Component { public function new(?parent,?el) { super(parent,el); element.addClass("hide-toolbar"); } public function addButton( icon : String, ?label : String, ?onClick : Void -> Void ) { var e = new Element('
'); if( onClick != null ) e.click(function(_) onClick()); e.appendTo(element); return e; } public function addToggle( icon : String, ?title : String, ?label : String, ?onToggle : Bool -> Void, ?defValue = false ) : ToolToggle { var e = new Element('
'); if(label != null) { new Element('').appendTo(e); } e.click(function(_) { e.toggleClass("toggled"); this.saveDisplayState("toggle:" + icon, e.hasClass("toggled")); if( onToggle != null ) onToggle(e.hasClass("toggled")); }); e.appendTo(element); if( defValue ) e.addClass("toggled"); var def = getDisplayState("toggle:" + icon); if( def == null ) def = false; if( def != defValue ) e.click(); return { element : e, toggle : function(b) e.toggleClass("toggled",b), isDown: function() return e.hasClass("toggled") }; } public function addColor( label : String, onChange : Int -> Void, ?alpha : Bool, ?defValue = 0 ) { var color = new hide.comp.ColorPicker(alpha, element); color.onChange = function(move) { if( !move ) this.saveDisplayState("color:" + label, color.value); onChange(color.value); }; var def = getDisplayState("color:" + label); if( def == null ) def = defValue; color.value = def; onChange(def); return color; } public function addSelect( icon : String, ?label : String ) : ToolSelect { var e = new Element('
')); r.onChange = function(_) onChange(r.value); return r; } }