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:
David Norton 2006-06-19 15:00:13 +00:00
parent 4c34c592da
commit c345b90b9a
3 changed files with 164 additions and 103 deletions

View file

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

View file

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

View file

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