commit c51f612098b68640e685042807737166b7df7eb7
parent 5fb98853bcd0a43c42e76cba963327252ecf24cb
Author: David Norton <david@nortoncrew.com>
Date: Tue, 16 May 2006 19:33:44 +0000
Hierarchical display works!! Need a way to check to see if a container is empty.
Diffstat:
2 files changed, 44 insertions(+), 50 deletions(-)
diff --git a/chrome/chromeFiles/content/scholar/sidebar.js b/chrome/chromeFiles/content/scholar/sidebar.js
@@ -14,9 +14,7 @@ Scholar.TreeView.prototype.setTree = function(treebox)
var newRows = Scholar.Objects.getTreeRows();
for(var i = 0; i < newRows.length; i++)
- {
- this._dataObjects.push( [ newRows[i],false ] );
- }
+ this._dataObjects.push( [ newRows[i], false, 0 ] ); //object ref, isContainerOpen, level
this.rowCount = this._dataObjects.length;
}
@@ -35,63 +33,50 @@ Scholar.TreeView.prototype.getCellText = function(row, column)
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._getObjectAtRow(row).isFolder();
-}
-
-Scholar.TreeView.prototype.isContainerOpen = function(row)
-{
- return this._dataObjects[row][1];
-}
-
+Scholar.TreeView.prototype.isContainer = function(row) { return this._getObjectAtRow(row).isFolder(); }
+Scholar.TreeView.prototype.isContainerOpen = function(row) { return this._dataObjects[row][1]; }
Scholar.TreeView.prototype.isContainerEmpty = function(row) { return false; }
-
-Scholar.TreeView.prototype.getLevel = function(row)
-{
- return this._getObjectAtRow(row).getLevel();
-}
+Scholar.TreeView.prototype.getLevel = function(row) { return this._dataObjects[row][2]; }
Scholar.TreeView.prototype.getParentIndex = function(row)
{
- thisLevel = this._getObjectAtRow(row).getLevel();
+ var thisLevel = this.getLevel(row);
+ if(thisLevel == 0) return -1;
for(var i = row - 1; i >= 0; i--)
- if(this._getObjectAtRow(i).getLevel() < thisLevel)
+ if(this.getLevel(i) < thisLevel)
return i;
+ return -1;
}
Scholar.TreeView.prototype.hasNextSibling = function(row, afterIndex)
{
- thisLevel = this._getObjectAtRow(row).getLevel();
-// for(var i = afterIndex + 1; i < this.rowCount; i++)
- return (this._getObjectAtRow(afterIndex+1).getLevel() == thisLevel)
- //return false;
- //return true;
+ 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;
+ var thisLevel = this.getLevel(row);
+
if(this.isContainerOpen(row))
{
- var thisLevel = this._getObjectAtRow(row).getLevel();
- while(this._getObjectAtRow(row + 1).getLevel() > thisLevel)
+ while((row + 1 < this._dataObjects.length) && (this.getLevel(row + 1) > thisLevel))
{
this._dataObjects.splice(row+1,1);
count--;
@@ -99,18 +84,19 @@ Scholar.TreeView.prototype.toggleOpenState = function(row)
}
else
{
- var newRows = Scholar.Objects.getTreeRows(this._getObjectAtRow(row).getID()); //Get children of
+ var newRows = Scholar.Objects.getTreeRows(this._getObjectAtRow(row).getID()); //Get children
+
for(var i = 0; i < newRows.length; i++)
{
- count++
- this._dataObjects.splice(row+i+1,0,[ newRows[i], false ]);
+ count++;
+ this._dataObjects.splice(row+i+1,0,[ newRows[i], false, thisLevel+1 ]); //insert new row
}
}
this._dataObjects[row][1] = !this._dataObjects[row][1];
this.rowCount = this._dataObjects.length;
- this._treebox.rowCountChanged(row, count);
+ this._treebox.rowCountChanged(row, count); //tell treebox to repaint these
}
Scholar.TreeView.prototype.selectionChanged = function()
@@ -135,6 +121,7 @@ Scholar.TreeView.prototype.selectionChanged = function()
}
+/*
Scholar.TreeView.prototype._insertRow = function(item, beforeRow)
{
return false;
@@ -144,18 +131,24 @@ Scholar.TreeView.prototype._deleteRow = function(row)
{
return false;
}
+*/
Scholar.TreeView.prototype._getObjectAtRow = function(row)
{
return this._dataObjects[row][0];
}
-Scholar.TreeView.prototype.isSorted = function() { return false; }
-Scholar.TreeView.prototype.isSeparator = function(row) { return false; }
-Scholar.TreeView.prototype.getRowProperties = function(row, prop) { return null; }
-Scholar.TreeView.prototype.getColumnProperties = function(col, prop) { return null; }
-Scholar.TreeView.prototype.getCellProperties = function(row, col, prop) { return null; }
-Scholar.TreeView.prototype.getImageSrc = function(row, col) { return null; }
+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) { }
function setObjectPaneVisibility(vis)
{
@@ -213,7 +206,6 @@ function populateObjectPane(objectRow)
dynamicBox.insertBefore(row, beforeField);
}
-
}
function selectionChanged()
diff --git a/chrome/chromeFiles/content/scholar/sidebar.xul b/chrome/chromeFiles/content/scholar/sidebar.xul
@@ -15,19 +15,17 @@
<tree
id="scholar-sidebar-items"
- seltype="multiple"
onselect="selectionChanged()"
- flex="1"
enableColumnDrag="true"
- datasources="rdf:null"
- ref=""
- flags="dont-build-content">
+ seltype="multiple"
+ flex="1">
<treecols>
<treecol
id="title_column"
label="&sidebar.items.title_column;"
- flex="1"/>
+ flex="1"
+ primary="true"/>
<splitter class="tree-splitter"/>
<treecol
id="creator_column"
@@ -36,7 +34,11 @@
</treecols>
<treechildren/>
</tree>
+
+
<label id="status-text" value="(No selection)"/>
+
+
<grid id="scholar-sidebar-object-pane" hidden="true">
<columns>
<column/>