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 () {
Iif (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.
Eif (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.
}
});
});
|