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.
This commit is contained in:
David Norton 2006-06-05 13:56:59 +00:00
parent adfcc5cd73
commit 56b1e37c13
5 changed files with 77 additions and 25 deletions

View file

@ -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)

View file

@ -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");

View file

@ -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>

View file

@ -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>

View file

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