/* * cognet chat app * * Copyright 2003, Brian Swetland * See LICENSE for redistribution terms * */ package org.twodot.cognet; import danger.ui.ScreenWindow; import danger.ui.TextField; import danger.ui.StaticText; import danger.ui.StaticTextBox; import danger.ui.PasswordTextField; import danger.ui.Button; import danger.ui.DialogWindow; import danger.app.Resource; import danger.app.Event; public class LoginWindow extends ScreenWindow implements Resources, Events { public LoginWindow(Engine e) { super("Connect to Server", e.app.getBitmap(Resources.kPending)); StaticText st; engine = e; app = e.app; int w = 60; int h = 20; int w2 = getWidth() - w - 20; int y = 5; int adj = 3; st = new StaticText("Server "); st.setAlignment(StaticText.HALIGN_RIGHT); st.setPosition(0, y + adj); st.setSize(w, h); st.show(); addChild(st); host = new TextField(false, false); host.setPosition(w, y); host.setSize(w2,h); host.show(); addChild(host); y += h + 2; st = new StaticText("Port "); st.setAlignment(StaticText.HALIGN_RIGHT); st.setPosition(0, y + adj); st.setSize(w, h); st.show(); addChild(st); port = new TextField(false, false); port.setPosition(w, y); port.setSize(w2,h); port.show(); addChild(port); y += h + 2; st = new StaticText("Username "); st.setAlignment(StaticText.HALIGN_RIGHT); st.setPosition(0, y + adj); st.setSize(w, h); st.show(); addChild(st); user = new TextField(false, false); user.setPosition(w, y); user.setSize(w2,h); user.show(); addChild(user); y += h + 2; st = new StaticText("Password "); st.setAlignment(StaticText.HALIGN_RIGHT); st.setPosition(0, y + adj); st.setSize(w, h); st.show(); addChild(st); passwd = new PasswordTextField(); passwd.setPosition(w, y); passwd.setSize(w2,h); passwd.show(); addChild(passwd); y += h + 2; Button aboutBtn = new Button(" About "); aboutBtn.setPosition(w + 35,y); aboutBtn.show(); addChild(aboutBtn); aboutBtn.setEvent(this, 6000); button = new Button(" Connect "); button.setPosition(w,y); button.setTop(y); button.setRight(w + w2); button.show(); addChild(button); button.setEvent(this, 5038); setFocusedChild(button); host.setText(engine.HOST); port.setText(Integer.toString(engine.PORT)); user.setText(engine.USER); passwd.setText(engine.PASSWD); } public void show() { engine.MakeActive(null); super.show(); } public void adjustActionMenuState() { app.MakeMenu(getActionMenu(),null); } public boolean eventWidgetUp(int widget, Event event) { switch(widget) { case Event.DEVICE_BUTTON_BACK: getApplication().returnToLauncher(); return true; default: return super.eventWidgetUp(widget,event); } } public boolean receiveEvent(Event e) { if(e.type == 5038){ switch(engine.state){ case Engine.OFFLINE: engine.HOST = new String(host.getChars()); engine.PORT = Integer.parseInt(new String(port.getChars())); engine.USER = new String(user.getChars()); engine.PASSWD = new String(passwd.getChars()); engine.login(); return true; case Engine.CONNECTING: return true; case Engine.ONLINE: engine.logout(); return true; default: return true; } } if(e.type == 5039){ System.err.println("statecheck"); switch(engine.state){ case Engine.OFFLINE: button.setTitle("Connect"); return true; case Engine.CONNECTING: button.setTitle("Cancel"); return true; case Engine.ONLINE: // save settings System.out.println("cognet: commit settings"); app.cogSettings.setStringValue("host", engine.HOST); app.cogSettings.setIntValue("port", engine.PORT); app.cogSettings.setStringValue("user", engine.USER); app.cogSettings.setStringValue("password", engine.PASSWD); button.setTitle("Disconnect"); return true; default: return true; } } if(e.type == 5040 && app.doAutoConnect){ System.err.println("autologin"); if (engine.PASSWD != null && engine.PASSWD.length()>0) { hide(); engine.login(); } return true; } if(e.type == 6000) { DialogWindow w = app.getDialog(kAboutDialog, this); StaticTextBox s = (StaticTextBox)w.getDescendantWithID(kID_AboutText); Resource r = app.getResources().getResource(257, kLicense); byte b[] = new byte[r.getSize()]; r.getBytes(b,0,r.getSize()); s.setText(new String(b)); w.show(); } return super.receiveEvent(e); } void SendEvent(int e) { sendEventToWindow(new Event(this,e)); } public boolean eventShortcut(char c, Event e) { if(c == 'n') { if(engine.first != null){ engine.first.show(); } return true; } return super.eventShortcut(c, e); } TextField host, port, user, passwd; Button button; Engine engine; Cognet app; }