001 package com.oxygenxml.validate.nvdl; 002 003 import org.xml.sax.ContentHandler; 004 005 /** 006 * Result attach action. 007 * Attaches elements to the section. 008 */ 009 class AttachAction extends ResultAction { 010 /** 011 * Creates an attach action with a given mode usage. 012 * @param modeUsage The mode usage. 013 */ 014 AttachAction(ModeUsage modeUsage) { 015 super(modeUsage); 016 } 017 018 /** 019 * Performs this action on the section state. 020 * 021 * @param handler ??? 022 * @param state The section state. 023 */ 024 void perform(ContentHandler handler, SectionState state) { 025 final ModeUsage modeUsage = getModeUsage(); 026 if (handler != null) { 027 state.addActiveHandler(handler, modeUsage); 028 } else { 029 state.addAttributeValidationModeUsage(modeUsage); 030 } 031 state.addChildMode(modeUsage, handler); 032 } 033 034 /** 035 * Get a new attach action with a mode usage with the current mode changed. 036 * This is useful when we have modes extending other modes as we need to get 037 * the actions from the base mode as actions on the new mode. 038 */ 039 ResultAction changeCurrentMode(Mode mode) { 040 return new AttachAction(getModeUsage().changeCurrentMode(mode)); 041 } 042 }