* 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.
This commit is contained in:
parent
c31a79219c
commit
126baf5e58
110
chrome/chromeFiles/content/scholar/itemTreeView.js
Normal file
110
chrome/chromeFiles/content/scholar/itemTreeView.js
Normal file
|
@ -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));
|
||||
|
||||
}
|
|
@ -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()
|
||||
|
|
|
@ -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/>
|
||||
|
|
|
@ -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">
|
||||
<!ENTITY closeCmd.label "Close">
|
||||
<!ENTITY closeCmd.accesskey "C">
|
||||
<!ENTITY closeCmd.commandkey "W">
|
Loading…
Reference in New Issue
Block a user