www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 2a117168a99dca738f75bd35d8725e580a60a759
parent fdd8245eec7e5fee4d663b3645e267e276461652
Author: David Norton <david@nortoncrew.com>
Date:   Fri,  2 Jun 2006 14:11:23 +0000

Interface code for delete selected collection. (doesn't the function deleteCollectionSelection just sound great?)
	Although I do not yet have interface code for it, collections do not have any sort of setName(), save() functions.
Collections list now implements notify()


Diffstat:
Mchrome/chromeFiles/content/scholar/folderTreeView.js | 80++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
Mchrome/chromeFiles/content/scholar/itemTreeView.js | 4++--
Mchrome/chromeFiles/content/scholar/overlay.js | 15++++++++++++---
Mchrome/chromeFiles/content/scholar/overlay.xul | 3++-
4 files changed, 89 insertions(+), 13 deletions(-)

diff --git a/chrome/chromeFiles/content/scholar/folderTreeView.js b/chrome/chromeFiles/content/scholar/folderTreeView.js @@ -4,6 +4,70 @@ Scholar.FolderTreeView = function() this._dataItems = new Array(); this.rowCount = 0; this._showItem(new Scholar.ItemGroup('library',null),0,1); + this._unregisterID = Scholar.Notifier.registerColumnTree(this); +} + +Scholar.FolderTreeView.prototype.unregister = function() +{ + Scholar.Notifier.unregisterColumnTree(this._unregisterID); +} + +//CALLED BY DATA LAYER ON CHANGE: +Scholar.FolderTreeView.prototype.notify = function(action, type, ids) +{ + ids = Scholar.flattenArguments(ids); + var madeChanges = false; + + if(action == 'remove') + { + //Since a remove involves shifting of rows, we have to do it in order + + //sort the ids by row + var rows = new Array(); + for(var i=0, len=ids.length; i<len; i++) + if(this._collectionRowMap[ids[i]] != null) + rows.push(this._collectionRowMap[ids[i]]); + + if(rows.length > 0) + { + rows.sort(function(a,b) { return a-b }); + + for(var i=0, len=rows.length; i<len; i++) + { + var row = rows[i]; + this._hideItem(row-i); + this._treebox.rowCountChanged(row-i,-1); + } + + madeChanges = true; + } + + } + else + { + for (var i=0, len=ids.length; i<len; i++) + { + + var row = this._collectionRowMap[ids[i]]; + if(action == 'modify' && row != null) //must check for null because it could legitimately be 0 + { + this._treebox.invalidateRow(row) + } + else if(action == 'add' && row == null) + { + var item = Scholar.Items.get(ids[i]); + + this._showItem(item,this.rowCount); + this._treebox.rowCountChanged(this.rowCount,1); + + madeChanges = true; + } + + } + } + + if(madeChanges) + this._refreshHashMap(); } Scholar.FolderTreeView.prototype.setTree = function(treebox) @@ -121,7 +185,6 @@ Scholar.FolderTreeView.prototype.getProgressMode = function(row, col) { } Scholar.FolderTreeView.prototype.deleteSelection = function() { - /* if(this.selection.count == 0) return; @@ -129,8 +192,9 @@ Scholar.FolderTreeView.prototype.deleteSelection = function() for(var i=0; i<this.rowCount; i++) if(this.selection.isSelected(i) && this.isContainer(i) && this.isContainerOpen(i)) this.toggleOpenState(i); + this._refreshHashMap(); - //create an array of selected items/collections + //create an array of collections var rows = new Array(); var start = new Object(); var end = new Object(); @@ -138,7 +202,8 @@ Scholar.FolderTreeView.prototype.deleteSelection = function() { this.selection.getRangeAt(i,start,end); for (var j=start.value; j<=end.value; j++) - rows.push(j); + if(!this._getItemAtRow(j).isLibrary()) + rows.push(j); } //iterate and erase... @@ -146,16 +211,17 @@ Scholar.FolderTreeView.prototype.deleteSelection = function() for (var i=0; i<rows.length; i++) { //erase item/collection from DB: - this._getItemAtRow(rows[i]-i).erase(); - + this._getItemAtRow(rows[i]-i).ref.erase(); + + /* Disabled for now because notifier handles it this: //remove row from tree: this._hideItem(rows[i]-i); - this._treebox.rowCountChanged(rows[i]-i, -1); + this._treebox.rowCountChanged(rows[i]-i, -1);*/ } this._treebox.endUpdateBatch(); this._refreshHashMap(); - */ + } Scholar.FolderTreeView.prototype._refreshHashMap = function() diff --git a/chrome/chromeFiles/content/scholar/itemTreeView.js b/chrome/chromeFiles/content/scholar/itemTreeView.js @@ -119,7 +119,7 @@ Scholar.ItemTreeView.prototype.deleteSelection = function() else if(this._itemGroup.isCollection()) this._itemGroup.ref.removeItem(this._getItemAtRow(rows[i]-i).getID()); - /* Don't do this, the notifier tells us? + /* Disabled for now (notifier) //remove row from tree: this._hideItem(rows[i]-i); this._treebox.rowCountChanged(rows[i]-i, -1); */ @@ -163,7 +163,7 @@ Scholar.ItemTreeView.prototype.notify = function(action, type, ids) if(action == 'remove') { - //Since a remove involves + //Since a remove involves shifting of rows, we have to do it in order //sort the ids by row var rows = new Array(); diff --git a/chrome/chromeFiles/content/scholar/overlay.js b/chrome/chromeFiles/content/scholar/overlay.js @@ -11,7 +11,8 @@ var ScholarPane = new function() this.newCollection = newCollection; this.folderSelected = folderSelected; this.itemSelected = itemSelected; - this.deleteSelection = deleteSelection; + this.deleteItemSelection = deleteItemSelection; + this.deleteCollectionSelection = deleteCollectionSelection; this.search = search; this.toggleView = toggleView; @@ -51,7 +52,9 @@ var ScholarPane = new function() function newCollection() { - alert("new collection"); + var c = new Scholar.Collection(); + //c.setName('Untitled'); + //c.save(); } function folderSelected() @@ -99,12 +102,18 @@ var ScholarPane = new function() } - function deleteSelection() + function deleteItemSelection() { if(itemsView && itemsView.selection.count > 0 && confirm("Are you sure you want to delete the selected items?")) itemsView.deleteSelection(); } + function deleteCollectionSelection() + { + if(itemsView && foldersView.selection.count > 0 && confirm("Are you sure you want to delete the selected collections?")) + foldersView.deleteSelection(); + } + function search() { if(itemsView) diff --git a/chrome/chromeFiles/content/scholar/overlay.xul b/chrome/chromeFiles/content/scholar/overlay.xul @@ -34,6 +34,7 @@ <tree id="folders-tree" hidecolumnpicker="true" onselect="ScholarPane.folderSelected();" seltype="single" ondragover="nsDragAndDrop.dragOver(event,ScholarCollectionsDragObserver)" ondragdrop="nsDragAndDrop.drop(event,ScholarCollectionsDragObserver)" + onkeypress="if(event.keyCode == event.DOM_VK_BACK_SPACE || event.keyCode == event.DOM_VK_DELETE){ ScholarPane.deleteCollectionSelection(); return false; }" persist="width" flex="1"> <treecols> <treecol @@ -47,7 +48,7 @@ <splitter id="scholar-tree-splitter" resizebefore="closest" resizeafter="closest"/> <tree id="items-tree" - enableColumnDrag="true" onkeypress="if(event.keyCode == event.DOM_VK_BACK_SPACE || event.keyCode == event.DOM_VK_DELETE){ ScholarPane.deleteSelection(); return false; }" + enableColumnDrag="true" onkeypress="if(event.keyCode == event.DOM_VK_BACK_SPACE || event.keyCode == event.DOM_VK_DELETE){ ScholarPane.deleteItemSelection(); return false; }" onselect="ScholarPane.itemSelected();" ondraggesture="if (event.target.localName == 'treechildren') nsDragAndDrop.startDrag(event,ScholarItemsDragObserver);" persist="width" flex="5">