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.TogglePanelItem = rf.BaseComponent.extendClass({ 28 29 // class name 30 name:"TogglePanelItem", 31 32 init : function (componentId, options) { 33 $super.constructor.call(this, componentId); 34 this.attachToDom(this.id); 35 36 this.options = $.extend(this.options, options || {}); 37 this.name = this.options.name; 38 this.togglePanelId = this.options.togglePanelId; 39 this.switchMode = this.options.switchMode; 40 this.disabled = this.options.disabled || false; 41 42 this.index = options["index"]; 43 this.getTogglePanel().getItems()[this.index] = this; 44 45 this.__addUserEventHandler("enter"); 46 this.__addUserEventHandler("leave"); 47 }, 48 49 /***************************** Public Methods *****************************************************************/ 50 /** 51 * @methodOf TogglePanelItem 52 * @name TogglePanelItem#getName 53 * 54 * @return {String} panel item name 55 */ 56 getName: function () { 57 return this.options.name; 58 }, 59 60 /** 61 * @methodOf 62 * @name TogglePanelItem#getTogglePanel 63 * 64 * @return {TogglePanel} parent TogglePanel 65 * */ 66 getTogglePanel : function () { 67 return rf.component(this.togglePanelId); 68 }, 69 70 /** 71 * @methodOf 72 * @name TogglePanelItem#isSelected 73 * 74 * @return {Boolean} true if this panel item is selected in the parent toggle panel 75 * */ 76 isSelected : function () { 77 return this.getName() == this.getTogglePanel().getSelectItem(); 78 }, 79 80 81 /***************************** Private Methods ****************************************************************/ 82 83 /** 84 * @private 85 * */ 86 __addUserEventHandler : function (name) { 87 var handler = this.options["on" + name]; 88 if (handler) { 89 rf.Event.bindById(this.id, name, handler); 90 } 91 }, 92 93 /** 94 * @private 95 * 96 * used in TogglePanel 97 * */ 98 __enter : function () { 99 rf.getDomElement(this.id).style.display = "block"; 100 101 return this.__fireEnter(); 102 }, 103 104 /** 105 * @private 106 * 107 * used in TogglePanel 108 * */ 109 __leave : function () { 110 var continueProcess = this.__fireLeave(); 111 if (!continueProcess) { 112 return false; 113 } 114 115 rf.getDomElement(this.id).style.display = "none"; 116 return true; 117 }, 118 119 __fireLeave : function () { 120 return rf.Event.fireById(this.id, "leave"); 121 }, 122 123 __fireEnter : function () { 124 return rf.Event.fireById(this.id, "enter"); 125 }, 126 127 // class stuff 128 destroy: function () { 129 var parent = this.getTogglePanel(); 130 if (parent) { 131 delete parent.getItems()[this.index]; 132 } 133 134 $super.destroy.call(this); 135 } 136 }); 137 138 // define super class link 139 var $super = rf.ui.TogglePanelItem.$super; 140 })(RichFaces.jQuery, RichFaces); 141