Search in sources :

Example 36 with Val

use of com.codename1.ui.util.xml.Val in project CodenameOne by codenameone.

the class Resources method confirmBorder.

private Border confirmBorder(Hashtable h, String key) {
    Object val = h.get(key);
    if (val == null) {
        return null;
    }
    if (!(val instanceof Border)) {
        String[] value = (String[]) val;
        if (value == null) {
            throw new IllegalArgumentException("Couldn't find resource: " + key);
        }
        // the resource was not already loaded when we loaded the theme
        // it must be loaded now so we can resolve the temporary name
        Border imageBorder = createImageBorder(value);
        return imageBorder;
    }
    return (Border) val;
}
Also used : AnimationObject(com.codename1.ui.animations.AnimationObject) RoundBorder(com.codename1.ui.plaf.RoundBorder) RoundRectBorder(com.codename1.ui.plaf.RoundRectBorder) Border(com.codename1.ui.plaf.Border)

Example 37 with Val

use of com.codename1.ui.util.xml.Val in project CodenameOne by codenameone.

the class CustomInvoke method appendInstruction.

@Override
public void appendInstruction(StringBuilder b) {
    // special case for clone on an array which isn't a real method invocation
    if (name.equals("clone") && owner.indexOf('[') > -1) {
        if (targetObjectLiteral != null) {
            b.append("    PUSH_OBJ(cloneArray(").append(targetObjectLiteral).append("));\n");
        } else {
            b.append("    POP_MANY_AND_PUSH_OBJ(cloneArray(PEEK_OBJ(1)), 1);\n");
        }
        return;
    }
    StringBuilder bld = new StringBuilder();
    if (origOpcode == Opcodes.INVOKEINTERFACE || origOpcode == Opcodes.INVOKEVIRTUAL) {
        b.append("    ");
        bld.append("virtual_");
    } else {
        b.append("    ");
    }
    if (origOpcode == Opcodes.INVOKESTATIC) {
        // find the actual class of the static method to workaround javac not defining it correctly
        ByteCodeClass bc = Parser.getClassObject(owner.replace('/', '_').replace('$', '_'));
        owner = findActualOwner(bc);
    }
    // if(owner.replace('/', '_').replace('$', '_').equals("java_lang_System_1") && name.equals("sleep")) {
    // System.out.println("Break");
    // }
    bld.append(owner.replace('/', '_').replace('$', '_'));
    bld.append("_");
    if (name.equals("<init>")) {
        bld.append("__INIT__");
    } else {
        if (name.equals("<clinit>")) {
            bld.append("__CLINIT__");
        } else {
            bld.append(name);
        }
    }
    bld.append("__");
    ArrayList<String> args = new ArrayList<String>();
    String returnVal = BytecodeMethod.appendMethodSignatureSuffixFromDesc(desc, bld, args);
    int numLiteralArgs = this.getNumLiteralArgs();
    if (numLiteralArgs > 0) {
        b.append("/* CustomInvoke */");
    }
    boolean noPop = false;
    if (returnVal == null || noReturn) {
        b.append(bld);
    } else {
        if (args.size() - numLiteralArgs == 0 && origOpcode == Opcodes.INVOKESTATIC) {
            // special case for static method
            if (returnVal.equals("JAVA_OBJECT")) {
                b.append("PUSH_OBJ");
            } else {
                if (returnVal.equals("JAVA_INT")) {
                    b.append("PUSH_INT");
                } else {
                    if (returnVal.equals("JAVA_LONG")) {
                        b.append("PUSH_LONG");
                    } else {
                        if (returnVal.equals("JAVA_DOUBLE")) {
                            b.append("PUSH_DOUBLE");
                        } else {
                            if (returnVal.equals("JAVA_FLOAT")) {
                                b.append("PUSH_FLOAT");
                            } else {
                                throw new UnsupportedOperationException("Unknown type: " + returnVal);
                            }
                        }
                    }
                }
            }
            // b.append(returnVal);
            noPop = true;
            b.append("(");
        } else {
            // b.append("POP_MANY_AND_");
            // b.append(returnVal);
            b.append("{ ");
            b.append(returnVal);
            b.append(" tmpResult = ");
        }
        b.append(bld);
    }
    b.append("(threadStateData");
    if (origOpcode != Opcodes.INVOKESTATIC) {
        if (targetObjectLiteral == null) {
            b.append(", SP[-");
            b.append(args.size() + 1 - numLiteralArgs);
            b.append("].data.o");
        } else {
            b.append(", " + targetObjectLiteral);
            numLiteralArgs++;
        }
    }
    int offset = args.size();
    // int numArgs = offset;
    int argIndex = 0;
    for (String a : args) {
        b.append(", ");
        if (literalArgs != null && literalArgs[argIndex] != null) {
            b.append(literalArgs[argIndex]);
        } else {
            b.append("SP[-");
            b.append(offset);
            b.append("].data.");
            b.append(a);
            offset--;
        }
        argIndex++;
    }
    if (noPop) {
        b.append("));\n");
        return;
    }
    if (returnVal != null && !noReturn) {
        b.append(");\n");
        if (origOpcode != Opcodes.INVOKESTATIC) {
            if (args.size() - numLiteralArgs > 0) {
                b.append("    SP -= ");
                b.append(args.size() - numLiteralArgs);
                b.append(";\n");
            }
        } else {
            if (args.size() - numLiteralArgs > 1) {
                b.append("    SP -= ");
                b.append(args.size() - numLiteralArgs - 1);
                b.append(";\n");
            }
        }
        if (targetObjectLiteral == null) {
            if (returnVal.equals("JAVA_OBJECT")) {
                b.append("    SP[-1].data.o = tmpResult; SP[-1].type = CN1_TYPE_OBJECT; }\n");
            } else {
                if (returnVal.equals("JAVA_INT")) {
                    b.append("    SP[-1].data.i = tmpResult; SP[-1].type = CN1_TYPE_INT; }\n");
                } else {
                    if (returnVal.equals("JAVA_LONG")) {
                        b.append("    SP[-1].data.l = tmpResult; SP[-1].type = CN1_TYPE_LONG; }\n");
                    } else {
                        if (returnVal.equals("JAVA_DOUBLE")) {
                            b.append("    SP[-1].data.d = tmpResult; SP[-1].type = CN1_TYPE_DOUBLE; }\n");
                        } else {
                            if (returnVal.equals("JAVA_FLOAT")) {
                                b.append("    SP[-1].data.f = tmpResult; SP[-1].type = CN1_TYPE_FLOAT; }\n");
                            } else {
                                throw new UnsupportedOperationException("Unknown type: " + returnVal);
                            }
                        }
                    }
                }
            }
        } else {
            if (returnVal.equals("JAVA_OBJECT")) {
                b.append("    PUSH_OBJ(tmpResult); }\n");
            } else {
                if (returnVal.equals("JAVA_INT")) {
                    b.append("    PUSH_INT(tmpResult); }\n");
                } else {
                    if (returnVal.equals("JAVA_LONG")) {
                        b.append("    PUSH_LONG(tmpResult); }\n");
                    } else {
                        if (returnVal.equals("JAVA_DOUBLE")) {
                            b.append("    PUSH_DOUBLE(tmpResult); }\n");
                        } else {
                            if (returnVal.equals("JAVA_FLOAT")) {
                                b.append("    PUSH_FLOAT(tmpResult); }\n");
                            } else {
                                throw new UnsupportedOperationException("Unknown type: " + returnVal);
                            }
                        }
                    }
                }
            }
        }
        return;
    }
    b.append("); ");
    int val;
    if (origOpcode != Opcodes.INVOKESTATIC) {
        val = args.size() + 1 - numLiteralArgs;
    } else {
        val = args.size() - numLiteralArgs;
    }
    if (val > 0) {
        b.append("    SP -= ");
        b.append(val);
        b.append(";\n");
    } else {
        b.append("\n");
    }
}
Also used : ByteCodeClass(com.codename1.tools.translator.ByteCodeClass) ArrayList(java.util.ArrayList)

Aggregations

ArrayList (java.util.ArrayList)8 Hashtable (java.util.Hashtable)8 AnimationObject (com.codename1.ui.animations.AnimationObject)6 File (java.io.File)6 IOException (java.io.IOException)6 Component (com.codename1.ui.Component)5 DataInputStream (java.io.DataInputStream)4 Command (com.codename1.ui.Command)3 Container (com.codename1.ui.Container)3 EditorTTFFont (com.codename1.ui.EditorTTFFont)3 EncodedImage (com.codename1.ui.EncodedImage)3 List (com.codename1.ui.List)3 Border (com.codename1.ui.plaf.Border)3 Point (java.awt.Point)3 ByteArrayInputStream (java.io.ByteArrayInputStream)3 FileInputStream (java.io.FileInputStream)3 EventObject (java.util.EventObject)3 HashMap (java.util.HashMap)3 Properties (com.codename1.io.Properties)2 ByteCodeClass (com.codename1.tools.translator.ByteCodeClass)2