/* * SomeStatusForm.java * * Created on 22 Январь 2010 г., 12:40 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package jimm.forms; import jimm.Jimm; import jimm.comm.StringUtils; import jimmui.view.InputTextBox; import jimmui.view.TextBoxListener; import jimmui.view.UIBuilder; import jimmui.view.menu.*; import protocol.Protocol; import protocol.ui.InfoFactory; import protocol.ui.StatusInfo; /** * * @author Vladimir Krukov */ public final class SomeStatusForm implements SelectListener, TextBoxListener { private Protocol protocol; private InputTextBox passwordTextBox; private int selectedStatus; public SomeStatusForm(Protocol protocol) { this.protocol = protocol; } public final void show() { MenuModel menu = new MenuModel(); addStatuses(menu, InfoFactory.factory.getStatusInfo(protocol), protocol.getProfile().statusIndex); menu.setActionListener(this); UIBuilder.createMenu(menu).show(); } public final void select(Select select, MenuModel model, int status) { selectedStatus = status; boolean connecting = (StatusInfo.STATUS_OFFLINE != status); if (connecting && StringUtils.isEmpty(protocol.getPassword())) { requestPassword(); } else { setStatus(); } } public void textboxAction(InputTextBox box, boolean ok) { if (ok && (box == passwordTextBox)) { protocol.setPassword(passwordTextBox.getString()); passwordTextBox.back(); if (!StringUtils.isEmpty(protocol.getPassword())) { setStatus(); } } } private void addStatuses(MenuModel menu, StatusInfo info, int current) { byte[] statuses = info.applicableStatuses; final byte offline = StatusInfo.STATUS_OFFLINE; menu.addItem(info.getName(offline), info.getIcon(offline), offline); for (byte status : statuses) { menu.addItem(info.getName(status), info.getIcon(status), status); } menu.setDefaultItemCode(current); } private void requestPassword() { passwordTextBox = new InputTextBox().create("password", 32, InputTextBox.PASSWORD); passwordTextBox.setTextBoxListener(this); passwordTextBox.show(); } private void setStatus() { protocol.setStatus(selectedStatus, null); Jimm.getJimm().getCL().activate(); } }