Contextual menus - Collections, Items.
Moved close button to a more sensible place. On Item Add: Clear search text, and select Info tab. Minor function renames.
This commit is contained in:
parent
4c34c592da
commit
c345b90b9a
3 changed files with 164 additions and 103 deletions
|
@ -15,12 +15,14 @@ var ScholarPane = new function()
|
||||||
this.newCollection = newCollection;
|
this.newCollection = newCollection;
|
||||||
this.onCollectionSelected = onCollectionSelected;
|
this.onCollectionSelected = onCollectionSelected;
|
||||||
this.itemSelected = itemSelected;
|
this.itemSelected = itemSelected;
|
||||||
this.deleteItemSelection = deleteItemSelection;
|
this.deleteSelectedItem = deleteSelectedItem;
|
||||||
this.deleteCollectionSelection = deleteCollectionSelection;
|
this.deleteSelectedCollection = deleteSelectedCollection;
|
||||||
this.renameSelectedCollection = renameSelectedCollection;
|
this.renameSelectedCollection = renameSelectedCollection;
|
||||||
this.search = search;
|
this.search = search;
|
||||||
this.getCollectionsView = getCollectionsView;
|
this.getCollectionsView = getCollectionsView;
|
||||||
this.getItemsView = getItemsView;
|
this.getItemsView = getItemsView;
|
||||||
|
this.buildCollectionContextMenu = buildCollectionContextMenu;
|
||||||
|
this.buildItemContextMenu = buildItemContextMenu;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Called when the window is open
|
* Called when the window is open
|
||||||
|
@ -72,10 +74,18 @@ var ScholarPane = new function()
|
||||||
*/
|
*/
|
||||||
function newItem(typeID)
|
function newItem(typeID)
|
||||||
{
|
{
|
||||||
|
if(document.getElementById('tb-search').value != "")
|
||||||
|
{
|
||||||
|
document.getElementById('tb-search').value = "";
|
||||||
|
document.getElementById('tb-search').doCommand();
|
||||||
|
}
|
||||||
|
|
||||||
var item = new Scholar.Item(typeID);
|
var item = new Scholar.Item(typeID);
|
||||||
item.save();
|
item.save();
|
||||||
if(itemsView && itemsView._itemGroup.isCollection())
|
if(itemsView && itemsView._itemGroup.isCollection())
|
||||||
itemsView._itemGroup.ref.addItem(item.getID());
|
itemsView._itemGroup.ref.addItem(item.getID());
|
||||||
|
|
||||||
|
document.getElementById('scholar-view-item').selectedIndex = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
function newCollection()
|
function newCollection()
|
||||||
|
@ -123,18 +133,18 @@ var ScholarPane = new function()
|
||||||
document.getElementById('scholar-view-item').hidden = true;
|
document.getElementById('scholar-view-item').hidden = true;
|
||||||
var label = document.getElementById('scholar-view-selected-label');
|
var label = document.getElementById('scholar-view-selected-label');
|
||||||
label.hidden = false;
|
label.hidden = false;
|
||||||
label.value = itemsView.selection.count + " items selected.";
|
label.value = itemsView.selection.count + " items selected";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteItemSelection()
|
function deleteSelectedItem()
|
||||||
{
|
{
|
||||||
if(itemsView && itemsView.selection.count > 0 && confirm(Scholar.getString('pane.items.delete')))
|
if(itemsView && itemsView.selection.count > 0 && confirm(Scholar.getString('pane.items.delete')))
|
||||||
itemsView.deleteSelection();
|
itemsView.deleteSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteCollectionSelection()
|
function deleteSelectedCollection()
|
||||||
{
|
{
|
||||||
if(collectionsView.selection.count > 0 && confirm(Scholar.getString('pane.collections.delete')))
|
if(collectionsView.selection.count > 0 && confirm(Scholar.getString('pane.collections.delete')))
|
||||||
collectionsView.deleteSelection();
|
collectionsView.deleteSelection();
|
||||||
|
@ -167,6 +177,37 @@ var ScholarPane = new function()
|
||||||
{
|
{
|
||||||
return itemsView;
|
return itemsView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function buildCollectionContextMenu()
|
||||||
|
{
|
||||||
|
var menu = document.getElementById('scholar-collectionmenu');
|
||||||
|
|
||||||
|
if(collectionsView.selection.count == 1 && !collectionsView._getItemAtRow(collectionsView.selection.currentIndex).isLibrary())
|
||||||
|
{
|
||||||
|
menu.childNodes[2].removeAttribute('disabled');
|
||||||
|
menu.childNodes[3].removeAttribute('disabled');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
menu.childNodes[2].setAttribute('disabled', true);
|
||||||
|
menu.childNodes[3].setAttribute('disabled', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildItemContextMenu()
|
||||||
|
{
|
||||||
|
var menu = document.getElementById('scholar-itemmenu');
|
||||||
|
|
||||||
|
if(itemsView && itemsView.selection.count > 0)
|
||||||
|
menu.childNodes[2].removeAttribute('disabled');
|
||||||
|
else
|
||||||
|
menu.childNodes[2].setAttribute('disabled', true);
|
||||||
|
|
||||||
|
if(itemsView && itemsView.selection.count > 1)
|
||||||
|
menu.childNodes[2].setAttribute('label', 'Remove Selected Items...');
|
||||||
|
else
|
||||||
|
menu.childNodes[2].setAttribute('label', 'Remove Selected Item...');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener("load", function(e) { ScholarPane.onLoad(e); }, false);
|
window.addEventListener("load", function(e) { ScholarPane.onLoad(e); }, false);
|
||||||
|
|
|
@ -20,100 +20,120 @@
|
||||||
</commandset>
|
</commandset>
|
||||||
|
|
||||||
<vbox id="appcontent">
|
<vbox id="appcontent">
|
||||||
<hbox id="scholar-pane" position="1" persist="height collapsed">
|
<vbox id="scholar-pane" position="1" persist="height collapsed">
|
||||||
<vbox persist="width" width="200" style="min-width: 150px;">
|
<popupset>
|
||||||
<toolbar>
|
<popup id="scholar-collectionmenu" onpopupshowing="ScholarPane.buildCollectionContextMenu();">
|
||||||
<toolbarbutton label="&toolbar.newCollection.label;" command="cmd_scholar_newCollection"/>
|
<menuitem label="&toolbar.newCollection.label;" command="cmd_scholar_newCollection"/>
|
||||||
<toolbarbutton id="tb-rename" label="&toolbar.renameCollection.label;" oncommand="ScholarPane.renameSelectedCollection();" disabled="true"/>
|
<menuseparator/>
|
||||||
</toolbar>
|
<menuitem label="&toolbar.renameCollection.label;" oncommand="ScholarPane.renameSelectedCollection();"/>
|
||||||
<tree id="collections-tree" hidecolumnpicker="true"
|
<menuitem label="Remove Project..." oncommand="ScholarPane.deleteSelectedCollection();"/>
|
||||||
onselect="ScholarPane.onCollectionSelected();" seltype="single"
|
</popup>
|
||||||
ondragdrop="nsDragAndDrop.drop(event,ScholarPane.getCollectionsView())"
|
<popup id="scholar-itemmenu" onpopupshowing="ScholarPane.buildItemContextMenu();">
|
||||||
ondraggesture="if (event.target.localName == 'treechildren') nsDragAndDrop.startDrag(event,ScholarPane.getCollectionsView());"
|
<menuitem label="&toolbar.newItem.label;" command="cmd_scholar_newItem"/>
|
||||||
onkeypress="if(event.keyCode == event.DOM_VK_BACK_SPACE || event.keyCode == event.DOM_VK_DELETE){ ScholarPane.deleteCollectionSelection(); return false; }"
|
<menuseparator/>
|
||||||
flex="1">
|
<menuitem label="Remove Item..." oncommand="ScholarPane.deleteSelectedItem();"/>
|
||||||
<treecols>
|
</popup>
|
||||||
<treecol
|
</popupset>
|
||||||
id="name_column"
|
<toolbar align="end">
|
||||||
label="&collections.name_column;"
|
<label value="Firefox Scholar" style="font-size: larger;"/>
|
||||||
flex="1"
|
<label value="1.0 Alpha"/>
|
||||||
primary="true"/>
|
<spacer flex="1"/>
|
||||||
</treecols>
|
<toolbarbutton class="tabs-closebutton" oncommand="ScholarPane.toggleDisplay()"/>
|
||||||
<treechildren/>
|
</toolbar>
|
||||||
</tree>
|
<hbox flex="1">
|
||||||
</vbox>
|
<vbox persist="width" width="200" style="min-width: 150px;">
|
||||||
<splitter id="scholar-tree-splitter" resizebefore="closest" resizeafter="closest"/>
|
<toolbar>
|
||||||
<vbox persist="width" flex="1" style="min-width: 300px;">
|
<toolbarbutton label="&toolbar.newCollection.label;" command="cmd_scholar_newCollection"/>
|
||||||
<toolbar align="center">
|
<toolbarbutton id="tb-rename" label="&toolbar.renameCollection.label;" oncommand="ScholarPane.renameSelectedCollection();" disabled="true"/>
|
||||||
<toolbarbutton id="tb-add" label="&toolbar.newItem.label;" type="menu">
|
</toolbar>
|
||||||
<menupopup>
|
<tree id="collections-tree" hidecolumnpicker="true" context="scholar-collectionmenu"
|
||||||
</menupopup>
|
onselect="ScholarPane.onCollectionSelected();" seltype="single"
|
||||||
</toolbarbutton>
|
ondragdrop="nsDragAndDrop.drop(event,ScholarPane.getCollectionsView())"
|
||||||
<spacer flex="1"/>
|
ondraggesture="if (event.target.localName == 'treechildren') nsDragAndDrop.startDrag(event,ScholarPane.getCollectionsView());"
|
||||||
<label value="&toolbar.search.label;" control="tb-search"/>
|
onkeypress="if(event.keyCode == event.DOM_VK_BACK_SPACE || event.keyCode == event.DOM_VK_DELETE){ ScholarPane.deleteSelectedCollection(); return false; }"
|
||||||
<textbox id="tb-search" type="timed" timeout="500" command="cmd_scholar_search"/>
|
flex="1">
|
||||||
<toolbarbutton class="tabs-closebutton" oncommand="ScholarPane.toggleDisplay()"/>
|
<treecols>
|
||||||
</toolbar>
|
<treecol
|
||||||
<tree
|
id="name_column"
|
||||||
id="items-tree"
|
label="&collections.name_column;"
|
||||||
enableColumnDrag="true" onkeypress="if(event.keyCode == event.DOM_VK_BACK_SPACE || event.keyCode == event.DOM_VK_DELETE){ ScholarPane.deleteItemSelection(); return false; }"
|
flex="1"
|
||||||
onselect="ScholarPane.itemSelected();"
|
primary="true"/>
|
||||||
ondraggesture="if (event.target.localName == 'treechildren') nsDragAndDrop.startDrag(event,ScholarPane.getItemsView());"
|
</treecols>
|
||||||
ondragover="nsDragAndDrop.dragOver(event,ScholarPane.getItemsView())"
|
<treechildren/>
|
||||||
ondragdrop="nsDragAndDrop.drop(event,ScholarPane.getItemsView())"
|
</tree>
|
||||||
flex="1">
|
</vbox>
|
||||||
<treecols>
|
<splitter id="scholar-tree-splitter" resizebefore="closest" resizeafter="closest"/>
|
||||||
<treecol
|
<vbox persist="width" flex="1" style="min-width: 300px;">
|
||||||
id="typeIcon"
|
<toolbar align="center">
|
||||||
label="&items.type_column;"
|
<toolbarbutton id="tb-add" label="&toolbar.newItem.label;" type="menu">
|
||||||
width="40" persist="width ordinal hidden sortActive sortDirection"/>
|
<menupopup>
|
||||||
<splitter class="tree-splitter"/>
|
</menupopup>
|
||||||
<treecol
|
</toolbarbutton>
|
||||||
id="title"
|
<spacer flex="1"/>
|
||||||
label="&items.title_column;"
|
<label value="&toolbar.search.label;" control="tb-search"/>
|
||||||
flex="4" persist="width ordinal hidden sortActive sortDirection"/>
|
<textbox id="tb-search" type="timed" timeout="500" command="cmd_scholar_search"/>
|
||||||
<splitter class="tree-splitter"/>
|
</toolbar>
|
||||||
<treecol
|
<tree
|
||||||
id="firstCreator"
|
id="items-tree" context="scholar-itemmenu"
|
||||||
label="&items.creator_column;"
|
enableColumnDrag="true" onkeypress="if(event.keyCode == event.DOM_VK_BACK_SPACE || event.keyCode == event.DOM_VK_DELETE){ ScholarPane.deleteSelectedItem(); return false; }"
|
||||||
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
onselect="ScholarPane.itemSelected();"
|
||||||
<splitter class="tree-splitter"/>
|
ondraggesture="if (event.target.localName == 'treechildren') nsDragAndDrop.startDrag(event,ScholarPane.getItemsView());"
|
||||||
<treecol
|
ondragover="nsDragAndDrop.dragOver(event,ScholarPane.getItemsView())"
|
||||||
id="numNotes"
|
ondragdrop="nsDragAndDrop.drop(event,ScholarPane.getItemsView())"
|
||||||
label="&items.numNotes_column;"
|
flex="1">
|
||||||
persist="width ordinal hidden sortActive sortDirection"/>
|
<treecols>
|
||||||
<splitter class="tree-splitter"/>
|
<treecol
|
||||||
<treecol
|
id="typeIcon"
|
||||||
id="source" hidden="true"
|
label="&items.type_column;"
|
||||||
label="&items.source_column;"
|
width="40" persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
<splitter class="tree-splitter"/>
|
||||||
<splitter class="tree-splitter"/>
|
<treecol
|
||||||
<treecol
|
id="title"
|
||||||
id="rights" hidden="true"
|
label="&items.title_column;"
|
||||||
label="&items.rights_column;"
|
flex="4" persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
<splitter class="tree-splitter"/>
|
||||||
<splitter class="tree-splitter"/>
|
<treecol
|
||||||
<treecol
|
id="firstCreator"
|
||||||
id="dateAdded" hidden="true"
|
label="&items.creator_column;"
|
||||||
label="&items.dateAdded_column;"
|
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
<splitter class="tree-splitter"/>
|
||||||
<splitter class="tree-splitter"/>
|
<treecol
|
||||||
<treecol
|
id="numNotes"
|
||||||
id="dateModified" hidden="true"
|
label="&items.numNotes_column;"
|
||||||
label="&items.dateModified_column;"
|
persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
<splitter class="tree-splitter"/>
|
||||||
</treecols>
|
<treecol
|
||||||
|
id="source" hidden="true"
|
||||||
<treechildren/>
|
label="&items.source_column;"
|
||||||
</tree>
|
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
|
<splitter class="tree-splitter"/>
|
||||||
</vbox>
|
<treecol
|
||||||
<splitter id="scholar-view-splitter" collapse="after"><grippy/></splitter>
|
id="rights" hidden="true"
|
||||||
<box width="300" style="min-width: 300px;" pack="center" align="center">
|
label="&items.rights_column;"
|
||||||
<label id="scholar-view-selected-label" style="text-align: center;"/>
|
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
<tabbox id="scholar-view-item" hidden="true" flex="1"/>
|
<splitter class="tree-splitter"/>
|
||||||
</box>
|
<treecol
|
||||||
</hbox>
|
id="dateAdded" hidden="true"
|
||||||
|
label="&items.dateAdded_column;"
|
||||||
|
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
|
<splitter class="tree-splitter"/>
|
||||||
|
<treecol
|
||||||
|
id="dateModified" hidden="true"
|
||||||
|
label="&items.dateModified_column;"
|
||||||
|
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
|
</treecols>
|
||||||
|
|
||||||
|
<treechildren/>
|
||||||
|
</tree>
|
||||||
|
|
||||||
|
</vbox>
|
||||||
|
<splitter id="scholar-view-splitter" collapse="after"><grippy/></splitter>
|
||||||
|
<box width="300" style="min-width: 300px;" pack="center" align="center">
|
||||||
|
<label id="scholar-view-selected-label" style="text-align: center;"/>
|
||||||
|
<tabbox id="scholar-view-item" hidden="true" flex="1"/>
|
||||||
|
</box>
|
||||||
|
</hbox>
|
||||||
|
</vbox>
|
||||||
<splitter id="scholar-splitter" resizebefore="closest" resizeafter="closest" position="2" persist="collapsed"/>
|
<splitter id="scholar-splitter" resizebefore="closest" resizeafter="closest" position="2" persist="collapsed"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
pane.items.delete = Are you sure you want to delete the selected item?
|
pane.items.delete = Are you sure you want to delete the selected item?
|
||||||
pane.items.delete.multiple = Are you sure you want to delete the selected items?
|
pane.items.delete.multiple = Are you sure you want to delete the selected items?
|
||||||
pane.collections.delete = Are you sure you want to delete the selected collection?
|
pane.collections.delete = Are you sure you want to delete the selected project?
|
||||||
pane.collections.delete.multiple = Are you sure you want to delete the selected collections?
|
pane.collections.delete.multiple = Are you sure you want to delete the selected projects?
|
||||||
pane.collections.rename = Rename collection:
|
pane.collections.rename = Rename Project:
|
||||||
|
|
||||||
pane.collections.library = Library
|
pane.collections.library = Library
|
||||||
pane.collections.untitled = Untitled Collection
|
pane.collections.untitled = Untitled Project
|
||||||
|
|
||||||
metadata.savechanges = Do you want to save changes to '%1'?
|
metadata.savechanges = Do you want to save changes to '%1'?
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue