[interface] Preliminary note editing support.
[other] MetadataPane renamed ScholarItemPane.
This commit is contained in:
parent
fbcd247b09
commit
a7b35c0286
5 changed files with 86 additions and 70 deletions
|
@ -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; }
|
||||
|
|
|
@ -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++)
|
||||
|
@ -56,13 +59,22 @@ MetadataPane = new function()
|
|||
fieldNames.push(Scholar.ItemFields.getName(fields[i]));
|
||||
|
||||
for(var i = 0; i<fieldNames.length; i++)
|
||||
{
|
||||
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,createValueElement(_itemBeingEdited.getField(fieldNames[i]), editable ? fieldNames[i] : null));
|
||||
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();
|
||||
}
|
||||
|
||||
addEventListener("load", function(e) { MetadataPane.onLoad(e); }, false);
|
||||
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) { ScholarItemPane.onLoad(e); }, false);
|
||||
|
|
|
@ -5,9 +5,15 @@
|
|||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
|
||||
<script src="metadataPane.js"/>
|
||||
<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="MetadataPane.modifyCreator(document.popupNode.getAttribute('fieldname').split('-')[1],'typeID',event.explicitOriginalTarget.getAttribute('typeid'));"/>
|
||||
<popup id="creatorTypeMenu" position="after_start" oncommand="ScholarItemPane.modifyCreator(document.popupNode.getAttribute('fieldname').split('-')[1],'typeID',event.explicitOriginalTarget.getAttribute('typeid'));"/>
|
||||
</popupset>
|
||||
<grid>
|
||||
<columns>
|
||||
|
@ -19,4 +25,11 @@
|
|||
</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>
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue