/// <summary>
        /// Raises the <see cref="E:System.Windows.Forms.UserControl.Load"/> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs"/> that contains the event data.</param>
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            GlobalSelectionService
            .GetOrCreateSelectionService(Services)
            .AddSource(this);

            // wire events
            asnTreeView.SelectedNodeChanged += (s, ev) =>
            {
                if (SelectedObject != null && SelectionChanged != null)
                {
                    SelectionChanged(this, EventArgs.Empty);
                }

                try
                {
                    ShowSelection();
                }
                catch (Exception ex)
                {
                    HandleException("Unable to show node: {0}.", ex);
                }
            };
        }
        /// <summary>
        /// Raises the <see cref="E:System.Windows.Forms.UserControl.Load"/> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs"/> that contains the event data.</param>
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            if (DesignMode)
            {
                return;
            }

            var root = new TreeNode("Documents");

            root.ImageIndex = documentsIndex;

            filesRoot        = CreateFolderTreeNode(SR.Files);
            certificatesRoot = CreateFolderTreeNode(SR.Certificates);

            root.Nodes.Add(filesRoot);
            root.Nodes.Add(certificatesRoot);
            tvExplorer.Nodes.Add(root);
            root.Expand();

            GlobalSelectionService
            .GetOrCreateSelectionService(Services)
            .AddSource(this);

            InitializeActions();

            tvExplorer.SelectedNodeChanged += (s, ev) => NotifySelectionChanged();

            tvExplorer.NodeMouseDoubleClick += (s, ev) =>
            {
                var doc = ev.Node.Tag as IDocument;
                if (doc != null)
                {
                    Commands.RunVerb(Verbs.OpenExisting, doc);
                }
                //services.GetService<IDocumentManagerService>(true).OpenDocument(doc);
            };

            tvExplorer.DragDrop += (s, ev) =>
            {
                var docList = (string[])ev.Data.GetData(DataFormats.FileDrop);
                if (docList.Length != 0)
                {
                    foreach (string doc in docList)
                    {
                        if (File.Exists(doc))
                        {
                            Commands.RunVerb(Verbs.OpenFile, doc);
                        }
                    }
                }
            };

            tvExplorer.DragOver += (s, ev) => ev.Effect = DragDropEffects.Copy;
        }