123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /*global define*/
- define([
- '../../Core/defined',
- '../../Core/defineProperties',
- '../../Core/DeveloperError',
- '../../ThirdParty/knockout',
- '../createCommand'
- ], function(
- defined,
- defineProperties,
- DeveloperError,
- knockout,
- createCommand) {
- "use strict";
- /**
- * A view model that represents each item in the {@link BaseLayerPicker}.
- *
- * @alias ProviderViewModel
- * @constructor
- *
- * @param {Object} options The object containing all parameters.
- * @param {String} options.name The name of the layer.
- * @param {String} options.tooltip The tooltip to show when the item is moused over.
- * @param {String} options.iconUrl An icon representing the layer.
- * @param {ProviderViewModel~CreationFunction|Command} options.creationFunction A function or Command
- * that creates one or more providers which will be added to the globe when this item is selected.
- *
- * @see BaseLayerPicker
- * @see ImageryProvider
- * @see TerrainProvider
- */
- var ProviderViewModel = function(options) {
- //>>includeStart('debug', pragmas.debug);
- if (!defined(options.name)) {
- throw new DeveloperError('options.name is required.');
- }
- if (!defined(options.tooltip)) {
- throw new DeveloperError('options.tooltip is required.');
- }
- if (!defined(options.iconUrl)) {
- throw new DeveloperError('options.iconUrl is required.');
- }
- if (typeof options.creationFunction !== 'function') {
- throw new DeveloperError('options.creationFunction is required.');
- }
- //>>includeEnd('debug');
- var creationCommand = options.creationFunction;
- if (!defined(creationCommand.canExecute)) {
- creationCommand = createCommand(creationCommand);
- }
- this._creationCommand = creationCommand;
- /**
- * Gets the display name. This property is observable.
- * @type {String}
- */
- this.name = options.name;
- /**
- * Gets the tooltip. This property is observable.
- * @type {String}
- */
- this.tooltip = options.tooltip;
- /**
- * Gets the icon. This property is observable.
- * @type {String}
- */
- this.iconUrl = options.iconUrl;
- knockout.track(this, ['name', 'tooltip', 'iconUrl']);
- };
- defineProperties(ProviderViewModel.prototype, {
- /**
- * Gets the Command that creates one or more providers which will be added to
- * the globe when this item is selected.
- * @memberof ProviderViewModel.prototype
- *
- * @type {Command}
- */
- creationCommand : {
- get : function() {
- return this._creationCommand;
- }
- }
- });
- /**
- * A function which creates one or more providers.
- * @callback ProviderViewModel~CreationFunction
- * @returns {ImageryProvider|TerrainProvider|ImageryProvider[]|TerrainProvider[]}
- * The ImageryProvider or TerrainProvider, or array of providers, to be added
- * to the globe.
- */
- return ProviderViewModel;
- });
|