      1 (function ($, rf) {
      2
      3     rf.ui = rf.ui || {};
      4
      5     rf.ui.ListMulti = function(id, options) {
      6         this.namespace = this.namespace || "." + rf.Event.createNamespace(this.name, id);
      7         var mergedOptions = $.extend({}, defaultOptions, options);
      8         $super.constructor.call(this, id, mergedOptions);
      9         this.disabled = mergedOptions.disabled;
     10     };
     11
     12     rf.ui.List.extend(rf.ui.ListMulti);
     13     var $super = rf.ui.ListMulti.$super;
     14
     15     var defaultOptions = {
     16         clickRequiredToSelect: true
     17     };
     18
     19     $.extend(rf.ui.ListMulti.prototype, ( function () {
     20
     21         return{
     22
     23             name : "listMulti",
     24
     25             getSelectedItems: function() {
     26                 return this.list.find("." + this.selectItemCssMarker);
     27             },
     28
     29             removeSelectedItems: function() {
     30                 var items = this.getSelectedItems();
     31                 this.removeItems(items);
     32                 return items;
     33             },
     34
     35             __selectByIndex: function(index, clickModified) {
     36                 if (! this.__isSelectByIndexValid(index)) {
     37                     return;
     38                 }
     39
     40                 this.index = this.__sanitizeSelectedIndex(index);
     41
     42                 var item = this.items.eq(this.index);
     43                 if (! clickModified) {
     44                     var that = this;
     45                     this.getSelectedItems().each( function() {
     46                         that.unselectItem($(this))
     47                     });
     48                     this.selectItem(item);
     49                 } else {
     50                     if (this.isSelected(item)) {
     51                         this.unselectItem(item);
     52                     } else {
     53                         this.selectItem(item);
     54                     }
     55                 }
     56             }
     57         }
     58     })());
     59
     60 })(RichFaces.jQuery, window.RichFaces);