X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=dgbuilder%2Fpublic%2Fred%2Fui%2Ftabs.js;fp=dgbuilder%2Fpublic%2Fred%2Fui%2Ftabs.js;h=aa2075835b056373180785643cddcfbdfb414d7b;hb=d1569975bb18f4359fac18aa98f55b69c248a3ad;hp=0000000000000000000000000000000000000000;hpb=a016ea661ff5767a3539734c4c07ef974a6e4614;p=ccsdk%2Fdistribution.git diff --git a/dgbuilder/public/red/ui/tabs.js b/dgbuilder/public/red/ui/tabs.js new file mode 100644 index 00000000..aa207583 --- /dev/null +++ b/dgbuilder/public/red/ui/tabs.js @@ -0,0 +1,127 @@ +/** + * Copyright 2013 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + + + +RED.tabs = (function() { + + + function createTabs(options) { + var tabs = {}; + + var ul = $("#"+options.id) + ul.addClass("red-ui-tabs"); + ul.children().first().addClass("active"); + ul.children().addClass("red-ui-tab"); + + function onTabClick() { + activateTab($(this)); + return false; + } + + function onTabDblClick() { + if (options.ondblclick) { + options.ondblclick(tabs[$(this).attr('href').slice(1)]); + } + return false; + } + + function activateTab(link) { + if (typeof link === "string") { + link = ul.find("a[href='#"+link+"']"); + } + if (!link.parent().hasClass("active")) { + ul.children().removeClass("active"); + link.parent().addClass("active"); + if (options.onchange) { + options.onchange(tabs[link.attr('href').slice(1)]); + } + } + } + + function updateTabWidths() { + var tabs = ul.find("li.red-ui-tab"); + var width = ul.width(); + var tabCount = tabs.size(); + var tabWidth = (width-6-(tabCount*7))/tabCount; + var pct = 100*tabWidth/width; + tabs.css({width:pct+"%"}); + } + + ul.find("li.red-ui-tab a").on("click",onTabClick).on("dblclick",onTabDblClick); + updateTabWidths(); + + + function removeTab(id) { + var li = ul.find("a[href='#"+id+"']").parent(); + if (li.hasClass("active")) { + var tab = li.prev(); + if (tab.size() === 0) { + tab = li.next(); + } + activateTab(tab.find("a")); + } + li.remove(); + if (options.onremove) { + options.onremove(tabs[id]); + } + delete tabs[id]; + updateTabWidths(); + } + + return { + addTab: function(tab) { + tabs[tab.id] = tab; + var li = $("
  • ",{class:"red-ui-tab"}).appendTo(ul); + var link = $("",{href:"#"+tab.id, class:"red-ui-tab-label"}).appendTo(li); + link.html(tab.label); + + link.on("click",onTabClick); + link.on("dblclick",onTabDblClick); + if (tab.closeable) { + var closeLink = $("",{href:"#",class:"red-ui-tab-close"}).appendTo(li); + closeLink.html(''); + + closeLink.on("click",function(event) { + removeTab(tab.id); + }); + } + updateTabWidths(); + if (options.onadd) { + options.onadd(tab); + } + link.attr("title",tab.label); + if (ul.find("li.red-ui-tab").size() == 1) { + activateTab(link); + } + }, + removeTab: removeTab, + activateTab: activateTab, + resize: updateTabWidths, + count: function() { + return ul.find("li.red-ui-tab").size(); + }, + contains: function(id) { + return ul.find("a[href='#"+id+"']").length > 0; + } + + } + } + + return { + create: createTabs + } +})();