package org.ovirt.engine.ui.webadmin.plugin;
/**
* Enumerates possible states of a UI plugin during the runtime.
*/
public enum PluginState {
/**
* The plugin has been defined through its meta-data and the corresponding iframe element has been created. This is
* the initial state for all plugins.
* <p>
* Possible transitions: {@link #LOADING}
*/
DEFINED,
/**
* The iframe element has been attached to DOM, with plugin host page being fetched asynchronously in the
* background. We are now waiting for the plugin to report in as ready.
* <p>
* Possible transitions: {@link #READY}
*/
LOADING,
/**
* The plugin has indicated that it is ready for use. We expect the event handler object (object containing plugin
* event handler functions) to be registered at this point. We will now proceed with plugin initialization.
* <p>
* Possible transitions: {@link #INITIALIZING}
*/
READY,
/**
* The plugin is being initialized by calling UiInit event handler function. The UiInit function will be called just
* once during the lifetime of a plugin, before any other event handler functions are invoked by the plugin
* infrastructure.
* <p>
* Possible transitions: {@link #IN_USE}, {@link #FAILED}
*/
INITIALIZING,
/**
* Plugin's UiInit event handler function has completed successfully, we can now call other event handler functions
* as necessary. The plugin is in use now.
* <p>
* Possible transitions: {@link #FAILED}
*/
IN_USE,
/**
* An uncaught exception escaped while calling an event handler function, which indicates internal error within the
* plugin code. The iframe element has been detached from DOM. The plugin is removed from service.
* <p>
* Possible transitions: N/A (end state)
*/
FAILED
}