123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- var FEATURE_IS_NOT_FEATURE = -3;
- var FEATURE_ALREADY_REGISTERED = -2;
- var FEATURE_NOT_REGISTERED = -1;
- var FEATURE_FAILED_REGISTRATION = 0;
- var FEATURE_REGISTRATION_SUCCEEDED = 1;
- var FEATURE_FAILED_DEREGISTRATION = -4;
- var FEATURE_DEREGISTRATION_SUCCEEDED = 2;
- var FEATURE_REGISTERED_STATE = "registered";
- var FEATURE_DEREGISTERED_STATE = "deregistered";
- function CFeatureRegistry()
- {
- this.m_aRegisteredFeatures = new Array();
- this.m_aRegisteredFeaturesLaunchableStatus = new Array();
- this.m_aUnregisteredFeatures = new Array();
- };
- CFeatureRegistry.prototype.register = function (sFeatureName, oFeatureObject, bCanBeLaunched)
- {
- if (this.isRegistered(sFeatureName) === true)
- {
- return FEATURE_ALREADY_REGISTERED;
- }
-
- try
- {
- if (oFeatureObject instanceof AFeatureObject)
- {
- oFeatureObject.m_sFeatureState = FEATURE_REGISTERED_STATE;
- this.m_aRegisteredFeatures[sFeatureName] = oFeatureObject;
- this.m_aRegisteredFeaturesLaunchableStatus[sFeatureName] = bCanBeLaunched;
- }
- else
- {
- this.addToUnregisteredList(sFeatureName, oFeatureObject);
- return FEATURE_IS_NOT_FEATURE;
- }
- }
- catch (e)
- {
- return FEATURE_FAILED_REGISTRATION;
- }
- return FEATURE_REGISTRATION_SUCCEEDED;
- };
- CFeatureRegistry.prototype.addToUnregisteredList = function (sFeatureName, oFeatureObject)
- {
- try
- {
- this.m_aUnregisteredFeatures[sFeatureName] = oFeatureObject;
- }
- catch (e)
- {
- return false;
- }
- return true;
- };
- CFeatureRegistry.prototype.isRegistered = function (sFeatureName)
- {
- if (typeof this.m_aRegisteredFeatures[sFeatureName] != "undefined")
- {
- if (this.m_aRegisteredFeatures[sFeatureName] instanceof AFeatureObject)
- {
- return true;
- }
- else
- {
- this.deregister(sFeatureName, true);
- }
- }
- return false;
- };
- CFeatureRegistry.prototype.getAllRegisteredFeatures = function ()
- {
- return this.m_aRegisteredFeatures;
- };
- CFeatureRegistry.prototype.getAllUnregisteredFeatures = function ()
- {
- return this.m_aUnregisteredFeatures;
- };
- CFeatureRegistry.prototype.getRegisteredFeature = function (sFeatureName)
- {
- if (this.isRegistered(sFeatureName) === false)
- {
- return FEATURE_NOT_REGISTERED;
- }
-
- try
- {
- return this.m_aRegisteredFeatures[sFeatureName];
- }
- catch (e)
- {
- return FEATURE_FAILED_REGISTRATION;
- }
- };
- CFeatureRegistry.prototype.isFeatureLaunchable = function (sFeatureName)
- {
- if (this.isRegistered(sFeatureName) === false)
- {
- return false;
- }
-
- try
- {
- return this.m_aRegisteredFeaturesLaunchableStatus[sFeatureName];
- }
- catch (e)
- {
- return false;
- }
- };
- CFeatureRegistry.prototype.deregister = function (sFeatureName, bForceDeregistration)
- {
- if (!bForceDeregistration && this.isRegistered(sFeatureName) === false)
- {
- return FEATURE_NOT_REGISTERED;
- }
-
- try
- {
- this.m_aRegisteredFeatures[sFeatureName].m_sFeatureState = FEATURE_DEREGISTERED_STATE;
- this.addToUnregisteredList(sFeatureName, this.getRegisteredFeature(sFeatureName));
- this.m_aRegisteredFeatures = deleteArrayEntry(this.m_aRegisteredFeatures, sFeatureName);
- this.m_aRegisteredFeaturesLaunchableStatus = deleteArrayEntry(this.m_aRegisteredFeaturesLaunchableStatus, sFeatureName);
- }
- catch (e)
- {
- return FEATURE_FAILED_DEREGISTRATION;
- }
- return FEATURE_DEREGISTRATION_SUCCEEDED;
- };
|