[API] Update MCT implementation

This commit is contained in:
Victor Woeltjen 2016-09-30 10:09:42 -07:00
parent b1b6080161
commit 09c73ef5f8
2 changed files with 44 additions and 89 deletions

View File

@ -6,7 +6,7 @@ define([
'text!./adapter/templates/edit-object-replacement.html', 'text!./adapter/templates/edit-object-replacement.html',
'./Selection', './Selection',
'./api/objects/object-utils', './api/objects/object-utils',
'./api/TimeConductor' './ui/ViewRegistry'
], function ( ], function (
EventEmitter, EventEmitter,
legacyRegistry, legacyRegistry,
@ -15,7 +15,7 @@ define([
editObjectTemplate, editObjectTemplate,
Selection, Selection,
objectUtils, objectUtils,
TimeConductor ViewRegistry
) { ) {
/** /**
@ -51,7 +51,7 @@ define([
* @memberof module:openmct.MCT# * @memberof module:openmct.MCT#
* @name conductor * @name conductor
*/ */
this.conductor = new TimeConductor(); this.conductor = new api.TimeConductor();
/** /**
* An interface for interacting with the composition of domain objects. * An interface for interacting with the composition of domain objects.
@ -66,7 +66,7 @@ define([
* @memberof module:openmct.MCT# * @memberof module:openmct.MCT#
* @name composition * @name composition
*/ */
this.composition = api.Composition; this.composition = new api.CompositionAPI;
/** /**
* Registry for views of domain objects which should appear in the * Registry for views of domain objects which should appear in the
@ -76,6 +76,7 @@ define([
* @memberof module:openmct.MCT# * @memberof module:openmct.MCT#
* @name mainViews * @name mainViews
*/ */
this.mainViews = new ViewRegistry();
/** /**
* Registry for views which should appear in the Inspector area. * Registry for views which should appear in the Inspector area.
@ -87,6 +88,7 @@ define([
* @memberof module:openmct.MCT# * @memberof module:openmct.MCT#
* @name inspectors * @name inspectors
*/ */
this.inspectors = new ViewRegistry();
/** /**
* Registry for views which should appear in the status indicator area. * Registry for views which should appear in the status indicator area.
@ -94,6 +96,7 @@ define([
* @memberof module:openmct.MCT# * @memberof module:openmct.MCT#
* @name indicators * @name indicators
*/ */
this.indicators = new ViewRegistry();
/** /**
* Registry for views which should appear in the toolbar area while * Registry for views which should appear in the toolbar area while
@ -107,6 +110,7 @@ define([
* @memberof module:openmct.MCT# * @memberof module:openmct.MCT#
* @name toolbars * @name toolbars
*/ */
this.toolbars = new ViewRegistry();
/** /**
* Registry for domain object types which may exist within this * Registry for domain object types which may exist within this
@ -116,6 +120,7 @@ define([
* @memberof module:openmct.MCT# * @memberof module:openmct.MCT#
* @name types * @name types
*/ */
this.types = new api.TypeRegistry();
/** /**
* Utilities for attaching common behaviors to views. * Utilities for attaching common behaviors to views.
@ -124,6 +129,27 @@ define([
* @memberof module:openmct.MCT# * @memberof module:openmct.MCT#
* @name gestures * @name gestures
*/ */
this.gestures = new api.GestureAPI();
/**
* An interface for interacting with domain objects and the domain
* object hierarchy.
*
* @type {module:openmct.ObjectAPI}
* @memberof module:openmct.MCT#
* @name objects
*/
this.objects = new api.ObjectAPI();
/**
* An interface for retrieving and interpreting telemetry data associated
* with a domain object.
*
* @type {module:openmct.TelemetryAPI}
* @memberof module:openmct.MCT#
* @name telemetry
*/
this.telemetry = new api.TelemetryAPI();
this.TimeConductor = this.conductor; // compatibility for prototype this.TimeConductor = this.conductor; // compatibility for prototype
this.on('navigation', this.selection.clear.bind(this.selection)); this.on('navigation', this.selection.clear.bind(this.selection));
@ -136,25 +162,6 @@ define([
}); });
MCT.prototype.MCT = MCT; MCT.prototype.MCT = MCT;
/**
* An interface for interacting with domain objects and the domain
* object hierarchy.
*
* @type {module:openmct.ObjectAPI}
* @memberof module:openmct.MCT#
* @name objects
*/
MCT.Objects = api.Objects;
/**
* An interface for retrieving and interpreting telemetry data associated
* with a domain object.
*
* @type {module:openmct.TelemetryAPI}
* @memberof module:openmct.MCT#
* @name telemetry
*/
MCT.prototype.legacyExtension = function (category, extension) { MCT.prototype.legacyExtension = function (category, extension) {
this.legacyBundle.extensions[category] = this.legacyBundle.extensions[category] =
this.legacyBundle.extensions[category] || []; this.legacyBundle.extensions[category] || [];
@ -173,62 +180,6 @@ define([
}); });
}; };
MCT.prototype.view = function (region, definition) {
var viewKey = region + uuid();
var adaptedViewKey = "adapted-view-" + region;
this.legacyExtension(
region === this.regions.main ? 'views' : 'representations',
{
name: "A view",
key: adaptedViewKey,
editable: true,
template: '<mct-view region="\'' +
region +
'\'" ' +
'key="\'' +
viewKey +
'\'" ' +
'mct-object="domainObject">' +
'</mct-view>'
}
);
this.legacyExtension('policies', {
category: "view",
implementation: function Policy() {
this.allow = function (view, domainObject) {
if (view.key === adaptedViewKey) {
var model = domainObject.getModel();
var newDO = objectUtils.toNewFormat(model);
return definition.canView(newDO);
}
return true;
};
}
});
this.legacyExtension('newViews', {
factory: definition,
region: region,
key: viewKey
});
};
MCT.prototype.type = function (key, type) {
var legacyDef = type.toLegacyDefinition();
legacyDef.key = key;
type.key = key;
this.legacyExtension('types', legacyDef);
this.legacyExtension('representations', {
key: "edit-object",
priority: "preferred",
template: editObjectTemplate,
type: key
});
};
/** /**
* Start running Open MCT. This should be called only after any plugins * Start running Open MCT. This should be called only after any plugins
* have been installed. * have been installed.
@ -268,11 +219,5 @@ define([
plugin(this); plugin(this);
}; };
MCT.prototype.regions = {
main: "MAIN",
properties: "PROPERTIES",
toolbar: "TOOLBAR"
};
return MCT; return MCT;
}); });

View File

@ -4,20 +4,30 @@ define([
'./View', './View',
'./objects/ObjectAPI', './objects/ObjectAPI',
'./composition/CompositionAPI', './composition/CompositionAPI',
'./ui/Dialog' './types/TypeRegistry',
'./ui/Dialog',
'./ui/GestureAPI',
'./telemetry/TelemetryAPI'
], function ( ], function (
Type, Type,
TimeConductor, TimeConductor,
View, View,
ObjectAPI, ObjectAPI,
CompositionAPI, CompositionAPI,
Dialog TypeRegistry,
Dialog,
GestureAPI,
TelemetryAPI
) { ) {
return { return {
Type: Type, Type: Type,
View: View, View: View,
TimeConductor: TimeConductor,
ObjectAPI: ObjectAPI, ObjectAPI: ObjectAPI,
CompositionAPI: CompositionAPI, CompositionAPI: CompositionAPI,
Dialog: Dialog Dialog: Dialog,
TypeRegistry: TypeRegistry,
GestureAPI: GestureAPI,
TelemetryAPI: TelemetryAPI
}; };
}); });