public class FormAction extends javax.swing.AbstractAction implements FormElementI, FormPopupControllerI, de.ipcon.swing.PopupListenerI, java.lang.Comparable
ftx[ 'parent_element_name' ].actions.get( 'action_cmd' ),
with 'parent_element_name' being the value of the name attribute of the parent element of this action
and 'action_cmd' being the 'cmd' attribute set on this action.ALL_ACTIONS, AVAILABLE_ACTION_KIND, CONTEXTMENU_ACTION_KIND, LOCAL_ACTION_KIND, MENU_ACTION_KIND, NO_LOCAL_ACTION_KIND, NO_TOPMDI_ONLY_ACTION_KIND, NOT_AVAILABLE_ACTION_KIND, REFRESH_FROM_TRANSACTION, REFRESH_FROM_USER, SHORTCUT_ACTION_KIND, TOOLBAR_ACTION_KIND, TOPMDI_ONLY_ACTION_KIND| Constructor and Description |
|---|
FormAction(electric.xml.Element _confRoot,
ClientContextI _ctx) |
FormAction(electric.xml.Element _confRoot,
ClientContextI _ctx,
java.lang.Object[] _resourceAnchors) |
| Modifier and Type | Method and Description |
|---|---|
void |
actionPerformed() |
void |
actionPerformed(java.awt.event.ActionEvent a) |
void |
addActionListener(java.awt.event.ActionListener a) |
void |
addFormElementListener(FormElementListenerI l) |
FormAction |
addPriority(int n) |
void |
addScriptVariable(java.lang.String name,
java.lang.Class type,
java.lang.Object value) |
void |
afterSave() |
void |
afterSetValue(java.lang.Object old,
java.lang.Object $new) |
void |
beforeSave() |
void |
beforeSetValue(java.lang.Object old,
java.lang.Object $new) |
static FormAction |
byActionCommand(java.lang.String cmd,
FormContextI fx) |
static FormAction |
byActionCommand(java.lang.String cmd,
FormContextI fx,
FormContextI except) |
void |
callActionHandler(java.lang.Object o,
java.awt.event.ActionEvent a) |
void |
checkIfEnabled()
Checks whether this FormAction is enabled or disabled.
|
java.lang.Object |
clone() |
void |
close() |
int |
compareTo(java.lang.Object o) |
de.ipcon.swing.paracomp.IconButton |
createIconButton(java.lang.Object context) |
de.ipcon.swing.paracomp.IconButton |
createIconButton(java.lang.Object context,
de.ipcon.swing.IconDisplayContext idc) |
javax.swing.JButton |
createJButton() |
javax.swing.JButton |
createJButton(boolean defaultShowLabel) |
javax.swing.JButton |
createJButton(boolean defaultShowLabel,
boolean initIcon) |
javax.swing.JMenuItem |
createJMenuItem() |
javax.swing.JToggleButton |
createJToggleButton(java.lang.Class<? extends javax.swing.JToggleButton> clazz) |
javax.swing.JToggleButton |
createJToggleButton(java.lang.Class<? extends javax.swing.JToggleButton> clazz,
boolean defaultShowLabel) |
javax.swing.JToggleButton |
createJToggleButton(java.lang.Class<? extends javax.swing.JToggleButton> clazz,
boolean defaultShowLabel,
boolean initIcon) |
javax.swing.AbstractButton |
createJToolBarButton() |
javax.swing.AbstractButton |
createJToolBarButton(javax.swing.JToolBar tb) |
boolean |
equals(FormAction other) |
void |
evalOnAction(java.awt.event.ActionEvent a,
ProgressDisplayI progress) |
static void |
finalToast(java.lang.String text) |
static void |
finalToast(java.lang.String text,
int delay) |
static void |
finalToast(java.lang.String text,
int delay,
boolean error) |
static void |
finalToast(java.lang.String text,
int delay,
boolean error,
boolean onlyIfNoneYet) |
static void |
finalToastError(java.lang.String text) |
static void |
finalToastError(java.lang.String text,
int delay) |
static void |
finalToastErrorIfNoneYet(java.lang.String text) |
static void |
finalToastErrorIfNoneYet(java.lang.String text,
int delay) |
static void |
finalToastIfNoneYet(java.lang.String text) |
static void |
finalToastIfNoneYet(java.lang.String text,
int delay) |
void |
fireExecutorFinished(de.ipcon.form.FormAction.Executor e) |
void |
fireExecutorStarted(de.ipcon.form.FormAction.Executor e) |
java.lang.String |
getAcceleratorKeyAsString() |
java.util.ArrayList |
getAccKeys() |
java.lang.String |
getActionCommand() |
java.util.LinkedHashMap |
getActions() |
java.util.LinkedHashMap |
getActionsOfKind(int kind) |
java.util.HashMap |
getAttributeMap() |
BO |
getBO() |
electric.xml.Element |
getConfRoot() |
ClientContextI |
getCtx() |
java.lang.String |
getDebugName() |
java.lang.String |
getDescKey() |
java.util.HashMap |
getElementMap() |
FormContextI |
getFtx() |
java.lang.String |
getGlobalKey()
Generates a unique global key for this FormAction.
|
java.lang.String |
getGroup() |
javax.swing.ImageIcon |
getIcon() |
java.lang.String |
getLongDescription() |
java.lang.String |
getLongestDescription() |
java.lang.String |
getMenu() |
java.lang.String |
getMenuKey() |
java.lang.Character |
getMnemonic() |
java.lang.String |
getName() |
java.lang.String |
getNameKey() |
int |
getPriority() |
int |
getProgressShowDelay() |
java.lang.Object[] |
getResourceAnchors() |
java.lang.Object |
getResourceAnchors(int $42) |
SchemaI |
getSchema() |
java.lang.String |
getShortDescription() |
java.lang.String |
getShortestDescription() |
javax.swing.ImageIcon |
getSmallIcon() |
static FormAction[] |
getSortedArray(java.util.Map m) |
java.lang.String |
getToolBar() |
void |
handleAccKeyE(electric.xml.Element e) |
void |
handleAttributes(java.util.HashMap atthash) |
void |
handleAvailableOnE(electric.xml.Element e) |
boolean |
handleElement(java.util.HashMap elhash,
electric.xml.Element el) |
void |
handleElements(java.util.HashMap elhash,
boolean subsPossible) |
void |
handleEnabledOnE(electric.xml.Element e) |
void |
handleInitialStateA(electric.xml.Attribute a)
Called by bean attributes handler.
|
void |
handleInitialStateE(electric.xml.Element e) |
void |
handleLocalA(electric.xml.Attribute a) |
void |
handleLongDescriptionE(electric.xml.Element e) |
void |
handleMergeA(electric.xml.Attribute a) |
FormElementI |
handleNewElement(electric.xml.Element el) |
FormElementI |
handleNewElement(electric.xml.Element el,
java.lang.String aka) |
void |
handleOnActionE(electric.xml.Element e) |
void |
handleOnAfterPopupHideE(electric.xml.Element e) |
void |
handleOnBeforePopupShowE(electric.xml.Element e) |
void |
handlePauseMessageBusA(electric.xml.Attribute a) |
void |
handlePopupE(electric.xml.Element e) |
void |
handleScriptE(electric.xml.Element e) |
void |
handleShortDescriptionE(electric.xml.Element e) |
void |
handleShowLabelA(electric.xml.Attribute a) |
void |
handleTopMdiOnlyA(electric.xml.Attribute a) |
boolean |
hasAccKeyEnter()
Returns true, if one of the accelerator keys is the ENTER keystroke.
|
boolean |
hasEmptyOnAction()
Returns true if the onAction script of this FormAction is null or empty.
|
int |
hashCode() |
boolean |
hasIcon() |
boolean |
hasSmallIcon() |
void |
hidePopup() |
void |
invokePopupHook(java.lang.String name) |
boolean |
isAnimation() |
boolean |
isAvailable() |
boolean |
isClosed() |
boolean |
isContextMenu() |
boolean |
isDebug() |
boolean |
isDescIsFromL10n() |
boolean |
isEditable() |
boolean |
isFormElementSync() |
boolean |
isGUIBuilt() |
boolean |
isInputPossible() |
boolean |
isLocal() |
boolean |
isMenuIsFromL10n() |
boolean |
isMerge() |
boolean |
isNameIsFromL10n() |
boolean |
isOffEDT() |
boolean |
isOfKind(int kind) |
boolean |
isPauseMessageBus() |
boolean |
isPopupVisible() |
boolean |
isPrototype() |
boolean |
isRegisteredAtJComponent(javax.swing.JComponent c)
Returns true if this action was registered at the passed JComponent.
|
boolean |
isRestoreFocus() |
boolean |
isSelectedState() |
boolean |
isShown() |
boolean |
isTopMdiOnly() |
void |
mdiActivate(MDIElementI me)
Invoked when this form element is activated within an MDI environment.
|
void |
mdiClose(MDIElementI me) |
void |
mdiDeactivate(MDIElementI me)
Invoked when this form element is deactivated within an MDI environment.
|
void |
mdiOpen(MDIElementI me) |
FormAction |
merge(FormAction fa) |
FormContextI |
needFtx() |
void |
popupAboutToHide(de.ipcon.swing.IResizablePopupWindow rpw) |
void |
popupHidden(de.ipcon.swing.IResizablePopupWindow rpw) |
void |
postInit() |
void |
postRefresh() |
void |
postRefresh(int from) |
void |
preparePopup() |
void |
preSetEnabled(boolean enable) |
void |
putValue(java.lang.String property,
java.lang.Object value) |
void |
refresh() |
void |
refresh(int from) |
void |
registerActionHandler(java.lang.Class caller,
java.lang.String func) |
void |
registerAtJComponent(javax.swing.JComponent c) |
void |
registerAtJComponent(javax.swing.JComponent c,
int when) |
void |
removeActionListener(java.awt.event.ActionListener a) |
void |
removeFormElementListener(FormElementListenerI l) |
void |
requestFocus() |
void |
setAcceleratorKey(java.lang.String _key) |
void |
setAccKey(java.lang.String _key) |
void |
setAccKeys(java.util.ArrayList $48) |
void |
setActionCommand(java.lang.String _command) |
void |
setAnimation(boolean $50) |
void |
setCmd(java.lang.String _command) |
void |
setConfRoot(electric.xml.Element $33) |
void |
setContextMenu(boolean $45) |
void |
setDebug(boolean $53) |
void |
setDescIsFromL10n(boolean $36) |
void |
setDescKey(java.lang.String $39) |
boolean |
setEditable(boolean isEditable) |
void |
setFormElementSync(boolean $51) |
void |
setFtx(FormContextI $32) |
FormAction |
setGroup(java.lang.String s) |
void |
setIcon(java.lang.String _icon) |
void |
setLongDescription(java.lang.String s) |
void |
setMenu(java.lang.String $34) |
void |
setMenuIsFromL10n(boolean $37) |
void |
setMenuKey(java.lang.String $40) |
void |
setMerge(boolean $47) |
void |
setMnemonicKey(java.lang.String _mnemonic) |
void |
setName(java.lang.String _name) |
void |
setNameIsFromL10n(boolean $35) |
void |
setNameKey(java.lang.String $38) |
void |
setOffEDT(boolean $49) |
FormAction |
setPriority(int n) |
void |
setProgressShowDelay(int $52) |
void |
setResourceAnchors(int $43,
java.lang.Object $44) |
void |
setResourceAnchors(java.lang.Object[] $41) |
void |
setRestoreFocus(boolean $54) |
void |
setSelectedState(boolean v) |
void |
setShortDescription(java.lang.String s) |
void |
setSmallIcon(java.lang.String key) |
void |
setToolBar(java.lang.String $46) |
void |
showError(java.lang.String s,
java.lang.Throwable t) |
void |
showException(java.lang.Throwable t) |
void |
showPopup() |
void |
sync() |
void |
togglePopup() |
java.lang.String |
toString() |
void |
unregisterAtJComponent(javax.swing.JComponent c) |
void |
unregisterAtJComponent(javax.swing.JComponent c,
int when) |
boolean |
willCareForChildActions() |
boolean |
willCareForChildRefresh() |
addPropertyChangeListener, getKeys, getPropertyChangeListeners, getValue, isEnabled, removePropertyChangeListener, setEnabledtoDebugNamepublic FormAction(electric.xml.Element _confRoot,
ClientContextI _ctx)
public FormAction(electric.xml.Element _confRoot,
ClientContextI _ctx,
java.lang.Object[] _resourceAnchors)
public java.lang.String getDebugName()
getDebugName in interface FormElementIpublic boolean isTopMdiOnly()
public boolean isLocal()
public boolean isPrototype()
public boolean isClosed()
isClosed in interface FormElementIpublic void close()
close in interface FormElementIpublic boolean isPauseMessageBus()
public void evalOnAction(java.awt.event.ActionEvent a,
ProgressDisplayI progress)
public void addScriptVariable(java.lang.String name,
java.lang.Class type,
java.lang.Object value)
public java.lang.String getGlobalKey()
This key is crucial for identifying actions within forms, particularly for adding and removing actions from the LinkedHashMap containing these actions during focus/unfocus events or form closure. The key's uniqueness is essential for keeping and removing and thus maintaining the correct actions within the forms.
public FormAction setGroup(java.lang.String s)
public java.lang.String getGroup()
public FormAction setPriority(int n)
public int getPriority()
public FormAction addPriority(int n)
public void putValue(java.lang.String property,
java.lang.Object value)
putValue in interface javax.swing.ActionputValue in class javax.swing.AbstractActionpublic void setName(java.lang.String _name)
public java.lang.String getName()
getName in interface FormElementIpublic void setAccKey(java.lang.String _key)
public void setAcceleratorKey(java.lang.String _key)
public java.lang.String getAcceleratorKeyAsString()
public boolean hasAccKeyEnter()
public void setCmd(java.lang.String _command)
public void setActionCommand(java.lang.String _command)
public java.lang.String getActionCommand()
public void setIcon(java.lang.String _icon)
public void setSmallIcon(java.lang.String key)
public javax.swing.ImageIcon getSmallIcon()
public javax.swing.ImageIcon getIcon()
public boolean hasSmallIcon()
public boolean hasIcon()
public void setMnemonicKey(java.lang.String _mnemonic)
public java.lang.Character getMnemonic()
public void handleInitialStateA(electric.xml.Attribute a)
Action.SELECTED_KEY.key - String representation of a boolean. I.e. "true" or "false".public boolean isSelectedState()
java.lang.IllegalStateException - if this method is called although no state is set yet.public void setSelectedState(boolean v)
public void handleLocalA(electric.xml.Attribute a)
public void handleTopMdiOnlyA(electric.xml.Attribute a)
public void handleMergeA(electric.xml.Attribute a)
public void handleShowLabelA(electric.xml.Attribute a)
public void handlePauseMessageBusA(electric.xml.Attribute a)
public void handleScriptE(electric.xml.Element e)
public void handleAvailableOnE(electric.xml.Element e)
public void handleEnabledOnE(electric.xml.Element e)
public void handleOnActionE(electric.xml.Element e)
public void handleOnBeforePopupShowE(electric.xml.Element e)
public void handleOnAfterPopupHideE(electric.xml.Element e)
public void handleShortDescriptionE(electric.xml.Element e)
public void handleAccKeyE(electric.xml.Element e)
public void handlePopupE(electric.xml.Element e)
public void handleInitialStateE(electric.xml.Element e)
public void showPopup()
showPopup in interface FormPopupControllerIpublic void invokePopupHook(java.lang.String name)
public void preparePopup()
public void hidePopup()
hidePopup in interface FormPopupControllerIpublic boolean isPopupVisible()
isPopupVisible in interface FormPopupControllerIpublic void togglePopup()
public void popupHidden(de.ipcon.swing.IResizablePopupWindow rpw)
popupHidden in interface de.ipcon.swing.PopupListenerIpublic void popupAboutToHide(de.ipcon.swing.IResizablePopupWindow rpw)
popupAboutToHide in interface de.ipcon.swing.PopupListenerIpublic void setShortDescription(java.lang.String s)
public java.lang.String getShortDescription()
public void handleLongDescriptionE(electric.xml.Element e)
public void setLongDescription(java.lang.String s)
public java.lang.String getLongDescription()
public java.lang.String getLongestDescription()
public java.lang.String getShortestDescription()
public java.util.HashMap getAttributeMap()
getAttributeMap in interface FormElementIpublic java.util.HashMap getElementMap()
getElementMap in interface FormElementIpublic java.lang.Object clone()
throws java.lang.CloneNotSupportedException
clone in class javax.swing.AbstractActionjava.lang.CloneNotSupportedExceptionpublic FormAction merge(FormAction fa)
public javax.swing.JToggleButton createJToggleButton(java.lang.Class<? extends javax.swing.JToggleButton> clazz)
public javax.swing.JToggleButton createJToggleButton(java.lang.Class<? extends javax.swing.JToggleButton> clazz,
boolean defaultShowLabel)
public javax.swing.JToggleButton createJToggleButton(java.lang.Class<? extends javax.swing.JToggleButton> clazz,
boolean defaultShowLabel,
boolean initIcon)
public javax.swing.JButton createJButton()
public javax.swing.JButton createJButton(boolean defaultShowLabel)
public javax.swing.JButton createJButton(boolean defaultShowLabel,
boolean initIcon)
public javax.swing.AbstractButton createJToolBarButton()
public javax.swing.AbstractButton createJToolBarButton(javax.swing.JToolBar tb)
public de.ipcon.swing.paracomp.IconButton createIconButton(java.lang.Object context)
public de.ipcon.swing.paracomp.IconButton createIconButton(java.lang.Object context,
de.ipcon.swing.IconDisplayContext idc)
public javax.swing.JMenuItem createJMenuItem()
public java.lang.String toString()
toString in class java.lang.Objectpublic void handleAttributes(java.util.HashMap atthash)
handleAttributes in interface FormElementIpublic boolean handleElement(java.util.HashMap elhash,
electric.xml.Element el)
handleElement in interface FormElementIpublic void handleElements(java.util.HashMap elhash,
boolean subsPossible)
handleElements in interface FormElementIpublic FormElementI handleNewElement(electric.xml.Element el)
handleNewElement in interface FormElementIpublic FormElementI handleNewElement(electric.xml.Element el, java.lang.String aka)
public FormContextI needFtx()
public void postInit()
postInit in interface FormElementIpublic void mdiOpen(MDIElementI me)
mdiOpen in interface FormElementIpublic void mdiClose(MDIElementI me)
mdiClose in interface FormElementIpublic void mdiActivate(MDIElementI me)
FormElementIThis method is called when the form element becomes the active, or currently selected, component in its MDI parent. Implementations should handle any necessary updates, refreshes, or setup that needs to occur when the element is brought into focus.
mdiActivate in interface FormElementIme - The MDIElementI that is being activated.public void mdiDeactivate(MDIElementI me)
FormElementIThis method is called when the form element is no longer the active component in its MDI parent. Implementations should handle any necessary cleanup, state saving, or resource release that needs to occur when the element loses focus.
mdiDeactivate in interface FormElementIme - The MDIElementI that is being deactivated.public java.util.LinkedHashMap getActions()
getActions in interface FormElementIpublic java.util.LinkedHashMap getActionsOfKind(int kind)
getActionsOfKind in interface FormElementIpublic ClientContextI getCtx()
getCtx in interface FormElementIpublic SchemaI getSchema()
getSchema in interface FormElementIpublic BO getBO()
public boolean willCareForChildRefresh()
willCareForChildRefresh in interface FormElementIpublic boolean willCareForChildActions()
willCareForChildActions in interface FormElementIpublic boolean isGUIBuilt()
isGUIBuilt in interface FormElementIpublic void refresh()
refresh in interface FormElementIpublic void refresh(int from)
refresh in interface FormElementIpublic void postRefresh()
public void postRefresh(int from)
postRefresh in interface FormElementIpublic void beforeSave()
beforeSave in interface FormElementIpublic void afterSave()
afterSave in interface FormElementIpublic void beforeSetValue(java.lang.Object old,
java.lang.Object $new)
beforeSetValue in interface FormElementIpublic void afterSetValue(java.lang.Object old,
java.lang.Object $new)
afterSetValue in interface FormElementIpublic void sync()
sync in interface FormElementIpublic void addFormElementListener(FormElementListenerI l)
addFormElementListener in interface FormElementIpublic void removeFormElementListener(FormElementListenerI l)
removeFormElementListener in interface FormElementIpublic void showError(java.lang.String s,
java.lang.Throwable t)
public void showException(java.lang.Throwable t)
public boolean isAvailable()
public void checkIfEnabled()
enabledOn element is evaluated to a boolean value.
In the end preSetEnabled(boolean) (and thus AbstractAction.setEnabled(boolean)) is called onEDT.public void preSetEnabled(boolean enable)
public void registerActionHandler(java.lang.Class caller,
java.lang.String func)
public void callActionHandler(java.lang.Object o,
java.awt.event.ActionEvent a)
public void addActionListener(java.awt.event.ActionListener a)
public void removeActionListener(java.awt.event.ActionListener a)
public boolean isRegisteredAtJComponent(javax.swing.JComponent c)
public void registerAtJComponent(javax.swing.JComponent c)
public void registerAtJComponent(javax.swing.JComponent c,
int when)
public void unregisterAtJComponent(javax.swing.JComponent c)
public void unregisterAtJComponent(javax.swing.JComponent c,
int when)
public boolean setEditable(boolean isEditable)
setEditable in interface FormElementIpublic boolean isEditable()
isEditable in interface FormElementIpublic boolean isShown()
isShown in interface FormElementIpublic boolean isInputPossible()
isInputPossible in interface FormElementIpublic void requestFocus()
requestFocus in interface FormElementIpublic boolean isDebug()
isDebug in interface FormElementIpublic int compareTo(java.lang.Object o)
compareTo in interface java.lang.Comparablepublic int hashCode()
hashCode in class java.lang.Objectpublic boolean equals(FormAction other)
public static FormAction[] getSortedArray(java.util.Map m)
public static FormAction byActionCommand(java.lang.String cmd, FormContextI fx)
public static FormAction byActionCommand(java.lang.String cmd, FormContextI fx, FormContextI except)
public boolean isOfKind(int kind)
public boolean hasEmptyOnAction()
public void actionPerformed()
public void actionPerformed(java.awt.event.ActionEvent a)
actionPerformed in interface java.awt.event.ActionListenerpublic void fireExecutorStarted(de.ipcon.form.FormAction.Executor e)
public void fireExecutorFinished(de.ipcon.form.FormAction.Executor e)
public static void finalToast(java.lang.String text)
public static void finalToast(java.lang.String text,
int delay)
public static void finalToast(java.lang.String text,
int delay,
boolean error)
public static void finalToast(java.lang.String text,
int delay,
boolean error,
boolean onlyIfNoneYet)
public static void finalToastIfNoneYet(java.lang.String text)
public static void finalToastIfNoneYet(java.lang.String text,
int delay)
public static void finalToastError(java.lang.String text)
public static void finalToastError(java.lang.String text,
int delay)
public static void finalToastErrorIfNoneYet(java.lang.String text)
public static void finalToastErrorIfNoneYet(java.lang.String text,
int delay)
public FormContextI getFtx()
getFtx in interface FormElementIpublic void setFtx(FormContextI $32)
public electric.xml.Element getConfRoot()
getConfRoot in interface FormElementIpublic void setConfRoot(electric.xml.Element $33)
public java.lang.String getMenu()
public void setMenu(java.lang.String $34)
public boolean isNameIsFromL10n()
public void setNameIsFromL10n(boolean $35)
public boolean isDescIsFromL10n()
public void setDescIsFromL10n(boolean $36)
public boolean isMenuIsFromL10n()
public void setMenuIsFromL10n(boolean $37)
public java.lang.String getNameKey()
public void setNameKey(java.lang.String $38)
public java.lang.String getDescKey()
public void setDescKey(java.lang.String $39)
public java.lang.String getMenuKey()
public void setMenuKey(java.lang.String $40)
public java.lang.Object[] getResourceAnchors()
public void setResourceAnchors(java.lang.Object[] $41)
public java.lang.Object getResourceAnchors(int $42)
public void setResourceAnchors(int $43,
java.lang.Object $44)
public boolean isContextMenu()
public void setContextMenu(boolean $45)
public java.lang.String getToolBar()
public void setToolBar(java.lang.String $46)
public boolean isMerge()
public void setMerge(boolean $47)
public java.util.ArrayList getAccKeys()
public void setAccKeys(java.util.ArrayList $48)
public boolean isOffEDT()
public void setOffEDT(boolean $49)
public boolean isAnimation()
public void setAnimation(boolean $50)
public boolean isFormElementSync()
public void setFormElementSync(boolean $51)
public int getProgressShowDelay()
public void setProgressShowDelay(int $52)
public void setDebug(boolean $53)
public boolean isRestoreFocus()
public void setRestoreFocus(boolean $54)
Copyright © 2000-2025 OAshi S.à r.l. All Rights Reserved.