]> jfr.im git - irc/quakenet/qwebirc.git/blame - js/ui/uglyui.js
Reorganise.
[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
7 this.outerContainer = new Element("div", { "styles": { "display": "none", "font-family": "Lucida Console" } });\r
8 parentObject.container.appendChild(this.outerContainer);\r
9 \r
10 if(type == WINDOW_CHANNEL) {\r
11 this.nicklist = new Element("div", {"styles": { "border-left": "1px solid black", "width": "125px", "float": "right", "height": "480px", "clear": "both", "overflow": "auto", "background": "white"} });\r
12 this.outerContainer.appendChild(this.nicklist);\r
4d256d41
CP
13 }\r
14 \r
daddcd5d
CP
15 var innerContainer = new Element("div", {"styles": { "height": "480px" }});\r
16 this.outerContainer.appendChild(innerContainer);\r
17 \r
18 if(type == WINDOW_CHANNEL) {\r
19 this.topic = new Element("div", {"styles": { "background": "#fef", "height": "20px" } });\r
20 innerContainer.appendChild(this.topic);\r
4d256d41 21 }\r
4d256d41 22 \r
daddcd5d
CP
23 this.lines = new Element("div", {"styles": { "height": "460px", "overflow": "auto", "word-wrap": "break-word" }});\r
24 innerContainer.appendChild(this.lines);\r
25 \r
26 this.tab = new Element("span", {"styles": { "border": "1px black solid", "padding": "2px", "cursor": "default", "margin-right": "2px", "background": "#eee", "clear": "both" } });\r
27 this.tab.appendText(name);\r
28 this.tab.addEvent("click", function() {\r
29 parentObject.selectWindow(this);\r
30 }.bind(this));\r
31\r
32 parentObject.tabs.appendChild(this.tab);\r
33 \r
34 if(type != WINDOW_STATUS) {\r
35 tabclose = new Element("span", {"styles": { "border": "1px black solid", "margin-left": "5px", "padding": "2px", "font-size": "0.5em" } });\r
36 tabclose.addEvent("click", function(e) {\r
37 new Event(e).stop();\r
38 \r
39 if(type == WINDOW_CHANNEL)\r
ecde4837 40 this.client.exec("/PART " + name);\r
b15204e3 41\r
daddcd5d
CP
42 this.close();\r
43 }.bind(this));\r
a67a945d 44 tabclose.set("text", "X");\r
daddcd5d 45 this.tab.appendChild(tabclose);\r
c3efd9cc 46 }\r
daddcd5d
CP
47 },\r
48 updateNickList: function(nicks) {\r
49 this.parent(nicks);\r
4d256d41 50 \r
daddcd5d 51 var n = this.nicklist;\r
4d256d41
CP
52 while(n.firstChild)\r
53 n.removeChild(n.firstChild);\r
54\r
ecde4837 55 nicks.each(function(nick) {\r
daddcd5d 56 var e = new Element("div");\r
4d256d41
CP
57 n.appendChild(e);\r
58 e.appendChild(document.createTextNode(nick));\r
59 });\r
daddcd5d
CP
60 },\r
61 updateTopic: function(topic) {\r
62 this.parent(topic);\r
63 \r
64 var t = this.topic;\r
4d256d41
CP
65 \r
66 while(t.firstChild)\r
67 t.removeChild(t.firstChild);\r
68\r
da4b5be7 69 Colourise(topic, t);\r
daddcd5d
CP
70 },\r
71 select: function() {\r
72 this.parent();\r
73 \r
74 this.outerContainer.setStyle("display", "block");\r
75 this.tab.setStyle("background", "#dff");\r
76 this.tab.setStyle("color", "");\r
77 },\r
78 deselect: function() {\r
79 this.parent();\r
80 \r
81 this.outerContainer.setStyle("display", "none");\r
82 this.tab.setStyle("background", "#eee");\r
83 },\r
84 close: function() {\r
85 this.parent();\r
86 \r
87 this.parentObject.container.removeChild(this.outerContainer);\r
88 this.parentObject.tabs.removeChild(this.tab);\r
89 },\r
90 addLine: function(type, line, colour) {\r
91 this.parent(type, line, colour);\r
4d256d41 92 \r
c3efd9cc
CP
93 var c;\r
94 if(colour) {\r
95 c = colour;\r
daddcd5d 96 } else if(this.lastcolour) {\r
4d256d41
CP
97 c = "#efefef";\r
98 } else {\r
99 c = "#eeffff";\r
100 }\r
101 \r
102 var e = new Element("div", { "styles": { "background": c } });\r
c3efd9cc 103 if(type)\r
daddcd5d 104 line = this.parentObject.theme.message(type, line);\r
c3efd9cc 105 \r
da4b5be7 106 Colourise(IRCTimestamp(new Date()) + " " + line, e);\r
4d256d41 107 \r
daddcd5d 108 this.lastcolour = !this.lastcolour;\r
4379a101
CP
109 \r
110 var prev = this.lines.getScroll();\r
111 var prevbottom = this.lines.getScrollSize().y;\r
112 var prevsize = this.lines.getSize();\r
113 this.lines.appendChild(e);\r
114 \r
115 if(prev.y + prevsize.y == prevbottom)\r
116 this.lines.scrollTo(prev.x, this.lines.getScrollSize().y);\r
117 \r
118 if(!this.active)\r
119 this.tab.setStyle("color", "red");\r
b15204e3 120 }\r
daddcd5d
CP
121});\r
122\r
123var UglyUI = new Class({\r
124 Extends: UI,\r
125 initialize: function(parentElement, theme) {\r
126 this.parent(UglyUIWindow);\r
c3efd9cc 127 \r
daddcd5d
CP
128 this.parentElement = parentElement;\r
129 this.theme = theme;\r
b15204e3 130 \r
daddcd5d
CP
131 this.tabs = new Element("div", {"styles": { "border": "1px solid black", "padding": "4px", "font-family": "Lucida Console" } });\r
132 parentElement.appendChild(this.tabs);\r
c3efd9cc 133 \r
daddcd5d
CP
134 this.container = new Element("div", {"styles": { "border": "1px solid black", "margin": "2px 0px 0px 0px", "height": "480px" } });\r
135 parentElement.appendChild(this.container);\r
b15204e3 136 \r
daddcd5d
CP
137 var form = new Element("form");\r
138 var inputbox = new Element("input", {"styles": { "width": "400px", "border": "1px solid black", "margin": "2px 0px 0px 0px"} });\r
139 \r
140 form.addEvent("submit", function(e) {\r
141 new Event(e).stop();\r
142 \r
ecde4837 143 this.getActiveWindow().client.exec(inputbox.value);\r
daddcd5d
CP
144 inputbox.value = "";\r
145 }.bind(this));\r
146 parentElement.appendChild(form); \r
147 form.appendChild(inputbox);\r
148 inputbox.focus();\r
4379a101 149 }\r
daddcd5d 150});