tt-rss/lib/dijit/tree/model.js
2011-11-08 20:40:44 +04:00

135 lines
4 KiB
JavaScript

/*
Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
dojo.declare(
"dijit.tree.model",
null,
{
// summary:
// Contract for any data provider object for the tree.
// description:
// Tree passes in values to the constructor to specify the callbacks.
// "item" is typically a dojo.data.Item but it's just a black box so
// it could be anything.
//
// This (like `dojo.data.api.Read`) is just documentation, and not meant to be used.
destroy: function(){
// summary:
// Destroys this object, releasing connections to the store
// tags:
// extension
},
// =======================================================================
// Methods for traversing hierarchy
getRoot: function(onItem){
// summary:
// Calls onItem with the root item for the tree, possibly a fabricated item.
// Throws exception on error.
// tags:
// extension
},
mayHaveChildren: function(/*dojo.data.Item*/ item){
// summary:
// Tells if an item has or may have children. Implementing logic here
// avoids showing +/- expando icon for nodes that we know don't have children.
// (For efficiency reasons we may not want to check if an element actually
// has children until user clicks the expando node)
// tags:
// extension
},
getChildren: function(/*dojo.data.Item*/ parentItem, /*function(items)*/ onComplete){
// summary:
// Calls onComplete() with array of child items of given parent item, all loaded.
// Throws exception on error.
// tags:
// extension
},
// =======================================================================
// Inspecting items
isItem: function(/* anything */ something){
// summary:
// Returns true if *something* is an item and came from this model instance.
// Returns false if *something* is a literal, an item from another model instance,
// or is any object other than an item.
// tags:
// extension
},
fetchItemByIdentity: function(/* object */ keywordArgs){
// summary:
// Given the identity of an item, this method returns the item that has
// that identity through the onItem callback. Conforming implementations
// should return null if there is no item with the given identity.
// Implementations of fetchItemByIdentity() may sometimes return an item
// from a local cache and may sometimes fetch an item from a remote server.
// tags:
// extension
},
getIdentity: function(/* item */ item){
// summary:
// Returns identity for an item
// tags:
// extension
},
getLabel: function(/*dojo.data.Item*/ item){
// summary:
// Get the label for an item
// tags:
// extension
},
// =======================================================================
// Write interface
newItem: function(/* dojo.dnd.Item */ args, /*Item*/ parent, /*int?*/ insertIndex){
// summary:
// Creates a new item. See `dojo.data.api.Write` for details on args.
// tags:
// extension
},
pasteItem: function(/*Item*/ childItem, /*Item*/ oldParentItem, /*Item*/ newParentItem, /*Boolean*/ bCopy){
// summary:
// Move or copy an item from one parent item to another.
// Used in drag & drop.
// If oldParentItem is specified and bCopy is false, childItem is removed from oldParentItem.
// If newParentItem is specified, childItem is attached to newParentItem.
// tags:
// extension
},
// =======================================================================
// Callbacks
onChange: function(/*dojo.data.Item*/ item){
// summary:
// Callback whenever an item has changed, so that Tree
// can update the label, icon, etc. Note that changes
// to an item's children or parent(s) will trigger an
// onChildrenChange() so you can ignore those changes here.
// tags:
// callback
},
onChildrenChange: function(/*dojo.data.Item*/ parent, /*dojo.data.Item[]*/ newChildrenList){
// summary:
// Callback to do notifications about new, updated, or deleted items.
// tags:
// callback
}
});