1 /* 2 * JBoss, Home of Professional Open Source 3 * Copyright ${year}, Red Hat, Inc. and individual contributors 4 * by the @authors tag. See the copyright.txt in the distribution for a 5 * full listing of individual contributors. 6 * 7 * This is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU Lesser General Public License as 9 * published by the Free Software Foundation; either version 2.1 of 10 * the License, or (at your option) any later version. 11 * 12 * This software is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with this software; if not, write to the Free 19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 21 */ 22 23 (function ($, rf) { 24 25 rf.ui = rf.ui || {}; 26 27 rf.ui.CollapsiblePanel = rf.ui.TogglePanel.extendClass({ 28 29 name:"CollapsiblePanel", 30 31 /** 32 * @class CollapsiblePanel 33 * @name CollapsiblePanel 34 * 35 * @constructor 36 * @param {String} componentId - component id 37 * @param {Hash} options - params 38 * */ 39 init : function (componentId, options) { 40 rf.ui.TogglePanel.call(this, componentId, options); 41 this.switchMode = options.switchMode; 42 43 this.__addUserEventHandler("beforeswitch"); 44 this.__addUserEventHandler("switch"); 45 46 this.options.cycledSwitching = true; 47 48 var panel = this; 49 $(document.getElementById(this.id)).ready(function () { // TODO 50 rf.Event.bindById(panel.id + ":header", "click", panel.__onHeaderClick, panel); 51 52 new RichFaces.ui.CollapsiblePanelItem( 53 panel.id + ":content", {"index":0, "togglePanelId":panel.id, "switchMode":panel.switchMode, "name":"true"}), 54 55 new RichFaces.ui.CollapsiblePanelItem( 56 panel.id + ":empty", {"index":1, "togglePanelId":panel.id, "switchMode":panel.switchMode, "name":"false"}) 57 }) 58 }, 59 60 switchPanel : function (to) { 61 this.switchToItem(to || "@next"); 62 }, 63 64 /***************************** Private Methods ********************************************************/ 65 66 __onHeaderClick : function () { 67 this.switchToItem("@next"); 68 }, 69 70 __fireItemChange : function (oldItem, newItem) { 71 return new rf.Event.fireById(this.id, "switch", { 72 id: this.id, 73 isExpanded : newItem.getName() 74 }); 75 }, 76 77 __fireBeforeItemChange : function (oldItem, newItem) { 78 return rf.Event.fireById(this.id, "beforeswitch", { 79 id: this.id, 80 isExpanded : newItem.getName() 81 }); 82 } 83 }); 84 })(RichFaces.jQuery, RichFaces); 85