Changes between Version 7 and Version 8 of Ticket #6696


Ignore:
Timestamp:
May 8, 2008, 10:52:38 PM (12 years ago)
Author:
Bryan Forbes
Comment:

Updated the summary and made the description a bit shorter.

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #6696

    • Property Summary changed from VirtualGrid.destroy doesn't work because of inheritance of _Events to dojo.declare doesn't allow mixins that aren't declared with dojo.declare
  • Ticket #6696 – Description

    v7 v8  
    1111
    1212dojo.declare("dojox.grid._Events", null, {
    13         // summary:
    14         //              VirtualGrid mixin that provides default implementations for grid events.
    15         // description:
    16         //              Default ynthetic events dispatched for VirtualGrid. dojo.connect to events to
    17         //              retain default implementation or override them for custom handling.
    18        
    19         // cellOverClass: String
    20         //              css class to apply to grid cells over which the cursor is placed.
    21         cellOverClass: "dojoxGrid-cell-over",
    22        
    23         onKeyEvent: function(e){
    24                 // summary: top level handler for Key Events
    25                 this.dispatchKeyEvent(e);
    26         },
    27 
    28         onContentEvent: function(e){
    29                 // summary: Top level handler for Content events
    30                 this.dispatchContentEvent(e);
    31         },
    32 
    33         onHeaderEvent: function(e){
    34                 // summary: Top level handler for header events
    35                 this.dispatchHeaderEvent(e);
    36         },
    37 
    38         onStyleRow: function(inRow){
    39                 // summary:
    40                 //              Perform row styling on a given row. Called whenever row styling is updated.
    41                 //
    42                 // inRow: Object
    43                 //              Object containing row state information: selected, true if the row is selcted; over:
    44                 //              true of the mouse is over the row; odd: true if the row is odd. Use customClasses and
    45                 //              customStyles to control row css classes and styles; both properties are strings.
    46                 //
    47                 // example: onStyleRow({ selected: true, over:true, odd:false })
    48                 var i = inRow;
    49                         i.customClasses += (i.odd?" dojoxGrid-row-odd":"") + (i.selected?" dojoxGrid-row-selected":"") + (i.over?" dojoxGrid-row-over":"");
    50                 this.focus.styleRow(inRow);
    51                 this.edit.styleRow(inRow);
    52         },
    53        
    54         onKeyDown: function(e){
    55                 // summary:
    56                 //              Grid key event handler. By default enter begins editing and applies edits, escape cancels and edit,
    57                 //              tab, shift-tab, and arrow keys move grid cell focus.
    58                 if(e.altKey || e.ctrlKey || e.metaKey){
    59                         return;
    60                 }
    61                 var dk = dojo.keys;
    62                 switch(e.keyCode){
    63                         case dk.ESCAPE:
    64                                 this.edit.cancel();
    65                                 break;
    66                         case dk.ENTER:
    67                                 if(!e.shiftKey){
    68                                         var isEditing = this.edit.isEditing();
    69                                         this.edit.apply();
    70                                         if(!isEditing){
    71                                                 this.edit.setEditCell(this.focus.cell, this.focus.rowIndex);
    72                                         }
    73                                 }
    74                                 break;
    75                         case dk.TAB:
    76                                 this.focus[e.shiftKey ? 'previousKey' : 'nextKey'](e);
    77                                 break;
    78                         case dk.LEFT_ARROW:
    79                         case dk.RIGHT_ARROW:
    80                                 if(!this.edit.isEditing()){
    81                                         dojo.stopEvent(e);
    82                                         var offset = (e.keyCode == dk.LEFT_ARROW) ? 1 : -1;
    83                                         if(dojo._isBodyLtr()){ offset *= -1; }
    84                                         this.focus.move(0, offset);
    85                                 }
    86                                 break;
    87                         case dk.UP_ARROW:
    88                                 if(!this.edit.isEditing() && this.focus.rowIndex != 0){
    89                                         dojo.stopEvent(e);
    90                                         this.focus.move(-1, 0);
    91                                 }
    92                                 break;
    93                         case dk.DOWN_ARROW:
    94                                 if(!this.edit.isEditing() && this.focus.rowIndex+1 != this.model.count){
    95                                         dojo.stopEvent(e);
    96                                         this.focus.move(1, 0);
    97                                 }
    98                                 break;
    99                         case dk.PAGE_UP:
    100                                 if(!this.edit.isEditing() && this.focus.rowIndex != 0){
    101                                         dojo.stopEvent(e);
    102                                         if(this.focus.rowIndex != this.scroller.firstVisibleRow+1){
    103                                                 this.focus.move(this.scroller.firstVisibleRow-this.focus.rowIndex, 0);
    104                                         }else{
    105                                                 this.setScrollTop(this.scroller.findScrollTop(this.focus.rowIndex-1));
    106                                                 this.focus.move(this.scroller.firstVisibleRow-this.scroller.lastVisibleRow+1, 0);
    107                                         }
    108                                 }
    109                                 break;
    110                         case dk.PAGE_DOWN:
    111                                 if(!this.edit.isEditing() && this.focus.rowIndex+1 != this.model.count){
    112                                         dojo.stopEvent(e);
    113                                         if(this.focus.rowIndex != this.scroller.lastVisibleRow-1){
    114                                                 this.focus.move(this.scroller.lastVisibleRow-this.focus.rowIndex-1, 0);
    115                                         }else{
    116                                                 this.setScrollTop(this.scroller.findScrollTop(this.focus.rowIndex+1));
    117                                                 this.focus.move(this.scroller.lastVisibleRow-this.scroller.firstVisibleRow-1, 0);
    118                                         }
    119                                 }
    120                                 break;
    121                 }
    122         },
    123        
    124         onMouseOver: function(e){
    125                 // summary:
    126                 //              Event fired when mouse is over the grid.
    127                 // e: Event
    128                 //              Decorated event object contains reference to grid, cell, and rowIndex
    129                 e.rowIndex == -1 ? this.onHeaderCellMouseOver(e) : this.onCellMouseOver(e);
    130         },
    131        
    132         onMouseOut: function(e){
    133                 // summary:
    134                 //              Event fired when mouse moves out of the grid.
    135                 // e: Event
    136                 //              Decorated event object that contains reference to grid, cell, and rowIndex
    137                 e.rowIndex == -1 ? this.onHeaderCellMouseOut(e) : this.onCellMouseOut(e);
    138         },
    139        
    140         onMouseDown: function(e){
    141                 // summary:
    142                 //              Event fired when mouse is down inside grid.
    143                 // e: Event
    144                 //              Decorated event object that contains reference to grid, cell, and rowIndex
    145                 e.rowIndex == -1 ? this.onHeaderCellMouseDown(e) : this.onCellMouseDown(e);
    146         },
    147        
    148         onMouseOverRow: function(e){
    149                 // summary:
    150                 //              Event fired when mouse is over any row (data or header).
    151                 // e: Event
    152                 //              Decorated event object contains reference to grid, cell, and rowIndex
    153                 if(!this.rows.isOver(e.rowIndex)){
    154                         this.rows.setOverRow(e.rowIndex);
    155                         e.rowIndex == -1 ? this.onHeaderMouseOver(e) : this.onRowMouseOver(e);
    156                 }
    157         },
    158         onMouseOutRow: function(e){
    159                 // summary:
    160                 //              Event fired when mouse moves out of any row (data or header).
    161                 // e: Event
    162                 //              Decorated event object contains reference to grid, cell, and rowIndex
    163                 if(this.rows.isOver(-1)){
    164                         this.onHeaderMouseOut(e);
    165                 }else if(!this.rows.isOver(-2)){
    166                         this.rows.setOverRow(-2);
    167                         this.onRowMouseOut(e);
    168                 }
    169         },
    170        
    171         onMouseDownRow: function(e){
    172                 // summary:
    173                 //              Event fired when mouse is down inside grid row
    174                 // e: Event
    175                 //              Decorated event object that contains reference to grid, cell, and rowIndex
    176                 if(e.rowIndex != -1)
    177                         this.onRowMouseDown(e);
    178         },
    179 
    180         // cell events
    181         onCellMouseOver: function(e){
    182                 // summary:
    183                 //              Event fired when mouse is over a cell.
    184                 // e: Event
    185                 //              Decorated event object contains reference to grid, cell, and rowIndex
    186                 dojo.addClass(e.cellNode, this.cellOverClass);
    187         },
    188        
    189         onCellMouseOut: function(e){
    190                 // summary:
    191                 //              Event fired when mouse moves out of a cell.
    192                 // e: Event
    193                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    194                 dojo.removeClass(e.cellNode, this.cellOverClass);
    195         },
    196        
    197         onCellMouseDown: function(e){
    198                 // summary:
    199                 //              Event fired when mouse is down in a header cell.
    200                 // e: Event
    201                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    202         },
    203 
    204         onCellClick: function(e){
    205                 // summary:
    206                 //              Event fired when a cell is clicked.
    207                 // e: Event
    208                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    209                 this._click[0] = this._click[1];
    210                 this._click[1] = e;
    211                 if(!this.edit.isEditCell(e.rowIndex, e.cellIndex)){
    212                         this.focus.setFocusCell(e.cell, e.rowIndex);
    213                 }
    214                 this.onRowClick(e);
    215         },
    216 
    217         onCellDblClick: function(e){
    218                 // summary:
    219                 //              Event fired when a cell is double-clicked.
    220                 // e: Event
    221                 //              Decorated event object contains reference to grid, cell, and rowIndex
    222                 if(dojo.isIE){
    223                         this.edit.setEditCell(this._click[1].cell, this._click[1].rowIndex);
    224                 }else if(this._click[0].rowIndex != this._click[1].rowIndex){
    225                         this.edit.setEditCell(this._click[0].cell, this._click[0].rowIndex);
    226                 }else{
    227                         this.edit.setEditCell(e.cell, e.rowIndex);
    228                 }
    229                 this.onRowDblClick(e);
    230         },
    231 
    232         onCellContextMenu: function(e){
    233                 // summary:
    234                 //              Event fired when a cell context menu is accessed via mouse right click.
    235                 // e: Event
    236                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    237                 this.onRowContextMenu(e);
    238         },
    239 
    240         onCellFocus: function(inCell, inRowIndex){
    241                 // summary:
    242                 //              Event fired when a cell receives focus.
    243                 // inCell: Object
    244                 //              Cell object containing properties of the grid column.
    245                 // inRowIndex: Integer
    246                 //              Index of the grid row
    247                 this.edit.cellFocus(inCell, inRowIndex);
    248         },
    249 
    250         // row events
    251         onRowClick: function(e){
    252                 // summary:
    253 
    254 
    255 
    256                 //              Event fired when a row is clicked.
    257                 // e: Event
    258                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    259                 this.edit.rowClick(e);
    260                 this.selection.clickSelectEvent(e);
    261         },
    262 
    263         onRowDblClick: function(e){
    264                 // summary:
    265                 //              Event fired when a row is double clicked.
    266                 // e: Event
    267                 //              decorated event object which contains reference to grid, cell, and rowIndex
    268         },
    269 
    270         onRowMouseOver: function(e){
    271                 // summary:
    272                 //              Event fired when mouse moves over a data row.
    273                 // e: Event
    274                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    275         },
    276 
    277         onRowMouseOut: function(e){
    278                 // summary:
    279                 //              Event fired when mouse moves out of a data row.
    280                 // e: Event
    281                 //              Decorated event object contains reference to grid, cell, and rowIndex
    282         },
    283        
    284         onRowMouseDown: function(e){
    285                 // summary:
    286                 //              Event fired when mouse is down in a row.
    287                 // e: Event
    288                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    289         },
    290 
    291         onRowContextMenu: function(e){
    292                 // summary:
    293                 //              Event fired when a row context menu is accessed via mouse right click.
    294                 // e: Event
    295                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    296                 dojo.stopEvent(e);
    297         },
    298 
    299         // header events
    300         onHeaderMouseOver: function(e){
    301                 // summary:
    302                 //              Event fired when mouse moves over the grid header.
    303                 // e: Event
    304                 //              Decorated event object contains reference to grid, cell, and rowIndex
    305         },
    306 
    307         onHeaderMouseOut: function(e){
    308                 // summary:
    309                 //              Event fired when mouse moves out of the grid header.
    310                 // e: Event
    311                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    312         },
    313 
    314         onHeaderCellMouseOver: function(e){
    315                 // summary:
    316                 //              Event fired when mouse moves over a header cell.
    317                 // e: Event
    318                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    319                 dojo.addClass(e.cellNode, this.cellOverClass);
    320         },
    321 
    322         onHeaderCellMouseOut: function(e){
    323                 // summary:
    324                 //              Event fired when mouse moves out of a header cell.
    325                 // e: Event
    326                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    327                 dojo.removeClass(e.cellNode, this.cellOverClass);
    328         },
    329        
    330         onHeaderCellMouseDown: function(e) {
    331                 // summary:
    332                 //              Event fired when mouse is down in a header cell.
    333                 // e: Event
    334                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    335         },
    336 
    337         onHeaderClick: function(e){
    338                 // summary:
    339                 //              Event fired when the grid header is clicked.
    340                 // e: Event
    341                 // Decorated event object which contains reference to grid, cell, and rowIndex
    342         },
    343 
    344         onHeaderCellClick: function(e){
    345                 // summary:
    346                 //              Event fired when a header cell is clicked.
    347                 // e: Event
    348                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    349                 this.setSortIndex(e.cell.index);
    350                 this.onHeaderClick(e);
    351         },
    352 
    353         onHeaderDblClick: function(e){
    354                 // summary:
    355                 //              Event fired when the grid header is double clicked.
    356                 // e: Event
    357                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    358         },
    359 
    360         onHeaderCellDblClick: function(e){
    361                 // summary:
    362                 //              Event fired when a header cell is double clicked.
    363                 // e: Event
    364                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    365                 this.onHeaderDblClick(e);
    366         },
    367 
    368         onHeaderCellContextMenu: function(e){
    369                 // summary:
    370                 //              Event fired when a header cell context menu is accessed via mouse right click.
    371                 // e: Event
    372                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    373                 this.onHeaderContextMenu(e);
    374         },
    375 
    376         onHeaderContextMenu: function(e){
    377                 // summary:
    378                 //              Event fired when the grid header context menu is accessed via mouse right click.
    379                 // e: Event
    380                 //              Decorated event object which contains reference to grid, cell, and rowIndex
    381                 dojo.stopEvent(e);
    382         },
    383 
    384         // editing
    385         onStartEdit: function(inCell, inRowIndex){
    386                 // summary:
    387                 //              Event fired when editing is started for a given grid cell
    388                 // inCell: Object
    389                 //              Cell object containing properties of the grid column.
    390                 // inRowIndex: Integer
    391                 //              Index of the grid row
    392         },
    393 
    394         onApplyCellEdit: function(inValue, inRowIndex, inFieldIndex){
    395                 // summary:
    396                 //              Event fired when editing is applied for a given grid cell
    397                 // inValue: String
    398                 //              Value from cell editor
    399                 // inRowIndex: Integer
    400                 //              Index of the grid row
    401                 // inFieldIndex: Integer
    402                 //              Index in the grid's data model
    403         },
    404 
    405         onCancelEdit: function(inRowIndex){
    406                 // summary:
    407                 //              Event fired when editing is cancelled for a given grid cell
    408                 // inRowIndex: Integer
    409                 //              Index of the grid row
    410         },
    411 
    412         onApplyEdit: function(inRowIndex){
    413                 // summary:
    414                 //              Event fired when editing is applied for a given grid row
    415                 // inRowIndex: Integer
    416                 //              Index of the grid row
    417         },
    418 
    419         onCanSelect: function(inRowIndex){
    420                 // summary:
    421                 //              Event to determine if a grid row may be selected
    422                 // inRowIndex: Integer
    423                 //              Index of the grid row
    424                 // returns: Boolean
    425                 //              true if the row can be selected
    426                 return true;
    427         },
    428 
    429         onCanDeselect: function(inRowIndex){
    430                 // summary:
    431                 //              Event to determine if a grid row may be deselected
    432                 // inRowIndex: Integer
    433                 //              Index of the grid row
    434                 // returns: Boolean
    435                 //              true if the row can be deselected
    436                 return true;
    437         },
    438 
    439         onSelected: function(inRowIndex){
    440                 // summary:
    441                 //              Event fired when a grid row is selected
    442                 // inRowIndex: Integer
    443                 //              Index of the grid row
    444                 this.updateRowStyles(inRowIndex);
    445         },
    446 
    447         onDeselected: function(inRowIndex){
    448                 // summary:
    449                 //              Event fired when a grid row is deselected
    450                 // inRowIndex: Integer
    451                 //              Index of the grid row
    452                 this.updateRowStyles(inRowIndex);
    453         },
    454 
    455         onSelectionChanged: function(){
    456         }
     13    /* _Events methods go here */
    45714});
    45815}}}
    459 
    460