- /** adds a theme mapping, retemplatizing as needed */
- public static void retheme(JS.Callable callback) {
- /*
- XWF.flushXWFs();
-
- // clear changed marker and relink
- Template[] t = new Template[cache.size()];
- Enumeration e = cache.elements();
- for(int i=0; e.hasMoreElements(); i++) t[i] = (Template)e.nextElement();
- for(int i=0; i<t.length; i++) {
- t[i].changed = false;
- t[i].numunits = -1;
- t[i].link(true);
- }
-
- for(int i=0; i<Surface.allSurfaces.size(); i++) {
- Box b = ((Surface)Surface.allSurfaces.elementAt(i)).root;
- if (b != null) reapply(b);
- }
-
- if (callback != null)
- try {
- JS.Array args = new JS.Array();
- args.addElement(new Double(1.0));
- args.addElement(new Double(1.0));
- callback.call(args);
- } catch (JS.Exn ex) {
- if (Log.on) Log.log(Template.class, "WARNING: uncaught ecmascript exception: " + ex.getMessage());
- }
- */
- }
-
- /** template reapplication procedure */
- private static void reapply(Box b) {
-
- Log.log(Template.class, "Template.reapply() not implemented");
- /*
- // Ref 7.5.1: check if we need to retemplatize
- boolean retemplatize = false;
- if (b.templatename != null) {
- Template t = getTemplate(b.templatename, b.importlist);
- if (t != b.template) retemplatize = true;
- b.template = t;
- }
- if (b.template != null && b.template.changed) retemplatize = true;
-
- if (retemplatize) {
-
- // Ref 7.5.2: "Preserve all properties on the box mentioned in the <preserve> elements of any
- // of the templates which would be applied in step 7."
- Vec keys = new Vec();
- b.template.gatherPreserves(keys);
- Object[] vals = new Object[keys.size()];
- for(int i=0; i<keys.size(); i++) vals[i] = b.get(((String)keys.elementAt(i)), null);
-
- // Ref 7.5.3: "Remove and save all children of the box, or its redirect target, if it has one"
- Box[] kids = null;
- if (b.redirect != null) {
- kids = new Box[b.redirect.numChildren()];
- for(int i=b.redirect.numChildren() - 1; i >= 0; i--) {
- kids[i] = b.redirect.getChild(i);
- kids[i].remove();
- }
- }
-
- // Ref 7.5.4: "Set the box's redirect target to self"
- b.redirect = b;
-
- // Ref 7.5.5: "Remove all of the box's immediate children"
- for(Box cur = b.getChild(b.numChildren() - 1); cur != null;) {
- Box oldcur = cur;
- cur = cur.prevSibling();
- oldcur.remove();
- }
-
- // Ref 7.5.6: "Remove all traps set by scripts run during the application of any template to this box"
- Trap.removeAllTrapsByBox(b);
-
- // Ref 7.5.7: "Apply the template to the box according to the usual application procedure"
- b.template.apply(b, null, null, null, 0, 1);
-
- // Ref 7.5.8: "Re-add the saved children which were removed in step 3"
- for(int i=0; kids != null && i<kids.length; i++) b.put(Integer.MAX_VALUE, null, kids[i]);
-
- // Ref 7.5.9: "Re-put any property values which were preserved in step 2"
- for(int i=0; i<keys.size(); i++) b.put((String)keys.elementAt(i), null, vals[i]);
- }
-
- // Recurse
- for(Box j = b.getChild(0); j != null; j = j.nextSibling()) reapply(j);
- */
- }
-