Subversion Repositories Applications.papyrus

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2150 mathias 1
if(!dojo._hasResource["dojox.grid._grid.lib"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
2
dojo._hasResource["dojox.grid._grid.lib"] = true;
3
dojo.provide("dojox.grid._grid.lib");
4
 
5
dojo.isNumber = function(v){
6
	return (typeof v == 'number') || (v instanceof Number);
7
}
8
 
9
// summary:
10
//	grid utility library
11
 
12
dojo.mixin(dojox.grid, {
13
	na: '...',
14
	nop: function() {
15
	},
16
	getTdIndex: function(td){
17
		return td.cellIndex >=0 ? td.cellIndex : dojo.indexOf(td.parentNode.cells, td);
18
	},
19
	getTrIndex: function(tr){
20
		return tr.rowIndex >=0 ? tr.rowIndex : dojo.indexOf(tr.parentNode.childNodes, tr);
21
	},
22
	getTr: function(rowOwner, index){
23
		return rowOwner && ((rowOwner.rows||0)[index] || rowOwner.childNodes[index]);
24
	},
25
	getTd: function(rowOwner, rowIndex, cellIndex){
26
		return (dojox.grid.getTr(inTable, rowIndex)||0)[cellIndex];
27
	},
28
	findTable: function(node){
29
		for (var n=node; n && n.tagName!='TABLE'; n=n.parentNode);
30
		return n;
31
	},
32
	ascendDom: function(inNode, inWhile){
33
		for (var n=inNode; n && inWhile(n); n=n.parentNode);
34
		return n;
35
	},
36
	makeNotTagName: function(inTagName){
37
		var name = inTagName.toUpperCase();
38
		return function(node){ return node.tagName != name; };
39
	},
40
	fire: function(ob, ev, args){
41
		var fn = ob && ev && ob[ev];
42
		return fn && (args ? fn.apply(ob, args) : ob[ev]());
43
	},
44
	// from lib.js
45
	setStyleText: function(inNode, inStyleText){
46
		if(inNode.style.cssText == undefined){
47
			inNode.setAttribute("style", inStyleText);
48
		}else{
49
			inNode.style.cssText = inStyleText;
50
		}
51
	},
52
	getStyleText: function(inNode, inStyleText){
53
		return (inNode.style.cssText == undefined ? inNode.getAttribute("style") : inNode.style.cssText);
54
	},
55
	setStyle: function(inElement, inStyle, inValue){
56
		if(inElement && inElement.style[inStyle] != inValue){
57
			inElement.style[inStyle] = inValue;
58
		}
59
	},
60
	setStyleHeightPx: function(inElement, inHeight){
61
		if(inHeight >= 0){
62
			dojox.grid.setStyle(inElement, 'height', inHeight + 'px');
63
		}
64
	},
65
	mouseEvents: [ 'mouseover', 'mouseout', /*'mousemove',*/ 'mousedown', 'mouseup', 'click', 'dblclick', 'contextmenu' ],
66
	keyEvents: [ 'keyup', 'keydown', 'keypress' ],
67
	funnelEvents: function(inNode, inObject, inMethod, inEvents){
68
		var evts = (inEvents ? inEvents : dojox.grid.mouseEvents.concat(dojox.grid.keyEvents));
69
		for (var i=0, l=evts.length; i<l; i++){
70
			dojo.connect(inNode, 'on' + evts[i], inObject, inMethod);
71
		}
72
	},
73
	removeNode: function(inNode){
74
		inNode = dojo.byId(inNode);
75
		inNode && inNode.parentNode && inNode.parentNode.removeChild(inNode);
76
		return inNode;
77
	},
78
	getScrollbarWidth: function(){
79
		if(this._scrollBarWidth){
80
			return this._scrollBarWidth;
81
		}
82
		this._scrollBarWidth = 18;
83
		try{
84
			var e = document.createElement("div");
85
			e.style.cssText = "top:0;left:0;width:100px;height:100px;overflow:scroll;position:absolute;visibility:hidden;";
86
			document.body.appendChild(e);
87
			this._scrollBarWidth = e.offsetWidth - e.clientWidth;
88
			document.body.removeChild(e);
89
			delete e;
90
		}catch (ex){}
91
		return this._scrollBarWidth;
92
	},
93
	// needed? dojo has _getProp
94
	getRef: function(name, create, context){
95
		var obj=context||dojo.global, parts=name.split("."), prop=parts.pop();
96
		for(var i=0, p; obj&&(p=parts[i]); i++){
97
			obj = (p in obj ? obj[p] : (create ? obj[p]={} : undefined));
98
		}
99
		return { obj: obj, prop: prop };
100
	},
101
	getProp: function(name, create, context){
102
		with(dojox.grid.getRef(name, create, context)){
103
			return (obj)&&(prop)&&(prop in obj ? obj[prop] : (create ? obj[prop]={} : undefined));
104
		}
105
	},
106
	indexInParent: function(inNode){
107
		var i=0, n, p=inNode.parentNode;
108
		while(n = p.childNodes[i++]){
109
			if(n == inNode){
110
				return i - 1;
111
			}
112
		}
113
		return -1;
114
	},
115
	cleanNode: function(inNode){
116
		if(!inNode){
117
			return;
118
		}
119
		var filter = function(inW){
120
			return inW.domNode && dojo.isDescendant(inW.domNode, inNode, true);
121
		}
122
		var ws = dijit.registry.filter(filter);
123
		for(var i=0, w; (w=ws[i]); i++){
124
			w.destroy();
125
		}
126
		delete ws;
127
	},
128
	getTagName: function(inNodeOrId){
129
		var node = dojo.byId(inNodeOrId);
130
		return (node && node.tagName ? node.tagName.toLowerCase() : '');
131
	},
132
	nodeKids: function(inNode, inTag){
133
		var result = [];
134
		var i=0, n;
135
		while(n = inNode.childNodes[i++]){
136
			if(dojox.grid.getTagName(n) == inTag){
137
				result.push(n);
138
			}
139
		}
140
		return result;
141
	},
142
	divkids: function(inNode){
143
		return dojox.grid.nodeKids(inNode, 'div');
144
	},
145
	focusSelectNode: function(inNode){
146
		try{
147
			dojox.grid.fire(inNode, "focus");
148
			dojox.grid.fire(inNode, "select");
149
		}catch(e){// IE sux bad
150
		}
151
	},
152
	whenIdle: function(/*inContext, inMethod, args ...*/){
153
		setTimeout(dojo.hitch.apply(dojo, arguments), 0);
154
	},
155
	arrayCompare: function(inA, inB){
156
		for(var i=0,l=inA.length; i<l; i++){
157
			if(inA[i] != inB[i]){return false;}
158
		}
159
		return (inA.length == inB.length);
160
	},
161
	arrayInsert: function(inArray, inIndex, inValue){
162
		if(inArray.length <= inIndex){
163
			inArray[inIndex] = inValue;
164
		}else{
165
			inArray.splice(inIndex, 0, inValue);
166
		}
167
	},
168
	arrayRemove: function(inArray, inIndex){
169
		inArray.splice(inIndex, 1);
170
	},
171
	arraySwap: function(inArray, inI, inJ){
172
		var cache = inArray[inI];
173
		inArray[inI] = inArray[inJ];
174
		inArray[inJ] = cache;
175
	},
176
	initTextSizePoll: function(inInterval) {
177
		var f = document.createElement("div");
178
		with (f.style) {
179
			top = "0px";
180
			left = "0px";
181
			position = "absolute";
182
			visibility = "hidden";
183
		}
184
		f.innerHTML = "TheQuickBrownFoxJumpedOverTheLazyDog";
185
		document.body.appendChild(f);
186
		var fw = f.offsetWidth;
187
		var job = function() {
188
			if (f.offsetWidth != fw) {
189
				fw = f.offsetWidth;
190
				dojox.grid.textSizeChanged();
191
			}
192
		}
193
		window.setInterval(job, inInterval||200);
194
		dojox.grid.initTextSizePoll = dojox.grid.nop;
195
	},
196
	textSizeChanged: function() {
197
	}
198
});
199
 
200
dojox.grid.jobs = {
201
	cancel: function(inHandle){
202
		if(inHandle){
203
			window.clearTimeout(inHandle);
204
		}
205
	},
206
	jobs: [],
207
	job: function(inName, inDelay, inJob){
208
		dojox.grid.jobs.cancelJob(inName);
209
		var job = function(){
210
			delete dojox.grid.jobs.jobs[inName];
211
			inJob();
212
		}
213
		dojox.grid.jobs.jobs[inName] = setTimeout(job, inDelay);
214
	},
215
	cancelJob: function(inName){
216
		dojox.grid.jobs.cancel(dojox.grid.jobs.jobs[inName]);
217
	}
218
}
219
 
220
}