/// <summary>
        /// Initializes the MEF component</summary>
        public void Initialize()
        {
            // tree control
            m_treeControl = new TreeControl();
            m_treeControl.SelectionMode  = SelectionMode.One;
            m_treeControl.Dock           = DockStyle.Fill;
            m_treeControl.AllowDrop      = true;
            m_treeControl.ImageList      = ResourceUtil.GetImageList16();
            m_treeControl.StateImageList = ResourceUtil.GetImageList16();
            m_treeControl.MouseUp       += treeControl_MouseUp;
            m_treeControlAdapter         = new TreeControlAdapter(m_treeControl);

            // list view
            m_listView             = new CustomListView();
            m_listView.View        = View.Details;
            m_listView.Dock        = DockStyle.Fill;
            m_listView.AllowDrop   = true;
            m_listView.LabelEdit   = false;
            m_listView.MouseDown  += ThumbnailControl_MouseDown;
            m_listView.MouseMove  += ThumbnailControl_MouseMove;
            m_listView.MouseUp    += ThumbnailControl_MouseUp;
            m_listView.MouseLeave += ThumbnailControl_MouseLeave;


            m_listViewAdapter = new ListViewAdapter(m_listView);

            // thumbnail control
            m_thumbnailControl                    = new ThumbnailControl();
            m_thumbnailControl.Dock               = DockStyle.Fill;
            m_thumbnailControl.AllowDrop          = true;
            m_thumbnailControl.BackColor          = SystemColors.Window;
            m_thumbnailControl.Selection.Changed += thumbnailControl_SelectionChanged;
            m_thumbnailControl.MouseDown         += ThumbnailControl_MouseDown;
            m_thumbnailControl.MouseMove         += ThumbnailControl_MouseMove;
            m_thumbnailControl.MouseUp           += ThumbnailControl_MouseUp;
            m_thumbnailControl.MouseLeave        += ThumbnailControl_MouseLeave;


            // split
            m_splitContainer             = new SplitContainer();
            m_splitContainer.Name        = "Resources".Localize();
            m_splitContainer.Orientation = Orientation.Vertical;
            m_splitContainer.Panel1.Controls.Add(m_treeControl);
            m_splitContainer.Panel2.Controls.Add(m_thumbnailControl);
            m_splitContainer.Panel2.Controls.Add(m_listView);
            m_splitContainer.SplitterDistance = 10;
            m_listView.Hide();

            Image resourceImage = ResourceUtil.GetImage16(Sce.Atf.Resources.ResourceImage);

            // on initialization, register our tree control with the hosting service
            m_controlHostService.RegisterControl(
                m_splitContainer,
                new ControlInfo(
                    "Resources".Localize(),
                    "Lists available resources".Localize(),
                    StandardControlGroup.Left,
                    resourceImage),
                this);


            m_thumbnailService.ThumbnailReady += ThumbnailManager_ThumbnailReady;
            Application.ApplicationExit       += delegate
            {
                foreach (var item in m_thumbnailControl.Items)
                {
                    if (item.Image != null)
                    {
                        item.Image.Dispose();
                    }
                }
                m_thumbnailControl.Items.Clear();
            };

            m_mainForm.Loaded += delegate
            {
                m_splitContainer.SplitterDistance = m_splitterDistance;
            };

            RegisterCommands();
            RegisterSettings();
        }