]>
jfr.im git - irc/quakenet/qwebirc.git/blob - js/ui/baseui.js
1 qwebirc
.ui
.WINDOW_STATUS
= 1;
2 qwebirc
.ui
.WINDOW_QUERY
= 2;
3 qwebirc
.ui
.WINDOW_CHANNEL
= 3;
4 qwebirc
.ui
.WINDOW_CUSTOM
= 4;
5 qwebirc
.ui
.WINDOW_CONNECT
= 5;
6 qwebirc
.ui
.CUSTOM_CLIENT
= "custom";
8 qwebirc
.ui
.BaseUI
= new Class({
9 Implements: [Events
, Options
],
11 appTitle: "QuakeNet Web IRC",
14 initialize: function(parentElement
, windowClass
, uiName
, options
) {
15 this.setOptions(options
);
18 this.windows
[qwebirc
.ui
.CUSTOM_CLIENT
] = {};
19 this.windowArray
= [];
20 this.windowClass
= windowClass
;
21 this.parentElement
= parentElement
;
22 this.parentElement
.addClass("qwebirc");
23 this.parentElement
.addClass("qwebirc-" + uiName
);
24 this.firstClient
= false;
25 this.commandhistory
= new qwebirc
.irc
.CommandHistory();
27 newClient: function(client
) {
28 this.windows
[client
] = {}
29 var w
= this.newWindow(client
, qwebirc
.ui
.WINDOW_STATUS
, "Status");
31 if(!this.firstClient
) {
32 this.firstClient
= true;
33 w
.addLine("", "qwebirc v" + qwebirc
.VERSION
);
34 w
.addLine("", "Copyright (C) 2008 Chris Porter. All rights reserved.");
35 w
.addLine("", "http://webchat.quakenet.org/");
36 w
.addLine("", "This is BETA quality software, please report bugs to slug@quakenet.org");
40 newWindow: function(client
, type
, name
) {
41 var identifier
= name
;
42 if(type
== qwebirc
.ui
.WINDOW_STATUS
)
45 var w
= this.windows
[client
][identifier
] = new this.windowClass(this, client
, type
, name
, identifier
);
46 this.windowArray
.push(w
);
50 getActiveWindow: function() {
53 __setActiveWindow: function(window
) {
56 selectWindow: function(window
) {
58 this.active
.deselect();
59 window
.select(); /* calls setActiveWindow */
60 document
.title
= window
.name
+ " - " + this.options
.appTitle
;
62 __closed: function(window
) {
64 this.active
= undefined;
65 if(this.windowArray
.length
== 1) {
66 this.windowArray
= [];
68 var index
= this.windowArray
.indexOf(window
);
71 } else if(index
== 0) {
72 this.selectWindow(this.windowArray
[1]);
74 this.selectWindow(this.windowArray
[index
- 1]);
77 this.windowArray
= this.windowArray
.erase(window
);
81 delete this.windows
[window
.client
][window
.identifier
];
84 this shouldn't be called by overriding classes!
85 they should implement their own!
86 some form of user input MUST be received before an
87 IRC connection is made, else users are going to get
88 tricked into getting themselves glined
90 loginBox: function(callback
, initialNickname
, initialChannels
, autoConnect
, autoNick
) {
91 qwebirc
.ui
.GenericLoginBox(this.parentElement
, callback
, initialNickname
, initialChannels
, autoConnect
, autoNick
);
95 qwebirc
.ui
.StandardUI
= new Class({
96 Extends: qwebirc
.ui
.BaseUI
,
97 initialize: function(parentElement
, windowClass
, uiName
, options
) {
98 this.parent(parentElement
, windowClass
, uiName
, options
);
99 window
.addEvent("keydown", function(x
) {
103 if(x
.key
== "a" || x
.key
== "A") {
105 for(var i
=0;i
<this.windowArray
.length
;i
++) {
106 if(this.windowArray
[i
].hilighted
) {
107 this.selectWindow(this.windowArray
[i
]);
111 } else if(x
.key
>= '0' && x
.key
<= '9') {
114 number
= x
.key
- '0';
120 if(number
>= this.windowArray
.length
)
123 this.selectWindow(this.windowArray
[number
]);
127 newCustomWindow: function(name
, select
, type
) {
129 type
= qwebirc
.ui
.WINDOW_CUSTOM
;
131 var w
= this.newWindow(qwebirc
.ui
.CUSTOM_CLIENT
, type
, name
);
132 w
.addEvent("close", function(w
) {
133 delete this.windows
[name
];
137 this.selectWindow(w
);
141 embeddedWindow: function() {
143 this.selectWindow(this.embedded
)
147 this.embedded
= this.newCustomWindow("Embedding wizard", true);
148 this.embedded
.addEvent("close", function() {
149 this.embedded
= null;
152 var ew
= new qwebirc
.ui
.EmbedWizard({parent: this.embedded
.lines
});
153 ew
.addEvent("close", function() {
154 this.embedded
.close();
157 urlDispatcher: function(name
) {
158 if(name
== "embedded")
159 return this.embeddedWindow
.bind(this);
165 qwebirc
.ui
.NewLoginUI
= new Class({
166 Extends: qwebirc
.ui
.StandardUI
,
167 loginBox: function(callbackfn
, initialNickname
, initialChannels
, autoConnect
, autoNick
) {
168 this.postInitialize();
169 var w
= this.newCustomWindow("Connect", true, qwebirc
.ui
.WINDOW_CONNECT
);
170 var callback = function(args
) {
175 qwebirc
.ui
.GenericLoginBox(w
.lines
, callback
, initialNickname
, initialChannels
, autoConnect
, autoNick
);