www

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

commit a7b35c028650a59257d4af4598d3f30fc338bef7
parent fbcd247b0926256f01109e0f25107a5abaadad1e
Author: David Norton <david@nortoncrew.com>
Date:   Fri,  9 Jun 2006 15:52:40 +0000

[interface] Preliminary note editing support.
[other] MetadataPane renamed ScholarItemPane.

Diffstat:
Mchrome/chromeFiles/content/scholar/itemTreeView.js | 10+++++-----
Mchrome/chromeFiles/content/scholar/metadataPane.js | 87++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
Mchrome/chromeFiles/content/scholar/metadataPane.xul | 41+++++++++++++++++++++++++++--------------
Mchrome/chromeFiles/content/scholar/overlay.js | 4++--
Mchrome/chromeFiles/content/scholar/overlay.xul | 14+-------------
5 files changed, 86 insertions(+), 70 deletions(-)

diff --git a/chrome/chromeFiles/content/scholar/itemTreeView.js b/chrome/chromeFiles/content/scholar/itemTreeView.js @@ -30,7 +30,6 @@ Scholar.ItemTreeView.prototype.refresh = function() this._refreshHashMap(); } -//CALLED BY DATA LAYER ON CHANGE: Scholar.ItemTreeView.prototype.notify = function(action, type, ids) { var madeChanges = false; @@ -246,10 +245,11 @@ Scholar.ItemTreeView.prototype._getItemAtRow = function(row) return this._dataItems[row]; } +/* + * Create hash map of item ids to row indexes + */ Scholar.ItemTreeView.prototype._refreshHashMap = function() -{ - // Create hash map of item ids to row indexes - +{ this._itemRowMap = new Array(); for(var i=0; i < this.rowCount; i++) this._itemRowMap[this._getItemAtRow(i).getID()] = i; @@ -303,7 +303,7 @@ Scholar.ItemTreeView.prototype.getSupportedFlavours = function () Scholar.ItemTreeView.prototype.onDragOver = function (evt,dropdata,session) { } Scholar.ItemTreeView.prototype.onDrop = function (evt,dropdata,session) { } -//More functions we have to include for TreeView +/* MORE TREEVIEW FUNCTIONS THAT HAVE TO BE HERE */ Scholar.ItemTreeView.prototype.isSeparator = function(row) { return false; } Scholar.ItemTreeView.prototype.isContainer = function(row) { return false; } diff --git a/chrome/chromeFiles/content/scholar/metadataPane.js b/chrome/chromeFiles/content/scholar/metadataPane.js @@ -1,8 +1,9 @@ -MetadataPane = new function() +ScholarItemPane = new function() { var _dynamicFields; var _creatorTypeMenu; var _beforeRow; + var _notesPane; var _creatorCount; @@ -11,15 +12,17 @@ MetadataPane = new function() this.onLoad = onLoad; this.viewItem = viewItem; this.addCreatorRow = addCreatorRow; - this.modifyCreator = modifyCreator; this.removeCreator = removeCreator; this.showEditor = showEditor; this.hideEditor = hideEditor; + this.modifyField = modifyField; + this.modifyCreator = modifyCreator; function onLoad() { _dynamicFields = document.getElementById('editpane-dynamic-fields'); _creatorTypeMenu = document.getElementById('creatorTypeMenu'); + _notesPane = document.getElementById('scholar-notes'); var creatorTypes = Scholar.CreatorTypes.getTypes(); for(var i = 0; i < creatorTypes.length; i++) @@ -57,12 +60,21 @@ MetadataPane = new function() for(var i = 0; i<fieldNames.length; i++) { - var editable = (!_itemBeingEdited.isPrimaryField(fieldNames[i]) || _itemBeingEdited.isEditableField(fieldNames[i])); - - var label = document.createElement("label"); - label.setAttribute("value",Scholar.getString("itemFields."+fieldNames[i])+":"); - - addDynamicRow(label,createValueElement(_itemBeingEdited.getField(fieldNames[i]), editable ? fieldNames[i] : null)); + if(fieldNames[i] != 'notes') + { + var editable = (!_itemBeingEdited.isPrimaryField(fieldNames[i]) || _itemBeingEdited.isEditableField(fieldNames[i])); + + var valueElement = createValueElement(_itemBeingEdited.getField(fieldNames[i]), editable ? fieldNames[i] : null); + + var label = document.createElement("label"); + label.setAttribute("value",Scholar.getString("itemFields."+fieldNames[i])+":"); + + addDynamicRow(label,valueElement); + } + else + { + _notesPane.value = _itemBeingEdited.getField(fieldNames[i]); + } } _beforeRow = _dynamicFields.firstChild.nextSibling; @@ -114,13 +126,13 @@ MetadataPane = new function() var removeButton = document.createElement('toolbarbutton'); removeButton.setAttribute("label","-"); removeButton.setAttribute("class","addremove"); - removeButton.setAttribute("oncommand","MetadataPane.removeCreator("+_creatorCount+")"); + removeButton.setAttribute("oncommand","ScholarItemPane.removeCreator("+_creatorCount+")"); row.appendChild(removeButton); var addButton = document.createElement('toolbarbutton'); addButton.setAttribute("label","+"); addButton.setAttribute("class","addremove"); - addButton.setAttribute("oncommand","MetadataPane.addCreatorRow('','',1);"); + addButton.setAttribute("oncommand","ScholarItemPane.addCreatorRow('','',1);"); row.appendChild(addButton); _creatorCount++; @@ -135,7 +147,7 @@ MetadataPane = new function() if(fieldName) { valueElement.setAttribute('fieldname',fieldName); - valueElement.setAttribute('onclick', 'MetadataPane.showEditor(this);'); + valueElement.setAttribute('onclick', 'ScholarItemPane.showEditor(this);'); } return valueElement; } @@ -147,24 +159,6 @@ MetadataPane = new function() reloadFields(); } - function modifyCreator(index, field, value) - { - var creator = _itemBeingEdited.getCreator(index); - var firstName = creator['firstName']; - var lastName = creator['lastName']; - var typeID = creator['typeID']; - - if(field == 'firstName') - firstName = value; - else if(field == 'lastName') - lastName = value; - else if(field == 'typeID') - typeID = value; - - _itemBeingEdited.setCreator(index, firstName, lastName, typeID); - _itemBeingEdited.save(); - } - function showEditor(elem) { var fieldName = elem.getAttribute('fieldname'); @@ -190,8 +184,8 @@ MetadataPane = new function() box.replaceChild(t,elem); t.select(); - t.setAttribute('onblur',"MetadataPane.hideEditor(this, true);"); - t.setAttribute('onkeypress','if(event.keyCode == event.DOM_VK_RETURN) document.commandDispatcher.focusedElement.blur(); else if(event.keyCode == event.DOM_VK_ESCAPE) MetadataPane.hideEditor(document.commandDispatcher.focusedElement, false);'); //for some reason I can't just say this.blur(); + t.setAttribute('onblur',"ScholarItemPane.hideEditor(this, true);"); + t.setAttribute('onkeypress','if(event.keyCode == event.DOM_VK_RETURN) document.commandDispatcher.focusedElement.blur(); else if(event.keyCode == event.DOM_VK_ESCAPE) ScholarItemPane.hideEditor(document.commandDispatcher.focusedElement, false);'); //for some reason I can't just say this.blur(); } function hideEditor(t, saveChanges) @@ -212,10 +206,7 @@ MetadataPane = new function() else { if(saveChanges) - { - _itemBeingEdited.setField(fieldName,value); - _itemBeingEdited.save(); - } + modifyField(fieldName,value); elem = createValueElement(_itemBeingEdited.getField(fieldName),fieldName); } @@ -224,6 +215,30 @@ MetadataPane = new function() box.replaceChild(elem,textbox); } + + function modifyField(field, value) + { + _itemBeingEdited.setField(field,value); + _itemBeingEdited.save(); + } + + function modifyCreator(index, field, value) + { + var creator = _itemBeingEdited.getCreator(index); + var firstName = creator['firstName']; + var lastName = creator['lastName']; + var typeID = creator['typeID']; + + if(field == 'firstName') + firstName = value; + else if(field == 'lastName') + lastName = value; + else if(field == 'typeID') + typeID = value; + + _itemBeingEdited.setCreator(index, firstName, lastName, typeID); + _itemBeingEdited.save(); + } } -addEventListener("load", function(e) { MetadataPane.onLoad(e); }, false); +addEventListener("load", function(e) { ScholarItemPane.onLoad(e); }, false); diff --git a/chrome/chromeFiles/content/scholar/metadataPane.xul b/chrome/chromeFiles/content/scholar/metadataPane.xul @@ -5,18 +5,31 @@ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script src="metadataPane.js"/> - <vbox id="scholar-metadata"> - <popupset> - <popup id="creatorTypeMenu" position="after_start" oncommand="MetadataPane.modifyCreator(document.popupNode.getAttribute('fieldname').split('-')[1],'typeID',event.explicitOriginalTarget.getAttribute('typeid'));"/> - </popupset> - <grid> - <columns> - <column/> - <column flex="1"/> - </columns> - - <rows id="editpane-dynamic-fields"> - </rows> - </grid> - </vbox> + <tabbox id="scholar-view-item"> + <tabs> + <tab label="Info"/> + <tab label="Notes"/> + </tabs> + <tabpanels flex="1"> + <vbox id="scholar-metadata"> + <popupset> + <popup id="creatorTypeMenu" position="after_start" oncommand="ScholarItemPane.modifyCreator(document.popupNode.getAttribute('fieldname').split('-')[1],'typeID',event.explicitOriginalTarget.getAttribute('typeid'));"/> + </popupset> + <grid> + <columns> + <column/> + <column flex="1"/> + </columns> + + <rows id="editpane-dynamic-fields"> + </rows> + </grid> + </vbox> + <vbox> + <textbox id="scholar-notes" multiline="true" flex="1" + fieldname="notes" onblur="ScholarItemPane.modifyField('notes',this.value);"/> + <button label="Save" oncommand="ScholarItemPane.modifyField('notes',document.getElementById('scholar-notes').value);"/> + </vbox> + </tabpanels> + </tabbox> </overlay> \ No newline at end of file diff --git a/chrome/chromeFiles/content/scholar/overlay.js b/chrome/chromeFiles/content/scholar/overlay.js @@ -72,7 +72,7 @@ var ScholarPane = new function() */ function newItem(typeID) { - MetadataPane.viewItem(new Scholar.Item(typeID)); + ScholarItemPane.viewItem(new Scholar.Item(typeID)); document.getElementById('scholar-view-item').hidden = false; document.getElementById('scholar-view-splitter').hidden = false; } @@ -112,7 +112,7 @@ var ScholarPane = new function() { var item = itemsView._getItemAtRow(itemsView.selection.currentIndex); - MetadataPane.viewItem(item); + ScholarItemPane.viewItem(item); document.getElementById('scholar-view-item').hidden = false; document.getElementById('scholar-view-splitter').hidden = false; diff --git a/chrome/chromeFiles/content/scholar/overlay.xul b/chrome/chromeFiles/content/scholar/overlay.xul @@ -98,19 +98,7 @@ </vbox> <separator orient="vertical" class="thin" id="scholar-view-splitter" hidden="true"/> - <tabbox id="scholar-view-item" hidden="true" flex="2" style="min-width: 300px; max-width: 300px;"> - <tabs> - <tab label="Metadata"/> - <tab label="Notes"/> - </tabs> - <tabpanels flex="1"> - <vbox id="scholar-metadata"> - </vbox> - <vbox id="scholar-notes"> - <textbox multiline="true" flex="1" disabled="true"/> - </vbox> - </tabpanels> - </tabbox> + <tabbox id="scholar-view-item" hidden="true" flex="2" style="min-width: 300px; max-width: 300px;"/> </hbox> <splitter id="scholar-splitter" resizebefore="closest" resizeafter="closest" position="2" persist="collapsed"/> </vbox>