/**
* jQuery EasyUI 1.3.6
* Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.
*
* Licensed under the GPL or commercial licenses
* To use it on other terms please contact author: info@jeasyui.com
* http://www.gnu.org/licenses/gpl.txt
* http://www.jeasyui.com/license_commercial.php
*
* jQuery EasyUI icons Extensions 1.0 beta
* jQuery EasyUI icons 组件扩展
* jeasyui.extensions.icons.js
* 二次开发 流云
* 最近更新:2014-05-12
*
* 依赖项:
* 1、jquery.jdirk.js v1.0 beta late
* 2、jeasyui.extensions.js v1.0 beta late
* 3、jeasyui.extensions.menu.js v1.0 beta late
* 4、jeasyui.extensions.panel.js v1.0 beta late
* 5、jeasyui.extensions.window.js v1.0 beta late
* 6、jeasyui.extensions.dialog.js v1.0 beta late
* 7、icons/jeasyui.icons.all.js 和 icons/icon-all.css v1.0 beta late
*
* Copyright (c) 2013-2014 ChenJianwei personal All rights reserved.
* http://www.chenjianwei.org
*/
(function ($, undefined) {
$.util.namespace("$.easyui.icons");
// 增加自定义扩展方法 $.easyui.icons.showSelector;该方法弹出一个图标选择框窗口;该方法定义如下参数:
// options: 这是一个 JSON-Object 对象;具体格式参考 $.easyui.showDialog 方法的参数 options 的格式;
// 该参数格式在 $.easyui.showDialog 参数 options 格式基础上扩展了如下属性:
// selected:
// multiple:
// size:
// onEnter :
// 返回值:返回弹出窗口的 easyui-dialog 控件对象(jQuery-DOM 格式)。
$.easyui.icons.showSelector = function (options) {
if (options && options.topMost && $ != $.util.$) { return $.util.$.easyui.icons.showSelector.apply(this, arguments); }
var opts = $.extend({
width: 580, minWidth: 520, height: 480, minHeight: 360,
title: "选择图标",
iconCls: "icon-hamburg-zoom",
maximizable: true,
collapsible: true,
selected: null,
multiple: false,
size: null,
onEnter: function (value) { }
}, options);
opts.size = opts.size || "16";
opts.title = opts.title + ", " + (opts.multiple ? "多选" : "单选") + ", 尺寸:" + opts.size;
var value = opts.selected,
dia = $.easyui.showDialog($.extend({}, opts, {
content: "
",
saveButtonText: "确定",
saveButtonIconCls: "icon-ok",
enableApplyButton: false,
//topMost: true,
onSave: function () { if ($.isFunction(opts.onEnter)) { return opts.onEnter.call(this, value); } }
}));
$.util.exec(function () {
var content = dia.find("div.icons-layout").layout({ fit: true }),
toolbar = content.find("div.icons-toolbar").toolbar(),
tabs = content.find("div.icons-tabs").tabs({ fit: true, border: false }),
tabsOpts = tabs.tabs("options"),
onSelect = tabsOpts.onSelect,
iconStyles = $.array.filter($.easyui.iconStyles, function (item) {
return item.size.indexOf(opts.size) > -1;
}).sort(function (a, b) { return a.sort - b.sort; }),
last,
singleSelect = function (e) {
if (last) { last.removeClass("selected"); }
last = $(this);
last.addClass("selected");
value = last.attr("title");
refreshToolbar();
},
multipleSelect = function (e) {
var li = $(this), iconCls = li.attr("title");
if (!value) { value = []; }
if (!$.isArray(value)) { value = [value]; }
$.array[li.hasClass("selected") ? "remove" : "attach"](value, iconCls);
li.toggleClass("selected");
refreshToolbar();
};
dia.setValue = function (val) {
value = val;
refreshToolbar();
refreshCheckedStatus();
};
dia.getValue = function () {
return value;
};
tabsOpts.onSelect = function (title, index) {
if ($.isFunction(onSelect)) { onSelect.apply(this, arguments); }
var tab = tabs.tabs("getTab", index), tabOpts = tab.panel("options"), style = tabOpts.id;
if (tab.find("ul.icon-selector-ul").length) { return; }
var icons = $.array.filter($.easyui.icons[style], opts.size == "32" ?
function (icon) { return icon.iconCls.indexOf("32") > -1; } :
function (icon) { return icon.iconCls.indexOf("32") == -1; }
);
var ul = $("").appendTo(tab);
$.each(icons, function () {
var li = $("").attr("title", this.iconCls).appendTo(ul).click(opts.multiple ? multipleSelect : singleSelect);
$(" ").addClass(this.iconCls).appendTo(li);
});
if (opts.size == "32") { ul.addClass("icon-selector-ul-32"); }
};
$.util.exec(function () { dia.setValue(value); });
$.each(iconStyles, function (i, item) {
tabs.tabs("add", {
id: item.style, title: item.name, iconCls: "", closable: false, selected: false, refreshable: false
});
});
if ($.easyui.iconStyles.length) { tabs.tabs("select", 0); }
function refreshToolbar() {
toolbar.toolbar("clear");
if (value) {
if ($.isArray(value)) {
var title = value.join("\n"),
tip = $(",详情").css({
color: "Blue"
}).attr("title", title),
clear = $("清除选择
").css({
color: "Blue", cursor: "pointer",
width: 100,
textAlign: "right"
}).attr("title", "清除所有选择的项").click(function () {
tabs.find("ul>li.selected").removeClass("selected");
dia.setValue(null);
});
toolbar.toolbar("appendItem", [
"当前共选中的图标数量为:", value.length, tip, clear
]);
} else {
toolbar.toolbar("appendItem", [
"当前选中的图标值为:", { type: "button", options: { iconCls: value, plain: true } }, value
]);
}
} else {
toolbar.toolbar("appendItem", "当前没有选中图标");
}
};
function refreshCheckedStatus() {
var li = dia.dialog("body").find("ul.icon-selector-ul li").removeClass("selected");
if ($.isArray(value)) {
$.each(value, function (i, n) {
if (n) { li.find("span." + n).parent().addClass("selected"); }
});
} else {
if (value) { last = li.find("span." + value).parent().addClass("selected"); }
}
};
});
return dia;
};
})(jQuery);