      1 (function ($, rf) {
      2
      3     rf.ui = rf.ui || {};
      4
      5     rf.ui.PopupPanel.Sizer = function(id, modalPanel, cursor, sizer) {
      6
      7         $super.constructor.call(this, id);
      8
      9     };
     10
     11     var $super = rf.BaseComponent.extend(rf.ui.PopupPanel.Sizer);
     12     var $super = rf.ui.PopupPanel.Sizer.$super;
     13     $.extend(rf.ui.PopupPanel.Sizer.prototype, (function (options) {
     14         return {
     15
     16             name: "richfaces.ui.PopupPanel.Sizer",
     17
     18             doSetupSize: function (modalPanel, elt) {
     19                 var width = 0;
     20                 var height = 0;
     21                 var element = $(rf.getDomElement(elt));
     22                 var reductionData = modalPanel.reductionData;
     23
     24                 if (reductionData) {
     25                     if (reductionData.w) {
     26                         width = reductionData.w / 2;
     27                     }
     28
     29                     if (reductionData.h) {
     30                         height = reductionData.h / 2;
     31                     }
     32                 }
     33
     34                 if (width > 0) {
     35                     if (elt.clientWidth > width) {
     36                         if (!elt.reducedWidth) {
     37                             elt.reducedWidth = element.css('width');
     38                         }
     39                         element.css('width', width + 'px');
     40                     } else if (width < 4 && elt.reducedWidth == 4 + 'px') {
     41                         element.css('width', width + 'px');
     42                     }
     43                 } else {
     44                     if (elt.reducedWidth) {
     45                         element.css('width', elt.reducedWidth);
     46                         elt.reducedWidth = undefined;
     47                     }
     48                 }
     49
     50                 if (height > 0) {
     51                     if (elt.clientHeight > height) {
     52                         if (!elt.reducedHeight) {
     53                             elt.reducedHeight = element.css('height');
     54                         }
     55                         elt.style.height = height + 'px';
     56                     } else if (height < 4 && elt.reducedHeight == 4 + 'px') {
     57                         element.css('height', height + 'px');
     58                     }
     59                 } else {
     60                     if (elt.reducedHeight) {
     61                         element.css('height', elt.reducedHeight);
     62                         elt.reducedHeight = undefined;
     63                     }
     64                 }
     65             },
     66
     67             doSetupPosition: function (modalPanel, elt, left, top) {
     68                 var element = $(rf.getDomElement(elt));
     69                 if (!isNaN(left) && !isNaN(top)) {
     70                     element.css('left', left + 'px');
     71                     element.css('top', top + 'px');
     72                 }
     73             },
     74
     75             doPosition: function (modalPanel, elt) {
     76
     77             },
     78
     79             doDiff: function (dx, dy) {
     80
     81             }
     82         }
     83
     84     })());
     85     rf.ui.PopupPanel.Sizer.Diff = function(dX, dY, dWidth, dHeight) {
     86
     87         this.deltaX = dX;
     88         this.deltaY = dY;
     89
     90         this.deltaWidth = dWidth;
     91         this.deltaHeight = dHeight;
     92
     93     };
     94
     95     rf.ui.PopupPanel.Sizer.Diff.EMPTY = new rf.ui.PopupPanel.Sizer.Diff(0, 0, 0, 0),
     96
     97         rf.ui.PopupPanel.Sizer.N = function() {
     98
     99         }
    100
    101     $.extend(rf.ui.PopupPanel.Sizer.N.prototype, rf.ui.PopupPanel.Sizer.prototype);
    102     $.extend(rf.ui.PopupPanel.Sizer.N.prototype, {
    103
    104
    105             name: "richfaces.ui.PopupPanel.Sizer.N",
    106
    107             doPosition : function (popupPanel, elt) {
    108                 var element = $(rf.getDomElement(elt));
    109                 element.css('width', popupPanel.width() + 'px');
    110                 this.doSetupPosition(popupPanel, elt, 0, 0);
    111             },
    112
    113             doDiff : function(dx, dy) {
    114                 return new rf.ui.PopupPanel.Sizer.Diff(0, dy, 0, -dy);
    115             }
    116
    117         });
    118
    119     rf.ui.PopupPanel.Sizer.NW = function() {
    120
    121     }
    122     $.extend(rf.ui.PopupPanel.Sizer.NW.prototype, rf.ui.PopupPanel.Sizer.prototype);
    123     $.extend(rf.ui.PopupPanel.Sizer.NW.prototype, {
    124
    125             name: "richfaces.ui.PopupPanel.Sizer.NW",
    126
    127             doPosition : function (popupPanel, elt) {
    128                 this.doSetupSize(popupPanel, elt);
    129                 this.doSetupPosition(popupPanel, elt, 0, 0);
    130             },
    131
    132             doDiff : function(dx, dy) {
    133                 return new rf.ui.PopupPanel.Sizer.Diff(dx, dy, -dx, -dy);
    134             }
    135
    136         });
    137
    138     rf.ui.PopupPanel.Sizer.NE = function() {
    139
    140     }
    141     $.extend(rf.ui.PopupPanel.Sizer.NE.prototype, rf.ui.PopupPanel.Sizer.prototype);
    142     $.extend(rf.ui.PopupPanel.Sizer.NE.prototype, {
    143
    144             name: "richfaces.ui.PopupPanel.Sizer.NE",
    145
    146             doPosition : function (popupPanel, elt) {
    147                 this.doSetupSize(popupPanel, elt);
    148                 this.doSetupPosition(popupPanel, elt, popupPanel.width() - elt.clientWidth, 0);
    149             },
    150
    151             doDiff : function(dx, dy) {
    152                 return new rf.ui.PopupPanel.Sizer.Diff(0, dy, dx, -dy);
    153             }
    154
    155         });
    156
    157     rf.ui.PopupPanel.Sizer.E = function() {
    158
    159     }
    160     $.extend(rf.ui.PopupPanel.Sizer.E.prototype, rf.ui.PopupPanel.Sizer.prototype);
    161     $.extend(rf.ui.PopupPanel.Sizer.E.prototype, {
    162
    163             name: "richfaces.ui.PopupPanel.Sizer.E",
    164
    165             doPosition : function (popupPanel, elt) {
    166                 var element = $(rf.getDomElement(elt));
    167                 element.css('height', popupPanel.height() + 'px');
    168                 this.doSetupPosition(popupPanel, elt, popupPanel.width() - elt.clientWidth, 0);
    169             },
    170
    171             doDiff : function(dx, dy) {
    172                 return new rf.ui.PopupPanel.Sizer.Diff(0, 0, dx, 0);
    173             }
    174
    175         });
    176
    177     rf.ui.PopupPanel.Sizer.SE = function() {
    178
    179     }
    180     $.extend(rf.ui.PopupPanel.Sizer.SE.prototype, rf.ui.PopupPanel.Sizer.prototype);
    181     $.extend(rf.ui.PopupPanel.Sizer.SE.prototype, {
    182
    183             name: "richfaces.ui.PopupPanel.Sizer.SE",
    184
    185             doPosition : function (popupPanel, elt) {
    186                 this.doSetupSize(popupPanel, elt);
    187                 this.doSetupPosition(popupPanel, elt, popupPanel.width() - elt.clientWidth,
    188                     popupPanel.height() - elt.clientHeight);
    189             },
    190
    191             doDiff : function(dx, dy) {
    192                 return new rf.ui.PopupPanel.Sizer.Diff(0, 0, dx, dy);
    193             }
    194
    195         });
    196
    197     rf.ui.PopupPanel.Sizer.S = function() {
    198
    199     }
    200     $.extend(rf.ui.PopupPanel.Sizer.S.prototype, rf.ui.PopupPanel.Sizer.prototype);
    201     $.extend(rf.ui.PopupPanel.Sizer.S.prototype, {
    202
    203             name: "richfaces.ui.PopupPanel.Sizer.S",
    204
    205             doPosition : function (popupPanel, elt) {
    206                 var element = $(rf.getDomElement(elt));
    207                 element.css('width', popupPanel.width() + 'px');
    208                 this.doSetupPosition(popupPanel, elt, 0, popupPanel.height() - elt.clientHeight);
    209             },
    210
    211             doDiff : function(dx, dy) {
    212                 return new rf.ui.PopupPanel.Sizer.Diff(0, 0, 0, dy);
    213             }
    214
    215         });
    216
    217
    218     rf.ui.PopupPanel.Sizer.SW = function() {
    219
    220     }
    221     $.extend(rf.ui.PopupPanel.Sizer.SW.prototype, rf.ui.PopupPanel.Sizer.prototype);
    222     $.extend(rf.ui.PopupPanel.Sizer.SW.prototype, {
    223
    224
    225             name: "richfaces.ui.PopupPanel.Sizer.SW",
    226
    227             doPosition : function (popupPanel, elt) {
    228                 this.doSetupSize(popupPanel, elt);
    229                 this.doSetupPosition(popupPanel, elt, 0, popupPanel.height() - elt.clientHeight);
    230             },
    231
    232             doDiff : function(dx, dy) {
    233                 return new rf.ui.PopupPanel.Sizer.Diff(dx, 0, -dx, dy);
    234             }
    235
    236         });
    237
    238     rf.ui.PopupPanel.Sizer.W = function() {
    239
    240     }
    241     $.extend(rf.ui.PopupPanel.Sizer.W.prototype, rf.ui.PopupPanel.Sizer.prototype);
    242     $.extend(rf.ui.PopupPanel.Sizer.W.prototype, {
    243
    244
    245             name: "richfaces.ui.PopupPanel.Sizer.W",
    246
    247             doPosition : function (popupPanel, elt) {
    248                 var element = $(rf.getDomElement(elt));
    249                 element.css('height', popupPanel.height() + 'px');
    250                 this.doSetupPosition(popupPanel, elt, 0, 0);
    251             },
    252
    253             doDiff : function(dx, dy) {
    254                 return new rf.ui.PopupPanel.Sizer.Diff(dx, 0, -dx, 0);
    255             }
    256
    257
    258         });
    259
    260
    261     rf.ui.PopupPanel.Sizer.Header = function() {
    262
    263     }
    264     $.extend(rf.ui.PopupPanel.Sizer.Header.prototype, rf.ui.PopupPanel.Sizer.prototype);
    265     $.extend(rf.ui.PopupPanel.Sizer.Header.prototype, {
    266
    267
    268             name: "richfaces.ui.PopupPanel.Sizer.Header",
    269
    270             doPosition : function (popupPanel, elt) {
    271
    272             },
    273
    274             doDiff : function(dx, dy) {
    275                 return new rf.ui.PopupPanel.Sizer.Diff(dx, dy, 0, 0);
    276             }
    277
    278
    279         });
    280
    281
    282 })(RichFaces.jQuery, window.RichFaces);