001    package com.oxygenxml.validate.nvdl;
002    
003    import org.xml.sax.ContentHandler;
004    
005    /**
006     * Unwrap result action.
007     * This action an element but allows its content.
008     */
009    class UnwrapAction extends ResultAction {
010      /**
011       * Creates an unwrap action with a given mode usage.
012       * @param modeUsage The action mode usage.
013       */
014      UnwrapAction(ModeUsage modeUsage) {
015        super(modeUsage);
016      }
017    
018      /**
019       * Perform this action.
020       * 
021       * @param handler ???
022       * @param state the section state.
023       */
024      void perform(ContentHandler handler, SectionState state) {
025        state.addChildMode(getModeUsage(), handler);
026      }
027    
028      /**
029       * Get a new unwrap action with a mode usage with the current mode changed.
030       * This is useful when we have modes extending other modes as we need to get
031       * the actions from the base mode as actions on the new mode.
032       */
033      ResultAction changeCurrentMode(Mode mode) {
034        return new UnwrapAction(getModeUsage().changeCurrentMode(mode));
035      }
036    }