      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