File: combolist.js

package info (click to toggle)
virtuoso-opensource 6.1.4%2Bdfsg1-7
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 245,116 kB
  • sloc: ansic: 639,631; sql: 439,225; xml: 287,085; java: 61,048; sh: 38,723; cpp: 36,889; cs: 25,240; php: 12,562; yacc: 9,036; lex: 7,149; makefile: 6,093; jsp: 4,447; awk: 1,643; perl: 1,017; ruby: 1,003; python: 329
file content (89 lines) | stat: -rw-r--r-- 2,341 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
 *  $Id: combolist.js,v 1.12.2.4 2010/04/06 16:46:11 source Exp $
 *
 *  This file is part of the OpenLink Software Ajax Toolkit (OAT) project.
 *
 *  Copyright (C) 2005-2010 OpenLink Software
 *
 *  See LICENSE file for details.
 */
/*
	var cl = new OAT.Combolist(optList,value)
	appendChild(cl.div)

	cl.clearOpts()
	cl.addOption(name, value)

	CSS: combo_list, combo_list_input, combo_list_option, combo_list_list
*/

OAT.Combolist = function(optList,value,optObj) {
	var self = this;

	this.options = {
		name:"combo_list", /* name of input element */
		imagePath:OAT.Preferences.imagePath,
		onchange:function() {}
	}

	for (var p in optObj) { self.options[p] = optObj[p]; }

	this.value = value || "";
	this.div = OAT.Dom.create("div",{},"combo_list");

	this.img = OAT.Dom.create("img",{cursor:"pointer"});
	this.img.src = self.options.imagePath + "Combolist_select.gif";
	this.input = OAT.Dom.create("input",{},"combo_list_input");
	this.input.type = "text";
	this.input.name = self.options.name;
	this.input.value = self.value;
	this.input.defaultValue = self.value;

	this.list = OAT.Dom.create("div",{position:"absolute",left:"0px",top:"0px",zIndex:1001},"combo_list_list");
	OAT.Event.attach(this.input,"keyup",function(){
		self.value = self.input.value;
		self.options.onchange(self);
	});
	self.instant = new OAT.Instant(self.list);

	this.clearOpts = function() {
		OAT.Dom.clear(self.list);
	}

	this.addOption = function(name, value) {
		var n = name;
		var v = name;
		if (value) { v = value; }
		var opt = OAT.Dom.create("div",{},"combo_list_option");
		opt.innerHTML = n;
		opt.value = v;
		attach(opt);
		self.list.appendChild(opt);
	}

	var attach = function(option) {
		var ref = function(event) {
			self.value = option.value;
			self.input.value = option.value;
			self.options.onchange(self);
			self.instant.hide();
		}
		OAT.Event.attach(option,"click",ref);
	}

	if (optList) {
		for (var i=0;i<optList.length;i++) {
			this.addOption(optList[i]);
		}
	}

	OAT.Dom.append([self.div,self.input,self.img],[document.body,self.list]);

	self.instant.options.showCallback = function() {
		var coords = OAT.Dom.position(self.input);
		var dims = OAT.Dom.getWH(self.input);
		self.list.style.left = (coords[0]+2) +"px";
		self.list.style.top = (coords[1]+dims[1]+5)+"px";
	}
	self.instant.createHandle(self.img);
}