using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;


namespace DiagramUI
{
    /// <summary>
    /// Desktop
    /// </summary>
    public interface IDesktop
    {
        /// <summary>
        /// Components
        /// </summary>
        ArrayList Components
        {
            get;
        }

        /// <summary>
        /// All components
        /// </summary>
        ICollection AllComponents
        {
            get;
        }


        /// <summary>
        /// Objects
        /// </summary>
        ArrayList Objects
        {
            get;
        }

        /// <summary>
        /// Arrows
        /// </summary>
        ArrayList Arrows
        {
            get;
        }


        /// <summary>
        /// Copies objects and arrows
        /// </summary>
        /// <param name="objects">Objects</param>
        /// <param name="arrows">Arrows</param>
        /// <param name="associated">Copy associated objects sign</param>
        void Copy(ArrayList objects, ArrayList arrows, bool assocated);

        /// <summary>
        /// Access to component
        /// </summary>
        INamedComponent this[string name]
        {
            get;
        }

        /// <summary>
        /// Gets associated object
        /// </summary>
        /// <param name="name">Object name</param>
        /// <returns>Associated object</returns>
        object GetObject(string name);


        /// <summary>
        /// Root desktop
        /// </summary>
        IDesktop Root
        {
            get;
        }
    }

}
