www

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

commit 1d14c69ad54171e17b93f4b108149a7d0c2b6f44
parent 076ee0fad23b71b47c5f1901b6e737a03be43b10
Author: David Norton <david@nortoncrew.com>
Date:   Thu,  8 Jun 2006 18:42:55 +0000

[interface] Preliminary drag-and-drop.
  1) Items into collections.
  2) Collections into collections.
	Dan S, please check this out, I am getting some exceptions from the data access portion.
[interface] Temporarily, "metadata" pane on the right is not resizable.

Diffstat:
Mchrome/chromeFiles/content/scholar/collectionTreeView.js | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
Mchrome/chromeFiles/content/scholar/itemTreeView.js | 21+++++++++++++++++++--
Mchrome/chromeFiles/content/scholar/overlay.js | 44+++++++++++++++-----------------------------
Mchrome/chromeFiles/content/scholar/overlay.xul | 10++++++----
Mchrome/chromeFiles/skin/default/scholar/overlay.css | 1-
5 files changed, 98 insertions(+), 46 deletions(-)

diff --git a/chrome/chromeFiles/content/scholar/collectionTreeView.js b/chrome/chromeFiles/content/scholar/collectionTreeView.js @@ -1,10 +1,21 @@ Scholar.CollectionTreeView = function() { this._treebox = null; + this._unregisterID = Scholar.Notifier.registerColumnTree(this); + this.refresh(); +} + +Scholar.CollectionTreeView.prototype.refresh = function() +{ this._dataItems = new Array(); this.rowCount = 0; this._showItem(new Scholar.ItemGroup('library',null),0,1); - this._unregisterID = Scholar.Notifier.registerColumnTree(this); + + var newRows = Scholar.getCollections(); + for(var i = 0; i < newRows.length; i++) + this._showItem(new Scholar.ItemGroup('collection',newRows[i]), 0, this._dataItems.length); //item ref, level, beforeRow + + this._refreshHashMap(); } /* @@ -80,12 +91,6 @@ Scholar.CollectionTreeView.prototype.setTree = function(treebox) if(this._treebox) return; this._treebox = treebox; - - var newRows = Scholar.getCollections(); - for(var i = 0; i < newRows.length; i++) - this._showItem(new Scholar.ItemGroup('collection',newRows[i]), 0, this._dataItems.length); //item ref, level, beforeRow - - this._refreshHashMap(); } Scholar.CollectionTreeView.prototype.getCellText = function(row, column) @@ -243,18 +248,61 @@ Scholar.CollectionTreeView.prototype._refreshHashMap = function() Scholar.CollectionTreeView.prototype.canDrop = function(row, orient) { - if(orient == this.DROP_ON && this._getItemAtRow(row).isCollection()) + if(orient == 0 && this._getItemAtRow(row).isCollection()) + { + Scholar.debug("drag on row: " + row + " orient: " + orient); return true; + } else return false; - } Scholar.CollectionTreeView.prototype.drop = function(row, orient) { - //you can't really do anything here, look to overlay.js - ScholarCollectionsDragObserver + var dataSet = nsTransferable.get(this.getSupportedFlavours(),nsDragAndDrop.getDragData, true); + var data = dataSet.first.first; + var dataType = data.flavour.contentType; + var ids = data.data.split(','); + + if(dataType == 'scholar/collection') + { + var oldCount = this.rowCount; + + var targetCollectionID; + if(this.canDrop(row,orient)) + targetCollectionID = this._getItemAtRow(row).ref.getID(); + + var droppedCollection = Scholar.Collections.get(ids[0]); + droppedCollection.changeParent(targetCollectionID); + this.refresh(); + this._treebox.rowCountChanged(0,this.rowCount-oldCount); + this._treebox.invalidate(); + } + else if(dataType == 'scholar/item' && this.canDrop(row, orient)) + { + var targetCollection = this._getItemAtRow(row).ref; + for(var i = 0; i<ids.length; i++) + targetCollection.addItem(ids[i]); + } +} + +Scholar.CollectionTreeView.prototype.onDragStart = function(evt,transferData,action) +{ + transferData.data=new TransferData(); + transferData.data.addDataForFlavour("scholar/collection",this._getItemAtRow(this.selection.currentIndex).ref.getID()); +} + +Scholar.CollectionTreeView.prototype.getSupportedFlavours = function () +{ + var flavors = new FlavourSet(); + flavors.appendFlavour("scholar/item"); + flavors.appendFlavour("scholar/collection"); + return flavors; } +Scholar.CollectionTreeView.prototype.onDragOver = function (evt,dropdata,session) { } +Scholar.CollectionTreeView.prototype.onDrop = function (evt,dropdata,session) { } + // // SCHOLAR ITEMGROUP // diff --git a/chrome/chromeFiles/content/scholar/itemTreeView.js b/chrome/chromeFiles/content/scholar/itemTreeView.js @@ -298,4 +298,21 @@ Scholar.ItemTreeView.prototype.rememberSelection = function() Scholar.ItemTreeView.prototype.canDrop = function(index, orient) { return false; -} -\ No newline at end of file +} + +Scholar.ItemTreeView.prototype.onDragStart = function (evt,transferData,action) +{ + transferData.data=new TransferData(); + this.saveSelection(); + transferData.data.addDataForFlavour("scholar/item",this._savedSelection); +} + +Scholar.ItemTreeView.prototype.getSupportedFlavours = function () +{ + var flavors = new FlavourSet(); + flavors.appendFlavour("scholar/item"); + return flavors; +} + +Scholar.ItemTreeView.prototype.onDragOver = function (evt,dropdata,session) { } +Scholar.ItemTreeView.prototype.onDrop = function (evt,dropdata,session) { } +\ No newline at end of file diff --git a/chrome/chromeFiles/content/scholar/overlay.js b/chrome/chromeFiles/content/scholar/overlay.js @@ -19,6 +19,8 @@ var ScholarPane = new function() this.deleteCollectionSelection = deleteCollectionSelection; this.renameSelectedCollection = renameSelectedCollection; this.search = search; + this.getCollectionsView = getCollectionsView; + this.getItemsView = getItemsView; /* * Called when the window is open @@ -112,13 +114,13 @@ var ScholarPane = new function() MetadataPane.viewItem(item); - document.getElementById('scholar-view-item').hidden=false; - document.getElementById('scholar-view-splitter').hidden = false; + document.getElementById('scholar-view-item').hidden = false; + document.getElementById('scholar-view-splitter').hidden = false; } else { - document.getElementById('scholar-view-item').hidden=true; - document.getElementById('scholar-view-splitter').hidden = true; + document.getElementById('scholar-view-item').hidden = true; + document.getElementById('scholar-view-splitter').hidden = true; } @@ -153,31 +155,15 @@ var ScholarPane = new function() if(itemsView) itemsView.searchText(document.getElementById('tb-search').value); } -} - -var ScholarItemsDragObserver = -{ - onDragStart: function (evt,transferData,action) - { - transferData.data=new TransferData(); - transferData.data.addDataForFlavour("text/unicode","random data"); - - } -}; - -var ScholarCollectionsDragObserver = -{ - getSupportedFlavours : function () - { - var flavours = new FlavourSet(); - flavours.appendFlavour("text/unicode"); - - return flavours; - }, - onDragOver: function (evt,dropdata,session){}, - onDrop: function (evt,dropdata,session) - { - alert(dropdata.data); + + function getCollectionsView() + { + return collectionsView; + } + + function getItemsView() + { + return itemsView; } } diff --git a/chrome/chromeFiles/content/scholar/overlay.xul b/chrome/chromeFiles/content/scholar/overlay.xul @@ -28,7 +28,8 @@ </toolbar> <tree id="collections-tree" hidecolumnpicker="true" onselect="ScholarPane.onCollectionSelected();" seltype="single" - ondragover="nsDragAndDrop.dragOver(event,ScholarCollectionsDragObserver)" ondragdrop="nsDragAndDrop.drop(event,ScholarCollectionsDragObserver)" + ondragover="nsDragAndDrop.dragOver(event,ScholarPane.getCollectionsView())" ondragdrop="nsDragAndDrop.drop(event,ScholarPane.getCollectionsView())" + ondraggesture="if (event.target.localName == 'treechildren') nsDragAndDrop.startDrag(event,ScholarPane.getCollectionsView());" onkeypress="if(event.keyCode == event.DOM_VK_BACK_SPACE || event.keyCode == event.DOM_VK_DELETE){ ScholarPane.deleteCollectionSelection(); return false; }" flex="1"> <treecols> @@ -57,7 +58,8 @@ id="items-tree" enableColumnDrag="true" onkeypress="if(event.keyCode == event.DOM_VK_BACK_SPACE || event.keyCode == event.DOM_VK_DELETE){ ScholarPane.deleteItemSelection(); return false; }" onselect="ScholarPane.itemSelected();" - ondraggesture="if (event.target.localName == 'treechildren') nsDragAndDrop.startDrag(event,ScholarItemsDragObserver);" + ondraggesture="if (event.target.localName == 'treechildren') nsDragAndDrop.startDrag(event,ScholarPane.getItemsView());" + ondragover="nsDragAndDrop.dragOver(event,ScholarPane.getItemsView())" ondragdrop="nsDragAndDrop.drop(event,ScholarPane.getItemsView())" flex="1"> <treecols> <treecol @@ -95,8 +97,8 @@ </tree> </vbox> - <splitter id="scholar-view-splitter" resizebefore="closest" resizeafter="closest" hidden="true"/> - <tabbox id="scholar-view-item" hidden="true" flex="2" style="min-width: 300px;"> + <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"/> diff --git a/chrome/chromeFiles/skin/default/scholar/overlay.css b/chrome/chromeFiles/skin/default/scholar/overlay.css @@ -14,7 +14,6 @@ tree #collections-tree #scholar-tree-splitter { background: #f5f5f5; - } tree #items-tree