1    /* 
     2     *  Copyright (c) 2009 Texas Instruments and others.
     3     *  All rights reserved. This program and the accompanying materials
     4     *  are made available under the terms of the Eclipse Public License v1.0
     5     *  which accompanies this distribution, and is available at
     6     *  http://www.eclipse.org/legal/epl-v10.html
     7     * 
     8     *  Contributors:
     9     *      Texas Instruments - initial implementation
    10     * 
    11     * */
    12    package xdc.tools.product;
    13    
    14    /*!
    15     *  ======== IProductView ========
    16     *  Define a product as a logical group of RTSC modules
    17     *
    18     *  This interface allows a product to define logical groups of RTSC
    19     *  modules delivered with it. Implementations of this interface are
    20     *  typically consumed within development environments like IDE's to
    21     *  render a graphical tree view of the product consisting of these
    22     *  groups.
    23     *
    24     *  This is an experimental interface and is subject to change.
    25     */ 
    26    metaonly interface IProductView
    27    {
    28        /*!
    29         *  ======== ProductElemDesc ======== 
    30         *  ProductElemDesc structure
    31         * 
    32         *  This structure is used to define the logical tree "view" of a
    33         *  product. This view is composed of elements that are either modules
    34         *  or groups: modules at the leaves of the tree and groups elsewhere.
    35         *
    36         *  @field(elemName)        Name of element. Elements can be either
    37         *                          groups or modules
    38         *  @field(moduleName)      In case of a leaf node this field will
    39         *                          contain the module name. For intermediate
    40         *                          tree nodes the module name will be set to 
    41         *                          `null`
    42         *  @field(iconFileName)    The name of the icon file that is associated
    43         *                          with this element
    44         *  @field(elemArray)       Array used to define children of a node.
    45         */ 
    46        struct ProductElemDesc {
    47            String elemName;             /*! Name of group or module */
    48            String moduleName;           /*! Name of module */
    49            String iconFileName;         /*! Icon file name representing element */
    50            ProductElemDesc elemArray[]; /*! Array of `ProductElemDesc` */
    51        };
    52    
    53        /*!
    54         *  ======== homeModule ========
    55         *  Top-level module for this product
    56         *
    57         *  The `homeModule` is a distinguished "top-level" module that is used
    58         *  by GUI's as a starting point, or "home page", to navigate to the
    59         *  other content managed by this product.
    60         */
    61        config String homeModule;
    62    
    63        /*!
    64         *  ======== linksToArray ========
    65         *  Array of IDs of products accessable from this product's home module
    66         *
    67         *  This array of product IDs is used to determine a hierarchical
    68         *  relationship between products and if a product's modules can be
    69         *  reached from another product's home page. If product A "links to"
    70         *  product B, then product B's home page can be closed so long as
    71         *  product A's home page is open.
    72         */
    73        config String linksToArray[];
    74        
    75        /*!
    76         *  ======== getProductDescriptor ========
    77         *  Return this product's tree view
    78         *
    79         *  This method is typically invoked by development tools like IDE's 
    80         *  to get the product view tree structure.
    81         *
    82         *  @a(returns)
    83         *  Returns root node of tree of `{@link #ProductElemDesc}` structures
    84         */ 
    85        ProductElemDesc getProductDescriptor();
    86    }
    87    /*
    88     *  @(#) xdc.tools.product; 1, 0, 0,52; 4-27-2011 15:34:00; /db/ztree/library/trees/xdctools/xdctools-e14x/src/
    89     */
    90