// // $Id: MisoSceneRuleSet.java,v 1.4 2001/11/29 19:31:12 mdb Exp $ package com.threerings.miso.tools.scene.xml; import org.apache.commons.digester.Digester; import org.apache.commons.digester.RuleSetBase; import com.samskivert.xml.SetFieldRule; import com.threerings.miso.scene.MisoSceneModel; /** * Used to parse a {@link MisoSceneModel} from XML. */ public class MisoSceneRuleSet extends RuleSetBase { /** * Configures the rule set to match scenes with the supplied prefix. * For example, passing scene.miso will match the scene * in the following XML file: * *
     * <scene>
     *   <miso>
     *     <width>50</width>
     *     <height>50</height>
     *     <!-- ... -->
     *   </miso>
     * </scene>
     * 
*/ public void setPrefix (String prefix) { _prefix = prefix; } /** * Adds the necessary rules to the digester to parse our miso scene * data. */ public void addRuleInstances (Digester digester) { // this creates the appropriate instance when we encounter our // prefix tag digester.addObjectCreate(_prefix, MisoSceneModel.class.getName()); // set up rules to parse and set our fields digester.addRule(_prefix + "/width", new SetFieldRule(digester, "width")); digester.addRule(_prefix + "/height", new SetFieldRule(digester, "height")); digester.addRule(_prefix + "/base", new SetFieldRule(digester, "baseTileIds")); digester.addRule(_prefix + "/fringe", new SetFieldRule(digester, "fringeTileIds")); digester.addRule(_prefix + "/object", new SetFieldRule(digester, "objectTileIds")); } /** The prefix at which me match our scenes. */ protected String _prefix; }