Search in sources :

Example 46 with Result

use of com.codename1.rad.processing.Result in project CodenameOne by codenameone.

the class PropertyIndex method loadJSONList.

/**
 * Loads JSON containing a list of property objects of this type
 * @param stream the input stream
 * @return list of property objects matching this type
 */
public <X extends PropertyBusinessObject> List<X> loadJSONList(InputStream stream) throws IOException {
    JSONParser jp = new JSONParser();
    JSONParser.setUseBoolean(true);
    JSONParser.setUseLongs(true);
    List<X> response = new ArrayList<X>();
    Map<String, Object> result = jp.parseJSON(new InputStreamReader(stream, "UTF-8"));
    List<Map> entries = (List<Map>) result.get("root");
    for (Map m : entries) {
        X pb = (X) newInstance();
        pb.getPropertyIndex().populateFromMap(m, parent.getClass());
        response.add(pb);
    }
    return response;
}
Also used : InputStreamReader(java.io.InputStreamReader) ArrayList(java.util.ArrayList) JSONParser(com.codename1.io.JSONParser) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Example 47 with Result

use of com.codename1.rad.processing.Result in project CodenameOne by codenameone.

the class SQLMap method selectImpl.

/**
 * Fetches the components from the database matching the given cmp description, the fields that aren't
 * null within the cmp will match the where clause
 * @param where the where statement
 * @param propertyClass the class of the property business object
 * @param params the parameters to use in the where statement
 * @param orderBy the column to order by, can be null to ignore order
 * @param ascending true to indicate ascending order
 * @param maxElements the maximum number of elements returned can be 0 or lower to ignore
 * @param page  the page within the query to match the max elements value
 * @return the result of the query
 */
private java.util.List<PropertyBusinessObject> selectImpl(PropertyBusinessObject cmp, String where, Class propertyClass, Object[] params, Property orderBy, boolean ascending, int maxElements, int page) throws IOException, InstantiationException {
    String tableName = getTableName(cmp);
    StringBuilder createStatement = new StringBuilder("SELECT * FROM ");
    createStatement.append(tableName);
    if (where != null && where.length() > 0) {
        if (!where.toUpperCase().startsWith(" WHERE ")) {
            createStatement.append(" WHERE ");
        }
        createStatement.append(where);
    }
    if (orderBy != null) {
        createStatement.append(" ORDER BY ");
        createStatement.append(getColumnName(orderBy));
        if (!ascending) {
            createStatement.append(" DESC");
        }
    }
    if (maxElements > 0) {
        createStatement.append(" LIMIT ");
        createStatement.append(maxElements);
        if (page > 0) {
            createStatement.append(" OFFSET ");
            createStatement.append(page * maxElements);
        }
    }
    Cursor c = null;
    try {
        ArrayList<PropertyBusinessObject> response = new ArrayList<PropertyBusinessObject>();
        c = executeQuery(createStatement.toString(), params);
        while (c.next()) {
            PropertyBusinessObject pb = (PropertyBusinessObject) propertyClass.newInstance();
            for (PropertyBase p : pb.getPropertyIndex()) {
                Row currentRow = c.getRow();
                SqlType t = getSqlType(p);
                if (t == SqlType.SQL_EXCLUDE) {
                    continue;
                }
                Object value = t.getValue(currentRow, c.getColumnIndex(getColumnName(p)), p);
                if (p instanceof Property) {
                    ((Property) p).set(value);
                }
            }
            response.add(pb);
        }
        c.close();
        return response;
    } catch (Throwable t) {
        Log.e(t);
        if (c != null) {
            c.close();
        }
        if (t instanceof IOException) {
            throw ((IOException) t);
        } else {
            throw new IOException(t.toString());
        }
    }
}
Also used : ArrayList(java.util.ArrayList) IOException(java.io.IOException) Cursor(com.codename1.db.Cursor) Row(com.codename1.db.Row)

Example 48 with Result

use of com.codename1.rad.processing.Result in project CodenameOne by codenameone.

the class TestUtils method getToolbarCommands.

/**
 * Returns all the command objects from the toolbar in the order of left, right, overflow &amp; sidemenu
 * @return the set of commands
 */
public static Command[] getToolbarCommands() {
    Form f = Display.getInstance().getCurrent();
    Toolbar tb = f.getToolbar();
    ArrayList<Command> result = new ArrayList<Command>();
    addAllCommands(tb.getLeftBarCommands(), result);
    addAllCommands(tb.getRightBarCommands(), result);
    addAllCommands(tb.getOverflowCommands(), result);
    addAllCommands(tb.getSideMenuCommands(), result);
    Command[] carr = new Command[result.size()];
    result.toArray(carr);
    return carr;
}
Also used : Form(com.codename1.ui.Form) Command(com.codename1.ui.Command) ArrayList(java.util.ArrayList) Toolbar(com.codename1.ui.Toolbar)

Example 49 with Result

use of com.codename1.rad.processing.Result in project CodenameOne by codenameone.

the class UserInterfaceEditor method appendComponentXMLBody.

private static void appendComponentXMLBody(com.codename1.ui.Container containerInstance, com.codename1.ui.Component cmp, StringBuilder build, EditableResources res, String indent) {
    if (isPropertyModified(cmp, PROPERTY_LAYOUT_CONSTRAINT) || (cmp.getParent() != null && cmp.getParent().getLayout() instanceof com.codename1.ui.layouts.BorderLayout)) {
        if (cmp.getParent() != null && cmp != containerInstance && cmp.getClientProperty("%base_form%") == null) {
            com.codename1.ui.layouts.Layout l = cmp.getParent().getLayout();
            if (l instanceof com.codename1.ui.layouts.BorderLayout) {
                build.append(indent);
                build.append("<layoutConstraint value=\"");
                build.append((String) l.getComponentConstraint(cmp));
                build.append("\" />\n");
            } else {
                if (l instanceof com.codename1.ui.table.TableLayout) {
                    build.append(indent);
                    com.codename1.ui.table.TableLayout.Constraint con = (com.codename1.ui.table.TableLayout.Constraint) l.getComponentConstraint(cmp);
                    build.append("<layoutConstraint row=\"");
                    build.append(getInt("row", con.getClass(), con));
                    build.append("\" column=\"");
                    build.append(getInt("column", con.getClass(), con));
                    build.append("\" height=\"");
                    build.append(getInt("height", con.getClass(), con));
                    build.append("\" width=\"");
                    build.append(getInt("width", con.getClass(), con));
                    build.append("\" align=\"");
                    build.append(getInt("align", con.getClass(), con));
                    build.append("\" spanHorizontal=\"");
                    build.append(getInt("spanHorizontal", con.getClass(), con));
                    build.append("\" valign=\"");
                    build.append(getInt("valign", con.getClass(), con));
                    build.append("\" spanVertical=\"");
                    build.append(getInt("spanVertical", con.getClass(), con));
                    build.append("\" />\n");
                }
            }
        }
    }
    // don't persist children of subclasses like Table etc.
    if (cmp.getClass() == com.codename1.ui.Container.class || cmp instanceof com.codename1.ui.Form || cmp instanceof com.codename1.ui.ComponentGroup) {
        com.codename1.ui.Container cnt = (com.codename1.ui.Container) cmp;
        if (cnt instanceof com.codename1.ui.Form) {
            cnt = ((com.codename1.ui.Form) cnt).getContentPane();
        }
        for (int iter = 0; iter < cnt.getComponentCount(); iter++) {
            persistToXML(containerInstance, cnt.getComponentAt(iter), build, res, indent);
        }
    }
    if (cmp instanceof com.codename1.ui.List && !(cmp instanceof com.codename1.components.RSSReader)) {
        com.codename1.ui.List lst = (com.codename1.ui.List) cmp;
        for (int iter = 0; iter < lst.getModel().getSize(); iter++) {
            Object o = lst.getModel().getItemAt(iter);
            appendMapOrString(o, build, indent, res);
        }
    }
    if (isPropertyModified(cmp, PROPERTY_CUSTOM)) {
        for (String propName : cmp.getPropertyNames()) {
            if (isCustomPropertyModified(cmp, propName) && !propName.startsWith("$")) {
                build.append(indent);
                build.append("<custom name=\"");
                build.append(propName);
                Class type = getPropertyCustomType(cmp, propName);
                Object value = cmp.getPropertyValue(propName);
                if (value == null) {
                    build.append("\" />\n");
                    continue;
                }
                if (type.isArray()) {
                    // 2d array
                    if (type.getComponentType().isArray()) {
                        build.append("\" type=\"");
                        build.append(type.getComponentType().getComponentType().getName());
                        build.append("\" array=\"true\" dimensions=\"2");
                    } else {
                        build.append("\" type=\"");
                        build.append(type.getComponentType().getName());
                        build.append("\" array=\"true\" dimensions=\"1");
                    }
                } else {
                    build.append("\" type=\"");
                    build.append(type.getName());
                }
                build.append("\" ");
                if (type == String.class) {
                    build.append("value=\"");
                    build.append(xmlize((String) value));
                    build.append("\" />\n");
                    continue;
                }
                if (type == String[].class) {
                    build.append(">\n");
                    String[] result = (String[]) value;
                    for (int i = 0; i < result.length; i++) {
                        build.append(indent);
                        build.append("  ");
                        build.append("<str>");
                        build.append(xmlize(result[i]));
                        build.append("</str>\n");
                    }
                    build.append(indent);
                    build.append("</custom>\n");
                    continue;
                }
                if (type == String[][].class) {
                    String[][] result = (String[][]) value;
                    build.append(">\n");
                    for (int i = 0; i < result.length; i++) {
                        build.append(indent);
                        build.append("  ");
                        build.append("<arr>");
                        for (int j = 0; j < result[i].length; j++) {
                            build.append(indent);
                            build.append("    ");
                            build.append("<str>");
                            build.append(xmlize(result[i][j]));
                            build.append("</str>\n");
                        }
                        build.append(indent);
                        build.append("  ");
                        build.append("</arr>\n");
                    }
                    build.append(indent);
                    build.append("</custom>\n");
                    continue;
                }
                if (type == Integer.class) {
                    build.append("value=\"");
                    build.append(((Number) value).intValue());
                    build.append("\" />\n");
                    continue;
                }
                if (type == Long.class) {
                    build.append("value=\"");
                    build.append(((Number) value).longValue());
                    build.append("\" />\n");
                    continue;
                }
                if (type == Double.class) {
                    build.append("value=\"");
                    build.append(((Number) value).doubleValue());
                    build.append("\" />\n");
                    continue;
                }
                if (type == Date.class) {
                    build.append("value=\"");
                    build.append(((Date) value).getTime());
                    build.append("\" />\n");
                    continue;
                }
                if (type == Float.class) {
                    build.append("value=\"");
                    build.append(((Number) value).floatValue());
                    build.append("\" />\n");
                    continue;
                }
                if (type == Byte.class) {
                    build.append("value=\"");
                    build.append(((Number) value).byteValue());
                    build.append("\" />\n");
                    continue;
                }
                if (type == Boolean.class) {
                    build.append("value=\"");
                    build.append(((Boolean) value).booleanValue());
                    build.append("\" />\n");
                    continue;
                }
                if (type == com.codename1.ui.Image[].class) {
                    com.codename1.ui.Image[] result = (com.codename1.ui.Image[]) value;
                    build.append(">\n");
                    for (int i = 0; i < result.length; i++) {
                        build.append(indent);
                        build.append("  ");
                        if (result[i] == null) {
                            build.append("<str/>\n");
                        } else {
                            String id = res.findId(result[i]);
                            if (id == null) {
                                build.append("<str/>\n");
                            } else {
                                build.append("<str>");
                                build.append(xmlize(id));
                                build.append("</str>\n");
                            }
                        }
                    }
                    build.append(indent);
                    build.append("</custom>\n");
                    continue;
                }
                if (type == com.codename1.ui.Image.class) {
                    com.codename1.ui.Image result = (com.codename1.ui.Image) value;
                    String id = res.findId(result);
                    if (id != null) {
                        build.append("value=\"");
                        build.append(xmlize(id));
                    }
                    build.append("\" />\n");
                    continue;
                }
                if (type == com.codename1.ui.Container.class) {
                    build.append("value=\"");
                    build.append(xmlize(((com.codename1.ui.Container) value).getName()));
                    build.append("\" />\n");
                    continue;
                }
                if (type == com.codename1.ui.list.CellRenderer.class) {
                    com.codename1.ui.list.GenericListCellRenderer g = (com.codename1.ui.list.GenericListCellRenderer) value;
                    if (g.getSelectedEven() == null) {
                        build.append(" selectedRenderer=\"");
                        build.append(xmlize(g.getSelected().getName()));
                        build.append("\" unselectedRenderer=\"");
                        build.append(xmlize(g.getUnselected().getName()));
                        build.append("\" ");
                    } else {
                        build.append(" selectedRenderer=\"");
                        build.append(xmlize(g.getSelected().getName()));
                        build.append("\" unselectedRenderer=\"");
                        build.append(xmlize(g.getUnselected().getName()));
                        build.append(" selectedRendererEven=\"");
                        build.append(xmlize(g.getSelectedEven().getName()));
                        build.append("\" unselectedRendererEven=\"");
                        build.append(xmlize(g.getUnselectedEven().getName()));
                        build.append("\" ");
                    }
                    build.append("\" />\n");
                    continue;
                }
                if (type == Object[].class) {
                    build.append(">\n");
                    Object[] arr = (Object[]) value;
                    for (int iter = 0; iter < arr.length; iter++) {
                        Object o = arr[iter];
                        appendMapOrString(o, build, indent, res);
                    }
                    build.append(indent);
                    build.append("</custom>\n");
                    continue;
                }
                // none of the above then its a char
                build.append("value=\"");
                build.append(xmlize("" + ((Character) value).charValue()));
                build.append("\" />\n");
            }
        }
    }
}
Also used : EmbeddedContainer(com.codename1.ui.util.EmbeddedContainer) BorderLayout(com.codename1.ui.layouts.BorderLayout) ArrayList(java.util.ArrayList) List(java.util.List) JList(javax.swing.JList) TableLayout(com.codename1.ui.table.TableLayout) Hashtable(java.util.Hashtable) BorderLayout(com.codename1.ui.layouts.BorderLayout) Point(java.awt.Point) EventObject(java.util.EventObject)

Example 50 with Result

use of com.codename1.rad.processing.Result in project CodenameOne by codenameone.

the class UserInterfaceEditor method persistComponent.

public static void persistComponent(com.codename1.ui.Container containerInstance, com.codename1.ui.Component cmp, DataOutputStream out, EditableResources res) throws IOException {
    if (cmp.getClientProperty("%base_form%") != null) {
        out.writeUTF((String) cmp.getClientProperty("%base_form%"));
        out.writeInt(PROPERTY_BASE_FORM);
    }
    out.writeUTF((String) cmp.getClientProperty(TYPE_KEY));
    out.writeInt(PROPERTY_NAME);
    if (cmp.getName() != null) {
        out.writeUTF(cmp.getName());
    } else {
        out.writeUTF("");
    }
    if (cmp.getClientProperty("cn1$Properties") != null) {
        String[] p = ((String) cmp.getClientProperty("cn1$Properties")).split(",");
        if (p.length > 0) {
            out.writeInt(PROPERTY_CLIENT_PROPERTIES);
            out.writeInt(p.length);
            for (String c : p) {
                out.writeUTF(c);
                out.writeUTF((String) cmp.getClientProperty(c));
            }
        }
    }
    if (cmp.getCloudBoundProperty() != null) {
        out.writeInt(PROPERTY_CLOUD_BOUND_PROPERTY);
        out.writeUTF(cmp.getCloudBoundProperty());
    }
    if (cmp.getCloudDestinationProperty() != null) {
        out.writeInt(PROPERTY_CLOUD_DESTINATION_PROPERTY);
        out.writeUTF(cmp.getCloudDestinationProperty());
    }
    if (isActualContainer(cmp) || cmp instanceof com.codename1.ui.list.ContainerList) {
        com.codename1.ui.Container cnt = (com.codename1.ui.Container) cmp;
        if (isPropertyModified(cnt, PROPERTY_SCROLLABLE_X)) {
            out.writeInt(PROPERTY_SCROLLABLE_X);
            out.writeBoolean(CodenameOneAccessor.isScrollableX(cnt));
        }
        if (isPropertyModified(cnt, PROPERTY_SCROLLABLE_Y)) {
            out.writeInt(PROPERTY_SCROLLABLE_Y);
            out.writeBoolean(CodenameOneAccessor.isScrollableY(cnt));
        }
        if (cmp instanceof com.codename1.ui.Tabs) {
            com.codename1.ui.Tabs tab = (com.codename1.ui.Tabs) cmp;
            out.writeInt(PROPERTY_COMPONENTS);
            out.writeInt(tab.getTabCount());
            for (int iter = 0; iter < tab.getTabCount(); iter++) {
                out.writeUTF(tab.getTabTitle(iter));
                persistComponent(containerInstance, tab.getTabComponentAt(iter), out, res);
            }
            if (isPropertyModified(cmp, PROPERTY_TAB_PLACEMENT)) {
                out.writeInt(PROPERTY_TAB_PLACEMENT);
                out.writeInt(((com.codename1.ui.Tabs) cmp).getTabPlacement());
            }
            if (isPropertyModified(cmp, PROPERTY_TAB_TEXT_POSITION)) {
                out.writeInt(PROPERTY_TAB_TEXT_POSITION);
                out.writeInt(((com.codename1.ui.Tabs) cmp).getTabTextPosition());
            }
        } else {
            if (isPropertyModified(cmp, PROPERTY_LAYOUT)) {
                com.codename1.ui.layouts.Layout l = cnt.getLayout();
                out.writeInt(PROPERTY_LAYOUT);
                if (l instanceof com.codename1.ui.layouts.FlowLayout) {
                    out.writeShort(LAYOUT_FLOW);
                    com.codename1.ui.layouts.FlowLayout f = (com.codename1.ui.layouts.FlowLayout) l;
                    out.writeBoolean(f.isFillRows());
                    out.writeInt(f.getAlign());
                    out.writeInt(f.getValign());
                } else {
                    if (l instanceof com.codename1.ui.layouts.BorderLayout) {
                        out.writeShort(LAYOUT_BORDER);
                        com.codename1.ui.layouts.BorderLayout b = (com.codename1.ui.layouts.BorderLayout) l;
                        String north = b.getLandscapeSwap(com.codename1.ui.layouts.BorderLayout.NORTH);
                        String east = b.getLandscapeSwap(com.codename1.ui.layouts.BorderLayout.EAST);
                        String west = b.getLandscapeSwap(com.codename1.ui.layouts.BorderLayout.WEST);
                        String south = b.getLandscapeSwap(com.codename1.ui.layouts.BorderLayout.SOUTH);
                        String center = b.getLandscapeSwap(com.codename1.ui.layouts.BorderLayout.CENTER);
                        out.writeBoolean(north != null);
                        if (north != null) {
                            out.writeUTF(north);
                        }
                        out.writeBoolean(east != null);
                        if (east != null) {
                            out.writeUTF(east);
                        }
                        out.writeBoolean(west != null);
                        if (west != null) {
                            out.writeUTF(west);
                        }
                        out.writeBoolean(south != null);
                        if (south != null) {
                            out.writeUTF(south);
                        }
                        out.writeBoolean(center != null);
                        if (center != null) {
                            out.writeUTF(center);
                        }
                        out.writeBoolean(b.isAbsoluteCenter());
                    } else {
                        if (l instanceof com.codename1.ui.layouts.GridLayout) {
                            out.writeShort(LAYOUT_GRID);
                            out.writeInt(((com.codename1.ui.layouts.GridLayout) l).getRows());
                            out.writeInt(((com.codename1.ui.layouts.GridLayout) l).getColumns());
                        } else {
                            if (l instanceof com.codename1.ui.layouts.BoxLayout) {
                                if (getInt("axis", l.getClass(), l) == com.codename1.ui.layouts.BoxLayout.X_AXIS) {
                                    out.writeShort(LAYOUT_BOX_X);
                                } else {
                                    out.writeShort(LAYOUT_BOX_Y);
                                }
                            } else {
                                if (l instanceof com.codename1.ui.table.TableLayout) {
                                    out.writeShort(LAYOUT_TABLE);
                                    out.writeInt(((com.codename1.ui.table.TableLayout) l).getRows());
                                    out.writeInt(((com.codename1.ui.table.TableLayout) l).getColumns());
                                } else {
                                    if (l instanceof com.codename1.ui.layouts.LayeredLayout) {
                                        out.writeShort(LAYOUT_LAYERED);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (cmp instanceof com.codename1.ui.Form) {
                com.codename1.ui.Form frm = (com.codename1.ui.Form) cmp;
                out.writeInt(PROPERTY_COMPONENTS);
                out.writeInt(frm.getContentPane().getComponentCount());
                for (int iter = 0; iter < frm.getContentPane().getComponentCount(); iter++) {
                    persistComponent(containerInstance, frm.getContentPane().getComponentAt(iter), out, res);
                }
                if (isPropertyModified(cmp, PROPERTY_NEXT_FORM) && frm.getClientProperty("%next_form%") != null) {
                    out.writeInt(PROPERTY_NEXT_FORM);
                    out.writeUTF((String) frm.getClientProperty("%next_form%"));
                }
                if (isPropertyModified(cmp, PROPERTY_TITLE)) {
                    out.writeInt(PROPERTY_TITLE);
                    out.writeUTF(frm.getTitle());
                }
                if (isPropertyModified(cmp, PROPERTY_CYCLIC_FOCUS)) {
                    out.writeInt(PROPERTY_CYCLIC_FOCUS);
                    out.writeBoolean(frm.isCyclicFocus());
                }
                if (isPropertyModified(cmp, PROPERTY_DIALOG_UIID) && cmp instanceof com.codename1.ui.Dialog) {
                    com.codename1.ui.Dialog dlg = (com.codename1.ui.Dialog) cmp;
                    out.writeInt(PROPERTY_DIALOG_UIID);
                    out.writeUTF(dlg.getDialogUIID());
                }
                if (isPropertyModified(cmp, PROPERTY_DISPOSE_WHEN_POINTER_OUT) && cmp instanceof com.codename1.ui.Dialog) {
                    com.codename1.ui.Dialog dlg = (com.codename1.ui.Dialog) cmp;
                    out.writeInt(PROPERTY_DISPOSE_WHEN_POINTER_OUT);
                    out.writeBoolean(dlg.isDisposeWhenPointerOutOfBounds());
                }
                if (isPropertyModified(cmp, PROPERTY_DIALOG_POSITION) && cmp instanceof com.codename1.ui.Dialog) {
                    com.codename1.ui.Dialog dlg = (com.codename1.ui.Dialog) cmp;
                    if (dlg.getDialogPosition() != null) {
                        out.writeInt(PROPERTY_DIALOG_POSITION);
                        out.writeUTF(dlg.getDialogPosition());
                    }
                }
                if (frm.getCommandCount() > 0 || frm.getBackCommand() != null) {
                    if (isPropertyModified(cmp, PROPERTY_COMMANDS) || isPropertyModified(cmp, PROPERTY_COMMANDS_LEGACY)) {
                        out.writeInt(PROPERTY_COMMANDS);
                        if (frm.getBackCommand() != null && !hasBackCommand(frm, frm.getBackCommand())) {
                            out.writeInt(frm.getCommandCount() + 1);
                            ActionCommand cmd = (ActionCommand) frm.getBackCommand();
                            out.writeUTF(cmd.getCommandName());
                            if (cmd.getIcon() != null) {
                                out.writeUTF(res.findId(cmd.getIcon()));
                            } else {
                                out.writeUTF("");
                            }
                            if (cmd.getRolloverIcon() != null) {
                                out.writeUTF(res.findId(cmd.getRolloverIcon()));
                            } else {
                                out.writeUTF("");
                            }
                            if (cmd.getPressedIcon() != null) {
                                out.writeUTF(res.findId(cmd.getPressedIcon()));
                            } else {
                                out.writeUTF("");
                            }
                            if (cmd.getDisabledIcon() != null) {
                                out.writeUTF(res.findId(cmd.getDisabledIcon()));
                            } else {
                                out.writeUTF("");
                            }
                            out.writeInt(cmd.getId());
                            if (cmd.getAction() != null) {
                                out.writeUTF(cmd.getAction());
                                if (cmd.getAction().equals("$Execute")) {
                                    out.writeUTF(cmd.getArgument());
                                }
                            } else {
                                out.writeUTF("");
                            }
                            out.writeBoolean(frm.getBackCommand() == cmd);
                        } else {
                            out.writeInt(frm.getCommandCount());
                        }
                        for (int iter = frm.getCommandCount() - 1; iter >= 0; iter--) {
                            ActionCommand cmd = (ActionCommand) frm.getCommand(iter);
                            out.writeUTF(cmd.getCommandName());
                            if (cmd.getIcon() != null) {
                                out.writeUTF(res.findId(cmd.getIcon()));
                            } else {
                                out.writeUTF("");
                            }
                            if (cmd.getRolloverIcon() != null) {
                                out.writeUTF(res.findId(cmd.getRolloverIcon()));
                            } else {
                                out.writeUTF("");
                            }
                            if (cmd.getPressedIcon() != null) {
                                out.writeUTF(res.findId(cmd.getPressedIcon()));
                            } else {
                                out.writeUTF("");
                            }
                            if (cmd.getDisabledIcon() != null) {
                                out.writeUTF(res.findId(cmd.getDisabledIcon()));
                            } else {
                                out.writeUTF("");
                            }
                            out.writeInt(cmd.getId());
                            if (cmd.getAction() != null) {
                                out.writeUTF(cmd.getAction());
                                if (cmd.getAction().equals("$Execute")) {
                                    out.writeUTF(cmd.getArgument());
                                }
                            } else {
                                out.writeUTF("");
                            }
                            out.writeBoolean(frm.getBackCommand() == cmd);
                        }
                    }
                }
            } else {
                if (!(cmp instanceof com.codename1.ui.list.ContainerList)) {
                    out.writeInt(PROPERTY_COMPONENTS);
                    out.writeInt(cnt.getComponentCount());
                    for (int iter = 0; iter < cnt.getComponentCount(); iter++) {
                        persistComponent(containerInstance, cnt.getComponentAt(iter), out, res);
                    }
                } else {
                    com.codename1.ui.list.ContainerList lst = ((com.codename1.ui.list.ContainerList) cmp);
                    if (isPropertyModified(cmp, PROPERTY_LIST_RENDERER) && lst.getRenderer() instanceof com.codename1.ui.list.GenericListCellRenderer) {
                        out.writeInt(PROPERTY_LIST_RENDERER);
                        com.codename1.ui.list.GenericListCellRenderer g = (com.codename1.ui.list.GenericListCellRenderer) lst.getRenderer();
                        if (g.getSelectedEven() == null) {
                            out.writeByte(2);
                            out.writeUTF(g.getSelected().getName());
                            out.writeUTF(g.getUnselected().getName());
                        } else {
                            out.writeByte(4);
                            out.writeUTF(g.getSelected().getName());
                            out.writeUTF(g.getUnselected().getName());
                            out.writeUTF(g.getSelectedEven().getName());
                            out.writeUTF(g.getUnselectedEven().getName());
                        }
                    }
                }
            }
        }
    } else {
        if (cmp instanceof com.codename1.ui.Label) {
            com.codename1.ui.Label lbl = (com.codename1.ui.Label) cmp;
            out.writeInt(PROPERTY_TEXT);
            out.writeUTF(lbl.getText());
            if (isPropertyModified(cmp, PROPERTY_ALIGNMENT)) {
                out.writeInt(PROPERTY_ALIGNMENT);
                out.writeInt(lbl.getAlignment());
            }
            if (isPropertyModified(cmp, PROPERTY_ICON)) {
                if (lbl.getIcon() != null) {
                    out.writeInt(PROPERTY_ICON);
                    out.writeUTF(res.findId(lbl.getIcon()));
                }
            }
            if (lbl instanceof com.codename1.ui.Button) {
                com.codename1.ui.Button button = (com.codename1.ui.Button) lbl;
                if (isPropertyModified(cmp, PROPERTY_ROLLOVER_ICON)) {
                    if (button.getRolloverIcon() != null) {
                        out.writeInt(PROPERTY_ROLLOVER_ICON);
                        out.writeUTF(res.findId(button.getRolloverIcon()));
                    }
                }
                if (isPropertyModified(cmp, PROPERTY_PRESSED_ICON)) {
                    if (button.getPressedIcon() != null) {
                        out.writeInt(PROPERTY_PRESSED_ICON);
                        out.writeUTF(res.findId(button.getPressedIcon()));
                    }
                }
                if (isPropertyModified(cmp, PROPERTY_DISABLED_ICON)) {
                    if (button.getDisabledIcon() != null) {
                        out.writeInt(PROPERTY_DISABLED_ICON);
                        out.writeUTF(res.findId(button.getDisabledIcon()));
                    }
                }
                if (isPropertyModified(cmp, PROPERTY_TOGGLE_BUTTON)) {
                    out.writeInt(PROPERTY_TOGGLE_BUTTON);
                    out.writeBoolean(((com.codename1.ui.Button) cmp).isToggle());
                }
            } else {
                if (lbl instanceof com.codename1.ui.Slider) {
                    com.codename1.ui.Slider sld = (com.codename1.ui.Slider) lbl;
                    if (isPropertyModified(cmp, PROPERTY_EDITABLE)) {
                        out.writeInt(PROPERTY_EDITABLE);
                        out.writeBoolean(sld.isEditable());
                    }
                    if (isPropertyModified(cmp, PROPERTY_INFINITE)) {
                        out.writeInt(PROPERTY_INFINITE);
                        out.writeBoolean(sld.isInfinite());
                    }
                    if (isPropertyModified(cmp, PROPERTY_SLIDER_THUMB) && sld.getThumbImage() != null) {
                        out.writeInt(PROPERTY_SLIDER_THUMB);
                        out.writeUTF(res.findId(sld.getThumbImage()));
                    }
                    if (isPropertyModified(cmp, PROPERTY_PROGRESS)) {
                        out.writeInt(PROPERTY_PROGRESS);
                        out.writeInt(sld.getProgress());
                    }
                    if (isPropertyModified(cmp, PROPERTY_VERTICAL)) {
                        out.writeInt(PROPERTY_VERTICAL);
                        out.writeBoolean(sld.isVertical());
                    }
                    if (isPropertyModified(cmp, PROPERTY_INCREMENTS)) {
                        out.writeInt(PROPERTY_INCREMENTS);
                        out.writeInt(sld.getIncrements());
                    }
                    if (isPropertyModified(cmp, PROPERTY_MAX_VALUE)) {
                        out.writeInt(PROPERTY_MAX_VALUE);
                        out.writeInt(sld.getMaxValue());
                    }
                    if (isPropertyModified(cmp, PROPERTY_MIN_VALUE)) {
                        out.writeInt(PROPERTY_MIN_VALUE);
                        out.writeInt(sld.getMinValue());
                    }
                    if (isPropertyModified(cmp, PROPERTY_RENDER_PERCENTAGE_ON_TOP)) {
                        out.writeInt(PROPERTY_RENDER_PERCENTAGE_ON_TOP);
                        out.writeBoolean(sld.isRenderPercentageOnTop());
                    }
                }
            }
            if (isPropertyModified(cmp, PROPERTY_RADIO_GROUP)) {
                out.writeInt(PROPERTY_RADIO_GROUP);
                out.writeUTF(((com.codename1.ui.RadioButton) cmp).getGroup());
            }
            if (isPropertyModified(cmp, PROPERTY_SELECTED)) {
                out.writeInt(PROPERTY_SELECTED);
                out.writeBoolean(((com.codename1.ui.Button) cmp).isSelected());
            }
            if (isPropertyModified(cmp, PROPERTY_GAP)) {
                out.writeInt(PROPERTY_GAP);
                out.writeInt(lbl.getGap());
            }
            if (isPropertyModified(cmp, PROPERTY_VERTICAL_ALIGNMENT)) {
                out.writeInt(PROPERTY_VERTICAL_ALIGNMENT);
                out.writeInt(lbl.getVerticalAlignment());
            }
            if (isPropertyModified(cmp, PROPERTY_TEXT_POSITION)) {
                out.writeInt(PROPERTY_TEXT_POSITION);
                out.writeInt(lbl.getTextPosition());
            }
        } else {
            if (cmp instanceof com.codename1.ui.TextArea) {
                com.codename1.ui.TextArea txt = (com.codename1.ui.TextArea) cmp;
                if (isPropertyModified(cmp, PROPERTY_VERTICAL_ALIGNMENT)) {
                    out.writeInt(PROPERTY_VERTICAL_ALIGNMENT);
                    out.writeInt(txt.getVerticalAlignment());
                }
                if (isPropertyModified(cmp, PROPERTY_TEXT)) {
                    out.writeInt(PROPERTY_TEXT);
                    out.writeUTF(txt.getText());
                }
                if (isPropertyModified(cmp, PROPERTY_TEXT_AREA_GROW)) {
                    out.writeInt(PROPERTY_TEXT_AREA_GROW);
                    out.writeBoolean(txt.isGrowByContent());
                }
                if (isPropertyModified(cmp, PROPERTY_TEXT_CONSTRAINT)) {
                    out.writeInt(PROPERTY_TEXT_CONSTRAINT);
                    out.writeInt(txt.getConstraint());
                }
                if (isPropertyModified(cmp, PROPERTY_TEXT_MAX_LENGTH)) {
                    out.writeInt(PROPERTY_TEXT_MAX_LENGTH);
                    out.writeInt(txt.getMaxSize());
                }
                if (isPropertyModified(cmp, PROPERTY_EDITABLE)) {
                    out.writeInt(PROPERTY_EDITABLE);
                    out.writeBoolean(txt.isEditable());
                }
                if (isPropertyModified(cmp, PROPERTY_ALIGNMENT)) {
                    out.writeInt(PROPERTY_ALIGNMENT);
                    out.writeInt(txt.getAlignment());
                }
                if (isPropertyModified(cmp, PROPERTY_HINT)) {
                    out.writeInt(PROPERTY_HINT);
                    out.writeUTF(txt.getHint());
                }
                if (isPropertyModified(cmp, PROPERTY_HINT_ICON) && txt.getHintIcon() != null) {
                    out.writeInt(PROPERTY_HINT_ICON);
                    out.writeUTF(res.findId(txt.getHintIcon()));
                }
                if (isPropertyModified(cmp, PROPERTY_COLUMNS)) {
                    out.writeInt(PROPERTY_COLUMNS);
                    out.writeInt(txt.getColumns());
                }
                if (isPropertyModified(cmp, PROPERTY_ROWS)) {
                    out.writeInt(PROPERTY_ROWS);
                    out.writeInt(txt.getRows());
                }
            } else {
                if (cmp instanceof com.codename1.ui.List) {
                    com.codename1.ui.List lst = (com.codename1.ui.List) cmp;
                    if (isPropertyModified(cmp, PROPERTY_ITEM_GAP)) {
                        out.writeInt(PROPERTY_ITEM_GAP);
                        out.writeInt(lst.getItemGap());
                    }
                    if (isPropertyModified(cmp, PROPERTY_LIST_FIXED)) {
                        out.writeInt(PROPERTY_LIST_FIXED);
                        out.writeInt(lst.getFixedSelection());
                    }
                    if (isPropertyModified(cmp, PROPERTY_LIST_ORIENTATION)) {
                        out.writeInt(PROPERTY_LIST_ORIENTATION);
                        out.writeInt(lst.getOrientation());
                    }
                    if (isPropertyModified(cmp, PROPERTY_HINT)) {
                        out.writeInt(PROPERTY_HINT);
                        out.writeUTF(lst.getHint());
                    }
                    if (isPropertyModified(cmp, PROPERTY_HINT_ICON) && lst.getHintIcon() != null) {
                        out.writeInt(PROPERTY_HINT_ICON);
                        out.writeUTF(res.findId(lst.getHintIcon()));
                    }
                    if (isPropertyModified(cmp, PROPERTY_LIST_RENDERER) && lst.getRenderer() instanceof com.codename1.ui.list.GenericListCellRenderer) {
                        out.writeInt(PROPERTY_LIST_RENDERER);
                        com.codename1.ui.list.GenericListCellRenderer g = (com.codename1.ui.list.GenericListCellRenderer) lst.getRenderer();
                        if (g.getSelectedEven() == null) {
                            out.writeByte(2);
                            out.writeUTF(g.getSelected().getName());
                            out.writeUTF(g.getUnselected().getName());
                        } else {
                            out.writeByte(4);
                            out.writeUTF(g.getSelected().getName());
                            out.writeUTF(g.getUnselected().getName());
                            out.writeUTF(g.getSelectedEven().getName());
                            out.writeUTF(g.getUnselectedEven().getName());
                        }
                    }
                    if (!(cmp instanceof com.codename1.components.RSSReader)) {
                        out.writeInt(PROPERTY_LIST_ITEMS);
                        out.writeInt(lst.getModel().getSize());
                        for (int iter = 0; iter < lst.getModel().getSize(); iter++) {
                            Object o = lst.getModel().getItemAt(iter);
                            if (o instanceof String) {
                                out.writeByte(1);
                                out.writeUTF((String) o);
                            } else {
                                out.writeByte(2);
                                Hashtable h = (Hashtable) o;
                                out.writeInt(h.size());
                                for (Object key : h.keySet()) {
                                    Object val = h.get(key);
                                    if (val instanceof com.codename1.ui.Image) {
                                        out.writeInt(2);
                                        out.writeUTF((String) key);
                                        out.writeUTF(res.findId(val));
                                    } else {
                                        out.writeInt(1);
                                        out.writeUTF((String) key);
                                        if (val instanceof ActionCommand) {
                                            out.writeUTF(((ActionCommand) val).getAction());
                                        } else {
                                            out.writeUTF((String) val);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    if (isPropertyModified(cmp, PROPERTY_LAYOUT_CONSTRAINT) || (cmp.getParent() != null && cmp.getParent().getLayout() instanceof com.codename1.ui.layouts.BorderLayout)) {
        if (cmp.getParent() != null && cmp != containerInstance && cmp.getClientProperty("%base_form%") == null) {
            com.codename1.ui.layouts.Layout l = cmp.getParent().getLayout();
            if (l instanceof com.codename1.ui.layouts.BorderLayout) {
                out.writeInt(PROPERTY_LAYOUT_CONSTRAINT);
                out.writeUTF((String) l.getComponentConstraint(cmp));
            } else {
                if (l instanceof com.codename1.ui.table.TableLayout) {
                    out.writeInt(PROPERTY_LAYOUT_CONSTRAINT);
                    com.codename1.ui.table.TableLayout.Constraint con = (com.codename1.ui.table.TableLayout.Constraint) l.getComponentConstraint(cmp);
                    out.writeInt(getInt("row", con.getClass(), con));
                    out.writeInt(getInt("column", con.getClass(), con));
                    out.writeInt(getInt("height", con.getClass(), con));
                    out.writeInt(getInt("width", con.getClass(), con));
                    out.writeInt(getInt("align", con.getClass(), con));
                    out.writeInt(getInt("spanHorizontal", con.getClass(), con));
                    out.writeInt(getInt("valign", con.getClass(), con));
                    out.writeInt(getInt("spanVertical", con.getClass(), con));
                }
            }
        }
    }
    if (isPropertyModified(cmp, PROPERTY_EMBED)) {
        out.writeInt(PROPERTY_EMBED);
        out.writeUTF(((EmbeddedContainer) cmp).getEmbed());
    }
    if (isPropertyModified(cmp, PROPERTY_UIID)) {
        out.writeInt(PROPERTY_UIID);
        out.writeUTF(cmp.getUIID());
    }
    if (isPropertyModified(cmp, PROPERTY_FOCUSABLE)) {
        out.writeInt(PROPERTY_FOCUSABLE);
        out.writeBoolean(cmp.isFocusable());
    }
    if (isPropertyModified(cmp, PROPERTY_ENABLED)) {
        out.writeInt(PROPERTY_ENABLED);
        out.writeBoolean(cmp.isEnabled());
    }
    if (isPropertyModified(cmp, PROPERTY_RTL)) {
        out.writeInt(PROPERTY_RTL);
        out.writeBoolean(cmp.isRTL());
    }
    if (isPropertyModified(cmp, PROPERTY_SCROLL_VISIBLE)) {
        out.writeInt(PROPERTY_SCROLL_VISIBLE);
        out.writeBoolean(cmp.isScrollVisible());
    }
    if (isPropertyModified(cmp, PROPERTY_PREFERRED_WIDTH)) {
        out.writeInt(PROPERTY_PREFERRED_WIDTH);
        out.writeInt(cmp.getPreferredW());
    }
    if (isPropertyModified(cmp, PROPERTY_PREFERRED_HEIGHT)) {
        out.writeInt(PROPERTY_PREFERRED_HEIGHT);
        out.writeInt(cmp.getPreferredH());
    }
    if (isPropertyModified(cmp, PROPERTY_TENSILE_DRAG_ENABLED)) {
        out.writeInt(PROPERTY_TENSILE_DRAG_ENABLED);
        out.writeBoolean(cmp.isTensileDragEnabled());
    }
    if (isPropertyModified(cmp, PROPERTY_TACTILE_TOUCH)) {
        out.writeInt(PROPERTY_TACTILE_TOUCH);
        out.writeBoolean(cmp.isTactileTouch());
    }
    if (isPropertyModified(cmp, PROPERTY_SNAP_TO_GRID)) {
        out.writeInt(PROPERTY_SNAP_TO_GRID);
        out.writeBoolean(cmp.isSnapToGrid());
    }
    if (isPropertyModified(cmp, PROPERTY_FLATTEN)) {
        out.writeInt(PROPERTY_FLATTEN);
        out.writeBoolean(cmp.isFlatten());
    }
    if (isPropertyModified(cmp, PROPERTY_CUSTOM)) {
        for (String propName : cmp.getPropertyNames()) {
            if (isCustomPropertyModified(cmp, propName) && !propName.startsWith("$")) {
                out.writeInt(PROPERTY_CUSTOM);
                out.writeUTF(propName);
                Class type = getPropertyCustomType(cmp, propName);
                Object value = cmp.getPropertyValue(propName);
                if (value == null) {
                    out.writeBoolean(true);
                    continue;
                }
                out.writeBoolean(false);
                if (type == String.class) {
                    out.writeUTF((String) value);
                    continue;
                }
                if (type == String[].class) {
                    String[] result = (String[]) value;
                    out.writeInt(result.length);
                    for (int i = 0; i < result.length; i++) {
                        out.writeUTF(result[i]);
                    }
                    continue;
                }
                if (type == String[][].class) {
                    String[][] result = (String[][]) value;
                    out.writeInt(result.length);
                    for (int i = 0; i < result.length; i++) {
                        out.writeInt(result[i].length);
                        for (int j = 0; j < result[i].length; j++) {
                            out.writeUTF(result[i][j]);
                        }
                    }
                    continue;
                }
                if (type == Integer.class) {
                    out.writeInt(((Number) value).intValue());
                    continue;
                }
                if (type == Long.class) {
                    out.writeLong(((Number) value).longValue());
                    continue;
                }
                if (type == Double.class) {
                    out.writeDouble(((Number) value).doubleValue());
                    continue;
                }
                if (type == Date.class) {
                    if (value == null) {
                        out.writeBoolean(false);
                        continue;
                    }
                    out.writeBoolean(true);
                    out.writeLong(((Date) value).getTime());
                    continue;
                }
                if (type == Float.class) {
                    out.writeFloat(((Number) value).floatValue());
                    continue;
                }
                if (type == Byte.class) {
                    out.writeByte(((Number) value).byteValue());
                    continue;
                }
                if (type == Boolean.class) {
                    out.writeBoolean(((Boolean) value).booleanValue());
                    continue;
                }
                if (type == com.codename1.ui.Image[].class) {
                    com.codename1.ui.Image[] result = (com.codename1.ui.Image[]) value;
                    out.writeInt(result.length);
                    for (int i = 0; i < result.length; i++) {
                        if (result[i] == null) {
                            out.writeUTF("");
                        } else {
                            String id = res.findId(result[i]);
                            if (id == null) {
                                out.writeUTF("");
                            } else {
                                out.writeUTF(id);
                            }
                        }
                    }
                    continue;
                }
                if (type == com.codename1.ui.Image.class) {
                    com.codename1.ui.Image result = (com.codename1.ui.Image) value;
                    if (result == null) {
                        out.writeUTF("");
                    } else {
                        String id = res.findId(result);
                        if (id == null) {
                            out.writeUTF("");
                        } else {
                            out.writeUTF(id);
                        }
                    }
                    continue;
                }
                if (type == com.codename1.ui.Container.class) {
                    out.writeUTF(((com.codename1.ui.Container) value).getName());
                    continue;
                }
                if (type == com.codename1.ui.list.CellRenderer.class) {
                    com.codename1.ui.list.GenericListCellRenderer g = (com.codename1.ui.list.GenericListCellRenderer) value;
                    if (g.getSelectedEven() == null) {
                        out.writeByte(2);
                        out.writeUTF(g.getSelected().getName());
                        out.writeUTF(g.getUnselected().getName());
                    } else {
                        out.writeByte(4);
                        out.writeUTF(g.getSelected().getName());
                        out.writeUTF(g.getUnselected().getName());
                        out.writeUTF(g.getSelectedEven().getName());
                        out.writeUTF(g.getUnselectedEven().getName());
                    }
                    continue;
                }
                if (type == Object[].class) {
                    Object[] arr = (Object[]) value;
                    out.writeInt(arr.length);
                    for (int iter = 0; iter < arr.length; iter++) {
                        Object o = arr[iter];
                        if (o instanceof String) {
                            out.writeByte(1);
                            out.writeUTF((String) o);
                        } else {
                            out.writeByte(2);
                            Hashtable h = (Hashtable) o;
                            out.writeInt(h.size());
                            for (Object key : h.keySet()) {
                                Object val = h.get(key);
                                if (val instanceof com.codename1.ui.Image) {
                                    out.writeInt(2);
                                    out.writeUTF((String) key);
                                    out.writeUTF(res.findId(val));
                                } else {
                                    out.writeInt(1);
                                    out.writeUTF((String) key);
                                    out.writeUTF((String) val);
                                }
                            }
                        }
                    }
                    continue;
                }
                // none of the above then its a char
                out.writeChar(((Character) value).charValue());
            }
        }
    }
    out.writeInt(-1);
}
Also used : JLabel(javax.swing.JLabel) EmbeddedContainer(com.codename1.ui.util.EmbeddedContainer) BorderLayout(com.codename1.ui.layouts.BorderLayout) JButton(javax.swing.JButton) ArrayList(java.util.ArrayList) List(java.util.List) JList(javax.swing.JList) BorderLayout(com.codename1.ui.layouts.BorderLayout) EventObject(java.util.EventObject) TableLayout(com.codename1.ui.table.TableLayout) Hashtable(java.util.Hashtable) Hashtable(java.util.Hashtable) Point(java.awt.Point)

Aggregations

IOException (java.io.IOException)19 ArrayList (java.util.ArrayList)14 Form (com.codename1.ui.Form)12 Button (com.codename1.ui.Button)11 Map (java.util.Map)9 Date (java.util.Date)8 HashMap (java.util.HashMap)8 Label (com.codename1.ui.Label)7 BorderLayout (com.codename1.ui.layouts.BorderLayout)7 List (java.util.List)7 Container (com.codename1.ui.Container)6 ByteArrayInputStream (java.io.ByteArrayInputStream)6 OutputStream (java.io.OutputStream)6 JSONParser (com.codename1.io.JSONParser)5 Result (com.codename1.rad.processing.Result)5 ActionEvent (com.codename1.ui.events.ActionEvent)5 File (java.io.File)5 Cursor (com.codename1.db.Cursor)4 ConnectionRequest (com.codename1.io.ConnectionRequest)4 Entity (com.codename1.rad.models.Entity)4