Subversion Repositories Applications.papyrus

Rev

Rev 1318 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1318 Rev 1422
1
/*
1
/*
2
	Copyright (c) 2004-2006, The Dojo Foundation
2
	Copyright (c) 2004-2006, The Dojo Foundation
3
	All Rights Reserved.
3
	All Rights Reserved.
4
 
4
 
5
	Licensed under the Academic Free License version 2.1 or above OR the
5
	Licensed under the Academic Free License version 2.1 or above OR the
6
	modified BSD license. For more information on Dojo licensing, see:
6
	modified BSD license. For more information on Dojo licensing, see:
7
 
7
 
8
		http://dojotoolkit.org/community/licensing.shtml
8
		http://dojotoolkit.org/community/licensing.shtml
9
*/
9
*/
-
 
10
 
-
 
11
 
10
 
12
 
11
dojo.provide("dojo.widget.RadioGroup");
13
dojo.provide("dojo.widget.RadioGroup");
12
dojo.require("dojo.lang.common");
14
dojo.require("dojo.lang.common");
13
dojo.require("dojo.event.browser");
15
dojo.require("dojo.event.browser");
14
dojo.require("dojo.html.selection");
16
dojo.require("dojo.html.selection");
15
dojo.require("dojo.widget.*");
17
dojo.require("dojo.widget.*");
16
dojo.require("dojo.widget.HtmlWidget");
18
dojo.require("dojo.widget.HtmlWidget");
17
dojo.widget.defineWidget("dojo.widget.RadioGroup", dojo.widget.HtmlWidget, function () {
19
dojo.widget.defineWidget("dojo.widget.RadioGroup", dojo.widget.HtmlWidget, function () {
18
	this.selectedItem = null;
20
	this.selectedItem = null;
19
	this.items = [];
21
	this.items = [];
20
	this.selected = [];
22
	this.selected = [];
21
	this.groupCssClass = "radioGroup";
23
	this.groupCssClass = "radioGroup";
22
	this.selectedCssClass = "selected";
24
	this.selectedCssClass = "selected";
23
	this.itemContentCssClass = "itemContent";
25
	this.itemContentCssClass = "itemContent";
24
}, {isContainer:false, templatePath:null, templateCssPath:null, postCreate:function () {
26
}, {isContainer:false, templatePath:null, templateCssPath:null, postCreate:function () {
25
	this._parseStructure();
27
	this._parseStructure();
26
	dojo.html.addClass(this.domNode, this.groupCssClass);
28
	dojo.html.addClass(this.domNode, this.groupCssClass);
27
	this._setupChildren();
29
	this._setupChildren();
28
	dojo.event.browser.addListener(this.domNode, "onclick", dojo.lang.hitch(this, "onSelect"));
30
	dojo.event.browser.addListener(this.domNode, "onclick", dojo.lang.hitch(this, "onSelect"));
29
	if (this.selectedItem) {
31
	if (this.selectedItem) {
30
		this._selectItem(this.selectedItem);
32
		this._selectItem(this.selectedItem);
31
	}
33
	}
32
}, _parseStructure:function () {
34
}, _parseStructure:function () {
33
	if (this.domNode.tagName.toLowerCase() != "ul" && this.domNode.tagName.toLowerCase() != "ol") {
35
	if (this.domNode.tagName.toLowerCase() != "ul" && this.domNode.tagName.toLowerCase() != "ol") {
34
		dojo.raise("RadioGroup: Expected ul or ol content.");
36
		dojo.raise("RadioGroup: Expected ul or ol content.");
35
		return;
37
		return;
36
	}
38
	}
37
	this.items = [];
39
	this.items = [];
38
	var nl = this.domNode.getElementsByTagName("li");
40
	var nl = this.domNode.getElementsByTagName("li");
39
	for (var i = 0; i < nl.length; i++) {
41
	for (var i = 0; i < nl.length; i++) {
40
		if (nl[i].parentNode == this.domNode) {
42
		if (nl[i].parentNode == this.domNode) {
41
			this.items.push(nl[i]);
43
			this.items.push(nl[i]);
42
		}
44
		}
43
	}
45
	}
44
}, add:function (node) {
46
}, add:function (node) {
45
	if (node.parentNode != this.domNode) {
47
	if (node.parentNode != this.domNode) {
46
		this.domNode.appendChild(node);
48
		this.domNode.appendChild(node);
47
	}
49
	}
48
	this.items.push(node);
50
	this.items.push(node);
49
	this._setup(node);
51
	this._setup(node);
50
}, remove:function (node) {
52
}, remove:function (node) {
51
	var idx = -1;
53
	var idx = -1;
52
	for (var i = 0; i < this.items.length; i++) {
54
	for (var i = 0; i < this.items.length; i++) {
53
		if (this.items[i] == node) {
55
		if (this.items[i] == node) {
54
			idx = i;
56
			idx = i;
55
			break;
57
			break;
56
		}
58
		}
57
	}
59
	}
58
	if (idx < 0) {
60
	if (idx < 0) {
59
		return;
61
		return;
60
	}
62
	}
61
	this.items.splice(idx, 1);
63
	this.items.splice(idx, 1);
62
	node.parentNode.removeChild(node);
64
	node.parentNode.removeChild(node);
63
}, clear:function () {
65
}, clear:function () {
64
	for (var i = 0; i < this.items.length; i++) {
66
	for (var i = 0; i < this.items.length; i++) {
65
		this.domNode.removeChild(this.items[i]);
67
		this.domNode.removeChild(this.items[i]);
66
	}
68
	}
67
	this.items = [];
69
	this.items = [];
68
}, clearSelections:function () {
70
}, clearSelections:function () {
69
	for (var i = 0; i < this.items.length; i++) {
71
	for (var i = 0; i < this.items.length; i++) {
70
		dojo.html.removeClass(this.items[i], this.selectedCssClass);
72
		dojo.html.removeClass(this.items[i], this.selectedCssClass);
71
	}
73
	}
72
	this.selectedItem = null;
74
	this.selectedItem = null;
73
}, _setup:function (node) {
75
}, _setup:function (node) {
74
	var span = document.createElement("span");
76
	var span = document.createElement("span");
75
	dojo.html.disableSelection(span);
77
	dojo.html.disableSelection(span);
76
	dojo.html.addClass(span, this.itemContentCssClass);
78
	dojo.html.addClass(span, this.itemContentCssClass);
77
	dojo.dom.moveChildren(node, span);
79
	dojo.dom.moveChildren(node, span);
78
	node.appendChild(span);
80
	node.appendChild(span);
79
	if (this.selected.length > 0) {
81
	if (this.selected.length > 0) {
80
		var uid = dojo.html.getAttribute(node, "id");
82
		var uid = dojo.html.getAttribute(node, "id");
81
		if (uid && uid == this.selected) {
83
		if (uid && uid == this.selected) {
82
			this.selectedItem = node;
84
			this.selectedItem = node;
83
		}
85
		}
84
	}
86
	}
85
	dojo.event.browser.addListener(node, "onclick", dojo.lang.hitch(this, "onItemSelect"));
87
	dojo.event.browser.addListener(node, "onclick", dojo.lang.hitch(this, "onItemSelect"));
86
	if (dojo.html.hasAttribute(node, "onitemselect")) {
88
	if (dojo.html.hasAttribute(node, "onitemselect")) {
87
		var tn = dojo.lang.nameAnonFunc(new Function(dojo.html.getAttribute(node, "onitemselect")), this);
89
		var tn = dojo.lang.nameAnonFunc(new Function(dojo.html.getAttribute(node, "onitemselect")), this);
88
		dojo.event.browser.addListener(node, "onclick", dojo.lang.hitch(this, tn));
90
		dojo.event.browser.addListener(node, "onclick", dojo.lang.hitch(this, tn));
89
	}
91
	}
90
}, _setupChildren:function () {
92
}, _setupChildren:function () {
91
	for (var i = 0; i < this.items.length; i++) {
93
	for (var i = 0; i < this.items.length; i++) {
92
		this._setup(this.items[i]);
94
		this._setup(this.items[i]);
93
	}
95
	}
94
}, _selectItem:function (node, event, nofire) {
96
}, _selectItem:function (node, event, nofire) {
95
	if (this.selectedItem) {
97
	if (this.selectedItem) {
96
		dojo.html.removeClass(this.selectedItem, this.selectedCssClass);
98
		dojo.html.removeClass(this.selectedItem, this.selectedCssClass);
97
	}
99
	}
98
	this.selectedItem = node;
100
	this.selectedItem = node;
99
	dojo.html.addClass(this.selectedItem, this.selectedCssClass);
101
	dojo.html.addClass(this.selectedItem, this.selectedCssClass);
100
	if (!dj_undef("currentTarget", event)) {
102
	if (!dj_undef("currentTarget", event)) {
101
		return;
103
		return;
102
	}
104
	}
103
	if (!nofire) {
105
	if (!nofire) {
104
		if (dojo.render.html.ie) {
106
		if (dojo.render.html.ie) {
105
			this.selectedItem.fireEvent("onclick");
107
			this.selectedItem.fireEvent("onclick");
106
		} else {
108
		} else {
107
			var e = document.createEvent("MouseEvents");
109
			var e = document.createEvent("MouseEvents");
108
			e.initEvent("click", true, false);
110
			e.initEvent("click", true, false);
109
			this.selectedItem.dispatchEvent(e);
111
			this.selectedItem.dispatchEvent(e);
110
		}
112
		}
111
	}
113
	}
112
}, getValue:function () {
114
}, getValue:function () {
113
	return this.selectedItem;
115
	return this.selectedItem;
114
}, onSelect:function (e) {
116
}, onSelect:function (e) {
115
}, onItemSelect:function (e) {
117
}, onItemSelect:function (e) {
116
	if (!dj_undef("currentTarget", e)) {
118
	if (!dj_undef("currentTarget", e)) {
117
		this._selectItem(e.currentTarget, e);
119
		this._selectItem(e.currentTarget, e);
118
	}
120
	}
119
}});
121
}});
120
 
122