define([
|
'dojo/_base/declare',
|
'dojo/dom-geometry',
|
'dijit/_WidgetBase',
|
'dijit/registry'
|
], function (declare, domGeometry, _WidgetBase, registry) {
|
var wbPrototype = _WidgetBase.prototype;
|
|
return declare(null, {
|
// summary:
|
// A dgrid extension which will add the grid to the dijit registry,
|
// so that startup() will be successfully called by dijit layout widgets
|
// with dgrid children.
|
|
// Defaults normally imposed on _WidgetBase by container widget modules:
|
minSize: 0, // BorderContainer
|
maxSize: Infinity, // BorderContainer
|
layoutPriority: 0, // BorderContainer
|
showTitle: true, // StackContainer
|
|
buildRendering: function () {
|
registry.add(this);
|
this.inherited(arguments);
|
// Note: for dojo 2.0 may rename widgetId to dojo._scopeName + "_widgetId"
|
this.domNode.setAttribute('widgetId', this.id);
|
},
|
|
startup: function () {
|
if (this._started) {
|
return;
|
}
|
this.inherited(arguments);
|
|
var widget = this.getParent();
|
// If we have a parent layout container widget, it will handle resize,
|
// so remove the window resize listener added by List.
|
if (widget && widget.isLayoutContainer) {
|
this._resizeHandle.remove();
|
}
|
},
|
|
destroyRecursive: function () {
|
this.destroy();
|
},
|
|
destroy: function () {
|
this.inherited(arguments);
|
registry.remove(this.id);
|
},
|
|
getChildren: function () {
|
// provide hollow implementation for logic which assumes its existence
|
// (e.g. dijit/form/_FormMixin)
|
return [];
|
},
|
|
getParent: function () {
|
// summary:
|
// Analogous to _WidgetBase#getParent, for compatibility with e.g. dijit._KeyNavContainer.
|
return registry.getEnclosingWidget(this.domNode.parentNode);
|
},
|
|
isLeftToRight: function () {
|
// Implement method expected by Dijit layout widgets
|
return !this.isRTL;
|
},
|
|
placeAt: function (/*String|DomNode|DocumentFragment|dijit/_WidgetBase*/ reference, /*String|Int?*/ position) {
|
// summary:
|
// Analogous to dijit/_WidgetBase#placeAt;
|
// places this widget in the DOM based on domConstruct.place() conventions.
|
|
return wbPrototype.placeAt.call(this, reference, position);
|
},
|
|
resize: function (changeSize) {
|
// Honor changeSize parameter used by layout widgets, and resize grid
|
if (changeSize) {
|
domGeometry.setMarginBox(this.domNode, changeSize);
|
}
|
|
this.inherited(arguments);
|
},
|
|
_set: function (prop, value) {
|
// summary:
|
// Simple analogue of _WidgetBase#_set for compatibility with some
|
// Dijit layout widgets which assume its existence.
|
this[prop] = value;
|
},
|
|
watch: function () {
|
// summary:
|
// dgrid doesn't support watch; this is a no-op for compatibility with
|
// some Dijit layout widgets which assume its existence.
|
}
|
});
|
});
|