commit 749ef47bbd0dc31041b1e0b9858bea21117c7ea3
parent 47d7525e80502cbb8bf2e0f8839ee6115cc0feff
Author: David Norton <david@nortoncrew.com>
Date: Sat, 18 Mar 2006 22:51:05 +0000
I got the basic object pane working, so that it displays all the metadata.
I also started implementing some of the localization. There is a lot to do still, and I am still learning a lot of the Firefox extension technologies (XUL, adv. Javascript, etc.) but things are going great.
Diffstat:
5 files changed, 107 insertions(+), 14 deletions(-)
diff --git a/chrome/chromeFiles/content/scholar/sidebar.js b/chrome/chromeFiles/content/scholar/sidebar.js
@@ -1,3 +1,5 @@
+var ScholarLocalizedStrings;
+
var treeView = {
treebox: null,
dataObjects: null,
@@ -22,11 +24,6 @@ var treeView = {
setTree: function(treebox){
this.treebox = treebox;
this.dataObjects = Scholar_Objects.getAll();
-
- //Dan S: Check out the debug output created by this
- for(var i = 0; i < this.dataObjects.length; i++)
- Scholar.debug(Scholar.varDump(this.dataObjects[i]),5);
-
},
isContainer: function(row){ return false; },
isSeparator: function(row){ return false; },
@@ -35,10 +32,71 @@ var treeView = {
getImageSrc: function(row,col){ return null; },
getRowProperties: function(row,props){},
getCellProperties: function(row,col,props){},
- getColumnProperties: function(colid,col,props){}
+ getColumnProperties: function(colid,col,props){},
+ selectionChanged: function(){
+ if(this.selection.count == 0)
+ {
+ setObjectPaneVisibility(false);
+ document.getElementById('status-text').value = "(No selection)";
+ }
+ else if(this.selection.count == 1)
+ {
+ document.getElementById('status-text').value = "Selected: " + this.selection.currentIndex;
+ setObjectPaneVisibility(true);
+ populateObjectPane(this.dataObjects[this.selection.currentIndex]);
+ }
+ else
+ {
+ setObjectPaneVisibility(false);
+ document.getElementById('status-text').value = "(Multiple selection)";
+ }
+ }
};
+function setObjectPaneVisibility(vis)
+{
+ document.getElementById('scholar-sidebar-object-pane').hidden = !vis;
+ document.getElementById('status-text').hidden = vis;
+}
+
+function populateObjectPane(objectRow)
+{
+ var dynamicBox = document.getElementById('scholar-sidebar-object-pane-dynamic-fields');
+ while(dynamicBox.hasChildNodes())
+ dynamicBox.removeChild(dynamicBox.firstChild);
+
+ var fields = Scholar_ObjectFields.getObjectTypeFields(objectRow.getField("objectTypeID"));
+ var fieldNames = new Array("title","dateAdded","dateModified","source","rights");
+ for(var i = 0; i<fields.length; i++)
+ fieldNames.push(Scholar_ObjectFields.getName(fields[i]));
+
+ for(var i = 0; i<fieldNames.length; i++)
+ {
+ if(objectRow.getField(fieldNames[i]) != "")
+ {
+ var label = document.createElement("label");
+ label.setAttribute("value",ScholarLocalizedStrings.getString("objectFields."+fieldNames[i])+":");
+
+ var valueElement = document.createElement("description");
+ valueElement.appendChild(document.createTextNode(objectRow.getField(fieldNames[i])));
+
+ var row = document.createElement("row");
+ row.appendChild(label)
+ row.appendChild(valueElement)
+
+ dynamicBox.appendChild(row);
+ }
+ }
+
+}
+
+function selectionChanged()
+{
+ treeView.selectionChanged();
+}
+
function setView()
{
+ ScholarLocalizedStrings = document.getElementById('scholar-strings');
document.getElementById('scholar-sidebar-items').view=treeView;
}
\ No newline at end of file
diff --git a/chrome/chromeFiles/content/scholar/sidebar.xul b/chrome/chromeFiles/content/scholar/sidebar.xul
@@ -1,6 +1,8 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type"text/css"?>
<?xml-stylesheet href="chrome://browser/skin/browser.css" type="text/css"?>
+<?xml-stylesheet href="chrome://scholar/skin/scholar.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://scholar/locale/scholar.dtd">
<page id="scholar-sidebar" title="Scholar"
onload="setView()"
@@ -10,10 +12,12 @@
<script src="scholar.js"/>
<script src="db.js"/>
<script src="data_access.js"/>
+ <stringbundle id="scholar-strings" src="chrome://scholar/locale/scholar.properties"/>
<tree
id="scholar-sidebar-items"
seltype="multiple"
+ onselect="selectionChanged()"
flex="1"
enableColumnDrag="true"
datasources="rdf:null"
@@ -23,25 +27,31 @@
<treecols>
<treecol
id="title_column"
- label="Title"
+ label="&sidebar.items.title_column;"
flex="1"/>
<splitter class="tree-splitter"/>
<treecol
id="creator_column"
- label="Creator"
+ label="&sidebar.items.creator_column;"
flex="1"/>
</treecols>
<treechildren/>
</tree>
- <splitter collapse="before" resizeafter="grow"/>
-
- <vbox>
- <label control="test1" value="Test1:"/>
+ <label id="status-text" value="(No selection)"/>
+ <grid id="scholar-sidebar-object-pane" hidden="true">
+ <columns>
+ <column/>
+ <column flex="1"/>
+ </columns>
+
+ <rows id="scholar-sidebar-object-pane-dynamic-fields">
+ </rows>
+ </grid>
+ <!--
<textbox id="test1"/>
<label control="test2" value="Test2:"/>
<textbox id="test2"/>
<label control="test3" value="Test3:"/>
<textbox id="test3"/>
- </vbox>
-
+ -->
</page>
\ No newline at end of file
diff --git a/chrome/chromeFiles/locale/en-US/scholar/scholar.dtd b/chrome/chromeFiles/locale/en-US/scholar/scholar.dtd
@@ -1 +1,4 @@
<!ENTITY statusbarpanel.helloworld "Hello, World">
+
+<!ENTITY sidebar.items.title_column "Title">
+<!ENTITY sidebar.items.creator_column "Creator">
+\ No newline at end of file
diff --git a/chrome/chromeFiles/locale/en-US/scholar/scholar.properties b/chrome/chromeFiles/locale/en-US/scholar/scholar.properties
@@ -0,0 +1,17 @@
+objectFields.title = Title
+objectFields.dateAdded = Date Added
+objectFields.dateModified = Modified
+objectFields.source = Source
+objectFields.rights = Rights
+
+objectFields.series = Series
+objectFields.volume = Volume
+objectFields.number = Number
+objectFields.edition = Edition
+objectFields.place = Place
+objectFields.publisher = Publisher
+objectFields.year = Year
+objectFields.pages = Pages
+objectFields.ISBN = ISBN
+objectFields.publication = Publication
+objectFields.ISSN = ISSN
diff --git a/chrome/chromeFiles/skin/default/scholar/scholar.css b/chrome/chromeFiles/skin/default/scholar/scholar.css
@@ -0,0 +1,3 @@
+#scholar-sidebar-object-pane-dynamic-fields label {
+ font-weight: bold;
+}
+\ No newline at end of file