www

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

commit 126baf5e58aff6404cde694b87adc504856f638a
parent c31a79219c79999b1dae638ff705ee36820da5c5
Author: David Norton <david@nortoncrew.com>
Date:   Tue, 30 May 2006 16:37:51 +0000

* Cleaned up the scholar.dtd file to look better, added some more column names.
* Renamed treeView.js to folderTreeView.js (more changes on this file forthcoming) -- this will soon be specifically for folders.
* Added itemTreeView.js, with new Scholar.ItemTreeView class -- specifically for items.
* The items list now supports 3 additional columns: rights, date added, and date modified.
* For now, selecting an item loads the "I'm Feeling Lucky" result of a Google search on the item title.

Diffstat:
Rchrome/chromeFiles/content/scholar/treeView.js -> chrome/chromeFiles/content/scholar/folderTreeView.js | 0
Achrome/chromeFiles/content/scholar/itemTreeView.js | 111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mchrome/chromeFiles/content/scholar/scholar.js | 12++++++++----
Mchrome/chromeFiles/content/scholar/scholar.xul | 30++++++++++++++++++++++--------
Mchrome/chromeFiles/locale/en-US/scholar/scholar.dtd | 33++++++++++++++++++---------------
5 files changed, 159 insertions(+), 27 deletions(-)

diff --git a/chrome/chromeFiles/content/scholar/treeView.js b/chrome/chromeFiles/content/scholar/folderTreeView.js diff --git a/chrome/chromeFiles/content/scholar/itemTreeView.js b/chrome/chromeFiles/content/scholar/itemTreeView.js @@ -0,0 +1,110 @@ +Scholar.ItemTreeView = function(root) +{ + this._treebox = null; + this._dataItems = new Array(); + this.rowCount = 0; + this._rootFolder = root; +} + +Scholar.ItemTreeView.prototype.setTree = function(treebox) +{ + if(this._treebox) + return; + this._treebox = treebox; + + var newRows = Scholar.Items.getTreeRows(this._rootFolder,"items"); + for(var i = 0; i < newRows.length; i++) + this._showItem(newRows[i], i+1); //item ref, before row + + this._refreshHashMap(); +} + +Scholar.ItemTreeView.prototype.getCellText = function(row, column) +{ + var obj = this._getItemAtRow(row); + return obj.getField(column.id); +} + + +Scholar.ItemTreeView.prototype._showItem = function(item, beforeRow) { this._dataItems.splice(beforeRow, 0, item); this.rowCount++; } + +Scholar.ItemTreeView.prototype._hideItem = function(row) { this._dataItems.splice(row,1); this.rowCount--; } + +Scholar.ItemTreeView.prototype._getItemAtRow = function(row) { return this._dataItems[row]; } + +Scholar.ItemTreeView.prototype.isSorted = function() { return false; } +Scholar.ItemTreeView.prototype.isSeparator = function(row) { return false; } +Scholar.ItemTreeView.prototype.isContainer = function(row) { return false; } +Scholar.ItemTreeView.prototype.getLevel = function(row) { return 0; } +Scholar.ItemTreeView.prototype.getRowProperties = function(row, prop) { } +Scholar.ItemTreeView.prototype.getColumnProperties = function(col, prop) { } +Scholar.ItemTreeView.prototype.getCellProperties = function(row, col, prop) { } +Scholar.ItemTreeView.prototype.getImageSrc = function(row, col) { } + +Scholar.ItemTreeView.prototype.cycleHeader = function(column) +{ + var order = 0; + if(order==0) + { + function columnSort(a,b) + { + return(a.getField(column.id) < b.getField(column.id)) ? -1 : (a.getField[column.id] > b.getField(column.id)) ? 1 : 0; + } + } + else + { + function columnSort(a,b) + { + return(a.getField(column.id) > b.getField(column.id)) ? -1 : (a.getField[column.id] < b.getField(column.id)) ? 1 : 0; + } + } + + this._dataItems.sort(columnSort); + this._refreshHashMap(); + this._treebox.invalidate(); +} + +Scholar.ItemTreeView.prototype.deleteSelection = function() +{ + if(this.selection.count == 0) + return; + + //create an array of selected items + var rows = new Array(); + var start = new Object(); + var end = new Object(); + for (var i=0, len=this.selection.getRangeCount(); i<len; i++) + { + this.selection.getRangeAt(i,start,end); + for (var j=start.value; j<=end.value; j++) + rows.push(j); + } + + //iterate and erase... + this._treebox.beginUpdateBatch(); + for (var i=0; i<rows.length; i++) + { + //erase item/folder from DB + this._getItemAtRow(rows[i]-i).erase(); + + //remove row from tree: + this._hideItem(rows[i]-i); + this._treebox.rowCountChanged(rows[i]-i, -1); + } + this._treebox.endUpdateBatch(); + + this._refreshHashMap(); +} + +Scholar.ItemTreeView.prototype._refreshHashMap = function() +{ + // Create hash map of folder and object ids to row indexes + + this._itemRowMap = new Array(); + for(var i=0; i < this.rowCount; i++) + this._itemRowMap[this._getItemAtRow(i).getID()] = i; + + //Scholar.debug(Scholar.varDump(this.folderRowMap)); + //Scholar.debug(Scholar.varDump(this.objectRowMap)); + +} +\ No newline at end of file diff --git a/chrome/chromeFiles/content/scholar/scholar.js b/chrome/chromeFiles/content/scholar/scholar.js @@ -5,7 +5,7 @@ function init() { foldersView = new Scholar.TreeView(0); //pass params here? document.getElementById('folders-tree').view = foldersView; - itemsView = new Scholar.TreeView(0); + itemsView = new Scholar.ItemTreeView(0); document.getElementById('items-tree').view = itemsView; var addMenu = document.getElementById('tb-add').firstChild; @@ -33,12 +33,12 @@ function folderSelected() { if(foldersView.selection.count == 1 && foldersView.selection.currentIndex != -1) { - itemsView = new Scholar.TreeView(foldersView._getItemAtRow(foldersView.selection.currentIndex).getID()); + itemsView = new Scholar.ItemTreeView(foldersView._getItemAtRow(foldersView.selection.currentIndex).getID()); document.getElementById('items-tree').view = itemsView; } else if(foldersView.selection.count == 0) { - itemsView = new Scholar.TreeView(0); + itemsView = new Scholar.ItemTreeView(0); document.getElementById('items-tree').view = itemsView; } else @@ -50,7 +50,11 @@ function folderSelected() function itemSelected() { - document.getElementById('view-pane').setAttribute('src','http://www.apple.com/'); + if(itemsView.selection.count == 1) + { + var item = itemsView._getItemAtRow(itemsView.selection.currentIndex); + document.getElementById('view-pane').setAttribute('src','http://www.google.com/search?q='+encodeURIComponent('"'+item.getField("title")+'"')+'&btnI'); + } } function deleteSelection() diff --git a/chrome/chromeFiles/content/scholar/scholar.xul b/chrome/chromeFiles/content/scholar/scholar.xul @@ -23,7 +23,8 @@ <script src="include.js"/> <script src="scholar.js"/> - <script src="treeView.js"/> + <script src="itemTreeView.js"/> + <script src="folderTreeView.js"/> <commandset id="baseMenuCommandSet" /> <keyset id="baseMenuKeyset" /> @@ -87,10 +88,9 @@ <menupopup> </menupopup> </toolbarbutton> - </toolbar> - <toolbar> + <spacer flex="1"/> <label value="Search:" control="tb-search"/> - <textbox id="tb-search" type="timed" timeout="500" flex="1" command="cmd_scholar_search"/> + <textbox id="tb-search" type="timed" timeout="500" width="150" command="cmd_scholar_search"/> </toolbar> </toolbox> @@ -117,25 +117,39 @@ <tree id="items-tree" enablecolumndrag="true" - treeviewtype="items" onselect="itemSelected();" persist="height" flex="1"> <treecols> <treecol - id="title_column" + id="title" label="&items.title_column;" flex="4" persist="width ordinal hidden"/> <splitter class="tree-splitter"/> <treecol - id="creator_column" + id="firstCreator" label="&items.creator_column;" flex="1" persist="width ordinal hidden"/> <splitter class="tree-splitter"/> <treecol - id="source_column" + id="source" label="&items.source_column;" flex="1" persist="width ordinal hidden"/> + <splitter class="tree-splitter"/> + <treecol + id="rights" hidden="true" + label="&items.rights_column;" + flex="1" persist="width ordinal hidden"/> + <splitter class="tree-splitter"/> + <treecol + id="dateAdded" hidden="true" + label="&items.dateAdded_column;" + flex="1" persist="width ordinal hidden"/> + <splitter class="tree-splitter"/> + <treecol + id="dateModified" hidden="true" + label="&items.dateModified_column;" + flex="1" persist="width ordinal hidden"/> </treecols> <treechildren/> diff --git a/chrome/chromeFiles/locale/en-US/scholar/scholar.dtd b/chrome/chromeFiles/locale/en-US/scholar/scholar.dtd @@ -1,24 +1,27 @@ -<!ENTITY items.title_column "Title"> -<!ENTITY items.creator_column "Creator"> -<!ENTITY items.source_column "Source"> +<!ENTITY items.title_column "Title"> +<!ENTITY items.creator_column "Creator"> +<!ENTITY items.source_column "Source"> +<!ENTITY items.rights_column "Rights"> +<!ENTITY items.dateAdded_column "Date Added"> +<!ENTITY items.dateModified_column "Date Modified"> -<!ENTITY folders.name_column "Name"> +<!ENTITY folders.name_column "Name"> -<!ENTITY creators.firstname "First name"> -<!ENTITY creators.lastname "Last name"> -<!ENTITY creators.type "Type"> +<!ENTITY creators.firstname "First name"> +<!ENTITY creators.lastname "Last name"> +<!ENTITY creators.type "Type"> <!ENTITY fileMenu.label "File"> <!ENTITY fileMenu.accesskey "F"> <!ENTITY viewMenu.label "View"> <!ENTITY viewMenu.accesskey "V"> -<!ENTITY menuitem.newItem.label "New Item..."> -<!ENTITY menuitem.newItem.accesskey "n"> -<!ENTITY menuitem.newFolder.label "New Folder..."> -<!ENTITY menuitem.newFolder.accesskey "o"> +<!ENTITY menuitem.newItem.label "New Item..."> +<!ENTITY menuitem.newItem.accesskey "n"> +<!ENTITY menuitem.newFolder.label "New Folder..."> +<!ENTITY menuitem.newFolder.accesskey "o"> -<!ENTITY closeCmd.label "Close"> -<!ENTITY closeCmd.accesskey "C"> -<!ENTITY closeCmd.commandkey "W"> -\ No newline at end of file +<!ENTITY closeCmd.label "Close"> +<!ENTITY closeCmd.accesskey "C"> +<!ENTITY closeCmd.commandkey "W"> +\ No newline at end of file