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:
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;