15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)var SourceRow = (function() { 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'use strict'; 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A SourceRow represents the row corresponding to a single SourceEntry 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * displayed by the EventsView. 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function SourceRow(parentView, sourceEntry) { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.parentView_ = parentView; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.sourceEntry_ = sourceEntry; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isSelected_ = false; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isMatchedByFilter_ = false; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used to set CSS class for display. Must only be modified by calling 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // corresponding set functions. 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isSelected_ = false; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isMouseOver_ = false; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Mirror sourceEntry's values, so we only update the DOM when necessary. 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isError_ = sourceEntry.isError(); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isInactive_ = sourceEntry.isInactive(); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.description_ = sourceEntry.getDescription(); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.createRow_(); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.onSourceUpdated(); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SourceRow.prototype = { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) createRow_: function() { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create a row. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var tr = addNode(this.parentView_.tableBody_, 'tr'); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr._id = this.getSourceId(); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.style.display = 'none'; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.row_ = tr; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var selectionCol = addNode(tr, 'td'); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var checkbox = addNode(selectionCol, 'input'); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selectionCol.style.borderLeft = '0'; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) checkbox.type = 'checkbox'; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var idCell = addNode(tr, 'td'); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) idCell.style.textAlign = 'right'; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var typeCell = addNode(tr, 'td'); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var descriptionCell = addNode(tr, 'td'); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.descriptionCell_ = descriptionCell; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Connect listeners. 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) checkbox.onchange = this.onCheckboxToggled_.bind(this); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var onclick = this.onClicked_.bind(this); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) idCell.onclick = onclick; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typeCell.onclick = onclick; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) descriptionCell.onclick = onclick; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.onmouseover = this.onMouseover_.bind(this); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tr.onmouseout = this.onMouseout_.bind(this); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the cell values to match this source's data. 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.getSourceId() >= 0) { 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) addTextNode(idCell, this.getSourceId()); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) addTextNode(idCell, '-'); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var sourceTypeString = this.sourceEntry_.getSourceTypeString(); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) addTextNode(typeCell, sourceTypeString); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateDescription_(); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add a CSS classname specific to this source type (so CSS can specify 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // different stylings for different types). 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var sourceTypeClass = sourceTypeString.toLowerCase().replace(/_/g, '-'); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.row_.classList.add('source-' + sourceTypeClass); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateClass_(); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) onSourceUpdated: function() { 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.sourceEntry_.isInactive() != this.isInactive_ || 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.sourceEntry_.isError() != this.isError_) { 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateClass_(); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.description_ != this.sourceEntry_.getDescription()) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateDescription_(); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Update filters. 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var matchesFilter = this.parentView_.currentFilter_(this.sourceEntry_); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setIsMatchedByFilter(matchesFilter); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Changes |row_|'s class based on currently set flags. Clears any previous 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * class set by this method. This method is needed so that some styles 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * override others. 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) updateClass_: function() { 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isInactive_ = this.sourceEntry_.isInactive(); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isError_ = this.sourceEntry_.isError(); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Each element of this list contains a property of |this| and the 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // corresponding class name to set if that property is true. Entries 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // earlier in the list take precedence. 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var propertyNames = [ 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ['isSelected_', 'selected'], 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ['isMouseOver_', 'mouseover'], 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ['isError_', 'error'], 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ['isInactive_', 'inactive'], 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ]; 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Loop through |propertyNames| in order, checking if each property 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is true. For the first such property found, if any, add the 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // corresponding class to the SourceEntry's row. Remove classes 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // that correspond to any other property. 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var noStyleSet = true; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < propertyNames.length; ++i) { 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var setStyle = noStyleSet && this[propertyNames[i][0]]; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (setStyle) { 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.row_.classList.add(propertyNames[i][1]); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) noStyleSet = false; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.row_.classList.remove(propertyNames[i][1]); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getSourceEntry: function() { 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.sourceEntry_; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setIsMatchedByFilter: function(isMatchedByFilter) { 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.isMatchedByFilter() == isMatchedByFilter) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; // No change. 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isMatchedByFilter_ = isMatchedByFilter; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setFilterStyles(isMatchedByFilter); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (isMatchedByFilter) { 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.parentView_.incrementPostfilterCount(1); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.parentView_.incrementPostfilterCount(-1); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If we are filtering an entry away, make sure it is no longer 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // part of the selection. 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setSelected(false); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isMatchedByFilter: function() { 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.isMatchedByFilter_; 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setFilterStyles: function(isMatchedByFilter) { 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Hide rows which have been filtered away. 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (isMatchedByFilter) { 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.row_.style.display = ''; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.row_.style.display = 'none'; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isSelected: function() { 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.isSelected_; 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setSelected: function(isSelected) { 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (isSelected == this.isSelected()) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isSelected_ = isSelected; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setSelectedStyles(isSelected); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.parentView_.modifySelectionArray(this.getSourceId(), isSelected); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.parentView_.onSelectionChanged(); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setSelectedStyles: function(isSelected) { 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isSelected_ = isSelected; 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.getSelectionCheckbox().checked = isSelected; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateClass_(); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setMouseoverStyle: function(isMouseOver) { 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isMouseOver_ = isMouseOver; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateClass_(); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) onClicked_: function() { 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.parentView_.clearSelection(); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setSelected(true); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.isSelected()) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.parentView_.scrollToSourceId(this.getSourceId()); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) onMouseover_: function() { 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setMouseoverStyle(true); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) onMouseout_: function() { 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setMouseoverStyle(false); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) updateDescription_: function() { 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.description_ = this.sourceEntry_.getDescription(); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.descriptionCell_.innerHTML = ''; 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) addTextNode(this.descriptionCell_, this.description_); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) onCheckboxToggled_: function() { 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setSelected(this.getSelectionCheckbox().checked); 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.isSelected()) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.parentView_.scrollToSourceId(this.getSourceId()); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getSelectionCheckbox: function() { 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.row_.childNodes[0].firstChild; 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getSourceId: function() { 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.sourceEntry_.getSourceId(); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns source ID of the entry whose row is currently above this one's. 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns null if no such node exists. 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getPreviousNodeSourceId: function() { 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var prevNode = this.row_.previousSibling; 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (prevNode == null) 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return null; 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return prevNode._id; 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns source ID of the entry whose row is currently below this one's. 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns null if no such node exists. 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getNextNodeSourceId: function() { 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var nextNode = this.row_.nextSibling; 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (nextNode == null) 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return null; 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return nextNode._id; 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Moves current object's row before |entry|'s row. 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) moveBefore: function(entry) { 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.row_.parentNode.insertBefore(this.row_, entry.row_); 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Moves current object's row after |entry|'s row. 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) moveAfter: function(entry) { 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.row_.parentNode.insertBefore(this.row_, entry.row_.nextSibling); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SourceRow; 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)})(); 268