package jfcontrols.panels; /** Events. * * @author pquiring */ import javaforce.*; import javaforce.webui.*; import jfcontrols.sql.*; import jfcontrols.tags.TagsService; public class Events { private static final Object lock = new Object(); //button clicked public static void click(Component c) { WebUIClient client = c.getClient(); String func = (String)c.getProperty("func"); String arg = (String)c.getProperty("arg"); JFLog.log("click:" + c + ":func=" + func + ":arg=" + arg); if (func == null) return; SQL sql = SQLService.getSQL(); switch (func) { case "showMenu": { if (client.getProperty("user") == null) { PopupPanel panel = (PopupPanel)client.root.getComponent("login_panel"); panel.setVisible(true); } else { PopupPanel panel = (PopupPanel)client.root.getComponent("menu_panel"); panel.setVisible(true); } break; } case "jfc_logout": { client.setProperty("user", null); PopupPanel panel = (PopupPanel)client.root.getComponent("menu_panel"); panel.setVisible(false); break; } case "jfc_login_ok": { String user = ((TextField)client.root.getComponent("user")).getText(); String pass = ((TextField)client.root.getComponent("pass")).getText(); JFLog.log("user/pass=" + user + "," + pass); String data[][] = sql.select("select name,pass from users"); boolean ok = false; for(int a=0;a<data.length;a++) { JFLog.log("user/pass=" + data[a][0] + "," + data[a][1]); if (user.equals(data[a][0]) && pass.equals(data[a][1])) { client.setProperty("user", user); ok = true; break; } } if (!ok) { Label lbl = (Label)client.root.getComponent("errmsg"); lbl.setText("Invalid username or password!"); break; } //no break } case "jfc_login_cancel": { PopupPanel panel = (PopupPanel)client.root.getComponent("login_panel"); panel.setVisible(false); break; } case "jfc_ctrl_new": { //find available ctrl id synchronized(lock) { int id = 1; do { String inuse = sql.select1value("select num from ctrls where num=" + id); if (inuse == null) break; id++; } while (true); sql.execute("insert into ctrls (num,ip,type,speed) values (" + id + ",'',0,0)"); client.setPanel(Panels.getPanel("jfc_controllers", client)); } break; } case "jfc_ctrl_delete": { //TODO break; } case "jfc_ctrl_save": { //force a reload of config options break; } case "jfc_ctrl_tags": { //load tags for controller client.setProperty("ctrl", arg); client.setPanel(Panels.getPanel("jfc_tags", client)); break; } case "jfc_tags_new": { synchronized(lock) { int id = 1; do { String inuse = sql.select1value("select name from tags where name='tag" + id + "' and cid=" + client.getProperty("ctrl")); if (inuse == null) break; id++; } while (true); sql.execute("insert into tags (cid,name,type) values (" + client.getProperty("ctrl") + ",'tag" + id + "',0)"); client.setPanel(Panels.getPanel("jfc_tags", client)); } break; } case "jfc_tags_delete": { break; } case "jfc_tags_save": { break; } case "jfc_panels_new": { synchronized(lock) { int id = 1; do { String inuse = sql.select1value("select name from panels where name='panel" + id + "'"); if (inuse == null) break; id++; } while (true); sql.execute("insert into panels (name, popup, builtin) values ('panel" + id + "', false, false)"); } client.setPanel(Panels.getPanel("jfc_panels", client)); break; } case "jfc_panels_edit": { client.setProperty("panel", arg); client.setPanel(Panels.getPanel("jfc_panel_editor", client)); break; } case "jfc_panels_delete": { break; } case "jfc_panel_editor_add": { ComboBox cb = (ComboBox)client.getPanel().getComponent("panel_type"); String type = cb.getSelectedText(); JFLog.log("type=" + type); Component nc = null; switch (type) { case "label": nc = new Label("label"); break; case "button": nc = new Button("button"); break; } if (nc == null) break; Block focus = (Block)client.getProperty("focus"); if (focus == null) break; Rectangle r = (Rectangle)focus.getProperty("rect"); Rectangle nr = new Rectangle(r); Panels.setCellSize(nc, nr); Table t1 = (Table)client.getPanel().getComponent("t1"); //components t1.add(nc, r.x, r.y); break; } case "jfc_panel_editor_del": { break; } case "jfc_panel_editor_move_u": { Panels.moveCell(client, 0, -1); break; } case "jfc_panel_editor_move_d": { Panels.moveCell(client, 0, +1); break; } case "jfc_panel_editor_move_l": { Panels.moveCell(client, -1, 0); break; } case "jfc_panel_editor_move_r": { Panels.moveCell(client, +1, 0); break; } case "jfc_panel_editor_size_w_inc": { Panels.resizeCell(client, +1, 0); break; } case "jfc_panel_editor_size_w_dec": { Panels.resizeCell(client, -1, 0); break; } case "jfc_panel_editor_size_h_inc": { Panels.resizeCell(client, 0, +1); break; } case "jfc_panel_editor_size_h_dec": { Panels.resizeCell(client, 0, -1); break; } case "jfc_funcs_new": { synchronized(lock) { int id = 1; do { String inuse = sql.select1value("select name from funcs where name='func" + id + "'"); if (inuse == null) break; id++; } while (true); sql.execute("insert into funcs (name) values ('func" + id + "')"); } client.setPanel(Panels.getPanel("jfc_funcs", client)); break; } case "jfc_funcs_edit": { client.setProperty("func", arg); client.setPanel(Panels.getPanel("jfc_func_editor", client)); break; } case "jfc_funcs_delete": { break; } case "setPanel": Panel panel = Panels.getPanel(arg, client); if (panel != null) { client.setPanel(panel); } break; case "toggleBit": break; case "setBit": break; case "clearBit": break; default: //TODO : support plugin events break; } sql.close(); } //textfield edited public static void edit(TextField tf) { WebUIClient client = tf.getClient(); String tag = (String)tf.getProperty("tag"); if (tag == null) return; String value = tf.getText(); if (tag.startsWith("jfc_")) { String f[] = tag.split("_"); //jfc_table_col_id String table = f[1]; String col = f[2]; String type = f[3]; String id = f[4]; SQL sql = SQLService.getSQL(); sql.execute("update " + table + " set " + col + "=" + SQLService.quote(value, type) + " where id=" + id); if (sql.lastException != null) { JFLog.log(sql.lastException); } sql.close(); } else { TagsService.write(tag, tf.getText()); } } //combobox changed public static void changed(ComboBox cb) { WebUIClient client = cb.getClient(); String tag = (String)cb.getProperty("tag"); if (tag == null) return; String value = cb.getSelectedValue(); if (tag.startsWith("jfc_")) { String f[] = tag.split("_"); //jfc_table_col_id String table = f[1]; String col = f[2]; String type = f[3]; String id = f[4]; SQL sql = SQLService.getSQL(); sql.execute("update " + table + " set " + col + "=" + SQLService.quote(value, type) + " where id=" + id); if (sql.lastException != null) { JFLog.log(sql.lastException); } sql.close(); } else { TagsService.write(tag, value); } } }