commit 7aecfd5190954aa76d252f3569cc869b006ca694
parent 72ea24e2bb20e873d3f18236c5f9e8cfa9aacbfd
Author: David Norton <david@nortoncrew.com>
Date: Thu, 18 May 2006 18:39:55 +0000
Added basic preferences support.
Removed all trace of 'object' from sidebar.js.
More code renaming.
Diffstat:
7 files changed, 91 insertions(+), 41 deletions(-)
diff --git a/chrome/chromeFiles/content/scholar/preferences.js b/chrome/chromeFiles/content/scholar/preferences.js
@@ -0,0 +1,25 @@
+var prefManager = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+var whateverBox;
+
+/*
+ To add a new preference:
+ * modify defaults/prefs.js
+ * add a control to prefs.xul
+ * in this document:
+ 1) add var above
+ 2) add lines to init() function
+ 3) add line to accept() function
+*/
+
+function init()
+{
+ whateverBox = document.getElementById('whateverBox');
+ whateverBox.checked = prefManager.getBoolPref('extensions.scholar.whatever');
+
+}
+
+function accept()
+{
+ prefManager.setBoolPref('extensions.scholar.whatever', whateverBox.checked);
+}
+\ No newline at end of file
diff --git a/chrome/chromeFiles/content/scholar/preferences.xul b/chrome/chromeFiles/content/scholar/preferences.xul
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+
+<dialog id="winMain" title="Scholar Preferences" style="min-width:400px;"
+ onload="init();" ondialogaccept="accept()"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<script src="preferences.js"/>
+<script src="include.js"/>
+
+<dialogheader id="header" title="Scholar" description="Scholar Preferences"/>
+
+<checkbox id="whateverBox" label="Whatever!"/>
+
+
+</dialog>
+\ No newline at end of file
diff --git a/chrome/chromeFiles/content/scholar/sidebar.js b/chrome/chromeFiles/content/scholar/sidebar.js
@@ -5,7 +5,7 @@ var dynamicBox;
Scholar.TreeView = function()
{
this._treebox = null;
- this._dataObjects = new Array();
+ this._dataItems = new Array();
this.rowCount = 0;
}
@@ -17,9 +17,9 @@ Scholar.TreeView.prototype.setTree = function(treebox)
var newRows = Scholar.Items.getTreeRows();
for(var i = 0; i < newRows.length; i++)
- this._insertItem(newRows[i], 0, i+1); //object ref, isContainerOpen, level
+ this._insertItem(newRows[i], 0, i+1); //item ref, isContainerOpen, level
- this.rowCount = this._dataObjects.length;
+ this.rowCount = this._dataItems.length;
}
Scholar.TreeView.prototype.getCellText = function(row, column)
@@ -45,9 +45,9 @@ Scholar.TreeView.prototype.getCellText = function(row, column)
}
Scholar.TreeView.prototype.isContainer = function(row) { return this._getItemAtRow(row).isFolder(); }
-Scholar.TreeView.prototype.isContainerOpen = function(row) { return this._dataObjects[row][1]; }
+Scholar.TreeView.prototype.isContainerOpen = function(row) { return this._dataItems[row][1]; }
Scholar.TreeView.prototype.isContainerEmpty = function(row) { return (this.isContainer(row) && this._getItemAtRow(row).isEmpty()); }
-Scholar.TreeView.prototype.getLevel = function(row) { return this._dataObjects[row][2]; }
+Scholar.TreeView.prototype.getLevel = function(row) { return this._dataItems[row][2]; }
Scholar.TreeView.prototype.getParentIndex = function(row)
{
@@ -77,7 +77,7 @@ Scholar.TreeView.prototype.toggleOpenState = function(row)
if(this.isContainerOpen(row))
{
- while((row + 1 < this._dataObjects.length) && (this.getLevel(row + 1) > thisLevel))
+ while((row + 1 < this._dataItems.length) && (this.getLevel(row + 1) > thisLevel))
{
this._deleteItem(row+1);
count--; //count is negative when closing a container because we are removing rows
@@ -94,8 +94,8 @@ Scholar.TreeView.prototype.toggleOpenState = function(row)
}
}
- this._dataObjects[row][1] = !this._dataObjects[row][1]; //toggle container open value
- this.rowCount = this._dataObjects.length;
+ this._dataItems[row][1] = !this._dataItems[row][1]; //toggle container open value
+ this.rowCount = this._dataItems.length;
this._treebox.rowCountChanged(row, count); //tell treebox to repaint these
}
@@ -104,24 +104,24 @@ Scholar.TreeView.prototype.selectionChanged = function()
{
if(this.selection.count == 1 && !this.isContainer(this.selection.currentIndex))
{
- populateObjectPane(this._getItemAtRow(this.selection.currentIndex));
- document.getElementById('object-pane').hidden = false;
+ viewSelectedItem();
+ document.getElementById('view-pane').hidden = false;
document.getElementById('tb-edit').hidden = false;
}
else
{
- document.getElementById('object-pane').hidden = true;
+ document.getElementById('view-pane').hidden = true;
document.getElementById('tb-edit').hidden = true;
}
}
-Scholar.TreeView.prototype._insertItem = function(item, level, beforeRow) { this._dataObjects.splice(beforeRow, 0, [item, false, level]); }
+Scholar.TreeView.prototype._insertItem = function(item, level, beforeRow) { this._dataItems.splice(beforeRow, 0, [item, false, level]); }
-Scholar.TreeView.prototype._deleteItem = function(row) { this._dataObjects.splice(row,1);; }
+Scholar.TreeView.prototype._deleteItem = function(row) { this._dataItems.splice(row,1);; }
-Scholar.TreeView.prototype._getItemAtRow = function(row) { return this._dataObjects[row][0]; }
+Scholar.TreeView.prototype._getItemAtRow = function(row) { return this._dataItems[row][0]; }
Scholar.TreeView.prototype.isSorted = function() { return false; }
Scholar.TreeView.prototype.isSeparator = function(row) { return false; }
Scholar.TreeView.prototype.isEditable = function(row, idx) { return false; }
@@ -139,10 +139,12 @@ Scholar.TreeView.prototype.canDrop = function(row, orient) { return !orient;
Scholar.TreeView.prototype.drop = function(row, orient) { }
*/
-function populateObjectPane(thisItem)
+function viewSelectedItem()
{
removeDynamicRows();
-
+
+ var thisItem = myTreeView._getItemAtRow(myTreeView.selection.currentIndex);
+
var fieldNames = getFullFieldList(thisItem);
for(var i = 0; i<fieldNames.length; i++)
@@ -150,7 +152,7 @@ function populateObjectPane(thisItem)
if(thisItem.getField(fieldNames[i]) != "")
{
var label = document.createElement("label");
- label.setAttribute("value",ScholarLocalizedStrings.getString("objectFields."+fieldNames[i])+":");
+ label.setAttribute("value",ScholarLocalizedStrings.getString("itemFields."+fieldNames[i])+":");
var valueElement = document.createElement("description");
valueElement.appendChild(document.createTextNode(thisItem.getField(fieldNames[i])));
@@ -192,7 +194,7 @@ function newItem()
function editSelectedItem()
{
- document.getElementById('view-pane').hidden = true;
+ document.getElementById('list-pane').hidden = true;
document.getElementById('edit-pane').hidden = false;
var thisItem = myTreeView._getItemAtRow(myTreeView.selection.currentIndex);
@@ -205,7 +207,7 @@ function editSelectedItem()
if(!thisItem.isPrimaryField(fieldNames[i]) || thisItem.isEditableField(fieldNames[i]))
{
var label = document.createElement("label");
- label.setAttribute("value",ScholarLocalizedStrings.getString("objectFields."+fieldNames[i])+":");
+ label.setAttribute("value",ScholarLocalizedStrings.getString("itemFields."+fieldNames[i])+":");
label.setAttribute("control","dynamic-field-"+i);
//create the textbox
@@ -271,15 +273,15 @@ function returnToTree(save)
//get fields, call data access methods
var valueElements = dynamicBox.getElementsByTagName("textbox"); //All elements of tagname 'textbox' should be the values of edits
for(var i=0; i<valueElements.length; i++)
- thisItem.setField(valueElements[i].getAttribute("fieldName"),valueElements[i].value,false);
+ thisItem.setField(valueElements[i].getAttribute("fieldName"),valueElements[i].value);
thisItem.save();
}
- document.getElementById('view-pane').hidden = false;
+ document.getElementById('list-pane').hidden = false;
document.getElementById('edit-pane').hidden = true;
- populateObjectPane(thisItem);
+ viewSelectedItem();
}
function init()
diff --git a/chrome/chromeFiles/content/scholar/sidebar.xul b/chrome/chromeFiles/content/scholar/sidebar.xul
@@ -12,7 +12,7 @@
<script src="sidebar.js"/>
<stringbundle id="scholar-strings" src="chrome://scholar/locale/scholar.properties"/>
- <vbox id="view-pane" flex="1">
+ <vbox id="list-pane" flex="1">
<tree
id="list-tree"
onselect="this.view.selectionChanged()"
@@ -41,7 +41,7 @@
</vbox>
- <vbox id="object-pane" hidden="true">
+ <vbox id="view-pane" hidden="true">
<grid>
<columns>
<column/>
diff --git a/chrome/chromeFiles/locale/en-US/scholar/scholar.properties b/chrome/chromeFiles/locale/en-US/scholar/scholar.properties
@@ -1,17 +1,17 @@
-objectFields.title = Title
-objectFields.dateAdded = Date Added
-objectFields.dateModified = Modified
-objectFields.source = Source
-objectFields.rights = Rights
+itemFields.title = Title
+itemFields.dateAdded = Date Added
+itemFields.dateModified = Modified
+itemFields.source = Source
+itemFields.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
+itemFields.series = Series
+itemFields.volume = Volume
+itemFields.number = Number
+itemFields.edition = Edition
+itemFields.place = Place
+itemFields.publisher = Publisher
+itemFields.year = Year
+itemFields.pages = Pages
+itemFields.ISBN = ISBN
+itemFields.publication = Publication
+itemFields.ISSN = ISSN
diff --git a/defaults/preferences/scholar.js b/defaults/preferences/scholar.js
@@ -0,0 +1,4 @@
+// These are DEFAULT prefs for the INSTALL. You will have to reinstall the extension to see differences!
+
+// Display internal shortcut
+pref("extensions.scholar.whatever", false);
diff --git a/install.rdf b/install.rdf
@@ -11,7 +11,8 @@
em:name="Firefox Scholar"
em:version="1.0"
em:creator="Center for History and New Media, George Mason University"
- em:homepageURL="http://chnm.gmu.edu">
+ em:homepageURL="http://chnm.gmu.edu"
+ em:optionsURL="chrome://scholar/content/preferences.xul">
<em:targetApplication RDF:resource="rdf:#$V4RG2"/>
</RDF:Description>
</RDF:RDF>