001 package com.oxygenxml.validate.nvdl; 002 003 /** 004 * Stores a set of element actions. 005 * The actions are result actions and no result actions. 006 * An action set contains only one result action and more no result actions. 007 * 008 */ 009 class ActionSet { 010 /** 011 * The result action. 012 */ 013 private ResultAction resultAction; 014 /** 015 * The no result actions. 016 */ 017 private NoResultAction[] noResultActions = new NoResultAction[0]; 018 019 /** 020 * Cancel nested actions flag. 021 */ 022 private boolean cancelNestedActions; 023 024 /** 025 * Getter for the result action. 026 * @return The result action. 027 */ 028 ResultAction getResultAction() { 029 return resultAction; 030 } 031 032 /** 033 * Setter for the result action. 034 * @param resultAction The result action. 035 */ 036 void setResultAction(ResultAction resultAction) { 037 this.resultAction = resultAction; 038 } 039 040 /** 041 * Adds a no result action to the no result actions. 042 * @param action The no result action. 043 */ 044 void addNoResultAction(NoResultAction action) { 045 NoResultAction[] actions = new NoResultAction[noResultActions.length + 1]; 046 System.arraycopy(noResultActions, 0, actions, 0, noResultActions.length); 047 actions[noResultActions.length] = action; 048 noResultActions = actions; 049 } 050 051 /** 052 * Getter for the no result actions array. 053 * @return The no result actions. 054 */ 055 NoResultAction[] getNoResultActions() { 056 return noResultActions; 057 } 058 059 /** 060 * Getter for the cancel nested actions flag. 061 */ 062 boolean getCancelNestedActions() { 063 return cancelNestedActions; 064 } 065 066 /** 067 * Set the cancel nested actions flag. 068 * @param cancelNestedActions The new value. 069 */ 070 void setCancelNestedActions(boolean cancelNestedActions) { 071 this.cancelNestedActions = cancelNestedActions; 072 } 073 074 075 /** 076 * Gets a new ActionSet containing all the actions with the 077 * current mode changed. 078 * 079 * @param mode The new current mode. 080 * @return A new ActionSet with actions with the current mode changed. 081 */ 082 ActionSet changeCurrentMode(Mode mode) { 083 ActionSet actions = new ActionSet(); 084 if (this.resultAction != null) 085 actions.resultAction = this.resultAction.changeCurrentMode(mode); 086 actions.noResultActions = new NoResultAction[this.noResultActions.length]; 087 for (int i = 0; i < actions.noResultActions.length; i++) 088 actions.noResultActions[i] = this.noResultActions[i].changeCurrentMode(mode); 089 return actions; 090 } 091 }