X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FBox.java;h=c4f34e599ae38e2032334d9cf47884ac1bb29159;hb=9c2602143956cd39ecf5ef4c9eb31f5f56b5bd66;hp=b5585fc17b15bbacc906ecc4d753232f8e3804b2;hpb=020decf73910d5890b0cd0e910255629c484ce52;p=org.ibex.core.git diff --git a/src/org/xwt/Box.java b/src/org/xwt/Box.java index b5585fc..c4f34e5 100644 --- a/src/org/xwt/Box.java +++ b/src/org/xwt/Box.java @@ -78,7 +78,7 @@ public final class Box extends JSScope implements Scheduler.Task { "shrink", "hshrink", "vshrink", "x", "y", "width", "height", "cols", "rows", "colspan", "rowspan", "align", "visible", "packed", "globalx", "globaly", "minwidth", "maxwidth", "minheight", "maxheight", "indexof", "thisbox", "clip", - "numchildren", "redirect", "cursor", "mouse", "surface" + "numchildren", "redirect", "cursor", "mouse" }; // FIXME update these @@ -479,7 +479,7 @@ public final class Box extends JSScope implements Scheduler.Task { case "y": return N(globalToLocalY(getSurface()._mousey)); // this might not get recomputed if we change mousex/mousey... - case "inside": return B(MOUSEINSIDE); + case "inside": return B(test(MOUSEINSIDE)); //#end return null; } @@ -533,11 +533,18 @@ public final class Box extends JSScope implements Scheduler.Task { case "Maximized": if (parent == null && getSurface() != null) getSurface().maximized = toBoolean(value); // FEATURE case "Close": if (parent == null && getSurface() != null) getSurface().dispose(true); case "redirect": if (redirect == this) redirect = (Box)value; else Log.info(this, "redirect can only be set once"); - case "font": font = value == null ? null : Font.getFont((Stream)value, font == null ? 10 : font.pointsize); MARK_RESIZE; dirty(); + case "font": + if(!(value instanceof Stream)) throw new JSExn("You can only put streams to the font property"); + font = value == null ? null : Font.getFont((Stream)value, font == null ? 10 : font.pointsize); + MARK_RESIZE; + dirty(); case "fontsize": font = Font.getFont(font == null ? null : font.res, toInt(value)); MARK_RESIZE; dirty(); case "x": if (parent==null && Surface.fromBox(this)!=null) { CHECKSET_INT(x); } else { if (test(PACKED) && parent != null) return; CHECKSET_INT(x); dirty(); MARK_RESIZE; dirty(); } case "y": if (parent==null && Surface.fromBox(this)!=null) { CHECKSET_INT(y); } else { if (test(PACKED) && parent != null) return; CHECKSET_INT(y); dirty(); MARK_RESIZE; dirty(); } - + case "titlebar": + if (getSurface() != null && value != null) getSurface().setTitleBarText(JS.toString(value)); + super.put(name,value); + case "Press1": if (!test(STOP_UPWARD_PROPAGATION) && parent != null) parent.putAndTriggerTraps(name, value); case "Press2": if (!test(STOP_UPWARD_PROPAGATION) && parent != null) parent.putAndTriggerTraps(name, value); case "Press3": if (!test(STOP_UPWARD_PROPAGATION) && parent != null) parent.putAndTriggerTraps(name, value); @@ -625,18 +632,22 @@ public final class Box extends JSScope implements Scheduler.Task { if (surface.cursor != tempcursor) surface.syncCursor(); } - private void setFill(Object value) { - if (value == null) return; - if (value instanceof String) { + private void setFill(Object value) throws JSExn { + if (value == null) { + // FIXME: Check this... does this make it transparent? + texture = null; + fillcolor = 0; + } else if (value instanceof String) { // FIXME check double set int newfillcolor = stringToColor((String)value); if (newfillcolor == fillcolor) return; fillcolor = newfillcolor; - dirty(); - return; + } else if(value instanceof Stream) { + texture = Picture.load((Stream)value, this); + } else { + throw new JSExn("fill must be null, a String, or a stream"); } - if (!(value instanceof Stream)) return; - texture = Picture.load((Stream)value, this); + dirty(); } // FIXME: mouse move/release still needs to propagate to boxen in which the mouse was pressed and is still held down @@ -681,7 +692,7 @@ public final class Box extends JSScope implements Scheduler.Task { // FIXME support three-char strings by doubling digits if (s == null) return 0x00000000; else if (SVG.colors.get(s) != null) return 0xFF000000 | toInt(SVG.colors.get(s)); - else if (s.length() > 0 && s.charAt(0) == '#') try { + else if (s.length() == 7 && s.charAt(0) == '#') try { // FEATURE alpha return 0xFF000000 | (Integer.parseInt(s.substring(1, 3), 16) << 16) | @@ -845,6 +856,9 @@ public final class Box extends JSScope implements Scheduler.Task { void putAndTriggerTrapsAndCatchExceptions(Object name, Object val) { try { putAndTriggerTraps(name, val); + } catch (JSExn e) { + JS.log("caught js exception while putting to trap \""+name+"\""); + JS.log(e); } catch (Exception e) { JS.log("caught exception while putting to trap \""+name+"\""); JS.log(e);