/* * SomeXStatusForm.java * * Created on 7 Август 2011 г., 13:35 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package jimm.forms; // #sijapp cond.if modules_XSTATUSES is "true" # import jimm.Jimm; import jimm.comm.StringUtils; import jimm.io.Storage; import jimmui.view.InputTextBox; import jimmui.view.TextBoxListener; import jimmui.view.UIBuilder; import jimmui.view.form.Form; import jimmui.view.form.FormListener; import jimmui.view.menu.*; import protocol.*; import protocol.icq.*; import protocol.xmpp.*; import protocol.mrim.*; import protocol.ui.InfoFactory; import protocol.ui.XStatusInfo; /** * * @author Vladimir Kryukov */ public final class SomeXStatusForm implements SelectListener, TextBoxListener, FormListener { private MenuModel menu = new MenuModel(); private Protocol protocol; private int xstatus; private InputTextBox message; private static final int OPTION_XTRAZ_TITLE = 10; private static final int OPTION_XTRAZ_DESC = 11; protected String[] xst_titles = new String[100]; protected String[] xst_descs = new String[100]; public SomeXStatusForm(Protocol protocol) { this.protocol = protocol; load(); } public final void select(Select select, MenuModel model, int statusIndex) { xstatus = statusIndex; if (-1 == statusIndex) { setXStatus("", ""); back(); } else { onStatusSelected(); } } private String getProtocolId() { // #sijapp cond.if protocols_ICQ is "true" # if (protocol instanceof Icq) { return "icq"; } // #sijapp cond.end# // #sijapp cond.if protocols_MRIM is "true" # if (protocol instanceof Mrim) { return "mrim"; } // #sijapp cond.end# // #sijapp cond.if protocols_JABBER is "true" # if (protocol instanceof Xmpp) { return "jabber"; } // #sijapp cond.end# // #sijapp cond.if protocols_OBIMP is "true" # if (protocol instanceof protocol.obimp.Obimp) { return "obimp"; } // #sijapp cond.end# return ""; } private void load() { try { Storage storage = new Storage(getProtocolId() + "-xstatus"); storage.open(false); storage.loadXStatuses(xst_titles, xst_descs); storage.close(); } catch (Exception ignored) { } } public final void show() { menu.clean(); XStatusInfo info = InfoFactory.factory.getXStatusInfo(protocol); for (byte i = -1; i < info.getXStatusCount(); ++i) { menu.addItem(info.getName(i), info.getIcon(i), i); } menu.setDefaultItemCode(protocol.getProfile().xstatusIndex); menu.setActionListener(this); UIBuilder.createMenu(menu).show(); } public final void back() { Jimm.getJimm().getCL().activate(); } protected final void setXStatus(String title, String desc) { if (0 <= xstatus) { xst_titles[xstatus] = StringUtils.notNull(title); xst_descs[xstatus] = StringUtils.notNull(desc); try { Storage storage = new Storage(getProtocolId() + "-xstatus"); storage.open(true); storage.saveXStatuses(xst_titles, xst_descs); storage.close(); } catch (Exception ignored) { } } protocol.setXStatus(xstatus, title, desc); Jimm.getJimm().getCL().updateMainMenu(); } public void textboxAction(InputTextBox box, boolean ok) { if ((message == box) && ok) { setXStatus(message.getString(), ""); back(); } } public void formAction(Form form, boolean apply) { if (apply) { setXStatus(form.getTextFieldValue(OPTION_XTRAZ_TITLE), form.getTextFieldValue(OPTION_XTRAZ_DESC)); } back(); } protected void onStatusSelected() { int title = 512; // #sijapp cond.if protocols_MRIM is "true" # if (protocol instanceof Mrim) { title = 32; } // #sijapp cond.end # // #sijapp cond.if protocols_ICQ is "true" # if (protocol instanceof Icq) { title = 128; } // #sijapp cond.end # int id = xstatus; message = new InputTextBox().create("status_message", title); message.setString(xst_titles[id]); message.setTextBoxListener(this); message.show(); } } // #sijapp cond.end #