Updates to sub object selection, first cut of selection APIs. * [API] Add inspector view registry to register inspector view providers and show a view in the inspector. [API] Modify the selection API to register the click event and handle the event. The API will add a class to the selected object and the immediate parent of the selected object. [Directive] Implemenet mct-selectable directive for making an element selectable. [Layout] Update the layout controller to use the Selection API. Also, add double click gesture to allow drilling into a selected object. Populate the Elements pool with contained elements of the selected object. Update toolbar and inspector to listen for the changes in selection. * [Frontend] Mods to markup and CSS for sub-object selection * MCTSelectable allows selection in initialization, use to select on navigation [Frontend] Show grid in first nested layout, hide from deeper nesting. Only show grids when applicable to relative selection. * Fix checkstyle and lint errors * Bring back the change that made mct-init-select work * [Inspector] Make sure the right content is displayed based on whether a view provider exists or not. * Only show table options when editing * Make reviewers' requested changes * Fix broken tests * [Frontend] Cleanups and tweaks Fixes #1811 - Cleanups between frame, editor and selecting.scss; - Hover and selected borders visually pumped up a bit; - Solid borders on hover and selecting when browsing; - Dashed borders for layouts when editing; - Fixed cursor to only show move capability when element is selected; * [Frontend] Tweaks to frame.no-frame layout Fixes #1811 - Margin set to 0; - Overflow set to hidden; * [Frontend] Fixed position items border width fixed Fixes #1811 - Set to 1px; * Add tests for inspector controller and fix broken tests. Clean up code. * [Fixed Position] Stop event propagation on click handlers in fixed position to avoid the event reaching the selection click handlers which caused issues with toolbar and selection." * Fix tests * Add tests * Add test * Remove element from document
		
			
				
	
	
		
			431 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			431 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*****************************************************************************
 | 
						|
 * Open MCT, Copyright (c) 2014-2017, United States Government
 | 
						|
 * as represented by the Administrator of the National Aeronautics and Space
 | 
						|
 * Administration. All rights reserved.
 | 
						|
 *
 | 
						|
 * Open MCT is licensed under the Apache License, Version 2.0 (the
 | 
						|
 * "License"); you may not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the License at
 | 
						|
 * http://www.apache.org/licenses/LICENSE-2.0.
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
						|
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
						|
 * License for the specific language governing permissions and limitations
 | 
						|
 * under the License.
 | 
						|
 *
 | 
						|
 * Open MCT includes source code licensed under additional open source
 | 
						|
 * licenses. See the Open Source Licenses file (LICENSES.md) included with
 | 
						|
 * this source code distribution or the Licensing information page available
 | 
						|
 * at runtime from the About dialog for additional information.
 | 
						|
 *****************************************************************************/
 | 
						|
 | 
						|
define([
 | 
						|
    "./src/controllers/EditActionController",
 | 
						|
    "./src/controllers/EditPanesController",
 | 
						|
    "./src/controllers/ElementsController",
 | 
						|
    "./src/controllers/EditObjectController",
 | 
						|
    "./src/actions/EditAndComposeAction",
 | 
						|
    "./src/actions/EditAction",
 | 
						|
    "./src/actions/PropertiesAction",
 | 
						|
    "./src/actions/RemoveAction",
 | 
						|
    "./src/actions/SaveAction",
 | 
						|
    "./src/actions/SaveAndStopEditingAction",
 | 
						|
    "./src/actions/SaveAsAction",
 | 
						|
    "./src/actions/CancelAction",
 | 
						|
    "./src/policies/EditActionPolicy",
 | 
						|
    "./src/policies/EditPersistableObjectsPolicy",
 | 
						|
    "./src/policies/EditableLinkPolicy",
 | 
						|
    "./src/policies/EditableMovePolicy",
 | 
						|
    "./src/policies/EditContextualActionPolicy",
 | 
						|
    "./src/representers/EditRepresenter",
 | 
						|
    "./src/representers/EditToolbarRepresenter",
 | 
						|
    "./src/capabilities/EditorCapability",
 | 
						|
    "./src/capabilities/TransactionCapabilityDecorator",
 | 
						|
    "./src/services/TransactionManager",
 | 
						|
    "./src/services/TransactionService",
 | 
						|
    "./src/creation/CreateMenuController",
 | 
						|
    "./src/creation/LocatorController",
 | 
						|
    "./src/creation/CreationPolicy",
 | 
						|
    "./src/creation/CreateActionProvider",
 | 
						|
    "./src/creation/AddActionProvider",
 | 
						|
    "./src/creation/CreationService",
 | 
						|
    "text!./res/templates/create/locator.html",
 | 
						|
    "text!./res/templates/create/create-button.html",
 | 
						|
    "text!./res/templates/create/create-menu.html",
 | 
						|
    "text!./res/templates/library.html",
 | 
						|
    "text!./res/templates/edit-object.html",
 | 
						|
    "text!./res/templates/edit-action-buttons.html",
 | 
						|
    "text!./res/templates/elements.html",
 | 
						|
    "text!./res/templates/topbar-edit.html",
 | 
						|
    'legacyRegistry'
 | 
						|
], function (
 | 
						|
    EditActionController,
 | 
						|
    EditPanesController,
 | 
						|
    ElementsController,
 | 
						|
    EditObjectController,
 | 
						|
    EditAndComposeAction,
 | 
						|
    EditAction,
 | 
						|
    PropertiesAction,
 | 
						|
    RemoveAction,
 | 
						|
    SaveAction,
 | 
						|
    SaveAndStopEditingAction,
 | 
						|
    SaveAsAction,
 | 
						|
    CancelAction,
 | 
						|
    EditActionPolicy,
 | 
						|
    EditPersistableObjectsPolicy,
 | 
						|
    EditableLinkPolicy,
 | 
						|
    EditableMovePolicy,
 | 
						|
    EditContextualActionPolicy,
 | 
						|
    EditRepresenter,
 | 
						|
    EditToolbarRepresenter,
 | 
						|
    EditorCapability,
 | 
						|
    TransactionCapabilityDecorator,
 | 
						|
    TransactionManager,
 | 
						|
    TransactionService,
 | 
						|
    CreateMenuController,
 | 
						|
    LocatorController,
 | 
						|
    CreationPolicy,
 | 
						|
    CreateActionProvider,
 | 
						|
    AddActionProvider,
 | 
						|
    CreationService,
 | 
						|
    locatorTemplate,
 | 
						|
    createButtonTemplate,
 | 
						|
    createMenuTemplate,
 | 
						|
    libraryTemplate,
 | 
						|
    editObjectTemplate,
 | 
						|
    editActionButtonsTemplate,
 | 
						|
    elementsTemplate,
 | 
						|
    topbarEditTemplate,
 | 
						|
    legacyRegistry
 | 
						|
) {
 | 
						|
 | 
						|
    legacyRegistry.register("platform/commonUI/edit", {
 | 
						|
        "extensions": {
 | 
						|
            "controllers": [
 | 
						|
                {
 | 
						|
                    "key": "EditActionController",
 | 
						|
                    "implementation": EditActionController,
 | 
						|
                    "depends": [
 | 
						|
                        "$scope"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "EditPanesController",
 | 
						|
                    "implementation": EditPanesController,
 | 
						|
                    "depends": [
 | 
						|
                        "$scope"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "ElementsController",
 | 
						|
                    "implementation": ElementsController,
 | 
						|
                    "depends": [
 | 
						|
                        "$scope",
 | 
						|
                        "openmct"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "EditObjectController",
 | 
						|
                    "implementation": EditObjectController,
 | 
						|
                    "depends": [
 | 
						|
                        "$scope",
 | 
						|
                        "$location",
 | 
						|
                        "navigationService"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "CreateMenuController",
 | 
						|
                    "implementation": CreateMenuController,
 | 
						|
                    "depends": [
 | 
						|
                        "$scope"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "LocatorController",
 | 
						|
                    "implementation": LocatorController,
 | 
						|
                    "depends": [
 | 
						|
                        "$scope",
 | 
						|
                        "$timeout",
 | 
						|
                        "objectService"
 | 
						|
                    ]
 | 
						|
                }
 | 
						|
            ],
 | 
						|
            "actions": [
 | 
						|
                {
 | 
						|
                    "key": "compose",
 | 
						|
                    "implementation": EditAndComposeAction
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "edit",
 | 
						|
                    "implementation": EditAction,
 | 
						|
                    "depends": [
 | 
						|
                        "$location",
 | 
						|
                        "navigationService",
 | 
						|
                        "$log"
 | 
						|
                    ],
 | 
						|
                    "description": "Edit",
 | 
						|
                    "category": "view-control",
 | 
						|
                    "cssClass": "major icon-pencil"
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "properties",
 | 
						|
                    "category": [
 | 
						|
                        "contextual",
 | 
						|
                        "view-control"
 | 
						|
                    ],
 | 
						|
                    "implementation": PropertiesAction,
 | 
						|
                    "cssClass": "major icon-pencil",
 | 
						|
                    "name": "Edit Properties...",
 | 
						|
                    "description": "Edit properties of this object.",
 | 
						|
                    "depends": [
 | 
						|
                        "dialogService"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "remove",
 | 
						|
                    "category": "contextual",
 | 
						|
                    "implementation": RemoveAction,
 | 
						|
                    "cssClass": "icon-trash",
 | 
						|
                    "name": "Remove",
 | 
						|
                    "description": "Remove this object from its containing object.",
 | 
						|
                    "depends": [
 | 
						|
                        "navigationService"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "save-and-stop-editing",
 | 
						|
                    "category": "save",
 | 
						|
                    "implementation": SaveAndStopEditingAction,
 | 
						|
                    "name": "Save and Finish Editing",
 | 
						|
                    "cssClass": "icon-save labeled",
 | 
						|
                    "description": "Save changes made to these objects.",
 | 
						|
                    "depends": [
 | 
						|
                        "dialogService",
 | 
						|
                        "notificationService"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "save",
 | 
						|
                    "category": "save",
 | 
						|
                    "implementation": SaveAction,
 | 
						|
                    "name": "Save and Continue Editing",
 | 
						|
                    "cssClass": "icon-save labeled",
 | 
						|
                    "description": "Save changes made to these objects.",
 | 
						|
                    "depends": [
 | 
						|
                        "dialogService",
 | 
						|
                        "notificationService"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "save-as",
 | 
						|
                    "category": "save",
 | 
						|
                    "implementation": SaveAsAction,
 | 
						|
                    "name": "Save As...",
 | 
						|
                    "cssClass": "icon-save labeled",
 | 
						|
                    "description": "Save changes made to these objects.",
 | 
						|
                    "depends": [
 | 
						|
                        "$injector",
 | 
						|
                        "policyService",
 | 
						|
                        "dialogService",
 | 
						|
                        "copyService",
 | 
						|
                        "notificationService"
 | 
						|
                    ],
 | 
						|
                    "priority": "mandatory"
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "cancel",
 | 
						|
                    "category": "conclude-editing",
 | 
						|
                    "implementation": CancelAction,
 | 
						|
                    // Because we use the name as label for edit buttons and mct-control buttons need
 | 
						|
                    // the label to be set to undefined in order to not apply the labeled CSS rule.
 | 
						|
                    "name": undefined,
 | 
						|
                    "cssClass": "icon-x no-label",
 | 
						|
                    "description": "Discard changes made to these objects.",
 | 
						|
                    "depends": []
 | 
						|
                }
 | 
						|
            ],
 | 
						|
            "policies": [
 | 
						|
                {
 | 
						|
                    "category": "action",
 | 
						|
                    "implementation": EditActionPolicy
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "category": "action",
 | 
						|
                    "implementation": EditPersistableObjectsPolicy,
 | 
						|
                    "depends": ["openmct"]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "category": "action",
 | 
						|
                    "implementation": EditContextualActionPolicy,
 | 
						|
                    "depends": ["navigationService", "editModeBlacklist", "nonEditContextBlacklist"]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "category": "action",
 | 
						|
                    "implementation": EditableMovePolicy
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "category": "action",
 | 
						|
                    "implementation": EditableLinkPolicy
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "implementation": CreationPolicy,
 | 
						|
                    "category": "creation"
 | 
						|
                }
 | 
						|
            ],
 | 
						|
            "templates": [
 | 
						|
                {
 | 
						|
                    "key": "edit-library",
 | 
						|
                    "template": libraryTemplate
 | 
						|
                }
 | 
						|
            ],
 | 
						|
            "representations": [
 | 
						|
                {
 | 
						|
                    "key": "edit-object",
 | 
						|
                    "template": editObjectTemplate,
 | 
						|
                    "uses": [
 | 
						|
                        "view"
 | 
						|
                    ],
 | 
						|
                    "gestures": [
 | 
						|
                        "drop"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "edit-action-buttons",
 | 
						|
                    "template": editActionButtonsTemplate,
 | 
						|
                    "uses": [
 | 
						|
                        "action"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "edit-elements",
 | 
						|
                    "template": elementsTemplate,
 | 
						|
                    "gestures": [
 | 
						|
                        "drop"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "topbar-edit",
 | 
						|
                    "template": topbarEditTemplate
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "create-button",
 | 
						|
                    "template": createButtonTemplate
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "create-menu",
 | 
						|
                    "template": createMenuTemplate,
 | 
						|
                    "uses": [
 | 
						|
                        "action"
 | 
						|
                    ]
 | 
						|
                }
 | 
						|
            ],
 | 
						|
            "components": [
 | 
						|
                {
 | 
						|
                    "type": "decorator",
 | 
						|
                    "provides": "capabilityService",
 | 
						|
                    "implementation": TransactionCapabilityDecorator,
 | 
						|
                    "depends": [
 | 
						|
                        "$q",
 | 
						|
                        "transactionManager"
 | 
						|
                    ],
 | 
						|
                    "priority": "fallback"
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "type": "provider",
 | 
						|
                    "provides": "transactionService",
 | 
						|
                    "implementation": TransactionService,
 | 
						|
                    "depends": [
 | 
						|
                        "$q",
 | 
						|
                        "$log",
 | 
						|
                        "cacheService"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "CreateActionProvider",
 | 
						|
                    "provides": "actionService",
 | 
						|
                    "type": "provider",
 | 
						|
                    "implementation": CreateActionProvider,
 | 
						|
                    "depends": [
 | 
						|
                        "typeService",
 | 
						|
                        "policyService"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "AddActionProvider",
 | 
						|
                    "provides": "actionService",
 | 
						|
                    "type": "provider",
 | 
						|
                    "implementation": AddActionProvider,
 | 
						|
                    "depends": [
 | 
						|
                        "$q",
 | 
						|
                        "typeService",
 | 
						|
                        "dialogService",
 | 
						|
                        "policyService"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "CreationService",
 | 
						|
                    "provides": "creationService",
 | 
						|
                    "type": "provider",
 | 
						|
                    "implementation": CreationService,
 | 
						|
                    "depends": [
 | 
						|
                        "$q",
 | 
						|
                        "$log"
 | 
						|
                    ]
 | 
						|
                }
 | 
						|
 | 
						|
            ],
 | 
						|
            "representers": [
 | 
						|
                {
 | 
						|
                    "implementation": EditRepresenter,
 | 
						|
                    "depends": [
 | 
						|
                        "$log"
 | 
						|
                    ]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "implementation": EditToolbarRepresenter,
 | 
						|
                    "depends": [
 | 
						|
                        "openmct"
 | 
						|
                    ]
 | 
						|
                }
 | 
						|
            ],
 | 
						|
            "constants": [
 | 
						|
                {
 | 
						|
                    "key": "editModeBlacklist",
 | 
						|
                    "value": ["copy", "follow", "link", "locate"]
 | 
						|
                },
 | 
						|
                {
 | 
						|
                    "key": "nonEditContextBlacklist",
 | 
						|
                    "value": ["copy", "follow", "properties", "move", "link", "remove", "locate"]
 | 
						|
                }
 | 
						|
            ],
 | 
						|
            "capabilities": [
 | 
						|
                {
 | 
						|
                    "key": "editor",
 | 
						|
                    "name": "Editor Capability",
 | 
						|
                    "description": "Provides transactional editing capabilities",
 | 
						|
                    "implementation": EditorCapability,
 | 
						|
                    "depends": [
 | 
						|
                        "transactionService"
 | 
						|
                    ]
 | 
						|
                }
 | 
						|
            ],
 | 
						|
            "controls": [
 | 
						|
                {
 | 
						|
                    "key": "locator",
 | 
						|
                    "template": locatorTemplate
 | 
						|
                }
 | 
						|
            ],
 | 
						|
            "services": [
 | 
						|
                {
 | 
						|
                    "key": "transactionManager",
 | 
						|
                    "implementation": TransactionManager,
 | 
						|
                    "depends": [
 | 
						|
                        "transactionService"
 | 
						|
                    ]
 | 
						|
                }
 | 
						|
            ]
 | 
						|
        }
 | 
						|
    });
 | 
						|
});
 |