|
@@ -31,7 +31,7 @@ typedef ToolToggle = {
|
|
|
|
|
|
typedef ToolSelect<T> = {
|
|
typedef ToolSelect<T> = {
|
|
var element : Element;
|
|
var element : Element;
|
|
- function setContent( elements : Array<{ label : String, value : T }> ) : Void;
|
|
|
|
|
|
+ dynamic function setContent( elements : Array<{ label : String, value : T }> ) : Void;
|
|
dynamic function onSelect( v : T ) : Void;
|
|
dynamic function onSelect( v : T ) : Void;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -153,20 +153,54 @@ class Toolbar extends Component {
|
|
}
|
|
}
|
|
|
|
|
|
public function addSelect<T>( icon : String, ?label : String ) : ToolSelect<T> {
|
|
public function addSelect<T>( icon : String, ?label : String ) : ToolSelect<T> {
|
|
- var e = new Element('<div class="select" title="${label==null ? "" : label}"><div class="icon ico ico-$icon"/><select/></div>');
|
|
|
|
- var content : Array<{ label : String, value : T }> = [];
|
|
|
|
- var select = e.find("select");
|
|
|
|
|
|
+ var e = new Element('
|
|
|
|
+ <div class="select" title="${label==null ? "" : label}">
|
|
|
|
+ <div class="icon ico ico-$icon"></div>
|
|
|
|
+ <div class="header">
|
|
|
|
+ <span class="label"></span>
|
|
|
|
+ <div class="icon ico ico-caret-right"></div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="dropdown"/>
|
|
|
|
+ </div>
|
|
|
|
+ ');
|
|
|
|
+
|
|
|
|
+ var header = e.find(".header");
|
|
|
|
+ var label = header.find(".label");
|
|
|
|
+ var items: Array<ContextMenu.MenuItem> = [];
|
|
var tool : ToolSelect<T> = {
|
|
var tool : ToolSelect<T> = {
|
|
element : e,
|
|
element : e,
|
|
- setContent : function(c) {
|
|
|
|
- select.html("");
|
|
|
|
- content = c;
|
|
|
|
- for( i in 0...content.length )
|
|
|
|
- new Element('<option value="$i">${content[i].label}</option>').appendTo(select);
|
|
|
|
- },
|
|
|
|
|
|
+ setContent : function(_) {},
|
|
onSelect : function(_) {},
|
|
onSelect : function(_) {},
|
|
};
|
|
};
|
|
- select.change(function(_) tool.onSelect(content[Std.parseInt(select.val())].value));
|
|
|
|
|
|
+
|
|
|
|
+ tool.setContent = function(c) {
|
|
|
|
+ for( i in 0...c.length ) {
|
|
|
|
+ items.push({
|
|
|
|
+ label: c[i].label,
|
|
|
|
+ click: () -> {
|
|
|
|
+ label.text(c[i].label);
|
|
|
|
+ tool.onSelect(c[i].value);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ header.click(function(_) {
|
|
|
|
+ var icon = header.find(".icon");
|
|
|
|
+ var visible = icon.hasClass('ico-caret-down');
|
|
|
|
+ visible = !visible;
|
|
|
|
+ icon.toggleClass("ico-caret-right", !visible);
|
|
|
|
+ icon.toggleClass("ico-caret-down", visible);
|
|
|
|
+
|
|
|
|
+ if (visible) {
|
|
|
|
+ var menu = ContextMenu.createDropdown(e.find(".dropdown").get(0), items, { search: ContextMenu.SearchMode.Visible });
|
|
|
|
+ menu.onClose = () -> {
|
|
|
|
+ icon.toggleClass("ico-caret-right", true);
|
|
|
|
+ icon.toggleClass("ico-caret-down", false);
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
e.appendTo(curGroup);
|
|
e.appendTo(curGroup);
|
|
return tool;
|
|
return tool;
|
|
}
|
|
}
|