]>
jfr.im git - irc/quakenet/qwebirc.git/blob - js/ui/qui.js
1 var QUIWindow
= new Class({
4 initialize: function(parentObject
, client
, type
, name
) {
5 this.parent(parentObject
, client
, type
, name
);
7 this.tab
= new Element("span");
8 this.tab
.addClass("tab");
10 this.tab
.appendText(name
);
11 this.tab
.addEvent("click", function() {
12 parentObject
.selectWindow(this);
15 parentObject
.tabs
.appendChild(this.tab
);
17 if(type
!= WINDOW_STATUS
) {
18 tabclose
= new Element("span");
19 tabclose
.addClass("tabclose");
20 tabclose
.addEvent("click", function(e
) {
23 if(type
== WINDOW_CHANNEL
)
24 this.client
.exec("/PART " + name
);
28 tabclose
.set("text", "X");
29 this.tab
.appendChild(tabclose
);
32 this.parentObject
.reflow();
34 this.window
= new Element("div");
35 this.window
.addClass("window");
36 parentObject
.container
.appendChild(this.window
);
38 this.lines
= new Element("div");
39 this.lines
.addClass("lines");
40 this.window
.appendChild(this.lines
);
42 var formdiv
= new Element("div");
43 this.window
.appendChild(formdiv
);
45 var form
= new Element("form");
46 var inputbox
= new Element("input");
48 formdiv
.addClass("input");
50 form
.addEvent("submit", function(e
) {
53 this.historyExec(inputbox
.value
);
56 formdiv
.appendChild(form
);
57 form
.appendChild(inputbox
);
59 inputbox
.addEvent("keypress", function(e
) {
62 result
= this.commandhistory
.nextLine();
63 } else if(e
.key
== "down") {
64 result
= this.commandhistory
.prevLine();
72 inputbox
.value
= result
;
78 var bottompos
= formdiv
.getSize().y
;
80 if(type
== WINDOW_CHANNEL
) {
81 this.nicklist
= new Element("div");
82 this.nicklist
.addClass("nicklist");
83 this.nicklist
.setStyle("bottom", (bottompos
- 1) + "px");
85 this.window
.appendChild(this.nicklist
);
86 rightpos
= this.nicklist
.getSize().x
;
88 this.topic
= new Element("div");
89 this.topic
.addClass("topic");
90 this.topic
.set("html", " ");
91 this.topic
.setStyle("right", rightpos
+ "px");
92 this.window
.appendChild(this.topic
);
94 toppos
= this.topic
.getSize().y
;
97 this.lines
.setStyle("top", toppos
+ "px");
98 this.lines
.setStyle("bottom", bottompos
+ "px");
99 this.lines
.setStyle("right", rightpos
+ "px");
100 this.lines
.addClass("lines");
102 updateNickList: function(nicks
) {
105 var n
= this.nicklist
;
107 n
.removeChild(n
.firstChild
);
109 nicks
.each(function(nick
) {
110 var e
= new Element("div");
112 e
.appendChild(document
.createTextNode(nick
));
115 updateTopic: function(topic
) {
121 t
.removeChild(t
.firstChild
);
126 this.window
.removeClass("tab-invisible");
127 this.tab
.removeClass("tab-unselected");
128 this.tab
.addClass("tab-selected");
131 deselect: function() {
134 this.window
.addClass("tab-invisible");
135 this.tab
.removeClass("tab-selected");
136 this.tab
.addClass("tab-unselected");
141 this.parentObject
.container
.removeChild(this.window
);
142 this.parentObject
.tabs
.removeChild(this.tab
);
144 addLine: function(type
, line
, colour
) {
145 var e
= new Element("div");
148 e
.setStyles({"background": colour
});
149 } else if(this.lastcolour
) {
150 e
.addClass("linestyle1");
152 e
.addClass("linestyle2");
154 this.lastcolour
= !this.lastcolour
;
156 this.parent(type
, line
, colour
, e
);
158 setHilighted: function(state
) {
162 this.tab
.addClass("tab-hilighted");
164 this.tab
.removeClass("tab-hilighted");
169 var QUI
= new Class({
171 initialize: function(parentElement
, theme
) {
172 this.parent(parentElement
, QUIWindow
, "qui");
174 this.parentElement
= parentElement
;
177 var tabheight
= this.tabs
.getSize().y
;
178 this.container
.setStyle("top", tabheight
+ "px");
180 postInitialize: function() {
181 this.outerContainer
= new Element("div");
182 this.outerContainer
.addClass("outercontainer");
183 this.parentElement
.appendChild(this.outerContainer
);
185 this.tabs
= new Element("div");
186 this.tabs
.addClass("tabbar");
187 this.outerContainer
.appendChild(this.tabs
);
189 var tester
= new Element("span");
190 this.tabs
.appendChild(tester
);
192 this.tabheight
= this.tabs
.getSize().y
;
193 this.tabs
.removeChild(tester
);
195 this.container
= new Element("div");
196 this.container
.addClass("container");
197 this.outerContainer
.appendChild(this.container
);
199 loginBox: function(callbackfn
, intialNickname
, initialChannels
) {
200 this.parent(function(options
) {
201 this.postInitialize();
203 }.bind(this), intialNickname
, initialChannels
);