]> jfr.im git - irc/quakenet/qwebirc.git/blame - js/ui/uglyui.js
Use compiled versions.
[irc/quakenet/qwebirc.git] / js / ui / uglyui.js
CommitLineData
daddcd5d
CP
1var UglyUIWindow = new Class({\r
2 Extends: UIWindow,\r
4d256d41 3 \r
daddcd5d
CP
4 initialize: function(parentObject, client, type, name) {\r
5 this.parent(parentObject, client, type, name);\r
6 \r
bed65087
CP
7 this.outerContainer = new Element("div");\r
8 this.outerContainer.addClass("outercontainer");\r
9 this.outerContainer.addClass("tab-invisible");\r
10 \r
daddcd5d
CP
11 parentObject.container.appendChild(this.outerContainer);\r
12 \r
13 if(type == WINDOW_CHANNEL) {\r
bed65087
CP
14 this.nicklist = new Element("div");\r
15 this.nicklist.addClass("nicklist");\r
16 \r
daddcd5d 17 this.outerContainer.appendChild(this.nicklist);\r
4d256d41
CP
18 }\r
19 \r
bed65087
CP
20 var innerContainer = new Element("div");\r
21 innerContainer.addClass("innercontainer");\r
daddcd5d
CP
22 this.outerContainer.appendChild(innerContainer);\r
23 \r
24 if(type == WINDOW_CHANNEL) {\r
bed65087
CP
25 this.topic = new Element("div");\r
26 this.topic.addClass("topic");\r
daddcd5d 27 innerContainer.appendChild(this.topic);\r
4d256d41 28 }\r
4d256d41 29 \r
bed65087
CP
30 this.lines = new Element("div");\r
31 this.lines.addClass("lines");\r
daddcd5d
CP
32 innerContainer.appendChild(this.lines);\r
33 \r
bed65087
CP
34 this.tab = new Element("span");\r
35 this.tab.addClass("tab");\r
36 \r
daddcd5d
CP
37 this.tab.appendText(name);\r
38 this.tab.addEvent("click", function() {\r
39 parentObject.selectWindow(this);\r
40 }.bind(this));\r
41\r
42 parentObject.tabs.appendChild(this.tab);\r
43 \r
44 if(type != WINDOW_STATUS) {\r
bed65087
CP
45 tabclose = new Element("span");\r
46 tabclose.addClass("tabclose");\r
daddcd5d
CP
47 tabclose.addEvent("click", function(e) {\r
48 new Event(e).stop();\r
49 \r
50 if(type == WINDOW_CHANNEL)\r
ecde4837 51 this.client.exec("/PART " + name);\r
b15204e3 52\r
daddcd5d
CP
53 this.close();\r
54 }.bind(this));\r
a67a945d 55 tabclose.set("text", "X");\r
daddcd5d 56 this.tab.appendChild(tabclose);\r
c3efd9cc 57 }\r
daddcd5d
CP
58 },\r
59 updateNickList: function(nicks) {\r
60 this.parent(nicks);\r
4d256d41 61 \r
daddcd5d 62 var n = this.nicklist;\r
4d256d41
CP
63 while(n.firstChild)\r
64 n.removeChild(n.firstChild);\r
65\r
ecde4837 66 nicks.each(function(nick) {\r
daddcd5d 67 var e = new Element("div");\r
4d256d41
CP
68 n.appendChild(e);\r
69 e.appendChild(document.createTextNode(nick));\r
70 });\r
daddcd5d
CP
71 },\r
72 updateTopic: function(topic) {\r
73 this.parent(topic);\r
74 \r
75 var t = this.topic;\r
4d256d41
CP
76 \r
77 while(t.firstChild)\r
78 t.removeChild(t.firstChild);\r
79\r
da4b5be7 80 Colourise(topic, t);\r
daddcd5d
CP
81 },\r
82 select: function() {\r
83 this.parent();\r
84 \r
bed65087
CP
85 this.outerContainer.removeClass("tab-invisible");\r
86 this.tab.removeClass("tab-unselected");\r
87 this.tab.removeClass("tab-highlighted");\r
88 this.tab.addClass("tab-selected");\r
daddcd5d
CP
89 },\r
90 deselect: function() {\r
91 this.parent();\r
92 \r
bed65087
CP
93 this.outerContainer.addClass("tab-invisible");\r
94 this.tab.removeClass("tab-selected");\r
95 this.tab.addClass("tab-unselected");\r
daddcd5d
CP
96 },\r
97 close: function() {\r
98 this.parent();\r
99 \r
100 this.parentObject.container.removeChild(this.outerContainer);\r
101 this.parentObject.tabs.removeChild(this.tab);\r
102 },\r
103 addLine: function(type, line, colour) {\r
104 this.parent(type, line, colour);\r
4d256d41 105 \r
bed65087
CP
106 var e = new Element("div");\r
107\r
c3efd9cc 108 if(colour) {\r
bed65087 109 e.addStyle("background", colour);\r
daddcd5d 110 } else if(this.lastcolour) {\r
bed65087 111 e.addClass("linestyle1");\r
4d256d41 112 } else {\r
bed65087 113 e.addClass("linestyle2");\r
4d256d41
CP
114 }\r
115 \r
c3efd9cc 116 if(type)\r
daddcd5d 117 line = this.parentObject.theme.message(type, line);\r
c3efd9cc 118 \r
da4b5be7 119 Colourise(IRCTimestamp(new Date()) + " " + line, e);\r
4d256d41 120 \r
daddcd5d 121 this.lastcolour = !this.lastcolour;\r
4379a101
CP
122 \r
123 var prev = this.lines.getScroll();\r
124 var prevbottom = this.lines.getScrollSize().y;\r
125 var prevsize = this.lines.getSize();\r
126 this.lines.appendChild(e);\r
127 \r
128 if(prev.y + prevsize.y == prevbottom)\r
129 this.lines.scrollTo(prev.x, this.lines.getScrollSize().y);\r
130 \r
131 if(!this.active)\r
bed65087 132 this.tab.addClass("tab-highlighted");\r
b15204e3 133 }\r
daddcd5d
CP
134});\r
135\r
136var UglyUI = new Class({\r
137 Extends: UI,\r
138 initialize: function(parentElement, theme) {\r
bed65087 139 this.parent(parentElement, UglyUIWindow, "uglyui");\r
c3efd9cc 140 \r
daddcd5d 141 this.theme = theme;\r
b15204e3 142 \r
bed65087
CP
143 this.tabs = new Element("div");\r
144 this.tabs.addClass("tabbar");\r
145 \r
daddcd5d 146 parentElement.appendChild(this.tabs);\r
c3efd9cc 147 \r
bed65087
CP
148 this.container = new Element("div");\r
149 this.container.addClass("container");\r
150 \r
daddcd5d 151 parentElement.appendChild(this.container);\r
b15204e3 152 \r
daddcd5d 153 var form = new Element("form");\r
bed65087
CP
154 var inputbox = new Element("input");\r
155 inputbox.addClass("input");\r
daddcd5d
CP
156 \r
157 form.addEvent("submit", function(e) {\r
158 new Event(e).stop();\r
159 \r
ecde4837 160 this.getActiveWindow().client.exec(inputbox.value);\r
daddcd5d
CP
161 inputbox.value = "";\r
162 }.bind(this));\r
163 parentElement.appendChild(form); \r
164 form.appendChild(inputbox);\r
165 inputbox.focus();\r
4379a101 166 }\r
daddcd5d 167});