www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit c1241b608a0eba10ba1ffb06e5c085fb213a178f
parent b9a5c7dc3815d52f60e41b38e3e771db04cf453d
Author: David Norton <david@nortoncrew.com>
Date:   Thu,  1 Jun 2006 16:40:43 +0000

Removed organizeWindow.xul/js (All this functionality is in overlay)
Removed view.xul/js/css (see above)
Enabled deletion (exception when deleting from library)

Diffstat:
Mchrome/chromeFiles/content/scholar/itemTreeView.js | 13+++++++++++--
Mchrome/chromeFiles/content/scholar/metadataPane.js | 4++--
Mchrome/chromeFiles/content/scholar/metadataPane.xul | 2+-
Dchrome/chromeFiles/content/scholar/organizeWindow.js | 109-------------------------------------------------------------------------------
Dchrome/chromeFiles/content/scholar/organizeWindow.xul | 180-------------------------------------------------------------------------------
Mchrome/chromeFiles/content/scholar/overlay.js | 33++++++++++++++++++++++++++++++---
Mchrome/chromeFiles/content/scholar/overlay.xul | 21+++++++++++++++++++--
Dchrome/chromeFiles/content/scholar/view.js | 49-------------------------------------------------
Dchrome/chromeFiles/content/scholar/view.xul | 27---------------------------
Mchrome/chromeFiles/skin/default/scholar/overlay.css | 43+++++++++++++++++++++++++++++++++++++++++++
Dchrome/chromeFiles/skin/default/scholar/view.css | 42------------------------------------------
11 files changed, 106 insertions(+), 417 deletions(-)

diff --git a/chrome/chromeFiles/content/scholar/itemTreeView.js b/chrome/chromeFiles/content/scholar/itemTreeView.js @@ -100,8 +100,11 @@ Scholar.ItemTreeView.prototype.deleteSelection = function() this._treebox.beginUpdateBatch(); for (var i=0; i<rows.length; i++) { - //erase item/folder from DB - this._getItemAtRow(rows[i]-i).erase(); + if(this._itemGroup.isLibrary()) //erase item from DB + this._getItemAtRow(rows[i]-i).erase(); + else if(this._itemGroup.isCollection()) + this._itemGroup.ref.removeItem(this._getItemAtRow(rows[i]-i).getID()); + //remove row from tree: this._hideItem(rows[i]-i); @@ -112,6 +115,12 @@ Scholar.ItemTreeView.prototype.deleteSelection = function() this._refreshHashMap(); } +Scholar.ItemTreeView.prototype.searchText = function(search) +{ + //does nothing, right now. +// this._refreshHashMap(); +} + Scholar.ItemTreeView.prototype._refreshHashMap = function() { // Create hash map of folder and object ids to row indexes diff --git a/chrome/chromeFiles/content/scholar/metadataPane.js b/chrome/chromeFiles/content/scholar/metadataPane.js @@ -15,7 +15,7 @@ MetadataPane = new function() function init() { - _metadataPane = document.getElementById('metadata-pane'); + _metadataPane = document.getElementById('scholar-metadata'); _dynamicFields = document.getElementById('editpane-dynamic-fields'); _dynamicCreators = document.getElementById('editpane-dynamic-creators'); _editButton = document.getElementById('metadata-pane-edit-button'); @@ -194,4 +194,4 @@ MetadataPane = new function() } } -document.addEventListener("load", function(e) { MetadataPane.init(e); }, false); +addEventListener("load", function(e) { MetadataPane.init(e); }, false); diff --git a/chrome/chromeFiles/content/scholar/metadataPane.xul b/chrome/chromeFiles/content/scholar/metadataPane.xul @@ -5,7 +5,7 @@ <script src="metadataPane.js"/> - <vbox id="metadata"> + <vbox id="scholar-metadata"> <grid> <columns> <column/> diff --git a/chrome/chromeFiles/content/scholar/organizeWindow.js b/chrome/chromeFiles/content/scholar/organizeWindow.js @@ -1,108 +0,0 @@ -var foldersView; -var itemsView; -var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService); - -function init() -{ - foldersView = new Scholar.TreeView(0); //pass params here? - document.getElementById('folders-tree').view = foldersView; - itemsView = new Scholar.ItemTreeView(0); - document.getElementById('items-tree').view = itemsView; - - var addMenu = document.getElementById('tb-add').firstChild; - var itemTypes = Scholar.ItemTypes.getTypes(); - for(var i = 0; i<itemTypes.length; i++) - { - var menuitem = document.createElement("menuitem"); - menuitem.setAttribute("label", Scholar.getString("itemTypes."+itemTypes[i]['name'])); - menuitem.setAttribute("oncommand","newItem("+itemTypes[i]['id']+")"); - addMenu.appendChild(menuitem); - } -} - -function newItem(typeID) -{ - alert("new item of type: "+typeID); -} - -function newFolder() -{ - alert("new folder"); -} - -function folderSelected() -{ - if(foldersView.selection.count == 1 && foldersView.selection.currentIndex != -1) - { - itemsView = new Scholar.ItemTreeView(foldersView._getItemAtRow(foldersView.selection.currentIndex).getID()); - document.getElementById('items-tree').view = itemsView; - } - else if(foldersView.selection.count == 0) - { - itemsView = new Scholar.ItemTreeView(0); - document.getElementById('items-tree').view = itemsView; - } - else - { - document.getElementById('items-tree').view = null; - } - -} - -function itemSelected() -{ - var tabs = document.getElementById('item-tabs'); - var editButton = document.getElementById('metadata-pane-edit-button'); - - if(editButton.checked) - { - var flags=promptService.BUTTON_TITLE_SAVE * promptService.BUTTON_POS_0 + - promptService.BUTTON_TITLE_CANCEL * promptService.BUTTON_POS_1 + - promptService.BUTTON_TITLE_DONT_SAVE * promptService.BUTTON_POS_2; - - var response = promptService.confirmEx(window,"", - "Do you want to save the changes?", // to '"+_itemBeingEdited.getField("title")+"' - flags, null, null, null, null, {}); - if(response == 1) - return; - else if(response == 0) - MetadataPane.toggleEdit(); - else - editButton.checked = false; - } - - if(itemsView && itemsView.selection.count == 1) - { - var item = itemsView._getItemAtRow(itemsView.selection.currentIndex); - tabs.hidden=false; - - if(tabs.firstChild.selectedIndex == 0) - { - document.getElementById('view-pane').setAttribute('src','http://www.google.com/search?q='+encodeURIComponent('"'+item.getField("title")+'"')+'&btnI'); - } - else if(tabs.firstChild.selectedIndex == 1) - { - MetadataPane.viewItem(item); - } - else - { - //do notes - } - } - else - { - tabs.hidden=true; - } -} - -function deleteSelection() -{ - if(itemsView && itemsView.selection.count > 0 && confirm("Are you sure you want to delete the selected items?")) - itemsView.deleteSelection(); -} - -function search() -{ - //TO DO: reload items tree with a search instead of a root folder - alert(document.getElementById('tb-search').value); -} -\ No newline at end of file diff --git a/chrome/chromeFiles/content/scholar/organizeWindow.xul b/chrome/chromeFiles/content/scholar/organizeWindow.xul @@ -1,179 +0,0 @@ -<?xml version="1.0"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> -<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?> -<?xul-overlay href="chrome://browser/content/baseMenuOverlay.xul"?> -<!DOCTYPE window SYSTEM "chrome://scholar/locale/scholar.dtd"> - -<window - id="scholar-window" - title="Scholar" - orient="vertical" - width="1000" height="700" screenX="20" screenY="20" - persist="width height screenX screenY sizemode" - windowtype="scholar:window" - onload="init();" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - - <?xul-overlay href="metadataPane.xul"?> - - <script type="application/x-javascript" src="chrome://global/content/globalOverlay.js"/> - <script type="application/x-javascript" src="chrome://global/content/nsDragAndDrop.js"/> - <script type="application/x-javascript" src="chrome://global/content/nsTransferable.js"/> - <script type="application/x-javascript" src="chrome://browser/content/utilityOverlay.js"/> - - <!-- Include the global XPCOM object --> - <script src="include.js"/> - - <script src="organizeWindow.js"/> - <script src="itemTreeView.js"/> - <script src="folderTreeView.js"/> - - <commandset id="baseMenuCommandSet" /> - <keyset id="baseMenuKeyset" /> - <keyset id="editMenuKeys"/> - - <command id="cmd_close" oncommand="closeWindow(true);"/> - <command id="cmd_delete" oncommand="deleteSelection()"/> - <command id="cmd_scholar_newItem" oncommand="newItem(1);"/> - <command id="cmd_scholar_newFolder" oncommand="newFolder();"/> - <command id="cmd_scholar_search" oncommand="search();"/> - - <keyset> - <key id="delete-cmd" keycode="VK_DELETE" command="cmd_delete"/> - <key id="backspace-cmd" keycode="VK_BACK" command="cmd_delete"/> - <key id="key_close" key="&closeCmd.commandkey;" modifiers="accel" command="cmd_close"/> - </keyset> - - <toolbox> - <menubar id="main-menubar"> - <menu label="&fileMenu.label;" accesskey="&fileMenu.accesskey;"> - <menupopup> - <menuitem label="&menuitem.newItem.label;" - accesskey="&menuitem.newItem.accesskey;" - command="cmd_scholar_newItem"/> - <menuitem label="&menuitem.newFolder.label;" - accesskey="&menuitem.newFolder.accesskey;" - command="cmd_scholar_newFolder"/> - <menuseparator/> - <menuitem label="Import..." disabled="true"/> - <menuitem label="Export..." disabled="true"/> - <menuseparator/> - <menuitem label="&closeCmd.label;" command="cmd_close" - key="key_close" accesskey="&closeCmd.accesskey;"/> - </menupopup> - </menu> - - <menu id="menu_edit"> - <menupopup> - <menuitem id="menu_undo"/> - <menuitem id="menu_redo"/> - <menuseparator/> - <menuitem id="menu_cut"/> - <menuitem id="menu_copy"/> - <menuitem id="menu_paste"/> - <menuitem id="menu_delete" command="cmd_delete"/> - <menuseparator/> - <menuitem id="menu_selectAll"/> - </menupopup> - </menu> - -#ifdef XP_MACOSX - <menu id="windowMenu"/> - <menupopup id="menu_ToolsPopup"/> -#endif - <menu id="helpMenu"/> - </menubar> - - <toolbar> - <toolbarbutton label="&menuitem.newFolder.label;" command="cmd_scholar_newFolder"/> - <toolbarbutton id="tb-add" label="&menuitem.newItem.label;" type="menu"> - <menupopup> - </menupopup> - </toolbarbutton> - <spacer flex="1"/> - <label value="Search:" control="tb-search"/> - <textbox id="tb-search" type="timed" timeout="500" width="150" command="cmd_scholar_search"/> - </toolbar> - </toolbox> - - <hbox flex="1"> - <vbox id="folders-pane" flex="1"> - <tree id="folders-tree" - treeviewtype="folders" style="-moz-user-focus: ignore;" hidecolumnpicker="true" - onselect="folderSelected();" - persist="width" flex="1"> - <treecols> - <treecol - id="name_column" - label="&folders.name_column;" - flex="1" - primary="true"/> - </treecols> - <treechildren/> - </tree> - </vbox> - <splitter collapse="before" resizebefore="closest" resizeafter="closest" persist="state"> - <grippy/> - </splitter> - <vbox flex="4" persist="width"> - <tree - id="items-tree" - enableColumnDrag="true" - onselect="itemSelected();" - persist="height" flex="1"> - - <treecols> - <treecol - id="title" - label="&items.title_column;" - flex="4" persist="width ordinal hidden"/> - <splitter class="tree-splitter"/> - <treecol - id="firstCreator" - label="&items.creator_column;" - flex="1" persist="width ordinal hidden"/> - <splitter class="tree-splitter"/> - <treecol - id="source" - label="&items.source_column;" - flex="1" persist="width ordinal hidden"/> - <splitter class="tree-splitter"/> - <treecol - id="rights" hidden="true" - label="&items.rights_column;" - flex="1" persist="width ordinal hidden"/> - <splitter class="tree-splitter"/> - <treecol - id="dateAdded" hidden="true" - label="&items.dateAdded_column;" - flex="1" persist="width ordinal hidden"/> - <splitter class="tree-splitter"/> - <treecol - id="dateModified" hidden="true" - label="&items.dateModified_column;" - flex="1" persist="width ordinal hidden"/> - </treecols> - - <treechildren/> - </tree> - <splitter collapse="after" resizebefore="closest" resizeafter="closest" persist="state"> - <grippy/> - </splitter> - <tabbox id="item-tabs" flex="3" persist="height" hidden="true"> - <tabs onselect="itemSelected();"> - <tab label="Item"/> - <tab label="Metadata"/> - <tab label="Notes"/> - </tabs> - <tabpanels flex="1"> - <iframe id="view-pane" src="" type="content" flex="1"/> - <vbox id="metadata-pane"/> - <tabpanel/> - </tabpanels> - </tabbox> - </vbox> - </hbox> - <statusbar id="statusbar"> - <statuspanel id="statusbar-text" flex="1"/> - </statusbar> -</window> -\ No newline at end of file diff --git a/chrome/chromeFiles/content/scholar/overlay.js b/chrome/chromeFiles/content/scholar/overlay.js @@ -13,6 +13,7 @@ var ScholarPane = new function() this.itemSelected = itemSelected; this.deleteSelection = deleteSelection; this.search = search; + this.toggleView = toggleView; function init() { @@ -29,6 +30,8 @@ var ScholarPane = new function() menuitem.setAttribute("oncommand","ScholarPane.newItem("+itemTypes[i]['id']+")"); addMenu.appendChild(menuitem); } + +// Drag.init(document.getElementById('scholar-floater-handle'),document.getElementById('scholar-floater'), 0, 400, 0, 500, true, true); } function toggleScholar() @@ -75,10 +78,17 @@ var ScholarPane = new function() { var item = itemsView._getItemAtRow(itemsView.selection.currentIndex); - document.getElementById('content').loadURI('chrome://scholar/content/view.xul?id='+encodeURIComponent(item.getID())); + MetadataPane.viewItem(item); + var url = item.getField('source'); + if(!validURL(url)) + url = 'http://www.google.com/search?q='+encodeURIComponent('"'+item.getField("title")+'"'); //+'&btnI' + + document.getElementById('content').loadURI(url); + document.getElementById('scholar-floater').hidden=false; } else { + document.getElementById('scholar-floater').hidden=true; } @@ -92,8 +102,25 @@ var ScholarPane = new function() function search() { - //TO DO: reload items tree with a search instead of a root folder - alert(document.getElementById('tb-search').value); + if(itemsView) + itemsView.searchText(document.getElementById('tb-search').value); + } + + function toggleView(id) + { + var button = document.getElementById('tb-'+id); + var elem = document.getElementById('scholar-'+id); + + button.checked = !button.checked; + elem.hidden = !elem.hidden; + } + + //Thanks: http://www.bigbold.com/snippets/posts/show/452 + //TODO: move this out of overlay.js, into Scholar.js? + function validURL(s) + { + var regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ + return regexp.test(s); } } diff --git a/chrome/chromeFiles/content/scholar/overlay.xul b/chrome/chromeFiles/content/scholar/overlay.xul @@ -1,10 +1,10 @@ <?xml version="1.0"?> -<?xml-stylesheet href="chrome://scholar/skin/scholar.css" type="text/css"?> <?xml-stylesheet href="chrome://scholar/skin/overlay.css" type="text/css"?> <!DOCTYPE window SYSTEM "chrome://scholar/locale/scholar.dtd"> <overlay id="scholar" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + <?xul-overlay href="metadataPane.xul" ?> <!-- Include the global XPCOM object --> <script src="include.js"/> @@ -19,6 +19,19 @@ <command id="cmd_scholar_search" oncommand="ScholarPane.search();"/> </commandset> + <window id="main-window"> + <vbox id="scholar-floater" hidden="true"> + <toolbar id="scholar-floater-handle"> + <label value="Scholar Quick Info"/> + <spacer flex="1"/> + </toolbar> + <vbox id="scholar-metadata"/> + <vbox id="scholar-notes"> + <textbox value="Notes.... lorem ispum delorum..." multiline="true" flex="1"/> + </vbox> + </vbox> + </window> + <vbox id="appcontent"> <vbox id="scholar-pane" position="1" persist="height collapsed"> <hbox flex="1"> @@ -37,7 +50,7 @@ <splitter id="scholar-tree-splitter" resizebefore="closest" resizeafter="closest"/> <tree id="items-tree" - enableColumnDrag="true" + enableColumnDrag="true" onkeypress="if(event.keyCode == event.DOM_VK_BACK_SPACE || event.keyCode == event.DOM_VK_DELETE){ ScholarPane.deleteSelection(); return false; }" onselect="ScholarPane.itemSelected();" persist="width" flex="5"> <treecols> @@ -82,6 +95,10 @@ </menupopup> </toolbarbutton> <spacer flex="1"/> +<!-- <toolbarbutton class="scholar-toggler" id="tb-view" label="View" checked="true" oncommand="ScholarPane.toggleView('view')"/> --> + <toolbarbutton class="scholar-toggler" id="tb-metadata" label="Metadata" checked="true" oncommand="ScholarPane.toggleView('metadata')"/> + <toolbarbutton class="scholar-toggler" id="tb-notes" label="Notes" checked="true" oncommand="ScholarPane.toggleView('notes')"/> + <spacer flex="1"/> <label value="Search:" control="tb-search"/> <textbox id="tb-search" type="timed" timeout="500" command="cmd_scholar_search"/> <toolbarbutton class="tabs-closebutton" oncommand="ScholarPane.toggleScholar()"/> diff --git a/chrome/chromeFiles/content/scholar/view.js b/chrome/chromeFiles/content/scholar/view.js @@ -1,48 +0,0 @@ -var thisItem; - -function init() -{ - if(thisItem) - return; - - var id = getArgument("id"); - if(id) - { - thisItem = Scholar.Items.get(id); - document.getElementById('view').setAttribute('src','http://www.google.com/search?q='+encodeURIComponent('"'+thisItem.getField("title")+'"')+'&btnI'); - MetadataPane.viewItem(thisItem); - } - else - { - thisItem = new Scholar.Item(getArgument('new')); - MetadataPane.viewItem(thisItem); - MetadataPane.toggleEdit(); - } -} - -function toggle(id) -{ - var button = document.getElementById('tb-'+id); - var elem = document.getElementById(id); - - button.checked = !button.checked; - elem.hidden = !elem.hidden; -} - -//thanks to: http://evolt.org/node/14435 -function getArgument (name) -{ - var arguments = document.location.search.slice(1).split('&'); - var r = ''; - for (var i = 0; i < arguments.length; i++) - { - if (arguments[i].slice(0,arguments[i].indexOf('=')) == name) - { - r = arguments[i].slice(arguments[i].indexOf('=')+1); - return (r.length > 0 ? unescape(r).split(',') : ''); - } - } - return ''; -} - -addEventListener("load", function(e) { init(e); }, false); -\ No newline at end of file diff --git a/chrome/chromeFiles/content/scholar/view.xul b/chrome/chromeFiles/content/scholar/view.xul @@ -1,26 +0,0 @@ -<?xml version="1.0"?> -<?xml-stylesheet href="chrome://scholar/skin/scholar.css" type="text/css"?> -<?xml-stylesheet href="chrome://scholar/skin/view.css" type="text/css"?> -<?xml-stylesheet href="chrome://browser/content/browser.css" type="text/css"?> - -<page - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <script src="view.js"/> - <script src="include.js"/> - <?xul-overlay href="metadataPane.xul" ?> - - <stack flex="1"> - <browser id="view" flex="1"/> - <vbox align="end"> - <vbox id="metadata" class="floater"/> - <vbox id="notes" class="floater"> - <textbox value="Notes.... lorem ispum delorum..." multiline="true" flex="1"/> - </vbox> - </vbox> - </stack> - <toolbar id="view-toolbar"> - <toolbarbutton class="toggler" id="tb-view" label="View" checked="true" oncommand="toggle('view')"/> - <toolbarbutton class="toggler" id="tb-metadata" label="Metadata" checked="true" oncommand="toggle('metadata')"/> - <toolbarbutton class="toggler" id="tb-notes" label="Notes" checked="true" oncommand="toggle('notes')"/> - </toolbar> -</page> -\ No newline at end of file diff --git a/chrome/chromeFiles/skin/default/scholar/overlay.css b/chrome/chromeFiles/skin/default/scholar/overlay.css @@ -33,6 +33,11 @@ tree #items-tree } +#scholar-toolbar .toggler +{ + margin: 4px; +} + #tb-search { width: 150px; @@ -45,4 +50,42 @@ tree #items-tree min-height: 4px; max-height: 4px; background: #f5f5f5 !important; +} + +#scholar-floater +{ + position: fixed; + bottom: 0px; + right: 0px; + margin-bottom: 30px; + margin-right: 30px; + border: 1px solid #a5a5a5; + padding: 5px; + background: #f5f5f5; + + font-size: 12px; + width: 400px; + max-width: 400px; +} + +#scholar-floater vbox, #scholar-floater toolbar +{ + width: 400px; + max-width: 400px; + margin-top: 5px; + padding: none; +} + +#scholar-metadata +{ +} + +#scholar-metadata toolbar +{ + border-bottom: none; +} + +#scholar-notes +{ + height: 100px; } \ No newline at end of file diff --git a/chrome/chromeFiles/skin/default/scholar/view.css b/chrome/chromeFiles/skin/default/scholar/view.css @@ -1,41 +0,0 @@ -#view-toolbar -{ - background: #f5f5f5; -} - -#view-toolbar .toggler -{ - margin: 4px; -} - -#subs -{ - width: 400px; -} - -.floater -{ - position: relative; - margin-top: 10px; - margin-right: 30px; - - padding: 5px; - font-size: 12px; - background: #f5f5f5; - width: 400px; -} - -#metadata -{ - -} - -#notes -{ - height: 100px; -} - -#metadata toolbar -{ - border-bottom: none; -} -\ No newline at end of file