var ScholarLocalizedStrings; var myTreeView; var dynamicBox; var itemBeingEdited; //the item currently being edited Scholar.TreeView = function() { this._treebox = null; this._dataItems = new Array(); this.rowCount = 0; } Scholar.TreeView.prototype.setTree = function(treebox) { if(this._treebox) return; this._treebox = treebox; var newRows = Scholar.Items.getTreeRows(); for(var i = 0; i < newRows.length; i++) this._showItem(newRows[i], 0, i+1); //item ref, isContainerOpen, level this.rowCount = this._dataItems.length; } Scholar.TreeView.prototype.getCellText = function(row, column) { var obj = this._getItemAtRow(row); if(obj.isFolder()) { if(column.id == "title_column") return obj.getName(); else return ""; } else { if(column.id == "title_column") return obj.getField("title"); else if(column.id == "creator_column") return obj.getField("firstCreator"); else return obj.getField("source"); } } Scholar.TreeView.prototype.isContainer = function(row) { return this._getItemAtRow(row).isFolder(); } Scholar.TreeView.prototype.isContainerOpen = function(row) { return this._dataItems[row][1]; } Scholar.TreeView.prototype.isContainerEmpty = function(row) { return (this.isContainer(row) && this._getItemAtRow(row).isEmpty()); } Scholar.TreeView.prototype.getLevel = function(row) { return this._dataItems[row][2]; } Scholar.TreeView.prototype.getParentIndex = function(row) { var thisLevel = this.getLevel(row); if(thisLevel == 0) return -1; for(var i = row - 1; i >= 0; i--) if(this.getLevel(i) < thisLevel) return i; return -1; } Scholar.TreeView.prototype.hasNextSibling = function(row, afterIndex) { var thisLevel = this.getLevel(row); for(var i = afterIndex + 1; i < this.rowCount; i++) { var nextLevel = this.getLevel(i); if(nextLevel == thisLevel) return true; else if(nextLevel < thisLevel) return false; } } Scholar.TreeView.prototype.toggleOpenState = function(row) { var count = 0; //used to tell the tree how many rows were added/removed var thisLevel = this.getLevel(row); this._treebox.beginUpdateBatch(); if(this.isContainerOpen(row)) { while((row + 1 < this._dataItems.length) && (this.getLevel(row + 1) > thisLevel)) { this._hideItem(row+1); count--; //count is negative when closing a container because we are removing rows } } else { var newRows = Scholar.Items.getTreeRows(this._getItemAtRow(row).getID()); //Get children for(var i = 0; i < newRows.length; i++) { count++; this._showItem(newRows[i], thisLevel+1, row+i+1); //insert new row } } this._dataItems[row][1] = !this._dataItems[row][1]; //toggle container open value this.rowCount = this._dataItems.length; this._treebox.rowCountChanged(row+1, count); //tell treebox to repaint these this._treebox.invalidateRow(row); this._treebox.endUpdateBatch(); } Scholar.TreeView.prototype.selectionChanged = function() { if(this.selection.count == 1 && this.selection.currentIndex != -1 && !this.isContainer(this.selection.currentIndex)) { viewSelectedItem(); document.getElementById('tb-edit').hidden = false; } else { removeDynamicRows(); document.getElementById('tb-edit').hidden = true; } } Scholar.TreeView.prototype._showItem = function(item, level, beforeRow) { this._dataItems.splice(beforeRow, 0, [item, false, level]); } Scholar.TreeView.prototype._hideItem = function(row) { this._dataItems.splice(row,1); } Scholar.TreeView.prototype._getItemAtRow = function(row) { return this._dataItems[row][0]; } Scholar.TreeView.prototype.isSorted = function() { return false; } Scholar.TreeView.prototype.isSeparator = function(row) { return false; } Scholar.TreeView.prototype.isEditable = function(row, idx) { return false; } Scholar.TreeView.prototype.getRowProperties = function(row, prop) { } Scholar.TreeView.prototype.getColumnProperties = function(col, prop) { } Scholar.TreeView.prototype.getCellProperties = function(row, col, prop) { } Scholar.TreeView.prototype.getImageSrc = function(row, col) { } Scholar.TreeView.prototype.performAction = function(action) { } Scholar.TreeView.prototype.performActionOnCell = function(action, row, col) { } Scholar.TreeView.prototype.getProgressMode = function(row, col) { } Scholar.TreeView.prototype.deleteSelectedItem = function() { if(this.selection.count == 0) { return; } else if(confirm("Are you sure you want to delete the selected item"+(this.selection.count > 1 ? "s" : "")+"?")) { var items = new Array(); var start = new Object(); var end = new Object(); for (var i=0, len=this.selection.getRangeCount(); i