"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
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;
}
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);
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
// 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) |
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);