www

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

commit 711a277173837a5bd2112960e0511f691c85b819
parent 22296470c33508a54e35d3c14653c6778f03aafc
Author: David Norton <david@nortoncrew.com>
Date:   Tue, 27 Jun 2006 20:37:02 +0000

Fixed hierarchical viewing of notes. (Standalone notes not very well supported yet). Please post bugs to Trac (component: interface)

Diffstat:
Mchrome/chromeFiles/content/scholar/itemPane.js | 21++++++++++-----------
Mchrome/chromeFiles/content/scholar/itemTreeView.js | 86+++++++++++++++++++++++++++----------------------------------------------------
Mchrome/chromeFiles/content/scholar/note.js | 19+++++++++++++------
Mchrome/chromeFiles/content/scholar/overlay.js | 19++++++++++++-------
Mchrome/chromeFiles/content/scholar/overlay.xul | 11+++++++----
5 files changed, 71 insertions(+), 85 deletions(-)

diff --git a/chrome/chromeFiles/content/scholar/itemPane.js b/chrome/chromeFiles/content/scholar/itemPane.js @@ -43,7 +43,8 @@ ScholarItemPane = new function() var itemTypes = Scholar.ItemTypes.getTypes(); for(var i = 0; i<itemTypes.length; i++) - _itemTypeMenu.appendItem(Scholar.getString("itemTypes."+itemTypes[i]['name']),itemTypes[i]['id']); + if(itemTypes[i]['id'] != 1) + _itemTypeMenu.appendItem(Scholar.getString("itemTypes."+itemTypes[i]['name']),itemTypes[i]['id']); return true; } @@ -108,7 +109,7 @@ ScholarItemPane = new function() while(_notesList.hasChildNodes()) _notesList.removeChild(_notesList.firstChild); - var notes = _itemBeingEdited.getNotes(); + var notes = Scholar.Items.get(_itemBeingEdited.getNotes()); if(notes.length) { for(var i = 0; i < notes.length; i++) @@ -117,11 +118,11 @@ ScholarItemPane = new function() icon.setAttribute('src','chrome://scholar/skin/treeitem-note.png'); var label = document.createElement('label'); - label.setAttribute('value',_noteToTitle(_itemBeingEdited.getNote(notes[i]))); + label.setAttribute('value',_noteToTitle(notes[i].getNote())); label.setAttribute('crop','end'); box = document.createElement('box'); - box.setAttribute('onclick',"window.open('chrome://scholar/content/note.xul?item="+_itemBeingEdited.getID()+"&note="+notes[i]+"','','chrome,resizable,centerscreen');"); + box.setAttribute('onclick',"window.open('chrome://scholar/content/note.xul?item="+_itemBeingEdited.getID()+"&note="+notes[i].getID()+"','','chrome,resizable,centerscreen');"); box.setAttribute('class','clicky'); box.appendChild(icon); box.appendChild(label); @@ -129,7 +130,7 @@ ScholarItemPane = new function() var removeButton = document.createElement('label'); removeButton.setAttribute("value","-"); removeButton.setAttribute("class","clicky"); - removeButton.setAttribute("onclick","ScholarItemPane.removeNote("+notes[i]+")"); + removeButton.setAttribute("onclick","ScholarItemPane.removeNote("+notes[i].getID()+")"); var row = document.createElement('row'); row.appendChild(box); @@ -313,12 +314,10 @@ ScholarItemPane = new function() function removeNote(id) { - if(_itemBeingEdited.getNote(id) != "") - if(!confirm(Scholar.getString('pane.item.notes.delete.confirm'))) - return; - - if(id) - _itemBeingEdited.removeNote(id); + var note = Scholar.Items.get(id); + if(note) + if(confirm(Scholar.getString('pane.item.notes.delete.confirm'))) + note.erase(); } function addNote() diff --git a/chrome/chromeFiles/content/scholar/itemTreeView.js b/chrome/chromeFiles/content/scholar/itemTreeView.js @@ -14,8 +14,7 @@ Scholar.ItemTreeView = function(itemGroup) this._itemGroup = itemGroup; this._treebox = null; - this._savedSelectionItems = null; - this._savedSelectionNotes = null; + this._savedSelection = null; this.refresh(); this._unregisterID = Scholar.Notifier.registerItemTree(this); @@ -52,7 +51,7 @@ Scholar.ItemTreeView.prototype.refresh = function() var newRows = this._itemGroup.getChildItems(); for(var i = 0; i < newRows.length; i++) if(newRows[i]) - this._showItem(new Scholar.ItemTreeView.TreeRow('item',newRows[i],null,0,false), i+1); //item ref, before row + this._showItem(new Scholar.ItemTreeView.TreeRow('item',newRows[i],0,false), i+1); //item ref, before row this._refreshHashMap(); } @@ -114,9 +113,9 @@ Scholar.ItemTreeView.prototype.notify = function(action, type, ids) { var item = Scholar.Items.get(ids); - if((this._itemGroup.isLibrary() || item.inCollection(this._itemGroup.ref.getID())) && this._itemRowMap[ids] == null) + if((this._itemGroup.isLibrary() || item.inCollection(this._itemGroup.ref.getID())) && this._itemRowMap[ids] == null && !item.isNote()) { - this._showItem(new Scholar.ItemTreeView.TreeRow('item',item,null,0,false),this.rowCount); + this._showItem(new Scholar.ItemTreeView.TreeRow('item',item,0,false),this.rowCount); this._treebox.rowCountChanged(this.rowCount-1,1); madeChanges = true; @@ -195,11 +194,7 @@ Scholar.ItemTreeView.prototype.getImageSrc = function(row, col) { if(col.id == 'title') { - var itemType; - if(this._getItemAtRow(row).isNote()) - itemType = 'note'; - else - itemType = Scholar.ItemTypes.getName(this._getItemAtRow(row).getType()); + var itemType = Scholar.ItemTypes.getName(this._getItemAtRow(row).getType()); return "chrome://scholar/skin/treeitem-"+itemType+".png"; } @@ -262,12 +257,12 @@ Scholar.ItemTreeView.prototype.toggleOpenState = function(row) else { var item = this._getItemAtRow(row).ref; - var newRows = item.getNotes(); //Get children + var newRows = Scholar.Items.get(item.getNotes()); //Get children for(var i = 0; i < newRows.length; i++) { count++; - this._showItem(new Scholar.ItemTreeView.TreeRow('note',item,newRows[i],thisLevel+1,false), row+i+1); //item ref, before row + this._showItem(new Scholar.ItemTreeView.TreeRow('note',newRows[i],thisLevel+1,false), row+i+1); //item ref, before row } } @@ -432,17 +427,10 @@ Scholar.ItemTreeView.prototype.deleteSelection = function() this._treebox.beginUpdateBatch(); for (var i=0; i<items.length; i++) { - if(items[i].isNote()) - { - items[i].ref.removeNote(items[i].noteID); - } - else - { - if(this._itemGroup.isLibrary()) //erase item from DB - items[i].ref.erase(); - else if(this._itemGroup.isCollection()) - this._itemGroup.ref.removeItem(items[i].ref.getID()); - } + if(this._itemGroup.isLibrary() || items[i].isNote()) //erase item from DB + items[i].ref.erase(); + else if(this._itemGroup.isCollection()) + this._itemGroup.ref.removeItem(items[i].ref.getID()); } this._treebox.endUpdateBatch(); } @@ -502,14 +490,10 @@ Scholar.ItemTreeView.prototype._getItemAtRow = function(row) Scholar.ItemTreeView.prototype._refreshHashMap = function() { this._itemRowMap = new Array(); - this._noteRowMap = new Array(); for(var i=0; i < this.rowCount; i++) { var row = this._getItemAtRow(i); - if(row.isNote()) - this._noteRowMap[row.noteID] = i; - else - this._itemRowMap[row.ref.getID()] = i; + this._itemRowMap[row.ref.getID()] = i; } } @@ -518,8 +502,7 @@ Scholar.ItemTreeView.prototype._refreshHashMap = function() */ Scholar.ItemTreeView.prototype.saveSelection = function() { - this._savedSelectionItems = new Array(); - this._savedSelectionNotes = new Array(); + this._savedSelection = new Array(); var start = new Object(); var end = new Object(); @@ -528,10 +511,7 @@ Scholar.ItemTreeView.prototype.saveSelection = function() this.selection.getRangeAt(i,start,end); for (var j=start.value; j<=end.value; j++) { - if(this._getItemAtRow(j).isNote()) - this._savedSelectionNotes.push(this._getItemAtRow(j).noteID); - else - this._savedSelectionItems.push(this._getItemAtRow(j).ref.getID()); + this._savedSelection.push(this._getItemAtRow(j).ref.getID()); } } } @@ -542,16 +522,10 @@ Scholar.ItemTreeView.prototype.saveSelection = function() Scholar.ItemTreeView.prototype.rememberSelection = function() { this.selection.clearSelection(); - for(var i=0; i < this._savedSelectionItems.length; i++) + for(var i=0; i < this._savedSelection.length; i++) { - if(this._itemRowMap[this._savedSelectionItems[i]] != null) - this.selection.toggleSelect(this._itemRowMap[this._savedSelectionItems[i]]); - } - - for(var i=0; i < this._savedSelectionNotes.length; i++) - { - if(this._noteRowMap[this._savedSelectionNotes[i]] != null) - this.selection.toggleSelect(this._noteRowMap[this._savedSelectionNotes[i]]); + if(this._itemRowMap[this._savedSelection[i]] != null) + this.selection.toggleSelect(this._itemRowMap[this._savedSelection[i]]); } } @@ -569,7 +543,7 @@ Scholar.ItemTreeView.prototype.onDragStart = function (evt,transferData,action) { transferData.data=new TransferData(); this.saveSelection(); - transferData.data.addDataForFlavour("scholar/item",this._savedSelectionItems); + transferData.data.addDataForFlavour("scholar/item",this._savedSelection); } /* @@ -622,28 +596,29 @@ Scholar.ItemTreeView.prototype.getRowProperties = function(row, prop) { } Scholar.ItemTreeView.prototype.getColumnProperties = function(col, prop) { } Scholar.ItemTreeView.prototype.getCellProperties = function(row, col, prop) { } -Scholar.ItemTreeView.TreeRow = function(type, ref, noteID, level, isOpen) +Scholar.ItemTreeView.TreeRow = function(type, ref, level, isOpen) { this.type = type; //either 'item' or 'note' - this.ref = ref; //the item associated with this - this.noteID = noteID //the note ID (if applicable) + this.ref = ref; //the item/note associated with this this.level = level; this.isOpen = isOpen; } Scholar.ItemTreeView.TreeRow.prototype.isNote = function() { - return this.type == 'note'; + return this.ref.isNote(); } Scholar.ItemTreeView.TreeRow.prototype.getField = function(field) { - if(this.isNote()) + if(this.isNote() && field == 'title') { - if(field == 'title') - { - return this.ref.getNote(this.noteID); - } + var t = this.ref.getNote(); + var n = t.indexOf("\n"); + if(n > -1) + t = t.substring(0,n); + return t; + } else { @@ -654,10 +629,7 @@ Scholar.ItemTreeView.TreeRow.prototype.getField = function(field) Scholar.ItemTreeView.TreeRow.prototype.getType = function() { - if(this.isNote()) - return 'note'; - else - return this.ref.getType(); + return this.ref.getType(); } Scholar.ItemTreeView.TreeRow.prototype.numNotes = function() diff --git a/chrome/chromeFiles/content/scholar/note.js b/chrome/chromeFiles/content/scholar/note.js @@ -1,5 +1,4 @@ var item; -var noteID; var note; var _notesField; @@ -17,11 +16,14 @@ function onLoad() params[b[i].substr(0,mid)] = b[i].substr(mid+1); } item = Scholar.Items.get(params['item']); - noteID = params['note']; + var noteID = params['note']; document.getElementById('info-label').appendChild(document.createTextNode(item.getField('title') + " by " + item.getField('firstCreator'))); if(noteID) - _notesField.setAttribute('value',item.getNote(noteID)); + { + note = Scholar.Items.get(noteID); + _notesField.setAttribute('value',note.getNote()); + } } function onUnload() @@ -31,10 +33,15 @@ function onUnload() function save() { - if(noteID) - item.updateNote(noteID,_notesField.value); + if(note) + { + note.updateNote(_notesField.value); + } else - noteID = item.addNote(_notesField.value); + { + var noteID = Scholar.Notes.add(_notesField.value,item.getID()); + note = Scholar.Items.get(noteID); + } } addEventListener("load", function(e) { onLoad(e); }, false); diff --git a/chrome/chromeFiles/content/scholar/overlay.js b/chrome/chromeFiles/content/scholar/overlay.js @@ -125,18 +125,23 @@ var ScholarPane = new function() { var item = itemsView._getItemAtRow(itemsView.selection.currentIndex); - if(!item.isNote()) + if(item.isNote()) + { + + document.getElementById('item-pane').selectedIndex = 2; + } + else + { ScholarItemPane.viewItem(item.ref); - - document.getElementById('scholar-view-item').hidden = false; - document.getElementById('scholar-view-selected-label').hidden = true; + document.getElementById('item-pane').selectedIndex = 1; + } } else { - document.getElementById('scholar-view-item').hidden = true; - var label = document.getElementById('scholar-view-selected-label'); - label.hidden = false; + document.getElementById('item-pane').selectedIndex = 0; + var label = document.getElementById('scholar-view-selected-label'); + if(itemsView && itemsView.selection.count) label.value = Scholar.getString('pane.item.selected.multiple').replace('%1', itemsView.selection.count); else diff --git a/chrome/chromeFiles/content/scholar/overlay.xul b/chrome/chromeFiles/content/scholar/overlay.xul @@ -140,10 +140,13 @@ </tree> </vbox> <splitter id="scholar-view-splitter" collapse="after" persist="state"><grippy/></splitter> - <box id="item-pane" pack="center" align="center"> - <label id="scholar-view-selected-label"/> - <tabbox id="scholar-view-item" hidden="true" flex="1"/> - </box> + <deck id="item-pane" selectedIndex="0"> + <box pack="center" align="center"><label id="scholar-view-selected-label"/></box> + <tabbox id="scholar-view-item" flex="1"/> + <vbox id="scholar-view-note" flex="1" pack="center" align="center"> + <label>Inline editing: coming soon</label> + </vbox> + </deck> </hbox> </vbox> <splitter id="scholar-splitter" resizebefore="closest" resizeafter="closest" position="2" persist="collapsed"/>