www

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

commit 56b1e37c139b1f3056de9cf62096d6318d009551
parent adfcc5cd732acd700f99c8159540b0f4b14d1931
Author: David Norton <david@nortoncrew.com>
Date:   Mon,  5 Jun 2006 13:56:59 +0000

New items are properly displayed on a notify()
New items are automatically selected.

When adding a new item, or editing an item without a creator, display an empty creator box.

Edit button changed from toggling to Save/Cancel buttons.
Simple "Do you want to save changes?" dialog if you select a different item while in edit mode.

Diffstat:
Mchrome/chromeFiles/content/scholar/itemTreeView.js | 6+++++-
Mchrome/chromeFiles/content/scholar/metadataPane.js | 73+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
Mchrome/chromeFiles/content/scholar/metadataPane.xul | 4+++-
Mchrome/chromeFiles/content/scholar/overlay.xul | 2+-
Mchrome/chromeFiles/skin/default/scholar/overlay.css | 17+++++++++++++++++
5 files changed, 77 insertions(+), 25 deletions(-)

diff --git a/chrome/chromeFiles/content/scholar/itemTreeView.js b/chrome/chromeFiles/content/scholar/itemTreeView.js @@ -196,7 +196,7 @@ Scholar.ItemTreeView.prototype.notify = function(action, type, ids) if(this._itemGroup.isLibrary() || item.inCollection(this.getCollectionID())) { this._showItem(item,this.rowCount); - this._treebox.rowCountChanged(this.rowCount,1); + this._treebox.rowCountChanged(this.rowCount-1,1); } madeChanges = true; @@ -209,6 +209,10 @@ Scholar.ItemTreeView.prototype.notify = function(action, type, ids) if(madeChanges) this._refreshHashMap(); + + //Select last add + if(action == 'add' && item) + this.selection.select(this._itemRowMap[item.getID()]); } Scholar.ItemTreeView.prototype.canDrop = function(index, orient) diff --git a/chrome/chromeFiles/content/scholar/metadataPane.js b/chrome/chromeFiles/content/scholar/metadataPane.js @@ -3,6 +3,9 @@ MetadataPane = new function() var _dynamicFields; var _dynamicCreators; var _editButton; + var _cancelButton; + var _saveButton; + var _creatorsToolbar; var _itemBeingEdited; var _creatorTypes = Scholar.CreatorTypes.getTypes(); @@ -20,20 +23,35 @@ MetadataPane = new function() _dynamicFields = document.getElementById('editpane-dynamic-fields'); _dynamicCreators = document.getElementById('editpane-dynamic-creators'); _editButton = document.getElementById('metadata-pane-edit-button'); + _cancelButton = document.getElementById('metadata-pane-cancel-button'); + _saveButton = document.getElementById('metadata-pane-save-button'); + _creatorsToolbar = document.getElementById('metadata-creators-toolbar'); return true; } /* - * Dynamically loads an item + * Loads an item */ function viewItem(thisItem) - { + { + if(_editButton.hidden) + toggleEdit(confirm("Save changes to '"+_itemBeingEdited.getField('title')+"'?")); + + _itemBeingEdited = thisItem; + + reloadFields(); + + } + + function reloadFields() + { removeDynamicRows(_dynamicFields); removeDynamicRows(_dynamicCreators); + thisItem = _itemBeingEdited; var fieldNames = getFullFieldList(thisItem); - var editingMode = _editButton.checked; + var editingMode = _editButton.hidden; for(var i = 0; i<fieldNames.length; i++) { @@ -44,33 +62,43 @@ MetadataPane = new function() addDynamicField(Scholar.getString("itemFields."+fieldNames[i])+":",rowValue,editingMode ? fieldNames[i] : null); } } - - for(var i = 0, len=thisItem.numCreators(); i<len; i++) + + if(thisItem.numCreators() > 0) { - var creator = thisItem.getCreator(i); - if(_editButton.checked) + for(var i = 0, len=thisItem.numCreators(); i<len; i++) { - addCreator(creator['firstName'],creator['lastName'],creator['creatorTypeID']); - } - else - { - addDynamicField(Scholar.getString('creatorTypes.'+Scholar.CreatorTypes.getTypeName(creator['creatorTypeID']))+":", - creator['firstName']+' '+creator['lastName'], - false); + var creator = thisItem.getCreator(i); + if(editingMode) + { + addCreator(creator['firstName'],creator['lastName'],creator['creatorTypeID']); + } + else + { + addDynamicField(Scholar.getString('creatorTypes.'+Scholar.CreatorTypes.getTypeName(creator['creatorTypeID']))+":", + creator['firstName']+' '+creator['lastName'], + false); + } } } - - _itemBeingEdited = thisItem; + else if(editingMode) + { + //display a empty creator box if editing, and if there are no creators + addCreator(); + } } - function toggleEdit() + function toggleEdit(save) { - if(_editButton.checked) + if(_editButton.hidden && save) saveItem(); - _editButton.checked = !_editButton.checked; - document.getElementById('metadata-creators-toolbar').hidden = !_editButton.checked; - viewItem(_itemBeingEdited); + _cancelButton.hidden = _editButton.hidden; + _saveButton.hidden = _editButton.hidden; + _creatorsToolbar.hidden = _editButton.hidden; + + _editButton.hidden = !_editButton.hidden; + + reloadFields(); } function saveItem() @@ -133,6 +161,7 @@ MetadataPane = new function() } var row = document.createElement("row"); + row.align="center"; row.appendChild(label); row.appendChild(valueElement); _dynamicFields.appendChild(row); @@ -173,7 +202,7 @@ MetadataPane = new function() var add = document.createElement("toolbarbutton"); add.setAttribute("label","+"); - remove.setAttribute("class","addremove"); + add.setAttribute("class","addremove"); add.setAttribute("oncommand","MetadataPane.addCreator();"); var row = document.createElement("row"); diff --git a/chrome/chromeFiles/content/scholar/metadataPane.xul b/chrome/chromeFiles/content/scholar/metadataPane.xul @@ -18,7 +18,7 @@ <toolbar id="metadata-creators-toolbar" hidden="true"> <label value="Creators"/> <spacer flex="1"/> - <toolbarbutton label="+" oncommand="MetadataPane.addCreator()"/> + <toolbarbutton label="+" oncommand="MetadataPane.addCreator()" class="addremove"/> </toolbar> <grid> <columns> @@ -35,6 +35,8 @@ <spacer flex="1"/> <toolbar id="metadata-toolbar"> <toolbarbutton id="metadata-pane-edit-button" label="Edit" oncommand="MetadataPane.toggleEdit()"/> + <toolbarbutton id="metadata-pane-cancel-button" label="Cancel" oncommand="MetadataPane.toggleEdit()" hidden="true"/> + <toolbarbutton id="metadata-pane-save-button" label="Save" oncommand="MetadataPane.toggleEdit(true)" hidden="true"/> <spacer flex="1" /> </toolbar> </vbox> diff --git a/chrome/chromeFiles/content/scholar/overlay.xul b/chrome/chromeFiles/content/scholar/overlay.xul @@ -34,7 +34,7 @@ <spacer flex="1"/> <toolbarbutton class="tabs-closebutton" oncommand="ScholarPane.toggleView('notes')"/> </toolbar> - <textbox value="Notes.... lorem ispum delorum..." multiline="true" flex="1"/> + <textbox multiline="true" flex="1" disabled="true"/> </vbox> </vbox> </window> diff --git a/chrome/chromeFiles/skin/default/scholar/overlay.css b/chrome/chromeFiles/skin/default/scholar/overlay.css @@ -90,11 +90,28 @@ tree #items-tree border-bottom: none; } +#metadata-toolbar toolbarbutton +{ + color: blue; +} + +#metadata-toolbar toolbarbutton:hover +{ + text-decoration: underline; +} + #scholar-metadata .addremove { font-weight: bold; + color: blue; } +#scholar-metadata .addremove:hover +{ + text-decoration: underline; +} + + #scholar-notes { height: 100px;