public Thing handlecmd(Interp ip, Object target, String subcmd, Thing[] argv, int startat) throws HeclException { HeclCanvas c = (HeclCanvas) target; if (subcmd.equals(WidgetInfo.NREPAINT)) { c.repaint(); return null; } if (subcmd.equals("servicerepaints")) { c.serviceRepaints(); return null; } if (subcmd.equals("flush")) { if (argv.length == startat) { // Simple case, flush whole buffer c.flushGraphics(); return null; } // x, y, w, h if (startat + 4 != argv.length) throw HeclException.createWrongNumArgsException(argv, startat, "x y w h"); c.flushGraphics( IntThing.get(argv[startat]), IntThing.get(argv[startat + 1]), IntThing.get(argv[startat + 2]), IntThing.get(argv[startat + 3])); return null; } if (subcmd.equals("graphics")) return ObjectThing.create(c.getDrawable()); return super.handlecmd(ip, target, subcmd, argv, startat); }