{
    "name": "Layout components.",
    "description": "Plug in adding Layout capabilities.",
    "extensions": {
        "views": [
            {
                "key": "layout",
                "name": "Display Layout",
                "glyph": "L",
                "type": "layout",
                "templateUrl": "templates/layout.html",
                "uses": [],
                "gestures": [ "drop" ]
            },
            {
                "key": "fixed",
                "name": "Fixed Position",
                "glyph": "3",
                "type": "telemetry.panel",
                "templateUrl": "templates/fixed.html",
                "uses": [ "composition" ],
                "gestures": [ "drop" ],
                "toolbar": {
                    "sections": [
                        {
                            "items": [
                                {
                                    "method": "add",
                                    "glyph": "+",
                                    "control": "menu-button",
                                    "text": "Add",
                                    "options": [
                                        {
                                            "name": "Box",
                                            "glyph": "\u00E0",
                                            "key": "fixed.box"
                                        },
                                        {
                                            "name": "Line",
                                            "glyph": "\u00E2",
                                            "key": "fixed.line"
                                        },
                                        {
                                            "name": "Text",
                                            "glyph": "\u00E4",
                                            "key": "fixed.text"
                                        },
                                        {
                                            "name": "Image",
                                            "glyph": "\u00E3",
                                            "key": "fixed.image"
                                        }
                                    ]
                                }
                            ]
                        },
                        {
                            "items": [
                                {
                                    "method": "order",
                                    "glyph": "\u00E1",
                                    "control": "menu-button",
                                    "options": [
                                        {
                                            "name": "Move to Top",
                                            "glyph": "^",
                                            "key": "top"
                                        },
                                        {
                                            "name": "Move Up",
                                            "glyph": "^",
                                            "key": "up"
                                        },
                                        {
                                            "name": "Move Down",
                                            "glyph": "v",
                                            "key": "down"
                                        },
                                        {
                                            "name": "Move to Bottom",
                                            "glyph": "v",
                                            "key": "bottom"
                                        }
                                    ]
                                },
                                {
                                    "property": "fill",
                                    "glyph": "\ue606",
                                    "control": "color"
                                },
                                {
                                    "property": "stroke",
                                    "glyph": "\u00E2",
                                    "control": "color"
                                },
                                {
                                    "property": "color",
                                    "glyph": "\u00E4",
                                    "mandatory": true,
                                    "control": "color"
                                },
                                {
                                    "property": "url",
                                    "glyph": "\u00E3",
                                    "control": "dialog-button",
                                    "title": "Image Properties",
                                    "dialog": {
                                        "control": "textfield",
                                        "name": "Image URL",
                                        "required": true
                                    }
                                },
                                {
                                    "property": "text",
                                    "glyph": "G",
                                    "control": "dialog-button",
                                    "title": "Text Properties",
                                    "dialog": {
                                        "control": "textfield",
                                        "name": "Text",
                                        "required": true
                                    }
                                },
                                {
                                    "method": "showTitle",
                                    "glyph": "\u00E7",
                                    "control": "button",
                                    "description": "Show telemetry element title."
                                },
                                {
                                    "method": "hideTitle",
                                    "glyph": "\u00E5",
                                    "control": "button",
                                    "description": "Hide telemetry element title."
                                }
                            ]
                        },
                        {
                            "items": [
                                {
                                    "method": "remove",
                                    "control": "button",
                                    "glyph": "Z"
                                }
                            ]
                        }
                    ]
                }
            }
        ],
        "representations": [
            {
                "key": "frame",
                "templateUrl": "templates/frame.html"
            }
        ],
        "controllers": [
            {
                "key": "LayoutController",
                "implementation": "LayoutController.js",
                "depends": [ "$scope" ]
            },
            {
                "key": "FixedController",
                "implementation": "FixedController.js",
                "depends": [
                    "$scope",
                    "$q",
                    "dialogService",
                    "telemetryHandler",
                    "telemetryFormatter",
                    "throttle"
                ]
            }
        ],
        "templates": [
            {
                "key": "fixed.telemetry",
                "templateUrl": "templates/elements/telemetry.html"
            },
            {
                "key": "fixed.box",
                "templateUrl": "templates/elements/box.html"
            },
            {
                "key": "fixed.line",
                "templateUrl": "templates/elements/line.html"
            },
            {
                "key": "fixed.text",
                "templateUrl": "templates/elements/text.html"
            },
            {
                "key": "fixed.image",
                "templateUrl": "templates/elements/image.html"
            }
        ],
        "policies": [
            {
                "category": "composition",
                "implementation": "LayoutCompositionPolicy.js"
            }
        ],
        "types": [
            {
                "key": "layout",
                "name": "Display Layout",
                "glyph": "L",
                "description": "A layout in which multiple telemetry panels may be displayed.",
                "features": "creation",
                "model": { "composition": [] },
                "properties": [
                    {
                        "name": "Layout Grid",
                        "control": "composite",
                        "pattern": "^(\\d*[1-9]\\d*)?$",
                        "items": [
                            {
                                "name": "Horizontal grid (px)",
                                "control": "textfield",
                                "cssclass": "l-small l-numeric"
                            },
                            {
                                "name": "Vertical grid (px)",
                                "control": "textfield",
                                "cssclass": "l-small l-numeric"
                            }
                        ],
                        "key": "layoutGrid",
                        "conversion": "number[]"
                    }
                ]
            },
            {
                "key": "telemetry.panel",
                "name": "Telemetry Panel",
                "glyph": "t",
                "description": "A panel for collecting telemetry elements.",
                "delegates": [ "telemetry" ],
                "features": "creation",
                "contains": [ { "has": "telemetry" } ],
                "model": { "composition": [] },
                "properties": [
                    {
                        "name": "Layout Grid",
                        "control": "composite",
                        "items": [
                            {
                                "name": "Horizontal grid (px)",
                                "control": "textfield",
                                "cssclass": "l-small l-numeric"
                            },
                            {
                                "name": "Vertical grid (px)",
                                "control": "textfield",
                                "cssclass": "l-small l-numeric"
                            }
                        ],
                        "pattern": "^(\\d*[1-9]\\d*)?$",
                        "property": "layoutGrid",
                        "conversion": "number[]"
                    }
                ]
            }
        ]
    }
}