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     var DEFAULT_OPTIONS = {switchMode: 'ajax'};
 28 
 29     rf.ui.CollapsiblePanelItem = rf.ui.TogglePanelItem.extendClass({
 30 
 31             init : function (componentId, options) {
 32                 rf.ui.TogglePanelItem.call(this, componentId, $.extend({}, DEFAULT_OPTIONS, options));
 33 
 34                 this.headerClass = "rf-cp-hdr-" + this.__state();
 35             },
 36 
 37             __enter : function () {
 38                 this.__content().show();
 39                 this.__header().addClass(this.headerClass);
 40 
 41                 return true;
 42             },
 43 
 44             __leave : function () {
 45                 this.__content().hide();
 46 
 47                 if (this.options.switchMode == 'client') {
 48                     this.__header().removeClass(this.headerClass);
 49                 }
 50 
 51                 return true;
 52             },
 53 
 54             __state : function () {
 55                 return this.getName() === "true" ? "exp" : "colps";
 56             },
 57 
 58             __content : function () {
 59                 return $(rf.getDomElement(this.id));
 60             },
 61 
 62             __header : function () {
 63                 return $(rf.getDomElement(this.togglePanelId + ":header"));
 64             }
 65         });
 66 })(RichFaces.jQuery, RichFaces);
 67