String s = value == null ? null : value.toString();
if (value == null) newcolor = 0x00000000;
else if (s.length() > 0 && s.charAt(0) == '#')
- newcolor = 0xFF000000 |
- (Integer.parseInt(s.substring(1, 3), 16) << 16) |
- (Integer.parseInt(s.substring(3, 5), 16) << 8) |
- Integer.parseInt(s.substring(5, 7), 16);
+ try {
+ newcolor = 0xFF000000 |
+ (Integer.parseInt(s.substring(1, 3), 16) << 16) |
+ (Integer.parseInt(s.substring(3, 5), 16) << 8) |
+ Integer.parseInt(s.substring(5, 7), 16);
+ } catch (NumberFormatException e) {
+ Log.log(this, "invalid color " + s);
+ return;
+ }
else if (s.equals("black")) newcolor = black;
else if (s.equals("blue")) newcolor = blue;
else if (s.equals("green")) newcolor = green;
specialBoxProperties.put("static", new SpecialBoxProperty() {
public Object get(Box b) {
- String cfsn = JS.getCurrentFunction().getSourceName();
+ JS.Function cf = JS.getCurrentFunction();
+ String cfsn = cf.getSourceName();
for(int i=0; i<cfsn.length() - 1; i++)
if (cfsn.charAt(i) == '.' && (cfsn.charAt(i+1) == '_' || Character.isDigit(cfsn.charAt(i+1)))) {
cfsn = cfsn.substring(0, i);
public static class Apply extends JS.Function {
Box b;
- public Apply(Box b) { this.b = b; }
+ public Apply(Box b) { super(-1, "java", null, null); this.b = b; }
public Object _call(JS.Array args) throws JS.Exn {
} else if (args.elementAt(0) instanceof JS && !(args.elementAt(0) instanceof Box)) {
JS s = (JS)args.elementAt(0);
Object[] keys = s.keys();
- for(int j=0; j<keys.length; j++) b.put(keys[j].toString(), s);
+ for(int j=0; j<keys.length; j++) b.put(keys[j].toString(), s.get(keys[j]));
}
return b;